Супер подробное объяснение рукопожатия https и цифровой подписи

JavaScript
Супер подробное объяснение рукопожатия https и цифровой подписи

Я видел много контента, связанного с https, и чувствую, что у меня сложилось общее впечатление. Воспользуйтесь тем фактом, что вы только что прочитали «авторитетное руководство по http», и выразите свое понимание. Если что-то не так с тем, что я сказал, пожалуйста, помоги мне указать на это, Аригадо~

На самом деле, я не знаю, с чего начать, давайте пошагово, хахахахаха.

Обзор

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

Симметричные и асимметричные ключи

Напротив, для криптографии с симметричным ключом 128-битный ключ считается очень надежным. На самом деле длинные ключи оказывают такое значительное влияние на криптографическую безопасность, что правительство США даже вводит экспортный контроль в отношении программного обеспечения для шифрования, использующего длинные ключи, чтобы предотвратить создание Агентства национальной безопасности (АНБ) потенциально враждебными группами. Секретный код, который вы не можете взломать себя.В основном, это можно понимать как взлом базового GG со 128-битным ключом.

Одним из недостатков шифрования с симметричным ключом является то, что отправитель и получатель должны иметь общий секретный ключ, прежде чем они смогут общаться друг с другом. Каждой паре взаимодействующих объектов требуется свой собственный закрытый ключ. Если бы было N узлов, каждый из которых имел бы безопасный диалог со всеми N-1 другими узлами, всего было бы около N2 секретных ключей: это был бы административный кошмар. Асимметричное шифрование не только более безопасно, но и снижает нагрузку на сервер, поскольку ему больше не нужно запоминать его и секретный ключ для каждого клиента.

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

(Если вы еще программист, почему бы вам не изучить RSA, может быть, он будет таким же бессмертным, как Пикассо)


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

Все еще путаете цифровые сертификаты и цифровые подписи?

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

Цифровые сертификаты (часто называемые «сертификатами»,Что-то вроде монетного двора бренда сертификатов), который содержит информацию о пользователе или компании, спонсируемой доверенной организацией. У каждого из нас есть множество форм идентификации. Некоторых удостоверений личности, таких как паспорта и водительские права, во многих случаях достаточно для идентификации человека. Например, вы можете прилететь в Нью-Йорк в новогоднюю ночь с водительскими правами США, После того, как вы доберетесь туда, используйте его, чтобы доказать свой возраст, чтобы вы могли выпить с друзьями.

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

Основное содержимое цифрового сертификата:

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


Хочу подчеркнуть один момент!Цифровые сертификаты обычно также включаютОписательная информация об используемом алгоритме подписи.

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

Дайджест пакетов: используется для создания очень небольшой сводки отправленных пакетов. Эта сводная информация обеспечивает целостность исходного сообщения, то есть до тех пор, пока изменяется один бит исходного сообщения, сводная информация не будет совпадать. Используйте функцию подписи (SHA-1 и MD5) в сообщении, и функция подписи исходит из цифрового сертификата!

Тезисы представляют собой «конденсации основного объема информации». Дайджест — это односторонняя функция, которая в основном используется для преобразования бесконечных входных значений в конечные сжатые выходные значения. 7 Общая функция дайджеста, MD5, преобразует последовательность байтов произвольной длины в 128-битный дайджест. Дайджест-функции также иногда называют зашифрованными контрольными суммами, односторонними хэш-функциями или функциями отпечатков пальцев.Подчеркните односторонность, чтобы предотвратить обратное.Только так мы можем на 100% гарантировать, что информация не была полностью изменена. Не могу понять? ? ? Все в порядке, это закуска.

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

Цифровая подпись для проверки целостности сертификата. Он находится в рукопожатии второго шага, который будет объяснен позже.

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

Подпись представляет собой зашифрованную контрольную сумму:

  • Подпись доказывает, что автор написал сообщение. Только у автора будет самый конфиденциальный закрытый ключ, поэтому только автор может вычислить эти контрольные суммы. Контрольная сумма - это как бы личная "подпись" автора.

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

    Система шифрования RSA использует функцию декодирования D в качестве функции подписи, поскольку D уже использует закрытый ключ в качестве входных данных. Обратите внимание, что функция декодирования — это просто функция, поэтому ее можно использовать для произвольных входных данных. Точно так же в системе шифрования RSA при применении в любом порядке функции D и E нейтрализуют друг друга. Итак, E(D(вещи)) = вещи, точно так же, как D(E(штуки)) = вещи.

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

HTTPS-схема

Как правило, схема URL для незащищенного HTTP имеет префикс http, как показано ниже:

http://www.joes-hardware.com/index.html

В безопасном протоколе HTTPS префикс схемы URL-адресов https выглядит следующим образом:

https://cajun-shop.securesites.com/Merchant2/merchant.mv?Store_Code=AGCGS

Запросить у клиента (например, у веб-браузера) доступ к веб-ресурсу.Когда транзакция выполняется, она проверяет Схема URL. 

  • Если схема URL-адреса http, клиент откроет его для сервера на порту 80 (по умолчанию) соединение и отправьте ему старую HTTP-команду

  • Если схема URL-адреса https, клиент откроет его для сервера на порту 443 (по умолчанию) соединение, а затем «рукопожатие» с сервером для обмена некоторыми параметрами безопасности SSL с сервером в двоичном формате, Прикрепите зашифрованные HTTP-команды



