Глубокое понимание того, как работает HTTPS

JavaScript

предисловие

В последние годы в Интернете произошли кардинальные изменения, в частности, привычный нам протокол HTTP постепенно вытесняется протоколом HTTPS.При совместном продвижении браузеров, поисковых систем, агентств CA и Интернет открыл крупные интернет-компании. В «эру шифрования HTTPS» HTTPS полностью заменит HTTP в качестве основного протокола передачи в ближайшие несколько лет.

Надеюсь, после прочтения этой статьи вы поймете:

  • Что не так с HTTP-связью
  • Как HTTPS улучшает HTTP и другие проблемы
  • Как работает HTTPS

Чтобы прочитать больше качественных статей, нажмитеБлог GitHub, Вас ждут пятьдесят качественных статей в год!

1. Что такое HTTPS

HTTPS должен установить уровень шифрования SSL в HTTP и зашифровать передаваемые данные.Это безопасная версия протокола HTTP. В настоящее время он широко используется для чувствительных к безопасности сообщений во всемирной паутине, таких как платежи по транзакциям.

Основные функции HTTPS:

(1) шифровать данные и устанавливать безопасный канал информации для обеспечения безопасности при передаче данных;

(2) Выполните аутентификацию реальной личности на сервере веб-сайта.

Мы часто используем протокол HTTPS на страницах входа в систему и в интерфейсах оплаты покупок. При использовании связи HTTPS больше неhttp://, вместо этого используйтеhttps://. Кроме того, когда браузер получает доступ к веб-сайту, на котором разрешена связь по протоколу HTTPS, в адресной строке браузера появляется значок блокировки. Способ отображения HTTPS зависит от браузера.

2. Зачем вам HTTPS?

Могут быть проблемы с безопасностью, такие как кража информации или маскировка личности в протоколе HTTP. Использование механизма связи HTTPS может эффективно предотвратить эти проблемы. Какие проблемы с протоколом HTTP:

  • Связь в чистом тексте (не зашифровано), содержимое может быть подслушивается

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

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

  • Целостность сообщения не может быть доказана, поэтому оно может быть подделано

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

  • Не проверяет личность общающейся стороны, поэтому есть риск маскировки

Запросы и ответы в протоколе HTTP не подтверждают взаимодействующие стороны. При общении по HTTP-протоколу, поскольку нет этапа обработки для подтверждения взаимодействующей стороны, любой может инициировать запрос. Кроме того, пока сервер получает запрос, независимо от того, кто является другой стороной, он вернет ответ (но только при условии, что IP-адрес и номер порта отправителя не ограничены веб-сервером).

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

Напротив, протокол HTTPS имеет следующие преимущества по сравнению с протоколом HTTP (подробно описанные ниже):

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

3. Как HTTPS решает вышеуказанные проблемы HTTP?

HTTPS не является новым протоколом на уровне приложений. Только часть интерфейса связи HTTP заменена протоколами SSL и TLS.

Обычно HTTP связывается напрямую с TCP. При использовании SSL он развивался для связи сначала с SSL, а затем для связи с SSL и TCP. Вкратце,Так называемый HTTPS на самом деле является HTTP в оболочке протокола SSL..

После принятия SSL HTTP имеет шифрование, сертификат и защиту целостности HTTPS. то естьHTTP плюс обработка шифрования, аутентификация и защита целостности — это HTTPS..

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

1. Решить проблему, что контент может быть подслушан - шифрование

Способ 1. Симметричное шифрование

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

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

Способ 2. Асимметричное шифрование

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

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

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

Этот подход имеет следующие недостатки:

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

Метод 3. Симметричное шифрование + асимметричное шифрование (HTTPS использует этот метод)

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

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

2. Решить проблему, связанную с тем, что сообщение может быть подделано - цифровая подпись.

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

Цифровые подписи выполняют две функции.:

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

Как генерировать цифровую подпись:

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

Проверка процесса цифровой подписи:

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

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

необходимо представитьЦентр сертификации(Certificate Authority, сокращенно CA), ЦС не много, в клиенте Kobe встроены сертификаты всех доверенных ЦС. ЦС цифровым образом подписывает открытый ключ Джеймса (и другую информацию) для создания сертификата.

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

Центр цифровой сертификации находится в положении стороннего центра, которому доверяют как клиент, так и сервер.

