2016-09-18 3 views
-4

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

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

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

Извините за мое невежество. Я обыскал интернет, и почему-то ответы на них уходят от меня.

Любая помощь была бы принята с благодарностью.

Спасибо, Mohamed

+0

* «сервер имеет только открытый ключ» * - вот где вы ошибаетесь. На сервере есть как закрытый ключ, так и открытый ключ. –

+0

Спасибо. Вот мой дальнейший вопрос. В реальном мире, скажем, например, чтобы получить доступ к репозиторию gitHub из локального, после генерации ключей с помощью ssh-keygen клиент копирует * .pub ключ на сервер git-хаба (что означает, что открытый ключ копируется на сервер). Другими словами, сервер теперь имеет только * .pub-ключ (скажем, id_rsa.pub). В этом случае, как мы можем сказать, что на сервере github есть мой закрытый ключ? Посмотрите URL-адрес https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ для ssh для github – mohamed

+0

@mohamed. В этом случае вы говорите о подписании который выполняется с помощью закрытого ключа и проверки подписи открытым ключом. В RSA это в основном такая же операция, как и шифрование, но другой RSA - особый случай. Другие асимметричные криптоалгоритмы существуют либо для шифрования, либо для подписи. –

ответ

1

Если сервер имеет только открытый ключ, он не может расшифровать сообщение от клиента.

Еще раз, с важным Vocab словом выделены жирным шрифтом: Если сервер имеет только открытого ключ он не может расшифровать сообщения от клиента.

Что сервер, вероятно, делает это проверки сообщение подписал клиентом.

В случае аутентификации открытого ключа SSH (RFC 4252, section 7) это подпись по идентификатору сеанса только что согласованного и некоторые данные контекста (для чего требуется, чтобы клиент имел закрытый ключ). Затем сервер может запустить алгоритм проверки подписи (для которого требуется только открытый ключ). Если проверенный ключ проверяется, клиент аутентифицируется.

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

  • Encrypt (открытый ключ): преобразование контента таким образом закупорить его от всех, кроме предполагаемого получателя (Держатель закрытого ключа).
    • Общие алгоритмы: RSA
    • В шифровании зашифрованная выход Заменяет исходное содержание в передаче.
    • Шифрование с открытым ключом часто используется для шифрования вновь созданного симметричного ключа, который фактически шифрует данные. Для RSA зашифрованный вывод ограничен размером ключа, симметричные алгоритмы имеют гораздо большие максимумы.
  • Расшифровать (закрытый ключ): преобразование содержимого из операции Encrypt обратно в исходную форму.
    • Поскольку каждый может иметь ваш открытый ключ, любой может зашифровать данные для вас.
    • Ничто не является неотъемлемой частью пары Encrypt/Decrypt для установления доверия ...сообщение может быть ядовитой пилюлей, и вы не знаете, кто ее написал.
  • Вход (закрытый ключ): Применить преобразование над входом (который обычно является гидролизат/хэш истинного содержания) для получения значения никто не может.
    • Общие алгоритмы: RSA, ECDSA, DSA
    • Сигнатура представлена ​​с содержанием, он не заменяет его.
  • Проверьте (открытый ключ): Применить преобразование над входом и подписью, что приводит к true или false.
    • Если дайджест вычисляется независимо получателем контента, подпись подтверждает, что содержимое не было подделано.
    • Когда подпись считается правильной, она доказывает, что она была сгенерирована держателем ключа, который может использоваться в решении доверия. (Ключ мог быть скомпрометирован, и в этом случае «держатель ключа» и «оригинальный держатель ключа» могут быть разными)
    • Для RSA это «распаковать дайджест, используя алгоритм, подобный расшифровке, а затем сравнить дайджесты», поэтому реализация RSA может указать, что такое правильный хеш.
    • Для DSA и ECDSA дайджест используется как BigInteger в формуле, которая производит вторую половину подписи с первой половины, поэтому DSA не может сказать вам, какое правильное значение дайджеста.
Смежные вопросы