Справочник / Доказательства
Метки времени
Временные метки RFC 3161 для подписанных контрольных точек: что отправляется в центр авторизации и как проверяется ответ.
TgWitness формирует запросы в соответствии со стандартом RFC 3161 и проверяет ответы от органа временных меток (TSA). Данная ручная процедура не предусматривает ни выбора TSA, ни отправки данных; режим сбора доказательств выполняет обе эти операции в соответствии с графиком (формат доказательств). Подготовленный запрос ещё не является доказательством с временной меткой.
Что подтверждают эти доказательства#
Схема в текстовом формате
- Наблюдения за аккаунтами → Цепочка SHA-256 и подписи Ed25519
- Цепочка SHA-256 и подписи Ed25519 → Подписанный контрольный пункт
- Подписанный контрольный пункт → Хеш с точностью до байта и случайный нонс
- Хеш с точностью до байта и случайный нонс → Запрос по стандарту RFC 3161
- Запрос по стандарту RFC 3161 → Независимая TSA
- Независимая TSA → Подписанный ответ TSA
- Подписанный контрольный пункт → Проверка данных, одноразового ключа (nonce) и явного доверия к центру сертификации (CA)
- Подписанный ответ TSA → Проверка данных, одноразового ключа (nonce) и явного доверия к центру сертификации (CA)
Подпись сборщика привязывает записи к своему ключу. Доверенный ответ TSA позволяет установить, что конкретный контрольный пункт существовал в указанное TSA время. Затем контрольный пункт может привязать префикс журнала. Это не устанавливает время каждого действия в Telegram или достоверность зафиксированного содержания.
Порядок действий#
- Храните отпечаток ключа сборщика через отдельный доверенный канал. Ключа, предоставленного исключительно из проверяемого ZIP-файла, недостаточно для идентификации сборщика.
- В разделе «Экспорт» → «Подготовить запрос с временными метками» загрузите ZIP-файл запроса для выбранной рабочей области.
Распакуйте файлы
checkpoint.json,timestamp.tsq,SHA256SUMSиREADME.txt. Не изменяйте байты контрольной точки. - Выберите TSA, подходящий для данного расследования. Отправьте запрос
timestamp.tsq, используя описанный в документации метод, а также запросapplication/timestamp-queryдля HTTP-сервиса. Сохраните исходный двоичный ответ какtimestamp.tsr, указав конечную точку, время получения и результат запроса. Запрос содержит хеш и нонс, а не сами сообщения; сетевые метаданные по-прежнему позволяют идентифицировать запрос. - Получите доверенный корневой сертификат независимо от ответа, а также любые необходимые промежуточные сертификаты. Сертификат, содержащийся в ответе, не становится доверенным лишь по той причине, что он там включен.
- С помощью надёжной установки TgWitness проверьте следующее:
python -m tgwitness.anchor verify --checkpoint checkpoint.json --request timestamp.tsq --response timestamp.tsr --ca trusted-tsa-root.pem
При необходимости добавьте --intermediates tsa-intermediates.pem или --openssl /path/to/openssl.
OpenSSL должен поддерживать ts. В Windows программа проверки также ищет стандартную установку Git.
OpenSSL 3.5.9 был протестирован локально с использованием синтетического CA/TSA.
- Экспортируйте ZIP-архив с подписанным журналом после контрольной точки, чтобы он содержал этот префикс. Проверьте с помощью независимо известного отпечатка:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
- Сохраняйте ZIP-архив, контрольную точку, запрос, ответ, цепочку сертификатов, результаты проверки и запись о передаче данных вне коллектора. Повторите проверку при получении.
Чтобы подготовить запрос на основе сохраненной контрольной точки:
python -m tgwitness.anchor prepare checkpoint.json --out timestamp-request.zip
Процедура подготовки канонизирует JSON и включает соответствующий контрольный точку в архив. Используйте байты контрольной точки из этого архива для проверки TSA, даже если входной файл содержал иные пробелы.
Пределы проверки#
| Проверить | Текущее поведение |
|---|---|
| Данные | Сумма SHA-256 точных байтов контрольной точки должна совпадать с ответом |
| Запрос | С помощью алгоритма --request проверяются исходный запрос и нонс |
| Подпись TSA | OpenSSL проверяет подпись и цепочку до указанного центра сертификации (CA) |
| Подпись сборщика | Отдельно проверено верификатором журнала с помощью закреплённого ключа |
| Отзыв | Отсутствует автоматический запрос OCSP/CRL |
| Долгосрочная достоверность | Отсутствие проверки архива после истечения срока действия сертификата |
| Запланированная подача | Режим «Доказательства» по умолчанию отключен |
--request технически не является обязательным, однако его пропуск препятствует проверке
исходного нонса. Для выполнения данной полной процедуры значение request_checked в результате должно быть истинным.
Проверка сертификатов осуществляется в соответствии с правилами и временем проверки, заданными в установленной версии OpenSSL.
Для долгосрочного хранения требуется отдельная политика в отношении сертификатов и доказательств их отзыва.
Наличие действительной криптографической подписи не означает автоматически наличие квалифицированной временной метки или определения юридической допустимости. Если оператор сфабриковал данные перед проставлением временной метки, TSA фиксирует эти байты; однако это не подтверждает их достоверность.
Протокол передачи дел#
Зафиксируйте идентификатор дела, отправителя и получателя, время передачи по UTC и её источник, цель, имена файлов/значения SHA-256, отпечаток сборщика, диапазон последовательности, известные пробелы, версию средства проверки и результат проверки. Подпишите и независимо храните данную запись в соответствии с процедурами вашей организации. Система хранения записей с участием нескольких пользователей в TgWitness не реализована.
В ходе разработки не осуществлялось взаимодействия с каким-либо независимым действующим центром сертификации (TSA). В ходе локального тестирования создаётся синтетический центр сертификации (CA/TSA) для проверки совместимости и отклонения изменённых данных, нонса или центра сертификации (CA).