Рейтинг:1

Точное понимание открытого ключа в сертификате

флаг cn

Сертификаты очень часто используются в криптографии. От поиска я немного запутался, что точно по существу является «открытым ключом» внутри сертификата? Всегда ли это ключ проверки подписи, или это также может быть ключ шифрования?

Насколько я понимаю, для корневых и промежуточных сертификатов CA открытый ключ всегда должен быть ключом проверки подписи. Но верно ли это и для листового сертификата (конечной сущности)?

Пожалуйста, добавьте ссылки на аутентичные ресурсы для поддержки ваших ответов и для дальнейшего чтения.

Рейтинг:3
флаг my

Всегда ли это ключ проверки подписи или он также может быть ключом шифрования?

Листовой открытый ключ (то есть ключ, принадлежащий конечному объекту) наверняка может быть ключом шифрования (или, если уж на то пошло, общедоступным значением обмена ключами, например общим ключом DH). Подобные обычаи не так уж экзотичны.

Curious avatar
флаг cn
Если это, безусловно, ключ шифрования, то как цепочка доверия может работать с этим? Например, страница Википедии (https://en.wikipedia.org/wiki/Root_certificate#/media/File:Chain_Of_Trust.svg) тогда совершенно неверна, так как там «Открытый ключ корневого центра сертификации» в «Корневом сертификате». " является ключом проверки подписи (по сравнению с ключом шифрования), как ясно показано стрелкой с текстом "Проверить подпись". То же самое имеет промежуточный сертификат.
poncho avatar
флаг my
@ Любопытно: мои правки делают мой смысл более очевидным?
Curious avatar
флаг cn
да, проще говоря: вы соглашаетесь с тем, что открытый ключ в корневых и промежуточных сертификатах всегда является ключом проверки подписи, а ключ в сертификате конечного объекта, безусловно, является ключом шифрования (или общим ключом DH G ^ X). Можете ли вы порекомендовать мне какой-нибудь подлинный ресурс, в котором это четко указано? Не могли бы вы также уточнить «экзотика»?
poncho avatar
флаг my
@Curious: на самом деле открытый ключ конечного объекта может быть и ключом подписи (и это на самом деле довольно часто).
Curious avatar
флаг cn
немного запутался, но повторю свой вывод: «открытый ключ» во всех сертификатах (имеется в виду корневой, промежуточный, а также конечный объект) в основном является ключом проверки подписи, а в некоторых случаях открытый ключ в конечной- сертификат объекта может быть ключом шифрования (или общим ключом DH), верно? Опять же, не могли бы вы порекомендовать мне какой-нибудь подлинный ресурс, в котором это четко указано?
Рейтинг:2
флаг jp

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

Расширение использования ключа может указывать любое или все из: digitalSignature, contentCommitment (аналогично digitalSignature, но с другими последствиями), keyEncipherment, dataEncipherment, keyAgreement, keyCertSign (сертификат ЦС будет иметь этот и, возможно, некоторые другие) и cRLSign. Один с использованием keyAgreement также может иметь encipherOnly или decipherOnly, чтобы изменить это.

Например, у меня есть сертификат электронной почты (S/MIME), в котором в расширении использования ключа установлены биты digitalSignature, keyEncipherment и dataEncipherment. Это означает, что кто-то может использовать его для проверки подписи в сообщении электронной почты, которое я отправил им, а также для шифрования сообщения мне (обычно путем шифрования случайного симметричного ключа, который будет использоваться для шифрования фактического сообщения).

В качестве другого примера предположим, что у вас есть сертификат, в расширении использования ключа которого установлен только бит keyAgreement. Это означало бы, что его нельзя использовать ни для проверки подписи, или же шифрование, но Только для согласования ключей с помощью чего-то вроде алгоритма Диффи-Хеллмана.

Кстати, использование ключа можно ограничить и другими способами. Например, поле «алгоритм» ключа эллиптической кривой обычно задается как id-ecPublicKey (что не накладывает на него дополнительных ограничений), но может быть задано как id-ecDH (это означает, что его можно использовать только для соглашения о ключах EC Диффи-Хеллмана). ) или id-ecMQV (это означает, что его можно использовать только для соглашения о ключах EC Menezes-Qu-Vanstone).

Рейтинг:1
флаг in

Я думаю, что вы уже правильно поняли, но я думаю, что могу кратко подытожить.

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

keyCertSign бит устанавливается, когда открытый ключ субъекта используется для проверки подписей на сертификатах открытых ключей. Если keyCertSign установлен, то бит cA в базовом ограничения (раздел 4.2.1.9) также ДОЛЖНЫ быть утверждены.

cRLSign бит устанавливается, когда используется открытый ключ субъекта для проверки подписей в списках отозванных сертификатов (например, CRL, дельта CRL или ARL).

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


Конечные сертификаты можно использовать для чего угодно, кроме сертификатов подписи (по определению) и CRL (по общепринятой практике). Это означает, что использование ключа может указывать на что-то еще. Конечно, тип пары ключей и открытого ключа должны быть такими, чтобы использование ключа могло быть выполнено:

Использование ключа Кусочек Открытый ключ должен выполнять
цифровая подпись 0 Проверка подписи
неотказуемость 1 Проверка подписи
ключШифрование 2 Шифрование (инкапсуляция или упаковка ключа)
шифрование данных 3 Шифрование (обычно все еще инкапсуляция ключей для гибридных криптосистем)
ключСоглашение 4 Ключевое соглашение (например, Диффи-Хеллман)
keyCertSign 5 Проверка подписи
cRLSign 6 Проверка подписи
encipherOnly 7 Шифрование (инкапсуляция или упаковка ключа)
decipherOnly 8 Шифрование (инкапсуляция или упаковка ключа)

Примечание:

  • В TLS 1.3 листовой ключ используется исключительно для аутентификации объекта, что соответствует цифровая подпись.

Вот таблица, в которой показано, как можно использовать определенные типы ключей.

Тип ключа Подпись Инкапсуляция Ключевое соглашение
RSA-ключи Да Да Нет
ключи DH Нет Нет Да
ключи DSA Да Нет Нет
Ключи EC (кривые Koblitz и Prime) Да Нет Да
Эд25519 и Эд448 Да Нет Нет
X25519 и X448 Нет Нет Да

В случае с открытыми ключами действия будут заключаться в подписи. проверка и шифрование для первых двух использований.

Для установления ключа можно использовать как согласование ключей, так и инкапсуляцию ключей. Однако, если ключи являются частью постоянного сертификата, их нельзя использовать для прямой секретности, поэтому соглашение о ключах, например, TLS 1.3 выполняется с использованием эфемерные ключи, а ключи подписи используются для требуемой аутентификации объекта.

Алгоритмы согласования ключей можно использовать для реализации интегрированной схемы шифрования или IES. Таким образом, любая пара ключей согласования ключей также может косвенно использоваться для шифрования.


Эти таблицы являются оригинальным содержанием; в X.509 RFC прямо не упоминается, что открытый ключ должен быть совместим с целью, указанной в использовании ключа - похоже, подразумевается, что они должны быть совместимы.

Curious avatar
флаг cn
Это действительно лаконично. Можете ли вы добавить ссылки на таблицу, цитаты и т. д. для дальнейшего чтения?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.