На этот раз досконально разберитесь в принципе https

HTTPS
На этот раз досконально разберитесь в принципе https

мойgithub/blog, если звезда, большое спасибо

Рекомендуется смотреть на компьютере, картинка немного тесновата, а экран мобильного телефона слишком мал для четкого просмотра.

не принимайте близко к сердцу

Как фронтендер, ты всегда будешь слышать такой голос, когда учишься или работаешь: чтоhttps? ты правhttpsНасколько вы понимаете? скажите что-тоhttpsБар? Такие вопросы также относительно легко задавать на предварительных интервью.Цель состоит в том, чтобы оценить широту знаний интервьюируемого.Я полагаю, что вы не хотите быть следующими выражениями, когда их спрашивают:


Эта статья призвана помочьhttpsМалый front-end ER вообще не понял, макроскопическое понимание, "макро" здесь не травка, а предполагает какие-то алгоритмы шифрования, которые не анализируют и не интерпретируют технические детали, короче эта статья не нужна? Думая и понимая, просто нужно серьезно читать, я думаю, вы пойметеhttps原理Да, пожалуйстане принимайте близко к сердцу. Что ж, давайте сначала перейдем к следующему сценарию.

У Майкла и Ци'эр давние партнерские отношения. У них часто есть тесные торговые связи. Часто требуется пересылка сверхсекретной информации, включающей некоторую сумму денег, друг другу через Интернет. Однако Джек, хакер с технологиями, был желанным в течение долгого времени, всегда думал украсть какую-то информацию.

Однажды Майкл и Ки’эр все-таки общались оригинальным способом, так называемый оригинальный способ — ничего не делать с информацией, которую они хотят отправить, и передавать ее напрямую по сети:

На этот раз хакер Джек Коук не выдержал: он перехватил сообщение Майкла, изменил номер карты на свой и отправил его Циеру:

В это время Ци'эр не знала, что информация, отправленная Майклом, была подделана, поэтому она перевела средства на собственный банковский счет хакера (8888 на картинке выше) и из вежливости дала простой ответ: На самом деле ответ мог быть перехвачен хакером Джеком, но ему было все равно. Получив деньги, он ушел. Только когда Майкл отправил Ци'эр сообщение о платеже, Ци'эр знала, что она был взломан.

Мы соотносим вышеуказанные отношения с отношениями между нами и сервером для получения и отправки сообщений:

Michael киль Хакер Джек оригинальный способ
Кефудуан Сервер посредник http

Одно решение: симметричное шифрование

Это сломано, Майкл и Ци'эр больше не смеют обмениваться информацией, иначе призрак знает, сколько денег они должны отправить хакеру Джеку, но дело все еще нужно сделать, и транзакция может' Его нельзя остановить. Майкл не может позвонить Ци ради этого. Чтобы заработать деньги, вы должны сесть на самолет, чтобы найти Ци'эра и сказать ему номер карты лично, верно? (Пожалуйста, не спрашивайте, почему вы не звонили сюда, вопрос только для нужд сцены, телефона нет 😊)


Умный Майкл подумал немного и сказал: «Почему бы вам не установить правило, когда я отправляю вам сообщение, я использую это правило для преобразования данных, чтобы они не были распознаны напрямую, что мы сказали, а затем вы принимаете его, а затем используете это правило для преобразования преобразованной информации обратно в реальную информацию.Теперь расскажи мне об этом правиле", Циэр сказал: "Тогда мы заменим каждую букву в пиньине каждого китайского иероглифа на число от 1 до 26, каждую английскую букву... балаблабала" (Вот "алгоритм" шифрования и дешифрования, то есть ключ.Алгоритмов конкретных много.), Майкл сказал, услышав это: «Это правило (алгоритм шифрования) очень хорошее, так что давайте сделаем это».

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

Вскоре после этого Шер обнаружила серьезные лазейки в этом методе:

  • У меня есть клиенты по всему миру, если хакер (например, Джек) выдает себя за моего клиента и получаетkey, какой у меня алгоритм шифрования, то сможет ли он, как и раньше, перехватывать и расшифровывать сообщения, отправленные мне другими клиентами?
  • Даже если я сгенерирую другойkey, не говоря уже о том, как дорого стоит моя память, если хакер перехватил это, когда я отправлял ключ клиентуkey, то он может бессовестно расшифровать его снова.

Этот проклятый хакер наделал много шума из Майкла и Чиера, но Майкл случайно знал друга, который занимался криптографией.Во время небольшой беседы Майкл узнал от него алгоритм шифрования под названиемАлгоритм асимметричного шифрования (RSA), кола Майкла была разбита, и он сразу же сказал об этом Хиер.

Два решения: асимметричное шифрование

Так называемое асимметричное шифрование, на самом деле, принцип очень прост, до того, как Qier имеет только общественностьkey, которые могут быть получены всеми клиентами (включая хакеров) или перехвачены, чтобы расшифровать чужие сообщения. Но теперь все по-другому, у Чиэр дваkey,Один公钥(public key), доступный для всех; другой私钥(private key), знает только Ки'эр.


Теперь, прежде чем Майкл отправит официальное сообщение, попросите Qier предоставить открытый ключ:

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

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

Обратное также то же самое, если Ци'эр хочет отправить сообщение Майклу, она должна сначала запросить открытый ключ Майкла.После того, как Ци'эр его получит, она зашифрует его и отправит, а Майкл использует свой закрытый ключ для расшифровки Это. Для простоты понимания мы сейчас обсуждаем только одностороннюю связь.По умолчанию обе стороны выполнили одно и то же действие по установлению связи.

