Следует ли использовать RSA-шифрование для подписи и шифрования одного и того же сертификата? - PullRequest
5 голосов
/ 20 мая 2010

Если я хочу подписать и зашифровать сообщение с помощью сертификата X509, есть ли причина не использовать один и тот же сертификат для шифрования и подписи?

Обновление: Оглядываясь назад, я думаю, что это, наверное, самый сложный вопрос, который я когда-либо задавал на SO. Прости.

Ответы [ 2 ]

5 голосов
/ 21 мая 2010

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

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

При этом вы можете представить общий сценарий, когда каждый может отправлять и получать электронную почту. Поэтому у каждого есть пара ключей (с открытой частью в сертификате), которая используется для шифрования и дешифрования электронных писем (открытый ключ Боба используется для шифрования электронных писем, отправляемых Бобу, а Боб использует соответствующий закрытый ключ для их дешифрования, то есть для чтения электронные письма). Также , у каждого есть пара ключей для подписей (Боб использует свой закрытый ключ для подписи отправляемых им сообщений, Алиса использует открытый ключ Боба для проверки подписей, предположительно вычисленных Бобом). Тогда возникает вопрос: будут ли у Боба две пары ключей (одна для шифрования / дешифрования и одна для подписи / проверки) или только одна пара ключей, которая используется для обоих заданий?

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

Однако, вообще говоря, ключи подписи и ключи шифрования имеют различные жизненные циклы и процедуры управления. В бизнес-контексте направление хранит в секрете копию всех закрытых ключей, используемых для шифрования, поскольку потеря ключа шифрования означает потерю данных. И сотрудники могут стать «недоступными» (сотрудник уволен, сотрудник уходит в отставку, сотрудник сбит автобусом ...). И наоборот, когда ключ подписи утерян, ранее отправленные подписи все еще действительны и проверяемы, поэтому нужно просто создать новую пару ключей, чтобы иметь возможность создавать другие подписи. Кроме того, цифровые подписи могут получить надежный правовой статус, только если где-то в сейфе есть нет копии ключа. Поэтому общий совет - хранить ключи шифрования и подписи отдельно. Использование одного и того же ключа для обоих является приближением, которое может иметь нежелательные побочные эффекты (такие как потеря данных или отсутствие юридической ценности). В зависимости от контекста это может быть или не быть проблемой.

1 голос
/ 21 мая 2010

Сертификат X509 содержит открытый ключ. Для шифрования вы используете открытый ключ получателя, предположительно полученный из его сертификата. Для подписи вы используете свой закрытый ключ, предположительно из безопасного магазина. Получатель проверяет подпись, используя ваш открытый ключ, предположительно из вашего сертификата. Это основы.

...