Полностью иллюстрированный HTTPS

HTTP

Основы безопасности

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

постукивание

image

Подделка

image

отказываться от

image

Шифрование с симметричным ключом

ПредположениеAчерез ИнтернетBОтправлять данные, если данные не зашифрованы, данные могут быть использованы злоумышленникамиXВидеть

Следовательно, данные, которые должны храниться в секрете, должны быть зашифрованы, а затем отправлены.

image

  • Шифрование данных с помощью зашифрованного текста
  • отправить зашифрованный текст наB
  • BИспользуйте ключ для расшифровки изAПолученный зашифрованный текст, так что вы можете получить исходные данные
  • Поскольку данные зашифрованы, они в безопасности, даже если их перехватит злонамеренная третья сторона.

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

image

Возвращаясь к сцене только что, предположим,BКлюча для расшифровки нет, поэтомуAНеобходимо отправить ключи через Интернет наB

  • ноXТакже возможно увидеть этот ключ
  • следовательно,XЭтот ключ также можно использовать для расшифровки зашифрованного текста.

Приведенный выше сценарий приведет к новой проблеме, которая называется «проблемой доставки ключей», так как же решить эту проблему?

шифрование с открытым ключом

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

image

  • Ключ, используемый для шифрования, называется «открытым ключом», а ключ, используемый для дешифрования, называется «закрытым ключом».
  • Шифрование с открытым ключом, как правило, требует больше времени для шифрования и расшифровки, чем «шифрование с симметричным ключом».

Давайте посмотрим на весь процесс «шифрования с открытым ключом».

image

получательBСоздаются открытый ключ и закрытый ключ, открытый ключ отправляетсяA

image

  1. AИспользоватьBПолученный открытый ключ шифрует данные и отправляет зашифрованный текст вB
  2. BРасшифровать с помощью закрытого ключа изAПолучил зашифрованный текст, получил исходные данные

Во время этого процесса

  • Шифрованный текст и открытый ключ также могут быть перехвачены злонамеренной третьей стороной X
  • Но закрытый ключBзаконсервированный,XНе удалось получить, естественно нет возможности расшифровать шифртекст
  • Это хорошее решение «проблемы доставки ключей».

Проблемы с шифрованием с открытым ключом

  1. Как шифрование, так и дешифрование требуют времени, для решения этой проблемы существует метод под названием «гибридное шифрование».
  2. надежность открытого ключа

Гибридное шифрование

image

Шифрование со смешанными ключами в два этапа

  1. Передать ключ через шифрование с открытым ключом
  2. Передавайте данные с помощью более быстрого шифрования с симметричным ключом

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

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

image

Aна самом деле получилXподдельный открытый ключ, отправленный ему, ноAНе удалось обнаружить

image

наконец,XЗашифруйте данные ответа своим ключом и отправьте ихA, так что хотяA,BОбе стороны могут успешно завершить общение, но злонамеренная третья сторонаXМожет видеть расшифрованные данные запроса и данные ответа, а такжеA,BНи одна из сторон не знала.

Этот метод кражи данных путем тайной замены открытого ключа известен как «атака посредника», и корень проблемы заключается в следующем.AНе удалось подтвердить, что открытый ключ, который они получили, был созданBпартия создана. Как избежать атаки «человек посередине»? Давайте обсудим это в разделе, посвященном цифровым сертификатам, а затем объясним некоторые необходимые знания.

код аутентификации сообщения

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

image

Код аутентификации сообщения может быть решен, хотя伪造проблема, но все же неизбежная否认вопрос

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

чтобы решить эту否认Проблема, давайте посмотрим на метод "цифровой подписи" далее

image

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

Хотя описанный выше метод позволяет избежать窃听,伪造,否认И так далее, но избежать атаки «человек посередине» по-прежнему невозможно, потому что мы все еще не можем проверить владельца открытого ключа, поэтому нам нужна система «цифрового сертификата» для проверки владельца. открытого ключа.

Далее рассмотрим процесс подачи заявки на получение цифрового сертификата.Называем Digital Certificate Authority (Центр сертификации)CA

image

Теперь, когда B подал заявку на получение цифрового сертификата, как использовать цифровой сертификат для проверки того, что открытый ключ PB принадлежит B?

image

Теперь можно проверить, что PB принадлежит B, но как проверить, что PC принадлежит доверенному CA?

image

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

HTTPS

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

HTTPSНа самом деле он добавляет слой между транспортным уровнем и прикладным уровнем.SSL/TLS, дляTCPШифрование и дешифрование передаваемого контента

image

Давайте посмотрим на подробный рабочий процесс ниже

image

Реализация прокси-сервера «человек посередине» с помощью Node

На данный момент мы все знаем HTTPS, цифровые сертификаты и другие сопутствующие знания, и мы можем внедрить посреднический прокси-сервис. Вот ссылка. Если вам интересно, вы можете увидеть, какРеализация прокси-сервера «человек посередине» с помощью Node