Перейти к содержимому

Метки времени и доверенное время

Spec: RFC 3161 Spec: RFC 5816 Spec: ISO 32000-2, §12.8.5 Evidence: Standard-backed

Метка времени не фиксирует “когда это было подписано”. Она доказывает более узкий, но более сильный факт: определённый фрагмент данных существовал до определённого момента, и это засвидетельствовала сторона, которая не является подписавшим. Именно в этом различии вся ценность доверенного времени, и его часто понимают неправильно.

Время подписания внутри подписи — это значение, заявленное компьютером подписавшего. Часы могут идти неверно случайно или намеренно. Если единственное свидетельство того, когда это произошло, — утверждение самого подписавшего, подписавший может произвольно поставить документу более раннюю или более позднюю дату. Сертификат, отозванный вчера, можно представить так, будто им подписали в прошлом году. “Когда” — это не деталь. От него зависит, действительна ли ещё подпись, сделанная сертификатом, который уже истёк или уже отозван. А если доверенное время неверно, рушится любое обоснование долгосрочной действительности, построенное на нём.

  • Собственное время подписания у подписавшего — это утверждение, а не доказательство. Его легко подделать.
  • Метка времени RFC 3161 — это подписанный токен от службы меток времени (TSA), связывающий хеш ваших данных со временем TSA.
  • Она доказывает ровно одно: данные существовали до указанного TSA времени. Не точный момент создания, а верхнюю границу.
  • Токен возвращает ваш nonce и ваш отпечаток сообщения, поэтому он не может быть повтором и не может относиться к другим данным.
  • Метка времени документа применяет тот же механизм ко всему PDF и закрепляет всё, что находится под ней, — подпись и встроенные свидетельства проверки — за доверенным моментом времени.

NextPDF рассматривает метку времени как объект, который нужно проверить, а не просто получить. Запрос токена — меньшая часть работы. Позиция движка проста: непроверенный токен не является доказательством.

Когда движок проставляет метку времени на подпись, он отправляет в TSA хеш данных и свежий случайный nonce, но никогда сами данные. Затем возвращённый токен проверяется по всему набору свойств, которые делают его значимым: статус службы был “granted”, nonce в токене совпадает с отправленным, отпечаток сообщения в токене совпадает с отправленным хешом, собственная криптографическая подпись токена проходит проверку, тип содержимого токена соответствует типу метки времени, а указанное время попадает в допустимый диапазон погрешности. Любое расхождение — безусловный отказ с типизированной причиной. Пути “выглядит достаточно близко” не существует. Метка времени документа подчиняется тому же правилу, только применяется оно ко всему файлу, а не к значению одной подписи.

  1. Hash the data Only a digest of the signature value (or the whole PDF, for a document timestamp) is computed — never the data itself.
  2. Send hash + nonce The digest and a fresh random nonce go to the Time-Stamp Authority.
  3. TSA returns a token A signed token binds the digest to the TSA’s genTime and echoes the nonce.
  4. Verify the token Status granted, nonce matches, message imprint matches, token signature verifies, time within tolerance.
  5. Conclude an upper bound The data provably existed before the TSA’s stated time — attested by a party that is not the signer.
Как получают доверенную метку времени и что она доказывает: хеш вместе с nonce отправляется в TSA, TSA возвращает подписанный токен, связывающий этот хеш со своим временем, а проверяющий подтверждает эту связь, прежде чем рассматривать её как доказательство того, что данные существовали до этого времени.

Evidence: Standard-backed Определение здесь точное. Spec: ISO/IEC 18014-2, §3 определяет службу меток времени как такую, которая предоставляет свидетельство того, что элемент данных существовал до определённого момента времени — верхнюю границу, а не момент создания. Spec: ISO/IEC 18014-2, §7 определяет содержимое токена TSTInfo: отпечаток сообщения (хеш ваших данных), время создания, серийный номер и необязательный nonce. Spec: ISO/IEC 18014-2, §6 формулирует вывод, который проверяющий вправе сделать при успешной проверке: элемент данных существовал до времени в токене — не больше и не меньше.

