2012-08-21 5 views
1

Любое тело видит что-то не так в использовании sn.exe для генерации пары открытого/закрытого ключа, которую я позже могу использовать для шифрования данных с помощью закрытого ключа, затем дать людям открытый ключ, чтобы они могли расшифровать мой зашифрованный текст? Я знаю, что sn.exe используется для сильных именных сборок, но поскольку он генерирует пару ключей, могу ли я просто использовать эту схему?Использование sn.exe для генерации пары открытого/закрытого ключа для использования в шифровании RSA

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

+1

Я думаю, что имеет смысл использовать openSsl для этого - формат файла snk не так распространен, как, например, формат pem, также у вас будет больше возможностей при использовании openSsl – Giedrius

ответ

2

Это действительно два вопроса:

  • Если вы используете sn.exe для генерации пары ключей?
  • Следует ли использовать закрытый ключ для шифрования данных?

Ответ на первый вопрос: нет, не совсем. Генерация ключей ключей SN.exe действительно полезна только для очень небольших сред разработки и требует, чтобы вы справлялись со всей безопасностью. Есть намного лучшие способы создания контейнеров сертификатов, которые включают такие вещи, как защита паролем (PFX). Посмотрите, например, на инструмент MakeCert - его можно использовать для создания самоподписанных сертификатов X.509, которые можно использовать для почти всех криптографических операций, которые вы, возможно, захотите выполнить.

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

Теперь, если у вас есть намерение распространять зашифрованные данные нескольким получателям, подумайте об использовании конверта PKCS # 7/CMS. Поскольку вы говорите об использовании sn.exe, это говорит мне, что вы используете .NET, так что вам повезло! Класс EnvelopedCms должен предоставить то, что вам нужно. Все, что вам нужно - это открытые ключи ваших получателей из сертификатов X.509 (makecert для спасения!). В MSDN есть пошаговое руководство here.

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