HTTPS Подробное объяснение большой серии расширенных интерфейсов

внешний интерфейс HTTPS
HTTPS Подробное объяснение большой серии расширенных интерфейсов

Эта статья была написана членом командыЦзун ВэйЕму разрешено исключительное использование Tuya Front-end, включая, помимо прочего, редактирование, пометку оригинальности и другие права.

предисловие

Многие статьи в Интернете объясняют HTTPS.туманный, после прочтения этого, если вы все еще не понимаете, вы можете просто добавить странный WeChat и назвать меня отморозком (пожалуйста, спрашивайте много деталей)Муравей ФинансовыйБудь надежным другом)~

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


Каждая статья надеется, что вы можете что-то получить, эта поможет вамУглубить HTTPS, добавив Cormented Prime, я надеюсь получить следующие результаты после прочтения:

  • Понять, что именно решает HTTPS
  • Понимать принципы и сценарии использования симметричного шифрования и асимметричного шифрования.
  • Понимание роли центров сертификации и корневых сертификатов

Why HTTPS

В последние годы крупные компании активно продвигают построение HTTPS. Google Chrome помечает веб-сайты, не поддерживающие HTTPS, как «небезопасные», Apple требует, чтобы HTTPS использовался для связи в APP, а апплет WeChat также требует использования протокола HTTPS. Так почему мы должны делать такие вещи?

Давайте посмотрим на HTTP. HTTP (протокол передачи гипертекста) Протокол передачи гипертекста — это распределенный, совместный протокол прикладного уровня и информационная система гипермедиа, можно сказать, что он является основой современных HTTP-коммуникаций в Интернете.

Однако у HTTP есть фатальный недостаток, то есть содержимоепередача открытого текста, без какого-либо шифрования, и эти данные открытого текста будутWiFi, роутер, оператор, компьютерный залОжидание нескольких узлов физического устройства, если какой-либо узел в середине отслеживается, содержимое передачи будет полностью раскрыто.Этот метод атаки называется MITM (человек посередине).посредникатака.

Пример, это немного длинно, но этот пример показывает, почему я так одержим безопасностью~~

Вы можете использовать аналогию с передачей заметок в классе, когда вы были ребенком: вы сидите в классе у стены и хотите произнести предложение ** «Я буду ждать вас на детской площадке после школы ночью» ** Сяохуну, который сидит у окна, а посередине проходят шесть или семь человек. Хотя вы сложили записку пополам, джентльмен не злодей, и каждый в середине может легко открыть записку и увидеть, что вы хотите сказать.

Это просто нормально видеть, есть ли Сяоган, которому также нравится Сяохун, и видя, что вы двое скоро отправитесь домой, я чувствую нежелание, поэтому я изменил примечание и изменил его на ** «После школы ночью, ты сам .Иди домой, я иду в интернет-кафе играть в игры"**.

Сяохун очень расстроилась, увидев, что ты собираешься бросить ее, чтобы играть в игры одна, и начала спрашивать на записке: «Мы договорились пойти домой вместе, почему ты собираешься играть в игры, хм»**.

На обратном пути от записки Сяохуна Сяоган снова изменил записку**: «Иди, играй в свою игру, я хочу пойти домой с Сяоганом»**.

Итак, и вам, и Сяохун очень грустно, Сяоган завоевал любовь, а вы в растерянности.


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

运营商劫持

угон авианосца

и сотрудники крупных компанийОбучение технике безопасностиВ нем есть пункт «Не подключаться к незнакомому WiFi», и это тоже по той же причине: контроллер вредоносного WiFi может видеть и подделывать информацию, передаваемую в открытом HTTP-тексте.

Чтобы решить проблемы с безопасностью, которые может вызвать передача данных открытого текста HTTP, в 1994 году Netscape предложила безопасный протокол передачи гипертекста HTTPS (протокол передачи гипертекста).Зашифрованные пакеты SSL/TLS.

Принцип реализации HTTPS

Как упоминалось ранее, HTTPS на самом деле представляет собой передачу HTTP-пакетов, зашифрованных с помощью SSL/TLS, так что же такое SSL/TLS?

