Что не так с http связью?
1. Возможность прослушивания
- Сам по себе HTTP не имеет функции шифрования, а HTTP-пакеты отправляются в открытом виде.
- Поскольку Интернет состоит из сетевых средств, соединяющих все части мира, все данные, отправляемые и получаемые через определенные устройства, могут быть перехвачены или подсмотрены. (Например, известный инструмент перехвата пакетов: Wireshark), даже если он зашифрован, он будет подсматриваться как содержимое сообщения, но расшифровать информацию сообщения может быть сложно или невозможно.
2. Проблемы аутентификации
- Невозможно подтвердить, что сервер, на который вы отправляете, является реальным целевым сервером (возможно, сервер поддельный)
- Невозможно определить, является ли возвращенный клиент тем клиентом, который был получен в соответствии с реальным намерением (может быть камуфляжным клиентом)
- Невозможно определить, есть ли у общающейся стороны права доступа, некоторая важная информация на веб-сервере хочет быть отправлена только определенному пользователю
- Даже бессмысленные запросы будут приняты в полном объеме. Невозможно предотвратить DoS-атаки (отказ в обслуживании, атаки типа «отказ в обслуживании») при массовых запросах.
3. Может быть подделан
Атака, при которой запрос или ответ перехватывается и подделывается во время передачи запроса или ответа, называется атакой «человек посередине» (MITM).
Как HTTPS решает три вышеупомянутые проблемы
HTTPS заменяется протоколом TLS (Transport Layer Security) только в части интерфейса связи.
Различия между SSL и TLS:
Transport Layer Security (англ. Transport Layer Security, сокращенно TLS), и его предшественник Secure Sockets Layer (Уровень защищенных сокетов, сокращенно SSL) — это протокол безопасности, целью которого является обеспечение безопасности и целостности данных для интернет-коммуникаций Assure. Когда Netscape запустила свой первый веб-браузер Netscape Navigator в 1994 году, она запустила протокол HTTPS и зашифровала его с помощью SSL, который является источником SSL. IETF стандартизировала SSL и опубликовала первую версию стандартного документа TLS в 1999 году. Впоследствии были опубликованы RFC 5246 (август 2008 г.) и RFC 6176. (март 2011 г.). в дальнейшем именуемый SSL
TLS является стандартом для SSL. HTTPSто естьHTTP + SSL
SSL-протокол
Несколько типов алгоритмов, необходимых для реализации протокола SSL
Симметричное шифрование
Часто используемые алгоритмы шифрования:DES
,AES
,RC2
,RC4
Преимущества: алгоритм открытый, объем вычислений небольшой, скорость шифрования высокая, эффективность шифрования высокая.
Недостатки: Обе стороны транзакции используют один и тот же ключ, и безопасность не гарантируется.
Технология асимметричного шифрования
Часто используемые алгоритмы асимметричного шифрования:RSA
,DSA
,Diffie-Hellman
Достоинства: высокая безопасность
Минусы: медленно
Алгоритм проверки целостности
ХЭШ-алгоритм:MD5
,SHA1
,SHA256
Используется для проверки целостности сообщения
Состав протокола SSL
- Первый уровень — это протокол записи, который определяет формат передачи.
- Второй уровень протокола рукопожатия, построенный поверх протокола записи SSL, используется для аутентификации личности, согласования алгоритмов шифрования и обмена ключами шифрования до начала фактической передачи данных.
Способ работы:
- Клиент использует асимметричное шифрование для связи с сервером, реализует аутентификацию и согласовывает ключи, используемые для симметричного шифрования.
- Затем согласованный ключ используется для шифрования и передачи информации, а симметричный ключ, используемый разными узлами, отличается, так что можно гарантировать безопасность симметричного ключа.
Процесс согласования ключа SSL выглядит следующим образом.
нажмите, чтобы увеличить изображение
источник
Подробно опишите процесс, в основном разделенный наЧетыре шага(Здесь немного сложновато, можно пропустить, если не обращать внимания на детали):
1. процесс client_hello
Клиент инициирует запрос и передает информацию о запросе в виде обычного текста, включая информацию о версии, список кандидатов на набор шифров, список кандидатов на алгоритм сжатия, случайное число, поле расширения и другую информацию.
- Информация о версии:Самая высокая поддерживаемая версия протокола TSL, от низкой до высокой SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2, в настоящее время в основном больше не используются версии ниже, чем TLSv1
- Список кандидатов на набор шифров:Алгоритм аутентификации Au (аутентификация), алгоритм обмена ключами KeyExchange (согласование ключей), алгоритм симметричного шифрования Enc (шифрование сообщений) и дайджест сообщения Mac (проверка целостности);
- Список алгоритмов сжатия: список поддерживаемых алгоритмов сжатия методов сжатия для последующей передачи информации;
- случайное число: Случайное число представляет собой RNC на вышеуказанной фигуре, который используется для последующего поколения согласованного ключа;
- Согласовать данные: поддерживает связанные параметры протоколов и алгоритмов и другую вспомогательную информацию и т. д. Общий SNI является полем расширения, и функция этого поля будет рассмотрена отдельно позже.
2. процесс server_hello
- Сервер возвращает результаты согласованной информации, в том числе выбранную версию версии протокола, выбранный набор шифров набора шифрования, выбранный метод сжатия алгоритма сжатия, случайные числа RN и т. д., где случайное число используется для последующего согласования ключа;
- Цепочка сертификатов сервера для проверки личности и обмена ключами
- Уведомить клиента о завершении приветствия сервера, запросить сертификат и ключ клиента
3. Проверка сертификата, согласование окончательного ключа связи
а. Клиент проверяет легитимность сертификата сервера. Если проверка пройдена, последующая связь будет осуществляться. В противном случае будут выполняться подсказки и операции в соответствии с различными условиями ошибки. Проверка легальности включает в себя следующее:
- Надежность пути доверенного сертификата цепочки сертификатов
- Является ли сертификат отозванным отзывом
- Дата истечения срока действия, находится ли сертификат в допустимом временном диапазоне;
- Домен имени домена, проверка соответствия доменного имени сертификата текущему имени домена доступа и последующий анализ соответствующих правил;
Б. Клиент отправляет сертификат клиента, а сервер открытых ключей проверяет (процесс такой же, как и проверка клиента)
в) Клиент хеширует все предыдущие сообщения, отправляет хеш-значение и дайджест, шифрует его с помощью закрытого ключа клиента и отправляет на сервер, а сервер расшифровывает его с помощью открытого ключа клиента, проверяя, что открытый ключ клиента и полученный алгоритм на сервере правильно
г. Генерация клиентовpms
, зашифровать и зашифровать открытым ключом сервера и отправить на сервер
е. Клиент и сервер одновременно вычисляют окончательный сеансовый ключ (MS
)
4. Проверьте согласованный ключ
А. Клиент отправляетChangeCipherSpec
, что указывает на то, что сообщения, отправляемые сервером, теперь зашифрованы
б) Клиент отправляет Finished, который содержит хэш всех предыдущих сообщений рукопожатия, что позволяет серверу проверить, был ли процесс рукопожатия подделан третьей стороной.
в. Сервер отправляетChangeCipherSpec
, что указывает на то, что сообщения, отправляемые Клиентом, теперь зашифрованы
г. Сервер отправляет Finishd, который содержит хэш всех предыдущих сообщений рукопожатия, что позволяет клиенту проверить, был ли процесс рукопожатия подделан третьей стороной, и доказать, что он является владельцем ключа сертификата, то есть для подтверждения своей личности
HTTPS завершает процесс установления соединения, как показано ниже.
- Сначала установите рукопожатие TCP
- Обмен ключами рукопожатия для протокола ssl (протокол рукопожатия)
- Затем связь инициируется с помощью взаимно согласованного ключа.
Что такое упомянутый выше сертификат?
Роль сертификата заключается в том, что когда я общаюсь с сервером, как я узнаю, что этот сервер является тем сервером, с которым я хочу общаться Неподходящий пример:
Вы покупаете некое сокровище, переходите на страницу расчетов, тратите 1 миллион, вводите номер счета банковской карты и пароль для оплаты, но когда вы заканчиваете оплату, вы обнаруживаете, что на счету меньше 1 миллиона, но счет страница все еще показывает неоплаченный, вы идете, чтобы позвонить в службу поддержки сокровищ, служба поддержки клиентов сказала, что вы были украдены кем-то другим на 1 миллион и не заплатили моему сокровищу.Примечание: здесь есть две возможности.
- Во-первых, это может быть атака «человек посередине» (имя пользователя и пароль перехватываются хакерами).
- Какое-то сокровище забрало ваши деньги, сделал вид, что не признает этого (отказано)
Процесс применения и выдачи сертификатов выглядит следующим образом:
-
Услуги на стороне сервера третьим сторонам для предоставления открытого ключа CA, организационной информации, личной информации (доменное имя) и другой информации и подачи заявки на сертификацию;
-
CA проверяет подлинность информации, предоставленной заявителем через онлайн, оффлайн и другие средства, например, существует ли организация, является ли предприятие законным, имеет ли оно право собственности на доменное имя и т. д.;
-
Если информация будет рассмотрена и одобрена, УЦ выдаст заявителю сертификационный документ-сертификат. Сертификат содержит следующую информацию: открытый ключ заявителя, организационную и личную информацию заявителя, информацию о выдающем агентстве CA, срок действия, открытый текст серийного номера сертификата и другую информацию, а также содержит подпись; подпись Алгоритм генерации: сначала используйте хеш. Функция столбца вычисляет информационный дайджест общедоступной информации открытого текста, а затем использует закрытый ключ ЦС для шифрования информационного дайджеста, а зашифрованный текст является подписью;
-
Когда клиент Клиент отправляет запрос на сервер Сервер, Сервер возвращает файл сертификата;
-
Клиент Клиент считывает соответствующую информацию открытого текста в сертификате, использует ту же хеш-функцию для вычисления сводки информации, а затем использует открытый ключ соответствующего ЦС для расшифровки данных подписи и сравнивает сводку информации сертификата. то есть открытый ключ является законным;
-
Клиент также проверит информацию о доменном имени, сроке действия и другую информацию, связанную с сертификатом; у клиента будет встроенная информация о сертификате доверенного ЦС (включая открытый ключ), если ЦС не является доверенным, сертификат, соответствующий CA не может быть найден, и сертификат также будет признан незаконным.
цепочка сертификатов
- Сертификат сервера server.pem является промежуточным центром сертификации Inter, Inter.INTER в соответствии с интерфейсом сертификата, server.pem выдает действительный сертификат, выданный вами.
- ЦС, выдавший промежуточный сертификат inter.pem, является корневым, и root проверяет для себя юридический сертификат, выданный inter.pem, в соответствии с сертификатом root.pem;
- Встроенный клиент доверяет сертификату CA root.pem, поэтому сертификат сервера server.pem является доверенным.
Сертификат сервера, промежуточный сертификат и корневой сертификат объединяются в легальную цепочку сертификатов.Проверка цепочки сертификатов представляет собой восходящий процесс передачи доверия.
Для получения дополнительной информации о сертификате, пожалуйста, узнайте большеPKI-система