Вопрос или проблема
Цель добавления надежных временных меток к подписям заключается в том, чтобы их можно было считать действительными гораздо дольше срока действия подписывающего сертификата. Однако это не так просто, так как сертификат подписи TSA тоже имеет срок действия или может быть отозван, и уже выданные временные метки могут стать недействительными.
Таким образом, мой вопрос заключается в следующем: каков стандартный способ проверки надежных временных меток?
Мое понимание процесса таково:
- Проверить, что токен был выдан для рассматриваемых данных и что сертификат, выдавший токен, был действителен и доверен на момент выдачи токена.
- Проверить, что на текущий момент ни один из сертификатов в цепочке доверия не был отозван, ИЛИ что они были отозваны с указанием причины, и код причины является одним из
неуточненный (0)
,изменение принадлежности (3)
,заменен (4)
илипрекращение операции (5)
(согласно RFC 3161)
Но оба этих шага, похоже, имеют значительные проблемы, касающиеся CRL:
Для первого шага необходимо иметь историческую запись CRL (действительную на момент создания временной метки) для каждого сертификата в цепочке доверия (это, в свою очередь, означает, что для каждой временной метки также следует хранить текущие CRL, иначе как можно будет проверить временную метку в будущем?).
Для второго шага необходимо иметь для каждого сертификата в цепочке CRL, который действителен СЕЙЧАС. Однако это, в свою очередь, потребует, чтобы точки распределения CRL продолжали публиковать обновленные CRL для каждого сертификата вечно. Но к моменту проверки временной метки точки распределения CRL могут не обновляться уже долгое время (особенно если сертификат просто истек и никогда не был отозван).
Итак, предположим, что через 20 лет кто-то хочет проверить токен временной метки, и URL точки распределения CRL подписывающего сертификата (или любого сертификата в цепочке доверия) больше не поддерживается – как этот человек сможет проверить временную метку?
Насколько я знаю, цель добавления надежной временной метки не заключается в том, чтобы продлить срок действия подписанного документа, а лишь в том, чтобы доказать, что он был подписан в определенное время.
Это имеет значение, когда актуальность имеет значение. Например, когда две исследовательские группы хотят опубликовать статью на одну и ту же тему, может быть интересно иметь доказательства, какая из них первой установила/открыла этот факт. Здесь подписанный документ с надежной временной меткой мог бы служить таким доказательством.
Без надежной временной метки слишком просто установить часы локального компьютера на несколько месяцев назад, подписать документ и сбросить часы на текущее время.
Ответ или решение
Как правильно проверить временную метку подписи
Введение
Проверка временной метки подписи — это важный аспект обеспечения целостности и достоверности электронных документов. Цель добавления доверенных временных меток состоит в том, чтобы гарантировать, что подпись была сделана в определенный момент времени и оставалась действительной даже после истечения срока действия сертификата подписи. Этот процесс, однако, не так прост, как может показаться на первый взгляд. В данной статье подробно рассматривается процесс валидации доверенных временных меток, а также проблемы, с которыми могут столкнуться пользователи в этом контексте.
Этапы валидации доверенной временной метки
1. Проверка токена истечения времени
Первым шагом в процессе валидации является проверка того, что токен временной метки был выдан именно для рассматриваемых данных. Это включает проверку действительности и доверенности сертификата, выдавшего токен, на момент его выдачи. Ключевые моменты этого шага включают:
- Проверка целостности данных: Убедитесь, что данные, указанные в токене, совпадают с данными, которые проверяются. Этот процесс часто включает использование хеш-функций.
- Проверка сертификата TSA: Необходимо удостовериться, что сертификат, выдавший временную метку (TSA), действителен на момент выдачи токена. Это включает в себя проверку сроков действия сертификата.
2. Проверка цепочки сертификатов
На следующем этапе необходимо проверить, что на текущий момент ни один из сертификатов в цепочке доверия не был отозван. Для этого же важно, чтобы были учтены возможные коды причин отзыва (reasonCode), указанные в RFC 3161:
- Доступность актуальных CRL: В идеале, на момент проверки временной метки требуется наличие действующих списков отзыва сертификатов (CRL) для всех сертификатов в цепочке доверия. Однако это может стать проблемой, если CRL больше не обновляется.
- Исторические CRL записи: Как вы правильно отмечаете, отсутствие исторической информации о CRL может препятствовать валидации. Знание о том, какой CRL был действителен на момент подписания, необходимо для уверенности в корректности подписи.
Проблемы в проверке временных меток
Одна из основных трудностей в валидации временных меток заключается в том, что CRS-пункты могут перестать быть актуальными: они могут не обновляться или быть удалены на момент, когда вам потребуется провести проверку в будущем. Это создает риск неверной интерпретации статуса сертификатов.
Время играет ключевую роль. В случае споров, таких как споры об авторских правах или открытиях, важно иметь возможность убедительно показать, когда именно документ был подписан. Без доверенной временной метки это может быть непросто, поскольку злоумышленники могут изменить часы системы и подписать документы с ложной датой.
Альтернативные методы для долгосрочной проверки
Учитывая вышеописанные сложности, использование альтернативных подходов может помочь в долгосрочной валидации:
- Хранение исторических CRL: Ведение архивов CRL с метками времени может обеспечить доступ к необходимой информации, когда это потребуется в будущем.
- Public Key Infrastructure (PKI): Использование надежных и поддерживаемых PKI-систем с хорошей документацией по историям сертификатов может облегчить проверку.
- Переход на механизмы OCSP (Online Certificate Status Protocol): Системы, позволяющие проверять статус сертификата в реальном времени, могут значительно сократить количество рисков, связанных с устаревшими данными.
Заключение
Валидация доверенных временных меток — это процесс, требующий внимательности и глубокого понимания механизмов работы цифровых сертификатов и систем их валидации. Правильное осуществление всех указанных шагов позволяет значительно повысить уровень безопасности и надежности электронных документов. При выполнении практических шагов, направленных на ожидаемую валидацию временных меток, важно учитывать как текущие, так и исторические данные, чтобы гарантировать их достоверность и целостность в будущем.