2013-03-22 4 views
4

В .NET crypto API я заметил, что объект CspParameters имеет свойство KeyNumber, которое может использоваться для указания, должен ли ключ быть ключом подписи или ключом обмена.Разница между ключом Exchange и ключом подписи в Crypto API

Есть ли какая-либо реальная разница между этими двумя ключами RSA? В частности, если я использую ключ обмена для подписания, есть ли что-то о сгенерированном ключе, которое сделало бы его неприемлемым или небезопасным для этого использования?

+0

Как транспортировать ключ? PFX/P12? Лексемы? – Raj

+0

@Raj - Я экспортирую ключи как Csp Blob. Оттуда я храню их в базе данных с секретным ключом, зашифрованным с использованием отдельного ключа AES, полученного из пароля пользователя. –

ответ

1

Вы не должны использовать ключ обмена для подписания. за MSDN, ключ обмена распространяется среди других, чтобы они могли зашифровать контент для отправки вам. если они хотят подписать сообщение, чтобы указать, что они его отправили, тогда они будут использовать свой собственный Private key (подпись) для подписывания и ваш открытый ключ для шифрования. в терминах Диффи-Хеллмана, если вы подписываете материал своим открытым ключом, а затем распространяете/обмениваете его с другими, они смогут подписывать такие сообщения, что они, похоже, поступают от вас. просто подумайте об обмене ключа как о своей публике, а ключ подписи - ваш личный.

+0

Я думаю, что это применимо, если вы используете встроенную защиту вокруг сохраненных ключей, чтобы определить, кто может не получить доступ к ключу, могут ли они использовать частные или открытые ключи и для каких целей. В моем случае я экспортирую ключ для использования в другом месте, поэтому меня больше интересуют свойства самого ключа, а не то, как Crypto API управляет безопасностью вокруг ключей (надеюсь, что это имеет смысл) –

Смежные вопросы