Как сервер проверки распознает, какой открытый ключ использовать в RSA?

введите описание изображения здесь

Я пытаюсь реализовать (упрощенный) процесс проверки, подобный RSA, в моем (Java) приложении. Клиент отправляет запрос (данные + подпись закрытого ключа), а сервер либо отклоняет его запрос, либо обрабатывает его - в зависимости от действительности подписи.

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

Действительно ли он проверяет все разрешенные открытые ключи? Или открытый ключ хранится от предыдущего обмена данными?


person Azzip    schedule 10.09.2017    source источник


Ответы (2)


На рисунке есть несколько ошибок и некоторые упущения, потому что это, вероятно, упрощение:

  • хэш имеет цифровую подпись, не зашифрован, и подпись проверяется, а не расшифровывается. Базовая криптографическая операция не эквивалентна.

  • подписанные данные должны включать сертификат и цепочку сертификации

  • если вы используете известный формат, такой как CMS, pkcs # 7 или XMLDsig, хэш для подписи обычно включает также ссылку на сертификат подписи и тип содержимого, чтобы избежать подделки

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

Подпись включает цепочку сертификации, потому что обычно хранилище доверенных сертификатов не содержит промежуточных центров сертификации. Сертификаты доверительного хранилища обмениваются предварительно

Кроме того, в процессе проверки необходимо убедиться, что срок действия сертификата не истек и он не отозван.


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

person pedrofb    schedule 10.09.2017

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

person ammcom    schedule 10.09.2017