Некоторых бумага дескрипция роль государственных и частных ключи как вполне симметричны, но вы определенно не можете поменять роли частного и публичного ключа в реальном мире.
Общее использование:
- открытый ключ должен использоваться для шифрования и проверки подписи
- секретный ключ должен использоваться для дешифрования и подписания
Существует несколько причин что:
Вы не хотите оставлять пользователю выбор, который должен быть опубликован, и который не. Публичный ключ публикуется во всем мире, и вы можете рассматривать его как свою публичную идентификацию. Частная часть необходима, когда вам нужно доказать кому-то еще, что у вас есть более глубокое понимание, чем другие об этом удостоверении: вы можете читать сообщения, отправленные на него, вы можете подписывать сообщения, которые могут быть подтверждены любым, кто знает ваш публичный идентификатор. Если какая часть открытого/закрытого ключа для публикации была оставлена пользователю, вы в конце концов прекратите публикацию обоих. Но это не главная причина.
, когда у вас есть секретные ключи, у вас действительно есть оба ключа. всякая распространенная реализация. Я знаю, предлагают инструменты для извлечения открытых ключей из личных файлов. Это верно для pgp, gpg, openssl. Это означает, что так называемые файлы закрытого ключа хранят как частные, так и открытые ключи, как описано в алгоритмах. Это по дизайну.
Для Exemple с OpenSSL последовательность команд для генерирования пары ключей RSA может быть:
openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
Это должно быть достаточно ясно, что первая команда генерирует оба ключа в файл закрытого ключа и что открытый ключ просто извлекается из него.
Следствием этого является то, что если ваш секретный ключ будет когда-либо скомпрометирован, обе ваши ключи будут скомпрометированы. Другой способ защищен, вы не можете вывести закрытый ключ, если знаете открытый ключ ни из файла, ни из математической атаки.
- шифрования с закрытым ключом является математически слабым: хорошо, предыдущий пункт уже достаточно, но некоторые изощренные пользователи могут рассматривать с использованием асимметричной криптографии держа обе клавиши скрытые для обмена данными. Не используйте симметричное шифрование, если вы хотите делать такие обмены. Да, можно шифровать сообщение с помощью закрытого ключа и расшифровывать его с помощью общедоступного (это в основном то, что используется для подписания, но вариант использования отличается, поскольку у вас также есть начальное сообщение). Внутренние параметры двух клавиш не являются именами, и вся силовость криптографии была применена только для обычного направления и общего использования.
I * think * это сильно зависит от используемого алгоритма шифрования. В некоторых они взаимозаменяемы, в других - нет. Это связано с этим вопросом: http://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key –
+1 за то, я долго размышлял. –
Связано с http://security.stackexchange.com/questions/52495/can-rsa-keys-be-swapped для RSA. – Gnubie