2010-03-02 5 views
5

Скажем, у нас есть Алиса и Боб.Как работает двухстороннее асимметричное шифрование?

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

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

Алиса должна добавить какой-то публичный хэш к своему сообщению, поэтому Боб может сказать: «Это определенно произошло от Алисы?»

ответ

5

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

Идите в обратном направлении для Алисы, чтобы обеспечить сообщение от Боба.

Все, что вам нужно сделать, это убедиться, что у Боба есть реальный публичный ключ Алисы, а не один, введенный человеком посередине.

+0

Итак, вам нужно проверить ВСЕ байты открытого ключа? Есть ли определенная часть ключа, на который вы можете смотреть, чтобы убедиться, что это действительно между вами? Достаточно ли отпечатка пальца? – tbarbe

+1

Нет, вы используете открытый ключ для дешифрования хэша сообщения (подпись), затем хеш-сообщение в качестве получателя. Если хеши совпадают, значит, вы знаете, что это послала Алиса. http://en.wikipedia.org/wiki/Digital_signature – Nathan

+0

Ах да ... md5 или SHA-1 - да? Итак, как только сертификат прибывает в пункт назначения - способ проверить его все в порядке - сравнить md5 и SHA-1 .... у сертификатов, которые у меня есть, - показать оба этих ...и я предполагаю, что это то, что я читаю о «сравнении их вне диапазона» - значит, не делайте этого по небезопасной настройке? – tbarbe

-1

Потому что вы делаете предположение, что секретный ключ действительно «частный» - i.e., Alice и bob не оставляют свои ключи USB, вставленные в их машину, когда они покидают работу.

+0

Где я сделал это предположение? – Amy

+0

«Ты» не сделал, я имел в виду пословицу «ты»; и да, вы не используете такое шифрование, если между Алисой и Бобом нет доверительного канала, который является центром сертификации. Пэ, я не могу удалить свой ответ на ваш вопрос. –

+0

Я понятия не имею, к чему вы клоните. Вопрос состоял в проверке источника сообщения. Перечитайте последнее предложение в вопросе и обратите внимание, что ваш ответ не рассматривал его. Это не имело ничего общего с сохранением ключей. Ваш ответ на мой комментарий также не затронул вопрос. Почему вы ответили? – Amy

9

Сценарий, который вы описываете, действительно не обеспечивает подлинности. Поэтому и Алиса, и Боб не могут быть уверены, что разговаривают друг с другом. Сценарий обеспечивает только конфиденциальность, а также не секретность.

Бобу необходимо будет подтвердить Алисой, что открытый ключ, который, по его мнению, является открытым ключом Алисы, действительно ее (позвонив ей и прочитав ее нагрузка и подтвердив ее голосом, что это Алиса).

Эта проблема обычно решается доверенным третьим лицом (например, центром сертификации, например VeriSign), который выдает сертификаты, указывающие, например, Алиса действительно является владельцем этого конкретного открытого ключа. Так решается в современных браузерах, и так работают все сеансы SSL (с вашим банком выбора). Центр сертификации подписывает сертификат от вашего банка (заявив, что ваш банк действительно является владельцем открытого ключа, который содержит сертификат), и ваш браузер имеет уже встроенный сертификат от центра сертификации (создание цепочки сертификатов, которые могут быть проверены).

Сценарий, который вы описываете, уязвим для так называемой атаки MITM (Man-in-the-middle) и не разрешается исключительно с использованием шифрования с открытым ключом.

1

То, о чем вы говорите, очень очень слабо выглядит как другая реализация асимметричного алгоритма шифрования, найденного в каркасе .Net.

.Net использует две ветви для асимметричного шифрования !!!

  1. RSA ** Grand Mac daddy используется для всех асимметричных целей.
  2. DSA **, подробнее связанные с использованием и созданием цифровой подписи, чтобы проверить автора.

Оба Аннотация

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

Вы говорите Вариант 2.

.Net предоставляет класс DSACryptoServiceProvider, который позволяет помечать данные со значением, которое обычно называют подписью.

Согласно учебному пособию по официальному курсу MS, примерно так же оно работает.

>>> Data Hash Alg >>> Hash Value >>>>>>>>> Asymm»Alg >>>> Подпись PVT.KEY отправителя >>>

Ниже показано, как Боб может проверить чтобы увидеть, действительно ли Алиса является отправителем.

Данные >>> Hash Alg >>> Хэш-значение || Decrypted Подпись < < < PUB.KEY Asymm»ALG < < < Подпись < < < отправителя ? ==?

Как вы можете видеть, Боб должен сравнить сгенерированную подпись и дешифрованную подпись , чтобы убедиться, что Алиса является отправителем. Класс DSACrypto имеет 4 метода, которые могут использоваться здесь , но только два являются эффективными в контексте. На данный момент это все, что может сделать Боб, если его публичный ключ не является открытым ключом alice, тогда, по существу, программное приложение должно остановить Боба в его следах, продолжая все дальше, поскольку bob пытается использовать поддельный открытый ключ, когда пытаясь связаться с Алисой. Это навязанные отношения и подчеркнутое значение открытого ключа. Подпись позволяет проверить владельца открытых ключей.

Вот почему? ::

Если у Боба открытый ключ Алисы, он может снова использовать тот же алгоритм, чтобы расшифровать зашифрованные данные с помощью методов .VerifyHash или VerifyData. Должно быть прямо, что они делают, учитывая этот контекст. Все это делается с помощью открытого ключа Алисы. Только Алиса может использовать методы SignHash и SignData, поскольку им нужен закрытый ключ Алисы.

Как вы можете видеть выше, определенный уровень функциональности инкапсулирован уже внутри классов DSA и RSA CryptoServiceProvider. Это сводится к тому, насколько хорошо вы их реализуете, чтобы каждый раз проверять Alice как отправителя, поскольку алгоритм DSA позволяет вам сертифицировать отправителя, сопоставляя сгенерированный вывод. Определенная подпись и хэш должны совпадать, если они это делают, то по существу DSA предоставил вам определенный уровень конфиденциальности между Бобом и Алисой.

+0

Надеюсь, это имеет смысл, поскольку он исходит от ученика, который пытается пройти экзамен 70-536. Как указано выше, это второй из двух ответов, которые я написал здесь о переполнении стека, относящихся к криптографии. – IbrarMumtaz

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