Сейчас обычно третий вариант.

SSL-рукопожатие

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

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

давайте одинhttp рукопожатиеа такжеhttps рукопожатиеОбзор.




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

сертификат сервера

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

  • имя и имя хоста веб-сайта;

  • открытый ключ сайта;
    • название подписывающего органа;
    • Подпись подписывающего органа.

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


Увеличить: конкретный процесс рукопожатия

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

первый шаг:

Происходит первое рукопожатие, инициированное клиентом.Основной целью этого процесса рукопожатия является получение сертификата ЭЦП с сервера.Сервер должен подтвердить версию SSL клиента, алгоритм шифрования и другую информацию перед отправкой сертификата ЭЦП.------ Первый шаг — использовать цифровой сертификат

Клиентский (браузер) «Диспетчер сертификатов» имеет список «Доверенные корневые центры сертификации». На основе этого списка клиент проверит, есть ли в списке открытый ключ для разблокировки цифрового сертификата. Если URL-адрес, записанный в цифровом сертификате, не соответствует URL-адресу, который вы просматриваете, это означает, что сертификат может быть использован мошенническим образом, и браузер выдаст предупреждение.

Шаг 2:

После завершения первого рукопожатия следует второе рукопожатие. Второе рукопожатие инициируется после того, как клиент получает сертификат, основная цель которого — отправить ключ (Pre-master secret), используемый для шифрования и дешифрования AES, на сервер. Конечно, этот AES_KEY зашифрован с использованием открытого ключа, полученного при первом рукопожатии. Клиент получает AES_KEY, зашифрованный открытым ключом, и расшифровывает его закрытым ключом сервера. Таким образом, и клиент, и сервер удерживают КЛЮЧ шифрования и дешифрования AES после второго рукопожатия.. ——Второй шаг — проверка цифровой подписи.

Обратитесь к картинке ниже, чтобы понять! ! Старик~ (Второй шаг, который я сказал, можно увидеть как 2 и 3 на картинке ниже)


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


Узел A извлекает сообщение переменной длины в узел дайджеста фиксированной длины (представьте A как браузер или клиент).

A применяет функцию «подпись» к дайджесту, котораяЦифровой сертификатНазначил встречу внутри. Эта функция принимает закрытый ключ пользователя в качестве параметра. Поскольку только пользователь B (сервер) знает закрытый ключ, правильная функция подписи будет утверждать, что подписывающее лицо является его владельцем. На рисунке, поскольку функция декодирования DСодержит закрытый ключ пользователя (сервера), поэтому мы используем его в качестве функции подписи (система шифрования RSA использует функцию декодирования D в качестве функции подписи, потому что D уже использует закрытый ключ в качестве входных данных. Обратите внимание, что функция декодирования — это просто функция, поэтому ее можно использовать для произвольного Аналогично, в системе шифрования RSA, когда функции D и E применяются в произвольном порядке,Оба отменят друг друга. Итак, E(D(вещи)) = вещи, точно так же, как D(E(штуки)) = вещи)Примечание. Пожалуйста, используйте инженерное мышление, чтобы понять здесь, то есть предложение о том, что закрытый ключ используется в качестве параметра, только сервер знает закрытый ключ.


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

Простым языком: этот процесс предназначен для проверки того, что A является браузером, а пользователь — сервером. а не посредник (или хакер). Браузер знает функцию подписи цифрового сертификата и генерирует очень маленький дайджест отправленного сообщения. Тогда эта информацияединственный неизменныйИнформация. После того, как сервер получит его, он использует открытый ключ (конечно, применяется закрытый ключ), чтобы получить дайджест сообщения C. Затем используйте ту же функцию подписи, чтобы получить дайджест сообщения D для открытого текста. Если C==D, проверка прошла успешно. В противном случае возникает проблема.

Когда вы это видите, значит, у вас получилось на 70%! ! !


третий шаг:

Когда и клиент, и сервер владеют ключом AES_KEY, сообщение HTTP может быть зашифровано и расшифровано. Это уже не RSA, а симметричное шифрование, даже если его взломает третья сторона, третья сторона не знает пароль. Если только один из них не передаст пароль третьему лицу. Использование здесь симметричного шифрования также должно повысить производительность HTTPS. Потому что время, затрачиваемое самим HTTPS, нельзя игнорировать. Я могу взглянуть на вариант использования Nuggets:


Туннелирование защищенного трафика через прокси

Метод CONNECT запрашивает у шлюза туннеля создание TCP-соединения с любым целевым сервером и портом, а также Слепая пересылка последующих данных между клиентом и сервером. 

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

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

HTTP отправляет информацию о конечной точке в виде открытого текста с помощью нового метода расширения, называемого CONNECT. Метод CONNECT указывает прокси открыть соединение с нужным хостом и номером порта.После этого данные туннелируются непосредственно между клиентом и сервером. Метод CONNECT представляет собой однострочную текстовую команду, которая предоставляет имя хоста и номер порта защищенного исходного сервера, разделенные двоеточиями. host:port, за которым следует пробел и строка версии HTTP, за которой следует CRLF. За этим следует ноль или более строк заголовка HTTP-запроса, за которыми следует пустая строка. После пустой строки, если процесс рукопожатия для установления соединения завершен успешно, может начаться передача данных SSL.

Все кончено.

Это особенно подробно? Добро пожаловать, чтобы указать на неточности!