Протоколы безопасности транспортного уровня SSL (Secure Sockets Layer) и TLS (Transport Layer Security) на самом деленабор вещей.

Когда Netscape предложила протокол HTTPS в 1994 году, он использовал SSL для шифрования. Позже Инженерная рабочая группа Интернета IETF (Целевая инженерная группа Интернета) дополнительно стандартизировала SSL и опубликовала первую версию документа протокола TLS TLS 1.0 в 1999 году. Последней версией протокола TLS является TLS 1.3, анонсированная в 2018 году.

процесс работы

Давайте сначала посмотрим на процесс шифрования и дешифрования HTTPS.

HTTPS加解密流程

Процесс шифрования и дешифрования HTTPS

  1. Пользователь инициирует HTTPS-запрос в браузере (например,juejin.im/), подключение по умолчанию осуществляется через порт 443 сервера;
  2. HTTPS требует использования набораCA Цифровой сертификат, сертификат будет сопровождатьсяПубличный ключ, и соответствующийЗакрытый ключЗакрытыйДержите его закрытым на стороне сервера;
  3. Сервер получает запрос и возвращает настроенный контентПубличный ключсертификат клиенту;
  4. клиент получаетСертификат, проверьте действительность, в основном в том числе, находится ли она в пределах срока действия, соответствует ли доменное имя сертификата запрошенному доменному имени, является ли действительным сертификат верхнего уровня (рекурсивное суждение, пока корневой сертификат не встроен в систему или не настроен оценивается браузером), если нет Если пройдено, отобразить предупреждающее сообщение HTTPS, если пройдено, продолжить;
  5. Клиент генерирует симметричное шифрованиеслучайный ключ, и используйтеПубличный ключЗашифровать и отправить на сервер;
  6. сервер получаетслучайный ключшифрованный текст, используяПубличный ключпарныйЗакрытый ключЗакрытыйРасшифруйте, чтобы получить то, что клиент действительно хочет отправитьслучайный ключ;
  7. Сервер использует данные, отправленные клиентомслучайный ключСимметрично шифровать передаваемые данные HTTP и возвращать зашифрованный текст клиенту;
  8. Использование клиентаслучайный ключСимметрично расшифровать зашифрованный текст, чтобы получить открытый текст данных HTTP;
  9. Последующие HTTPS-запросы используют ранее обмененныйслучайный ключВыполнять симметричное шифрование и дешифрование.

Симметричное и асимметричное шифрование

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

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

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

На данный момент нам нужен еще один магический тип шифрования, асимметричное шифрование.

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

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

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

Примечание. И закрытый ключ Способность отличается, не взаимозаменяемы в реальном использовании. Функция подписи также полезна для HTTPS лет, она будет объяснена ниже.

Только один набор приватных открытых ключей может гарантировать только одностороннее сглаживание, тогда, если мы подготовимДва набора открытых и закрытых ключейНу можно ли решить эту проблему? Посмотрите на процесс ниже.

  1. Сервер имеет открытый ключ асимметричного шифрования A1 и закрытый ключ A2;
  2. У клиента есть открытый ключ асимметричного шифрования B1 и закрытый ключ B2;
  3. Клиент инициирует запрос на сервер, и сервер возвращает открытый ключ A1 к клиенту;
  4. Браузер получает открытый ключ A1 и отправляет открытый ключ B1, он сохранился на сервере;
  5. После этого все данные, отправляемые сервером клиенту, шифруются открытым ключом B1, а клиент может их расшифровать закрытым ключом B2;
  6. Все данные, отправляемые клиентом на сервер, шифруются с помощью открытого ключа A1, а сервер может расшифровать их с помощью закрытого ключа A2.

В настоящее время данные в обоих направлениях передачи асимметрично зашифрованы для обеспечения безопасности, так почему бы не использовать эту схему?

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