После того, как две стороны некоторое время общались с асимметричным шифрованием, они обнаружили, что эффективность связи этого метода была особенно низкой (это проблема алгоритма асимметричного шифрования, поэтому я не буду вдаваться в подробности), что более важно. чем в 100 раз медленнее, чем предыдущее симметричное шифрование. Невыносимо, поэтому умный Майкл объединил симметричное шифрование и асимметричное шифрование в два этапа: "(1) Циер сначала генерирует временный алгоритм симметричного шифрования, то есть временный ключ, а затем отправляет ключ Майклу в виде асимметричного шифрования (RSA); (2) После того, как Майкл безопасно получает ключ симметричного алгоритм шифрования, и их связь затем симметрично зашифрована".

Теперь вроде бы решается проблема безопасной передачи симметричного ключа, а также решается проблема скорости, и это замечательно!

Когда Майкл успокоился насчет своей сообразительности, хакер Джек сказал, что это уловка, и Джек запустил пресловутуюатака «человек посередине»

атака «человек посередине»

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

Получив запрос на открытый ключ, Ци'эр отправил открытый ключ обратно с сообщением.После того, как хакер Джек перехватил открытый ключ, он отправил информацию только Майклу, а открытый ключ Ки'эр остался у него.

После этого Майкл использовал открытый ключ Джека, чтобы зашифровать данные, которые он хотел отправить Ци'еру, и они были перехвачены хакером Джеком.Затем Джек расшифровал их своим закрытым ключом, после чего он смог получить информацию Майкла и подделать с содержимым сообщения по желанию. , использовать ранее зарезервированный открытый ключ Qi'er для шифрования и отправки его Qi'er, все это можно пояснить следующей картинкой:

Да, Майклу и Чи'ер снова противно, но проблему еще надо решить, жизнь должна идти, а дела надо делать.

图片 4.png
Изображение 4.png

Решение 3: Привлечение стороннего нотариального бюро

Основная проблема, описанная выше, заключается в том, что Майкл не может гарантировать, что открытый ключ, который он получил, является открытым ключом Кьера, поэтому может ли он установить открытый ключ?Нотариус (Калифорния), пока Qier берет свой открытый ключ в нотариальную контору для выдачи сертификата и упаковывает некоторую личную информацию Qier, выданный сертификат и открытый ключ Qier в одинСертификат, любой клиент, получивший этот сертификат, может подтвердить, что это открытый ключ Qier, а затем безопасно передать его. Это похоже на человека, который идет в бюро JC, чтобы открыть удостоверение личности, открыть что-то, что может подтвердить его личность.

Государственный нотариус (CA) имеет свой собственный закрытый ключ и открытый ключ


Но снова возникла неразрешимая проблема: как Михаил узнал, что сертификат не был подделан хакерами в процессе передачи? ? Не волнуйтесь, цифровая подпись нам поможет~

цифровой подписи

Qi'er сейчас собирается в нотариальную контору (CA) для выдачи сертификата, но будут неразрешимые проблемы, о которых мы подумали выше, поэтому Qi'er сначала использует свой открытый ключ, личную информацию и некоторую другую необходимую информацию для использования. аhash算法генерировать数字摘要,этоhash算法Есть хорошие фичи, пока немного меняется информативность, повторно используется сгенерированный алгоритм数字摘要Контент изменится кардинально.

После этого нотариус (CA) использует свой собственный закрытый ключ для数字摘要зашифровать, сгенерировать файл с именем数字签名вещи.

Цифровой сертификат

После этого поместите исходное сообщение Шер и数字签名объединились, чтобы сформировать совершенно новую вещь под названием数字证书

В это время, когда Майкл попросил Qier предоставить открытый ключ, Qier отправил сертификат Майклу.


После того, как Майкл получил сертификат, он впервые использовалhash算法Создать новую информацию об исходной информации Шер数字摘要, а затем используйте пару открытых ключей нотариуса (CA)数字签名расшифровать, а также создать数字摘要, помните, что мы говорили о свойствах алгоритма хеширования? Пока есть небольшие изменения в содержании, дайджест будет сильно меняться, поэтому, если часть информации Qier будет подделана, дайджест, сгенерированный хэшем, будет сильно отличаться от дайджеста, расшифрованного открытым ключом CA. информация, такая как открытый ключ, была подделана.

(Я знаю, вы хотите спросить, как получен открытый ключ ЦС. Мы временно понимаем, что он существует в вашей операционной системе или добавляется вами)

Если теперь Майкл, наконец, подтвердит, что это открытый ключ Шер, он может спать спокойно.Используйте алгоритм асимметричного шифрования, чтобы сначала получить ключ алгоритма симметричного шифрования, временно сгенерированный Qi'er, и провести безопасную связь.

Эпилог

Большое спасибо за внимательное прочтение.Многие изображения в статье являются моими собственными, чтобы помочь вам понять рисунок.Я надеюсь, что вы действительно сможете понять его после прочтения этой статьи.httpsЭто также является целью моего написания этой статьи.Если есть какие-либо неудобства в написании, пожалуйста, простите меня, насколько это возможно. Кроме того, эта статья ссылается на многие статьи, но когда я писал эту статью, я не помнил статьи, на которые я ссылался, и я не стал их искать снова, поэтому я не опубликовал справочные статьи, поэтому я извини.