Давайте вместе изучим HTTPS. Прежде всего, позвольте задать вам вопрос: зачем нам HTTPS после того, как у нас есть HTTP? У меня внезапно появляется идея, почему мы должны отвечать, когда мы берем интервью标准答案
Шерстяная ткань? Почему мы не высказываем собственные мысли и мнения, а помним некоторые так называемые стандартные ответы?Технология по-прежнему верна??
Почему появляется HTTPS
Появление новой технологии должно решить определенную проблему, так какую же проблему HTTPS решает для HTTP?
Какую проблему решает HTTPS
Простой ответ может бытьHTTP
Это небезопасно. Из-за природы присущей HTTP передачи открытого текста, в процессе передачи HTTP любой может перехватить, изменить или подделать запросы от него, поэтому можно считать, что HTTP небезопасен; сторона связи не будет проверена в процессе передачи HTTP. идентичности, поэтому обе стороны обмена информацией HTTP могут быть замаскированы, то есть没有用户验证
; В процессе передачи HTTP получатель и отправитель не不会验证报文的完整性
Таким образом, для решения вышеуказанных проблем были созданы HTTPS-приложения.
Что такое HTTPS
Вы помните, как определяется HTTP? HTTP — это超文本传输协议(Hypertext Transfer Protocol)
протокол,Это соглашение и спецификация для передачи текста, изображений, аудио, видео и других гипертекстовых данных между двумя точками в компьютерном мире., тогда давайте посмотрим, как определяется HTTPS
HTTPS
Полное имяHypertext Transfer Protocol Secure
, который используется для связи между двумя конечными системами в компьютерной сети.安全的交换信息(secure communication)
, что эквивалентно добавлениюSecure 安全
, то мы можем дать определение HTTPS:HTTPS — это соглашение и спецификация для безопасной передачи текста, изображений, аудио, видео и других гипертекстовых данных между двумя точками в компьютерном мире.. HTTPS является расширением протокола HTTP и не гарантирует безопасность самой передачи, так кто же будет обеспечивать безопасность? В HTTPS используйте传输层安全性(TLS)
или安全套接字层(SSL)
Зашифруйте протокол связи. То есть HTTP + SSL (TLS) = HTTPS.
что делает HTTPS
Протокол HTTPS предоставляет три ключевых показателя.
-
加密(Encryption)
, HTTPS защищает данные от перехватчиков путем шифрования данных, что означает, что когда пользователь просматривает веб-сайт, никто не может контролировать обмен информацией между ним и веб-сайтом или отслеживать действия пользователя, доступ к записям и т. д., тем самым похищая пользователя Информация. -
数据一致性(Data integrity)
, данные не будут изменены перехватчиками в процессе передачи, а данные, отправленные пользователем, будут完整
Передача на сервер, отправка пользователя для проверки того, что есть, то и получено сервером. -
身份认证(Authentication)
, что означает подтверждение истинной личности другой стороны, то есть证明你是你
(Можно сравнить с распознаванием лиц), это предотвращает атаки «человек посередине» и укрепляет доверие пользователей.
С гарантией трех вышеуказанных ключевых показателей пользователи могут безопасно обмениваться информацией с сервером. Итак, поскольку вы рассказали обо всех преимуществах HTTPS, как мне узнать, использует ли веб-сайт HTTPS или HTTP? Две картинки должны объяснить это вам.
Протокол HTTPS на самом деле очень прост.Документ RFC очень маленький, всего 7 страниц, в котором указано имя нового протокола.По умолчанию端口号443
, как и для другихРежим ответа, структура сообщения, метод запроса, URI, поля заголовка, управление соединениемИ т. д. по всему HTTP, ничего нового.
То есть, за исключением имени протокола и номера порта по умолчанию (HTTP порт 80 по умолчанию), протокол HTTPS такой же, как HTTP в синтаксисе и семантике.HTTP имеет некоторые, и HTTPS также принимается. Итак, как HTTPS делает то, что не может HTTP?安全性呢
? Ключ в этомS
этоSSL/TLS
.
Что такое SSL/TLS
Знакомство с SSL/TLS
TLS(Transport Layer Security)
даSSL(Secure Socket Layer)
Последующие версии , они используются между двумя компьютерами в Интернете.身份验证
и加密
Соглашение.
Примечание. В Интернете многие имена взаимозаменяемы.
Все мы знаем, что одним из самых важных шагов в некоторых онлайн-бизнесах (например, онлайн-платежах) является создание надежной среды транзакций, которая позволяет клиентам совершать транзакции со спокойной душой, и SSL/TLS гарантирует это.X.509
Цифровой документ сертификата связывает физическую информацию веб-сайта и компании с加密密钥
делать работу. Каждый密钥对(key pairs)
Имеется私有密钥(private key)
и公有密钥(public key)
, закрытый ключ уникален, обычно находится на сервере и используется для расшифровки информации, зашифрованной открытым ключом; открытый ключ является открытым, и каждый, кто взаимодействует с сервером, может владеть открытым ключом и использовать открытый ключ. информация может быть расшифрована только закрытым ключом.
что
X.509
: X.509 да公开密钥
Стандартный формат сертификата, этот документ надежно связывает ключ шифрования с (человеком или организацией).Основные области применения X.509 следующие:
- SSL/TLS и HTTPS для аутентифицированного и зашифрованного просмотра веб-страниц
- пройти черезS/MIMEПодписанная по протоколу и зашифрованная электронная почта
- Подписание кода: это относится к процессу подписания программного приложения с использованием цифрового сертификата для безопасного распространения и установки.
Подписывая программное обеспечение цифровой подписью с помощью сертификата, выданного общедоступным центром сертификации (например, SSL.com), разработчики могут гарантировать конечным пользователям, что программное обеспечение, которое они хотят установить, было опубликовано известными и доверенными разработчиками; или поврежден.
Может также использоваться для подписания документов
Также может использоваться для аутентификации клиента.
Электронное удостоверение личности государственного образца (см.woohoo.ratings.com/article/PKI…
Мы обсудим позже.
Ядром HTTPS является HTTP
HTTPS не является новым протоколом прикладного уровня, но коммуникационный интерфейс HTTP частично заменен SSL и TLS. Обычно HTTP сначала связывается напрямую с TCP. После HTTPS через SSL он развивается для связи сначала с SSL, а затем SSL взаимодействует с TCP. Это,HTTPS — это HTTP со слоем SSL. (Мне нравится оставлять дерзких фанатов в конце...)
SSL — это независимый протокол, можно использовать не только HTTP, но и другие протоколы прикладного уровня, такие какSMTP(电子邮件协议)
,Telnet(远程登录协议)
можно использовать.
Исследуйте HTTPS
Я сказал, почему у тебя такое классное имя, и ты хочешь этим похвастаться? Разве ты не используешь TLS/SSL с HTTPS? Почему ты такой высокомерный, ты все еще хочешь исследовать HTTPS, выставить себя дураком и быстро перейти на TLS, мой господин, хвала мне.
SSL это安全套接字层
, который находится на пятом уровне в семиуровневой сетевой модели OSI, SSL был принят в 1999 году.IETF(互联网工程组)
Переименован в TLS, т.е.传输安全层
, до сих пор существовало три версии TLS: 1.1, 1.2 и 1.3, наиболее широко используемой является 1.2, поэтому следующее обсуждение основано на версии TLS 1.2.
TLS используется для обеспечения конфиденциальности и целостности данных между двумя взаимодействующими приложениями. TLS отПротокол записи, протокол рукопожатия, протокол предупреждения, протокол изменения спецификации шифра, протокол расширенияПодождите, пока несколько подпротоколов будут составлены и использованы комплексноСимметричное шифрование, асимметричное шифрование, аутентификация личностиПодождите много передовых технологий в криптографии (если вы думаете, что технология очень проста, вы просто не учились, любая технология прекрасна, и классные люди просто ценят ее, а не принижают).
После стольких разговоров мы так и не увидели соглашение об именах TLS.Давайте возьмем пример TLS, чтобы увидеть структуру TLS (см.Woohoo.IANA.org/assignments…
ECDHE-ECDSA-AES256-GCM-SHA384
Что это значит? Сначала я был немного сбит с толку, но на самом деле есть подпрограммы, потому что набор шифров TLS относительно стандартизирован, а базовый форматАлгоритмы обмена ключами - Алгоритмы подписи - Алгоритмы симметричного шифрования - Алгоритмы дайджестаСтрока пароля, состоящая из, а иногда и分组模式
, давайте сначала посмотрим, что это значит
Используйте ECDHE для обмена ключами, ECDSA для подписи и аутентификации, затем используйте AES в качестве алгоритма симметричного шифрования, длина ключа составляет 256 бит, используйте GCM в качестве режима группировки и, наконец, используйте SHA384 в качестве алгоритма дайджеста.
TLS в основном используется对称加密
и非对称加密
две формы.
Симметричное шифрование
Прежде чем понять симметричное шифрование, давайте сначала разберемся密码学
Что-то, в криптографии есть несколько понятий:открытый текст, зашифрованный текст, шифрование, расшифровка
-
明文(Plaintext)
, обычно считается, что открытый текст — это осмысленный набор символов или битов или сообщение, которое можно получить с помощью некоторой общедоступной кодировки. Открытый текст обычно обозначается буквами m или p. -
密文(Ciphertext)
, открытый текст становится зашифрованным текстом после некоторого шифрования -
加密(Encrypt)
, процесс преобразования информации, заключающийся в преобразовании исходной информации (открытого текста) в зашифрованный текст. -
解密(Decrypt)
, процесс восстановления зашифрованной информации в открытый текст.
对称加密(Symmetrical Encryption)
буквально означаетОдин и тот же ключ используется для шифрования и дешифрования. Пока безопасность ключа гарантирована, весь процесс связи является конфиденциальным.
В TLS доступно множество алгоритмов шифрования, таких как DES, 3DES, AES, ChaCha20, TDEA, Blowfish, RC2, RC4, RC5, IDEA, SKIPJACK и т. д. В настоящее время наиболее часто используются AES-128, AES-192, AES-256 и ChaCha20.
DES
Полное имяData Encryption Standard(数据加密标准)
, который представляет собой алгоритм с симметричным ключом для шифрования цифровых данных. Хотя его короткая длина ключа в 56 бит делает его слишком небезопасным для современных приложений, он оказал большое влияние на развитие криптографии.
3DES
Это алгоритм шифрования, производный от оригинального стандарта шифрования данных (DES), который стал важным после 90-х годов, но позже стал менее важным из-за появления более совершенных алгоритмов.
AES-128, AES-192 и AES-256 принадлежат AES, полное название AESAdvanced Encryption Standard(高级加密标准)
, который является заменой алгоритму DES, имеет высокий уровень безопасности и хорошую производительность и является наиболее широко используемым алгоритмом симметричного шифрования.
ChaCha20
Это еще один алгоритм шифрования, разработанный Google. Длина ключа фиксирована и составляет 256 бит. Производительность чистого программного обеспечения выше, чем у AES. Раньше он был популярен на мобильных клиентах, но аппаратная оптимизация AES также была добавлена после ARMv8, поэтому он больше не доступен Явное преимущество, но все же хороший алгоритм.
(остальные можно поискать самостоятельно)
зашифрованный пакет
Существует также симметричный алгоритм шифрования.分组模式
Концепция режима группировки GCM используется только в сочетании с AES, CAMELLIA и ARIA, и AES, очевидно, является наиболее популярным и широко используемым выбором, который позволяет алгоритму шифровать открытый текст любой длины с помощью ключа фиксированной длины.
Раньше существовало несколько режимов группировки, таких как ECB, CBC, CFB, OFB и т. д., но в них одна за другой обнаруживались уязвимости безопасности, поэтому сейчас они в основном бесполезны. Последний режим группировки называетсяAEAD(Authenticated Encryption with Associated Data)
, который добавляет функцию аутентификации при шифровании, обычно используются GCM, CCM и Poly1305.
НапримерECDHE_ECDSA_AES128_GCM_SHA256
, что означает наличие 128-битного ключа, AES256 будет означать 256-битный ключ. GCM расшифровывается как режим работы Modern Authenticated Associated Data Encryption (AEAD) с блочными шифрами из 128-битных блоков.
Мы говорили о симметричном шифровании выше, и стороны шифрования и дешифрования симметричного шифрования используют одни и те же密钥
, то есть шифрующая сторона должна зашифровать исходные данные, а затем передать ключ расшифровывающей стороне для расшифровки, и тогда данные могут быть расшифрованы Какие проблемы это вызовет? Это как "Маленький солдатик Чжан Га" отправить письмо (письмо было зашифровано), но Гази все еще хранит расшифрованный пароль. Если Гази обнаружит дьявол по дороге, то письмо будет полностью раскрыто. Поэтому симметричное шифрование рискованно.
Асимметричное шифрование
非对称加密(Asymmetrical Encryption)
также называется公钥加密
, По сравнению с симметричным шифрованием асимметричное шифрование является новым и улучшенным методом шифрования. Обмен ключами осуществляется посредством передачи по сети, что гарантирует своевременный перехват ключей и защиту информации о данных. В асимметричном шифровании есть два ключа: открытый ключ и закрытый ключ.Открытый ключ используется для шифрования, а закрытый ключ используется для расшифровки. Открытый ключ может быть использован кем угодно, и только вы можете знать закрытый ключ.
Текст, зашифрованный с помощью открытого ключа, может быть расшифрован только с помощью закрытого ключа, а текст, зашифрованный с помощью закрытого ключа, также может быть расшифрован с помощью открытого ключа. Открытый ключ не должен обеспечивать безопасность, поскольку открытый ключ необходимо передавать между сетями, асимметричное шифрование может решить проблему.密钥交换
Проблема. Веб-сайт хранит закрытый ключ и свободно распространяет открытый ключ в Интернете.Если вы хотите войти на веб-сайт, вам нужно только зашифровать его с помощью открытого ключа.Зашифрованный текст может быть расшифрован только владельцем закрытого ключа . Хакеры не могут взломать зашифрованный текст, потому что у них нет закрытого ключа.
Дизайн асимметричных алгоритмов шифрования намного сложнее, чем дизайн симметричных алгоритмов (мы не будем обсуждать конкретные методы шифрования), таких как DH, DSA, RSA, ECC и т. д.
вRSA
Алгоритм шифрования является самым важным и самым известным. НапримерDHE_RSA_CAMELLIA128_GCM_SHA256
. Его безопасность основана на整数分解
, очень трудно вывести закрытый ключ из открытого ключа, используя произведение двух суперпростых чисел в качестве материала для генерации ключа.
ECC(Elliptic Curve Cryptography)
Это также своего рода алгоритм асимметричного шифрования, основанный на椭圆曲线离散对数
Математическая головоломка для создания открытых и закрытых ключей с использованием определенных уравнений кривой и базовых точек, ECDHE для обмена ключами и ECDSA для цифровых подписей.
TLS используется对称加密
и非对称加密
Гибридный метод шифрования для достижения конфиденциальности.
Гибридное шифрование
Скорость работы RSA очень низкая, а скорость шифрования AES относительно высокая, и TLS использует это.混合加密
Способ. Используйте асимметричные алгоритмы в начале связи, такие как RSA, ECDHE, первое решение密钥交换
Проблема. Затем используйте случайные числа для генерации используемого симметричного алгоритма.会话密钥(session key)
, затем используйте公钥加密
. После того, как другая сторона получит зашифрованный текст, используйте私钥解密
, выньте сеансовый ключ. Таким образом, обе стороны осуществляют безопасный обмен симметричными ключами.
Теперь, когда мы добились конфиденциальности с помощью гибридного шифрования, можем ли мы безопасно передавать данные? Недостаточно, добавьте конфиденциальность完整性
,身份认证
функции для достижения настоящей безопасности. Основными средствами достижения целостности являются摘要算法(Digest Algorithm)
Алгоритм дайджеста
Как добиться полноты? В TLS средства достижения целостности в основном摘要算法(Digest Algorithm)
. Если вы не знаете алгоритм дайджеста, вы должны знать о MD5.Полное название MD5Message Digest Algorithm 5
, это принадлежит密码哈希算法(cryptographic hash algorithm)
Тип MD5, который можно использовать для создания 128-битного строкового значения из строки произвольной длины. Несмотря на ненадежность MD5, он все еще используется сегодня. MD5 чаще всего используется для验证文件
полнота. Однако он также используется в других протоколах и приложениях безопасности, таких как SSH, SSL и IPSec. Некоторые приложения улучшают алгоритм MD5, добавляя соль к открытому тексту или многократно применяя хеш-функцию.
Что такое соление? В криптографии,
盐
это случайный фрагмент данных, используемый как хеш-данные, пароль или пароль单向
Дополнительный ввод в функцию. Соли используются для защиты паролей в хранилище. НапримерЧто такое односторонний? То есть этот алгоритм не имеет ключа для расшифровки и может выполнять только одностороннее шифрование, зашифрованные данные не могут быть расшифрованы, а исходный текст не может быть обращен.
Вернемся к обсуждению алгоритма дайджеста, на самом деле под алгоритмом дайджеста можно понимать специальный алгоритм сжатия, который может сжимать данные любой длины.压缩
в строку фиксированной длины, что похоже на добавление блокировки к данным.
В дополнение к широко используемому алгоритму шифрования MD5,SHA-1(Secure Hash Algorithm 1)
Это также широко используемый алгоритм шифрования, но SHA-1 также является небезопасным алгоритмом шифрования и запрещен в TLS. Текущая рекомендация TLS заключается в использовании преемника SHA-1:SHA-2
.
Полное название SHA-2:Secure Hash Algorithm 2
, который был представлен в 2001 году, в него внесены существенные модификации на основе SHA-1, семейство SHA-2 содержит шесть хеш-функций, а их дайджесты (хеш-значения) составляют 224, 256, 384 или 512 бит.SHA-224, SHA-256, SHA-384, SHA-512. Может генерировать 28-байтовые, 32-байтовые, 48-байтовые и 64-байтовые дайджесты соответственно.
С защитой SHA-2 может быть достигнута целостность данных.Даже если вы измените знак препинания или добавите пробел в файл, сгенерированный дайджест файла будет совершенно другим, но SHA-2 основан на шифровании открытым текстом. достаточно безопасно, так что я должен использовать?
Более безопасный метод шифрования заключается в использованииHMAC
, Прежде чем понять, что такое HMAC, нужно знать, что такое MAC.
Полное название MACmessage authentication code
, который генерируется из сообщения и ключа с помощью алгоритма MAC, значение MAC позволяет верификатору (у которого также есть секретный ключ) обнаруживать любые изменения в содержании сообщения, тем самым защищая целостность данных сообщения.
HMAC является дальнейшим расширением MAC. Он использует комбинацию значения MAC + значения хэша. Любая зашифрованная хеш-функция, например SHA-256, может использоваться для расчета HMAC.
Теперь, когда мы решили проблему целостности, осталась только одна проблема, а именно认证
, Как проводится сертификация? В процессе отправки данных на сервер хакер (злоумышленник) может выдать себя за любую сторону для кражи информации. Он может притворяться вами, чтобы отправить информацию на сервер, или может притворяться сервером и принимать отправляемую вами информацию. Итак, как решить эту проблему?
Сертификация
Как определить собственную уникальность? Мы видели концепцию шифрования с открытым ключом и расшифровки с закрытым ключом в приведенном выше описании. Упомянутый закрытый ключ принадлежит только вам и может быть идентифицирован как уникальный, поэтому мы можем изменить порядок шифрования с помощью закрытого ключа и расшифровки с помощью открытого ключа. Используя закрытый ключ плюс алгоритм дайджеста, это может быть достигнуто数字签名
, чтобы добиться аутентификации.
До сих пор, используя комбинацию симметричного шифрования, асимметричного шифрования и алгоритмов дайджеста, мы достиглишифрование, аутентификация данных, аутентификация, тогда это безопасно? Нет, есть другойПроблемы аутентификации цифровых подписей. Поскольку закрытый ключ принадлежит каждому, а открытый ключ может быть опубликован кем угодно, необходимо опубликовать сертифицированный открытый ключ, чтобы решить проблему доверия к открытому ключу.
Так введеноCA
, полное название центра сертификацииCertificate Authority
, центр сертификации, вы должны позволить центру сертификации выдать сертифицированный открытый ключ, чтобы решить проблему доверия к открытому ключу.
Сертифицированных УЦ в мире всего несколько, и они выдали три типа DV, OV и EV, разница заключается в степени достоверности. DV — самый низкий, заслуживает доверия только уровень доменного имени, EV — самый высокий, после строгой проверки по законодательству и аудитам может удостоверить личность владельца сайта (название компании будет отображаться в адресной строке браузера, например Apple, сайт GitHub). Учреждения с разным уровнем доверия вместе образуют иерархические отношения.
Как правило, заявитель на цифровой сертификат создает сертификат, состоящий из закрытого и открытого ключей и签名请求(CSR)
составленная пара ключей. CSR — это закодированный текстовый файл, содержащий открытый ключ и другую информацию, которая будет включена в сертификат (например, доменное имя, организацию, адрес электронной почты и т. д.). Генерация пары ключей и CSR обычно выполняется на сервере, на котором будет установлен сертификат, а тип информации, содержащейся в CSR, зависит от уровня проверки сертификата. В отличие от открытого ключа, закрытый ключ заявителя является безопасным и никогда не должен раскрываться ЦС (или кому-либо еще).
После создания CSR заявитель отправляет его в ЦС, который проверяет правильность содержащейся в нем информации и, если это так, подписывает сертификат цифровой подписью с помощью выданного закрытого ключа и отправляет его заявителю.
Суммировать
В этой статье мы в основном говорим о том, почему появляется HTTPS, какие проблемы решает HTTPS с HTTP, какова связь между HTTPS и HTTP, что такое TLS и SSL и какие проблемы решают TLS и SSL? Как добиться действительно безопасной передачи данных?
Ссылка на статью:
woohoo. ratings.com/FAQs/what-i…
Woohoo. IBM.com/support/maybe…
En. Wikipedia.org/wiki/mess Поделиться…
Боюсь, что не смогу.co/transport-come…
Woohoo Рейтинги 2 don't.com/wiki/ Итак, ММ ET…
крипта O.stack Exchange.com/questions/2…
En. Wikipedia.org/wiki/adv Нажмите C…
woohoo.com Pa RI tech.com/blog/inform…
«Geek Time-анализ протокола HTTP»
woohoo.tutorials учитель.com/HTTPS/как это…
baike.baidu.com/item/cryptosystem/5…
baike.baidu.com/item/симметричное шифрование/2…
woohoo. ratings.com/FAQs/ инициировано - я тоже…
support.google.com/webmasters/…
woohoo.cloudflare.com/learning/anytime…