Представим бизнес-процесс центра сертификации цифровых сертификатов:

  • Оператор сервера предоставляет открытый ключ, организационную информацию, личную информацию (доменное имя) и другую информацию стороннему агентству CA и подает заявку на сертификацию;
  • CA проверяет подлинность информации, предоставленной заявителем через онлайн, оффлайн и другие средства, например, существует ли организация, является ли предприятие законным, имеет ли оно право собственности на доменное имя и т. д.;
  • Например, информация для утверждения, CA выдаст заявителю сертификационные документы - сертификат. Сертификат содержит следующую информацию: открытый ключ заявителя, организацию заявителя и личную информацию, информацию агентства, выдавшего ЦС, время действия незашифрованного сообщения, серийный номер сертификата и т. д., а также включает подпись. При этом алгоритм генерации подписи: сначала вычисляет дайджест сообщения, используя хеш-функцию, раскрытую в информации открытого текста, а затем, используя закрытый ключ ЦС, шифрует дайджест сообщения, т. е. подпись зашифрованного текста;
  • Когда клиент Клиент отправляет запрос на сервер Сервер, Сервер возвращает файл сертификата;
  • Клиент Клиент считывает соответствующую информацию открытого текста в сертификате, использует ту же хеш-функцию для вычисления дайджеста информации, а затем использует открытый ключ соответствующего ЦС для расшифровки подписанных данных и сравнивает дайджест информации сертификата. то есть открытый ключ сервера заслуживает доверия.
  • Клиент также проверит информацию о доменном имени, сроке действия и другую информацию, связанную с сертификатом; у клиента будет встроенная информация о сертификате доверенного ЦС (включая открытый ключ), если ЦС не является доверенным, сертификат, соответствующий CA не может быть найден, и сертификат также будет признан незаконным.

4. Рабочий процесс HTTPS

1. Клиент инициирует HTTPS (например,https://juejin.cn/user/4283353031252967) запроса, согласно RFC2818, Клиент знает порт 443 (по умолчанию), который необходимо подключить к Серверу.

2. Сервер возвращает предварительно сконфигурированный сертификат открытого ключа клиенту.

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

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

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

6. Сервер шифрует «открытый текст A» с помощью симметричного ключа и отправляет его клиенту.

7. Клиент расшифровывает зашифрованный текст ответа с помощью симметричного ключа и получает «Содержимое открытого текста А».

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

Пять, разница между HTTP и HTTPS

  • HTTP — это протокол передачи открытого текста, а протокол HTTPS — это сетевой протокол, созданный на основе протокола SSL + HTTP для зашифрованной передачи и аутентификации личности, который является более безопасным, чем протокол HTTP.

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

  • HTTPS более безопасен, чем HTTP, более удобен для поисковых систем и выгоден для SEO.Google и Baidu предпочтительно индексируют HTTPS-страницы;
  • HTTPS требует SSL-сертификат, а HTTP — нет;
  • стандартный порт HTTPS 443, стандартный порт HTTP 80;
  • HTTPS основан на транспортном уровне, HTTP основан на прикладном уровне;
  • HTTPS отображает зеленый замок безопасности в браузере, HTTP не отображается;

6. Почему не все веб-сайты используют HTTPS

Поскольку HTTPS настолько безопасен и надежен, почему не все веб-сайты используют HTTPS?

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

Во-вторых, обычно считается, что HTTPS имеет более высокую стоимость производительности, чем HTTP, потому чтоЗашифрованная связь потребляет больше ресурсов ЦП и памяти, чем передача обычного текста.. Если каждое общение будет зашифровано, оно будет потреблять много ресурсов, а при его равномерном распределении по компьютеру количество запросов, которые можно обработать, непременно соответственно уменьшится. Но это не так, пользователи могут решить эту проблему, оптимизировав производительность и развернув сертификаты в SLB или CDN. Чтобы привести практический пример, в период «Double Eleven» Taobao и Tmall с HTTPS на всем сайте по-прежнему обеспечивали плавные и бесперебойные операции, такие как доступ к веб-сайтам и мобильным устройствам, просмотр и транзакции. В ходе тестирования установлено, что производительность многих страниц после оптимизации такая же, как у HTTP, или даже немного выше, поэтому HTTPS на самом деле не замедляется после оптимизации.

Помимо,Желание сэкономить на покупке сертификатов также является одной из причин. Для связи по протоколу HTTPS необходим сертификат. Используемый сертификат должен быть приобретен в центре сертификации (ЦС).

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

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

Добро пожаловать в публичный аккаунт:Мастер по фронтенду, мы будем свидетелями вашего роста вместе!

image

Справочные статьи и книги