Во-первых, на шаге 3 отсутствуют некоторые шаги. Что на самом деле происходит на третьем этапе является:
Причина этого заключается в два раза. Во-первых, математика для открытого ключа crypto намного дороже, чем математика для секретного ключа crypto. Идея состоит в том, чтобы сделать эту дорогую математику только один раз, чтобы обменяться общим секретом. Во-вторых, клиент знает открытый ключ сервера, но клиент может даже не иметь открытого ключа, так как сервер может отправить ему секретное сообщение? Вот почему они должны договориться об общем секретном ключе.
В любом случае движение на вопросы:
Где служба держать закрытый ключ?
В Windows это хранилище сертификатов, предоставляемое операционной системой. В других операционных системах я не знаю.
Зачем нужен сертификат?
Предположим, вы хотите купить мою газонокосилку с помощью кредитной карты, но вы обеспокоены тем, что я действительно могу быть мошенником. Вы хотели бы знать свое настоящее имя, чтобы вы могли преследовать меня, если я начну заряжать свою поездку в Вегас на вашей карте.
Итак, когда мы совершаем транзакцию, я показываю вам листок бумаги, в котором говорится: «Эрик Липперт утверждает, что владельцем этого листка бумаги является Эрик Липперт, подписанный, Эрик Липперт». Ты веришь мне? Если вы уже доверяете Эрику Липперту, вам не нужен листок бумаги, и если вы не доверяете Эрику Липперту, то бумага не устанавливает доверия. Это «самоподписанный сертификат».
Теперь, если я покажу вам листок бумаги, в котором говорится: «VeriSign заявила, что владелец этого листка бумаги Эрик Липперт, подписанный VeriSign», тогда возникает вопрос: доверяете ли вы VeriSign проверить мою личность? ? Если вы это сделаете, то это свидетельствует о том, что человек, с которым вы разговариваете, является тем, кем они себя называют.
Это цель сертификата. Он устанавливает, что конкретный открытый ключ действительно связан с конкретной организацией, потому что это , подписанный взаимно доверенной третьей стороной, называемый уполномоченным органом .
Когда вы покупаете что-то с помощью своей кредитной карты в Интернете, вы, вероятно, доверяете веб-сайту, чтобы только разрешить авторизацию этой карты. Сертификат подтверждает, что открытый ключ, который вы собираетесь использовать для шифрования, действительно является открытым ключом этого веб-сайта, а не публичным ключом злого хакера.
Но сертификат с открытым ключом является общедоступным, так что не может кто-то захватить сертификат и притвориться сервером?
Да. Безопасность всей системы зависит от того, что частный ключ остается закрытым. Вот почему его называют закрытым ключом. Если злоумышленник получает доступ к вашему личным ключам, они могут выдавать себя за вас, поэтому держите его в секрете, сохраняйте его в безопасности. Если ваш ключ скомпрометирован, существует механизм, при котором сертификат может быть отозван, но ущерб, как правило, уже будет выполнен.