Таким образом, мы, наконец, решили ввести асимметричное шифрование + симметричную схему шифрования, описанную выше, а затем просмотрите ↓↓↓

  1. Сервер имеет открытый ключ асимметричного шифрования A1 и закрытый ключ A2;
  2. Клиент инициирует запрос, и сервер возвращает открытый ключ A1 клиенту;
  3. Клиент случайным образом генерирует симметричный зашифрованный ключ K, шифрует его открытым ключом A1 и отправляет на сервер;
  4. Получив зашифрованный текст, сервер расшифровывает его собственным закрытым ключом A2 и получает симметричный ключ K. В это время завершается безопасный обмен симметричным ключом, что решает проблему кражи передачи ключа при симметричном шифровании.
  5. После этого обе стороны используют ключ K для симметричного шифрования и дешифрования.

Это похоже на идеальное решение,примите во вниманиебезопасность и производительность, но действительно ли это безопасно?

Центр сертификации

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

Когда сервер возвращает открытый ключ A1 клиенту, посредникзаменятьОн отправляется в браузер как собственный открытый ключ B1.

И браузер в это время ничего не знает, по глупости использует открытый ключ B1 для шифрования ключа K и отправляет его,перехват человека посередине, посредник расшифровывает своим закрытым ключом B2, получает ключ K, а затем шифрует его открытым ключом сервера A1 и передает его серверу, завершая коммуникационную связь, причем сервер и клиент не знают.

HTTPS中间人

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

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

Прежде чем сервер будет использовать HTTPS, обратитесь в сертифицированный центр сертификации, чтобы подать заявку на сертификат.Цифровой сертификат, цифровой сертификат содержит такую ​​информацию, как владелец сертификата, срок действия сертификата, открытый ключ и т. д. Сервер отправляет сертификат клиенту, и клиент проверяет, соответствует ли удостоверение сертификата удостоверению веб-сайта, к которому осуществляется доступ. , а затем выполняет последующие операции шифрования.

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

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

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

  1. ЦС имеет собственную пару открытых и закрытых ключей.
  2. ЦС хэширует информацию открытого текста сертификата при выдаче сертификата.
  3. Хэш-значение с закрытым ключомдобавить подпись, получить цифровую подпись
Данные открытого текста и цифровая подпись образуют сертификат, который передается клиенту.
  1. Клиент получает сертификат и разбивает его на текстовую часть Текст и цифровую подпись Sig1
  2. Используйте открытый ключ центра сертификациинеподписанный, получить Sig2 (поскольку агентство ЦС является общедоступным доверенным лицом, информация о сертификате и открытом ключе агентства ЦС будет встроена в систему или браузер)
  3. Хэшируйте текстовую часть открытого текста с помощью алгоритма хеширования, объявленного в сертификате, чтобы получить T
  4. Когда значение хеш-функции H, рассчитанное самостоятельно, совпадает снеподписанныйСообщение Sig2равный, указывающий, что сертификат является доверенным,не испорченный

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

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

В этом процессе сертификат и открытый ключ агентства ЦС, встроенные в систему или браузер, становятся важным звеном, что также является доказательством общедоступной доверительной идентичности агентства ЦС.Если такого агентства ЦС нет в системе или браузере, то клиент не может принять сертификат, возвращенный сервером, и отобразить предупреждение HTTPS.

По сути, сертификат агентства CA представляет собой цепочку доверия, A доверяет B, B доверяет C и так далее.Сертификат НаггетсНапример, Nuggets подает заявку на получение сертификата от RapidSSL, а удостоверение центра сертификации RapidSSL сертифицируется корневым центром сертификации DigiCert Global, образуя цепочку доверия.

Закрытые ключи агентств УЦ всех уровней являются абсолютно частной информацией, и в случае утечки секретных ключей агентств УЦ доверие к ним будет катастрофическим. несколько раз доУтечка закрытого ключа ЦС, вызывая кризис доверия, основные системы и браузеры могут отозвать только встроенный корневой сертификат соответствующего ЦС.

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

证书明细

Суммировать

Отправной точкой HTTPS является решение проблемы подделки информации и мониторинга при передаче открытого текста HTTP.

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

Если вам это нравится, добавьте подписку, поставьте лайк, спасибо 💕😊