Как защищен протокол HTTPS?

HTTPS

Я считаю, что все знакомы с протоколом HTTPS, но должны возникнуть следующие вопросы:

  1. Как именно работает протокол HTTPS?
  2. Как HTTPS решает небезопасную природу протокола HTTP?
  3. Почему мне нужно доверять сертификату для захвата пакетов веб-сайта HTTPS?

HTTP-протокол

HTTP-протокол — этоприкладной уровеньпротокол, обычно работающий поверх протокола TCP. это明文协议, клиент инициирует запрос, а сервер отвечает ответом.

Поскольку сеть не заслуживает доверия, открытый текст протокола HTTP сопряжен со следующими рисками:

  • Данные связи находятся под угрозой прослушивания и подделки
  • Целевой веб-сайт находится под угрозой олицетворения

Обычный веб-сайт может не иметь никакого эффекта, но что, если это веб-сайт, подобный банку?

К счастью, отечественные банки разработали подключаемые модули ActiveX для IE в эпоху протокола HTTP для обеспечения безопасности, что достойно похвалы.

решение

Поскольку протокол HTTP является протоколом с открытым текстом, можно ли гарантировать безопасность, если данные зашифрованы?

Прежде чем ответить на этот вопрос, давайте рассмотрим два наиболее распространенных алгоритма шифрования.

Алгоритм шифрования

Наиболее распространенными являются алгоритм симметричного шифрования и алгоритм асимметричного шифрования.

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

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

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

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

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

Зашифрованный HTTP-коммуникационный процесс

  1. Браузер генерирует случайную строку A в качестве ключа связи.
  2. Браузер шифрует случайную строку A с помощью открытого ключа и отправляет на сервер зашифрованный текст B. Этот шаг безопасен, поскольку хакер не может расшифровать ее без закрытого ключа сервера.
  3. Сервер использует закрытый ключ для расшифровки случайной строки A, чтобы получить ключ связи.
  4. Сервер и клиент взаимодействуют со случайной строкой A и алгоритмом симметричного шифрования.

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

Есть два способа:

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

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

  1. Браузер запрашивает у сервера открытый ключ
  2. Посредник похитил открытый ключ сервера и держал его в своих руках
  3. Посредник генерирует пару ключей и отправляет поддельный открытый ключ в браузер.
  4. Браузер связывается с посредником, используя поддельный открытый ключ
  5. Посредник и сервер общаются

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

вопросы, требующие решения

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

Это проблема, которую должен решить протокол HTTPS.

протокол HTTPS

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

Представлен протокол HTTPSCAа такжеЦифровой сертификатКонцепция чего-либо.

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

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

CA

Центр выдачи цифровых сертификатов, полномочный ЦС является доверенным для операционной системы и встроен при установке операционной системы.

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

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

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

Процесс выдачи сертификата

  1. Веб-сайт генерирует пару ключей, сохраняет закрытый ключ и отправляет открытый ключ и доменное имя веб-сайта в ЦС.
  2. ЦС хранит орган, выдавший сертификат (то есть самого себя), срок действия сертификата, открытый ключ веб-сайта, доменное имя веб-сайта и т. д.простой текстЗаписать в текстовый файл
  3. CA выбирает одинАлгоритм отпечатков пальцев(Обычно хеш-алгоритм) Вычислить содержимое текстового файла, чтобы получитьотпечаток пальца, с CAзакрытый ключправильноотпечаток пальцаа такжеАлгоритм отпечатков пальцевполучить зашифрованныйцифровой подписи, алгоритм подписи включен в сертификатпростой текстчасть
  4. ЦС упаковывает сертификат открытого текста, отпечаток пальца, алгоритм отпечатка пальца, цифровую подпись и другую информацию вместе для получения сертификата и отправляет его на сервер.
  5. На данный момент сервер имеет цифровой сертификат, выданный уполномоченным центром сертификации, и собственный закрытый ключ.

Процесс проверки сертификата

Как браузер проверяет подлинность веб-сайта?

  1. Браузер запрашивает порт 443 сервера по протоколу HTTPS.
  2. Сервер выдает браузеру собственный цифровой сертификат (открытый текст)
  3. Браузер сначала проверяет правильность CA, срока действия и доменного имени, если они недействительны, соединение разрывается (на данный момент серверу нельзя доверять)
  4. Если действительный, отоперационная системаВыньте открытый ключ центра сертификации, согласноалгоритм подписиправильноцифровой подписирасшифрованОтпечаток сертификатаа такжеАлгоритм отпечатков пальцев
  5. Браузер использует алгоритм расшифровки отпечатка пальца для вычисления отпечатка сертификата и сравнивает его с расшифрованным отпечатком пальца.Если они согласуются, сертификат действителен и открытый ключ получен безопасно.
  6. В это время браузер связался с реальным сервером, и посредник не может знать содержание сообщения, потому что у посредника нет закрытого ключа веб-сайта.

как решается проблема

  1. Хакера олицетвоты CA и дает поддельный сертификат на браузер

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

  2. Хакеры подделали открытые ключи сайта в сертификатах

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

  3. Хакеры также могут получить открытый ключ веб-сайта в обычном режиме.

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

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

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

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

HTTPS решает проблему атак «человек посередине» в эпоху HTTP из протокола, но HTTPS также будет вызывать атаки «человек посередине», когда пользователи активно доверяют поддельным сертификатам (например, ранний 12306 требует ручного доверия сертификаты).Атака HTTPS «человек посередине» выглядит следующим образом:

  1. Клиент использует HTTPS для подключения к порту 443 сервера.
  2. Сервер выдает клиенту собственный цифровой сертификат.
  3. Хакеры похитили настоящий сертификат сервера и подделали поддельный сертификат для браузера
  4. Браузер может обнаружить, что полученный сертификат веб-сайта является поддельным, но предпочитает доверять
  5. Браузер генерирует случайный симметричный ключ A, шифрует его открытым ключом в поддельном сертификате и отправляет на сервер.
  6. Хакеры также могут перехватить этот запрос и получить симметричный ключ браузера A, чтобы они могли подслушивать или подделывать данные связи.
  7. Хакер использует настоящий открытый ключ сервера, чтобы зашифровать симметричный ключ клиента A и отправить его на сервер.
  8. Сервер связывается с хакером после расшифровки симметричного ключа A с помощью закрытого ключа.
  9. Хакер использует симметричный ключ A для расшифровки данных сервера, а после подделки использует симметричный ключ A для шифрования и отправки их клиенту.
  10. Данные, полученные клиентом, уже небезопасны

Вышеизложенный принцип атаки «человек посередине» HTTPS, поэтому сертификат является доверенным для захвата пакетов HTTPS.

Суммировать

  1. Операционная система имеет встроенные открытые ключи полномочного ЦС для обеспечения безопасности цифровых подписей и цифровых сертификатов.
  2. Для реализации HTTPS-атаки «человек посередине» требуется вручную доверять фальшивому сертификату злоумышленника.