Для PDF Spec: ISO 32000-2, §12.8.5 задаёт метку времени документа: диапазон байтов охватывает весь файл, исключая значение Contents, этот хеш отправляется службе меток времени, а возвращённый токен RFC 3161 — с обновлениями из Spec: RFC 5816 — помещается в Contents. Та же дисциплина диапазона байтов, что и у подписи, применённая ко времени вместо личности. А Spec: RFC 6960, §4.4.4 объясняет, почему это важно для долговечности: именно доверенное время позволяет валидатору подтвердить, что подпись была надёжной в день её создания, даже после того как срок действия сертификата истёк.

Движок NextPDF отправляет хеш и nonce, но никогда сами данные. Прежде чем рассматривать возвращённый токен как доказательство, он проверяет его статус, nonce, отпечаток сообщения, подпись токена, тип содержимого и допуск по времени.

Токен метки времени не собирают вручную. Важна граница доверия. TSA — это то, что вы настраиваете и защищаете, потому что её время становится вашим доказательством.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// Asking for any level at or above B-T requires a TSA.
$level = SignatureLevel::PAdES_B_T;
$level->requiresTimestamp(); // true → a Time-Stamp Authority must be supplied
// The TSA endpoint, its transport security, and its trust anchor are
// deployment-supplied. The engine sends a hash plus a fresh nonce — never the
// document — and verifies the returned token before the signature is accepted.
// A token that fails any check (status, nonce, imprint, signature, time)
// is a hard error, not a warning.

Важная граница в том, что движок отправляет хеш, а не документ, поэтому TSA никогда не видит ваше содержимое. И движок проверяет ответ. TSA, которую вы не можете аутентифицировать, — это не доверенное время. Это всего лишь ещё одни часы.

Ловушка в том, чтобы читать метку времени как “это было подписано ровно в 14:32 в этот день”. Это не секундомер на событии подписания. Она доказывает, что данные существовали не позднее времени TSA, то есть верхнюю границу, установленную третьей стороной. Создание могло произойти в любой момент до этого. Вторая ловушка — считать, что любой сервер меток времени даёт доверенное время. Токен, подпись которого вы не можете проверить или службе которого вы не доверяете, ничего не доказывает. Это часы, которым у вас нет причин верить. Доверенное время даёт TSA, которую вы можете аутентифицировать, и токен, который вы проверили, а не сам факт запроса числа у сервера.

NextPDF формирует запрос, отправляет только хеш и проверяет возвращённый токен. Он не ручается за службу, которая стоит за этим токеном. Точность TSA, действительность её собственного сертификата и её надёжность — свойства самой службы и конфигурации вашего развёртывания, а не движка. Метка времени связывает хеш со временем. Она ничего не говорит о смысле данных, личности подписавшего или о том, был ли действителен сертификат подписавшего. Это отдельные проверки, описанные в разделе Правильная проверка подписи. Движок не может сделать ненадёжную TSA надёжной. Эта страница также не утверждает какой-либо конкретной юридической силы метки времени; это зависит от статуса TSA и юрисдикции. Как доверенное время повторно используется, чтобы подпись оставалась проверяемой на протяжении десятилетий, описано в разделе Долгосрочная проверка.

Доступность простановки меток времени по тарифам:

Простановка меток времени RFC 3161 (метка времени подписи и метка времени документа) — edition availability
Edition Availability
Core Not in this edition
Pro

PAdES B-T — проверенная метка времени RFC 3161 на значении подписи, относительно TSA, предоставляемой развёртыванием.

Enterprise

Добавляет метку времени документа, используемую B-LT и B-LTA, чтобы закрепить встроенные свидетельства проверки и запустить цикл архивного обновления.

  • Метка времени (RFC 3161) — подписанный токен от TSA, связывающий хеш данных со временем TSA и доказывающий, что данные существовали до этого времени.
  • Служба меток времени (TSA) — доверенная служба, которая выпускает токены меток времени.
  • TSTInfo — структура содержимого токена: отпечаток сообщения, время создания, серийный номер и необязательный nonce.
  • Отпечаток сообщения — хеш данных, для которых проставляется метка времени, возвращаемый в токене.
  • Nonce — свежее случайное значение, которое отправляется вместе с запросом и возвращается в токене, поэтому ответ не может быть повтором.
  • Метка времени документа — метка времени RFC 3161 для всего PDF (с обновлениями из RFC 5816), закрепляющая подпись и её свидетельства за доверенным моментом времени.