TgWitness / Документация

Справочник / Доказательства

Метки времени

Временные метки 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)Наблюдения зааккаунтамиЦепочка SHA-256 иподписи Ed25519Подписанныйконтрольный пунктХеш с точностью добайта и случайный нонсЗапрос по стандартуRFC 3161Независимая TSAПодписанный ответ TSAПроверка данных,одноразового ключа(nonce) и явногодоверия к центрусертификации (CA)
Схема в текстовом формате
  1. Наблюдения за аккаунтами → Цепочка SHA-256 и подписи Ed25519
  2. Цепочка SHA-256 и подписи Ed25519 → Подписанный контрольный пункт
  3. Подписанный контрольный пункт → Хеш с точностью до байта и случайный нонс
  4. Хеш с точностью до байта и случайный нонс → Запрос по стандарту RFC 3161
  5. Запрос по стандарту RFC 3161 → Независимая TSA
  6. Независимая TSA → Подписанный ответ TSA
  7. Подписанный контрольный пункт → Проверка данных, одноразового ключа (nonce) и явного доверия к центру сертификации (CA)
  8. Подписанный ответ TSA → Проверка данных, одноразового ключа (nonce) и явного доверия к центру сертификации (CA)

Подпись сборщика привязывает записи к своему ключу. Доверенный ответ TSA позволяет установить, что конкретный контрольный пункт существовал в указанное TSA время. Затем контрольный пункт может привязать префикс журнала. Это не устанавливает время каждого действия в Telegram или достоверность зафиксированного содержания.

Порядок действий#

  1. Храните отпечаток ключа сборщика через отдельный доверенный канал. Ключа, предоставленного исключительно из проверяемого ZIP-файла, недостаточно для идентификации сборщика.
  2. В разделе «Экспорт» → «Подготовить запрос с временными метками» загрузите ZIP-файл запроса для выбранной рабочей области. Распакуйте файлы checkpoint.json, timestamp.tsq, SHA256SUMS и README.txt. Не изменяйте байты контрольной точки.
  3. Выберите TSA, подходящий для данного расследования. Отправьте запрос timestamp.tsq, используя описанный в документации метод, а также запрос application/timestamp-query для HTTP-сервиса. Сохраните исходный двоичный ответ как timestamp.tsr, указав конечную точку, время получения и результат запроса. Запрос содержит хеш и нонс, а не сами сообщения; сетевые метаданные по-прежнему позволяют идентифицировать запрос.
  4. Получите доверенный корневой сертификат независимо от ответа, а также любые необходимые промежуточные сертификаты. Сертификат, содержащийся в ответе, не становится доверенным лишь по той причине, что он там включен.
  5. С помощью надёжной установки 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.

  1. Экспортируйте ZIP-архив с подписанным журналом после контрольной точки, чтобы он содержал этот префикс. Проверьте с помощью независимо известного отпечатка:
python tgwitness/verify.py evidence.zip --fingerprint TRUSTED_SHA256 --checkpoint checkpoint.json
  1. Сохраняйте 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).