Именование вопроса открытого и закрытого ключа - PullRequest
3 голосов
/ 14 сентября 2011

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

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

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

Ответы [ 4 ]

7 голосов
/ 15 сентября 2011

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

Для шифрования данных you шифрование данных с использованием открытого ключа получателя; они расшифровывают , используя свой закрытый ключ.Обратите внимание, что из-за различных ограничений RSA «данные», которые шифруются и дешифруются, обычно являются просто ключом для симметричного алгоритма.

Для цифровых подписей you sign данные с использованием вашего закрытого ключа; они проверяют подпись данных, используя ваш открытый ключ.Опять же, различные ограничения RSA означают, что то, что фактически выполняется алгоритмом RSA, обычно является безопасным хешем данных.

Иногда операцию подписания называют «шифрованием с помощью закрытого ключа» и операцией проверкиназывается "расшифровка с открытым ключом".Я думаю, что это просто смущает людей, поэтому я всегда предпочитаю подписывать и проверять условия в этом контексте.Кроме того, «шифровать» и «дешифровать» не имеет смысла для других алгоритмов подписи, таких как DSA и ECDSA.

2 голосов
/ 14 сентября 2011

Вы МОЖЕТЕ сгенерировать открытый ключ из закрытого ключа.

Вы НЕ МОЖЕТЕ сгенерировать закрытый ключ из открытого ключа (ну, вы могли бы, но это чрезвычайно затратно для вычислений).1005 *

В этом разница между ними.Они НЕ взаимозаменяемы (например, вы НЕ ДОЛЖНЫ публиковать свой закрытый ключ и хранить открытый ключ при себе) из-за способа работы алгоритмов.

Например, RSA ,В основе алгоритма лежит задача целочисленной факторизации.Вы выбираете два больших целых числа p и q и умножаете их, чтобы получить n = p * q .Затем вы создаете открытый и закрытый ключ:

  • Открытый ключ: (n, e)
  • Закрытый ключ: (p, q, d)

Тогда:

  • Легко вычислить открытый ключ из закрытого ключа:

    n = p * q

    e = d ^ (- 1)mod φ (n), где φ (n) = (p-1) (q-1)

  • Трудно рассчитать закрытый ключ из открытого ключа - требуется факторизация n, чтобы получить p и q , что очень трудно, если p и q достаточно велики.
0 голосов
/ 14 сентября 2011

Существует два типа шифрования: симметричный, асимметричный. Симметричный ключ, используемый для шифрования и дешифрования, одинаков. в асимметричном ключе для шифрования используется открытый ключ, а для расшифровки - закрытый ключ.

все работает по принципу секретности ключа. В цифровой подписи, обычно используемой как часть протоколов SSL / TLS, используется асимметричное шифрование для аутентификации и совместного использования главного ключа, которое используется в дальнейшем для шифрования линии связи .

0 голосов
/ 14 сентября 2011

Вы публикуете свой ключ шифрования и сохраняете свой ключ шифрования закрытым.Таким образом, любой может отправить вам зашифрованные данные, которые может расшифровать только вы.

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

...