1. Три основных риска сетевого общения
В протоколе HTTP все сообщения отправляются и принимаются в виде открытого текста. Другими словами, в пятиуровневой модели сети TCP/IP данные отправляются непосредственно с прикладного уровня (HTTP) на транспортный уровень (TCP) в виде открытого текста без какого-либо процесса шифрования, как показано на следующем рисунке:
Это приведет к следующим трем рискам:
-
1. Риски прослушивания/подслушивания
Посредник может перехватить данные связи между клиентом и сервером.
-
2. Риск подделки данных
После того, как посредник перехватывает данные, он может изменить данные перед отправкой другой стороне.
-
3. Риск подделки личных данных
Из-за специфики самой сетевой коммуникации обе стороны в коммуникации не могут конкретно идентифицировать личность другой стороны, и посредник может воспользоваться возможностью войти.
Итак, какие контрмеры у нас есть для трех вышеперечисленных рисков? немного.
-
1. Для риска подслушивания/сниффинга мы можем зашифровать данные с помощью алгоритма шифрования пароля.Даже если посредник перехватит наши данные, поскольку нет соответствующего ключа дешифрования, данные не могут быть расшифрованы.
-
2. Для риска подделки мы можем использовать соответствующий алгоритм цифровой подписи для обеспечения целостности данных.
-
3. Для риска подделки личности мы можем подтвердить личность другой стороны, выпустив цифровой сертификат.
Конечно, это не означает, что сам протокол HTTP должен иметь вышеперечисленные три риска.Мы также можем использовать протокол HTTP для шифрования или цифровой подписи данных перед передачей данных, что также может максимально избежать рисков подслушивания и подделки. Этого нельзя избежать, потому что не существует абсолютной безопасности.
2. Протокол SSL/TLS
Протоколы SSL/TLS и HTTPS тесно связаны, а HTTPS построен на основе протокола SSL/TLS.
Можно понять, что буква S в HTTPS относится к самому протоколу SSL/TLS.
1. История развития
Вышеприведенное кратко описывает процесс разработки протокола SSL/TLS.Для более подробного понимания вы можете обратиться к Википедии.Протокол безопасности транспортного уровня. Протокол SSL является предшественником протокола TLS и улучшенной версией протокола SSL.
2. Сетевой уровень
Протокол SSL/TLS расположен между прикладным и транспортным уровнями и используется для шифрования пакетов данных верхнего уровня для передачи и одновременной проверки подлинности и целостности данных.
3. Основные принципы
Проще говоря, SSL/TLS — это набор протоколов, которые объединяют различные криптографические алгоритмы, алгоритмы цифровой подписи и цифровые сертификаты для обеспечения безопасности связи.
При использовании протокола SSL/TLS обе стороны должны выполнить рукопожатие перед установлением соединения, целью которого является согласование сеансового ключа для последующего шифрования и дешифрования передаваемых данных.
Алгоритмы шифрования делятся на две категории:
-
1. Алгоритм симметричного шифрования
Один и тот же ключ используется для шифрования и дешифрования данных. Скорость шифрования и дешифрования высока, а эффективность высока. Недостатком является сложность управления ключом. После утечки передачи ключа он бесполезен.
-
2. Алгоритм асимметричного шифрования
Шифрование и дешифрование данных используют открытый ключ и закрытый ключ.Открытый ключ используется для передачи, а закрытый ключ хранится сам по себе.Безопасность высока, но скорость шифрования и дешифрования низкая.
SSL/TLS сочетает в себе преимущества и недостатки двух протоколов: для шифрования пакета данных используется алгоритм симметричного шифрования, а ключ алгоритма симметричного шифрования получается путем согласования посредством асимметричного шифрования.
Обычно используемые алгоритмы симметричного шифрования:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
Обычно используемые алгоритмы асимметричного шифрования:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
Обычно используемые алгоритмы цифровой подписи:MAC、MD5、SHA1
3. Анализ перехвата пакетов Wireshark
использовать нижеWireshark
Инструмент захвата пакетов просто анализирует процесс рукопожатия протокола HTTPS, получая доступ к Baidu как каштан:https://www.ifeng.com
Прежде всего, нам нужно знать, что целью рукопожатия является устранение трех вышеупомянутых рисков, то есть согласование ключа диалога, проверка целостности данных и аутентификация личности.
На приведенном выше рисунке можно примерно резюмировать основной процесс рукопожатия:
- 1. Клиент отправляет
Client Hello
- 2. Сервер хочет, чтобы клиент вернул
Server Hello
- 3. Сервер возвращает
Certificate
- 4. Сервер возвращается к клиенту
Server key change,Server Hello Done
- 5. Клиент отправляет на сервер
Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
- 6. Сервер возвращается к клиенту
Change Cipher Spec, Encrypted Handshake Message
Детали каждого шага проанализированы ниже:
- 1,
Client Hello
Какую информацию он несет?
Client Hello
Он содержит номер версии протокола TLS, поддерживаемого текущим клиентом (версия), набор шифров, поддерживаемый клиентом (наборы шифров), случайное число и алгоритм сжатия (метод сжатия), поддерживаемый клиентом.
- 2,
Server Hello
Какую информацию он возвращает?
На первом этапе клиент сообщает серверу соответствующую информацию, которую я поддерживаю.На втором этапе сервер согласовывает и возвращает определенную информацию, например, определяет, какой набор шифров или метод сжатия использовать.
- 3. Сервер выдает сертификат клиенту
- 4. Сервер возвращает клиенту соответствующие параметры алгоритма D-H.
После этих параметров клиент может вычислить сеансовый ключ, если используется алгоритм RSA, этот шаг не требуется. После передачи параметров сообщите клиенту, что рукопожатие на стороне сервера завершено (Done).
- 5. Обмен ключами клиента, изменение спецификации шифра, зашифрованное сообщение рукопожатия
На этом этапе клиент генерирует предварительный мастер-ключ на основе открытого ключа, переданного на четвертом этапе.pre-master key
,ПотомClient Key Exchange
Передайте этот предварительный мастер-ключ на сервер. Сервер использует свой собственный закрытый ключ для решения информации предварительного главного ключа и получаеттретье случайное число, так что пока и клиент, и сервер имеютRandom1 + Random2 + Random3.
Затем, в соответствии с алгоритмом D-H и соответствующими параметрами, переданными на четвертом шаге,会话密钥
, а затем используйте этот ключ для связи. Видно, что возможность взлома сеансового ключа зависит от того, можно ли взломать третье случайное число, а третье случайное число не может быть захвачено wireShark.
Change Cipher Spec
Этот шаг должен сообщить серверу, что все последующие соединения будут использовать ключ, который мы согласовали для взаимодействия.
Encrypted Handshake Message
Это клиент, который генерирует дайджест предыдущего сообщения рукопожатия и шифрует его с помощью согласованного ключа (симметричное шифрование) Это первое зашифрованное сообщение, отправленное клиентом. После того, как сервер получит его, он расшифрует его с помощью секретного ключа.Если его можно решить, это означает, что секретный ключ, согласованный ранее, тот же.
- 6. Изменить спецификацию шифра, зашифрованное сообщение рукопожатия
Как и в шаге 5, если сервер может расшифровать дайджест с помощью алгоритма D-H, тогда сервер должен сообщить клиенту, что мы договорились между собой.会话密钥
согласуется.
Вышеизложенное представляет собой простое понимание редактором SSL/STL и HTTPS.Для получения более полных знаний вы можете самостоятельно ознакомиться со спецификациями, связанными с RFC. Поскольку знания редактора все еще невелики, если есть какое-то неправильное место, пожалуйста, укажите его, спасибо!