Что происходит с сертификатами подписи кода, когда истекает срок действия корневого ЦС?

9

Пока что для меня ясно: если срок действия самого сертификата подписи кода истекает, подписанный код будет проверен / принят, если он был подписан отметкой времени. Если нет, срок действия подписанного кода тоже истек.

Но что произойдет, если срок действия моего ЦС истечет (корневая ЦС выдает ЦС)?

  • Будет ли принят код, если в нем есть отметка времени?
  • Должны ли присутствовать истекшие сертификаты корневого и выдающего ЦС (например, в хранилище сертификатов доверенного корневого ЦС)? Это мое предположение, даже если ЦС может быть понижен в должности, клиент, который выполняет подписанный, все еще должен доверять ЦС? Иначе цепочка доверия будет разорвана, верно?
  • Будет ли отсутствие CRL или AIA представлять проблемы?
dr_pepper285
источник

Ответы:

12

Но что произойдет, если срок действия моего ЦС истечет (корневая ЦС выдает ЦС)?

Буквально ничего. Давайте объясним это немного подробнее.

Если подпись не имеет отметки времени, подпись действительна до тех пор, пока:

  • данные не подделаны
  • срок действия сертификата подписи
  • ни один сертификат в цепочке не отозван
  • корневой сертификат является доверенным

Если срок действия сертификата подписи истек, отозван или стал недействительным тем или иным способом, подпись считается недействительной. Легко и просто.

Целью отметок времени в цифровой подписи является предоставление расширенного доверия подписанному контенту. Сертификаты подписи действительны в течение короткого периода времени, а базовые параметры доверия не подходят для долгосрочной (возможно, заархивированной) подписи. Обычно (без отметок времени) вам придется воссоздавать подпись каждый раз при обновлении сертификата подписи. Это путь в никуда.

При добавлении временной метки к цифровым подписям условия доверия изменяются на следующий список:

  • данные не подделаны
  • сертификат подписи * был * действителен в момент подписания: время подписания находится в пределах срока действия сертификата подписи
  • Ни один сертификат не был отозван * до * генерации подписи
  • оба сертификата подписи и отметки времени объединяются в доверенные корневые центры сертификации (независимо от их срока действия, они просто должны находиться в хранилище доверенных сертификатов).

Что здесь изменилось: подпись остается в силе после истечения срока действия сертификата. То есть может истечь вся цепочка для подписи и сертификатов отметки времени (вместе с корневым сертификатом), и это не сломает доверие. Сертификаты в цепочке могут быть отозваны. Единственное требование: если какой-либо сертификат отозван, время отзыва (полученное из CRL) должно быть установлено на время после создания подписи (время подписания идентифицируется с помощью метки времени). Предыдущее предложение означает, что должен быть подписанный CRL, чтобы доказать, что ни один сертификат не был отозван во время подписания.

По этой причине современные системы Windows поставляют давно истекшие корневые сертификаты. Они по-прежнему используются для проверки старых подписей и отметок времени.

Некоторое время назад я написал пост в блоге, который объясняет тему более подробно: цифровые подписи и временные метки

Crypt32
источник
Ваш пост в блоге - очень хорошая статья на эту тему!
ThoriumBR
Я нашел эту тему очень запутанной в IT Pro (и разработчиках) и попытался разобраться в посте в блоге.
Crypt32
Но вопрос с CRL мне не совсем понятен. Так что мне все еще нужно иметь (последний) CRL с истекшим сроком действия CA?
dr_pepper285
Да, CRL требуются. Последнее не обязательно, оно должно быть опубликовано ( ThisUpdateполе) после времени подписания. Этот CRL может доказать, что ни один сертификат в обеих цепочках (подпись и отметка времени) не был отозван во время подписания.
Crypt32