Linux — Раздел 17 — Основы сети (прикладной уровень 3)

Оглавление

1. HTTPS-протокол

1.1. Введение в HTTPS

1.2 Дополнительные знания

1.2.1 Что такое "шифрование"

1.2.2 Зачем шифрование

1.2.3 Общие методы шифрования

1.2.4. Сводка данных и отпечаток данных

1.2.5 Цифровая подпись

2. Изучение рабочего процесса HTTPS

2.1. Вариант 1 – использовать только симметричное шифрование

2.2. Сценарий 2 - только одна сторона использует асимметричное шифрование

2.3. Сценарий 3 - Обе стороны используют асимметричное шифрование

2.4 Схема 4 - Асимметричное шифрование + Симметричное шифрование

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

2.6 Импортный сертификат

2.6.1 Аутентификация ЦС

2.6.2 Понимание подписей данных

2.7. Схема 5 - Асимметричное шифрование + Симметричное шифрование + Аутентификация сертификата

2.8. Завершить процесс

2.9 Как стать посредником


1. HTTPS-протокол

1.1. Введение в HTTPS

HTTPS также является протоколом прикладного уровня, который вводит уровень шифрования на основе протокола HTTP.
Содержимое протокола HTTP передается в виде обычного текста в виде текста, а передача обычного текста небезопасна, поэтому в настоящее время основным решением является добавление уровня программного обеспечения SSL/TLS между прикладным уровнем, где находится http, и транспортным уровнем. уровень, на котором находится tcp (программный уровень SSL/TLS относится к прикладному уровню), программный уровень SSL/TLS выполняет функцию шифрования данных, отправляемых с прикладного уровня на транспортный уровень, и выполняет функцию расшифровки данных. полученные с транспортного уровня на прикладной уровень.
Мы включим протокол http и программный уровень SSL/TLS в целом в протокол https.
Примечание:
1. Что касается самого протокола http, он отправляет информацию в виде открытого текста и получает информацию в виде открытого текста, которая никак не затрагивается.
2. Порт привязки по умолчанию для протокола http — это порт 80, а порт привязки по умолчанию для протокола https — это порт 443.

1.2 Дополнительные знания

1.2.1 Что такое "шифрование"

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

1.2.2 Зачем шифрование

например:
Загрузите программное обеспечение Tiantiandongting.Если оно не было взломано, нажмите кнопку загрузки, и появится ссылка для скачивания Tiantiandongting, как показано на рисунке 1 ниже.Если оно было взломано, нажмите кнопку загрузки, и браузер QQ загрузит появится всплывающая ссылка, как показано на рисунке 2 ниже.
Как показано на рисунке ниже, поскольку любые пакеты данных, которые мы передаем по сети, будут проходить через сетевое оборудование оператора (маршрутизаторы, коммутаторы и т. д.), то сетевое оборудование оператора может анализировать содержимое передаваемых вами данных и подделывать их. это.
Нажатие кнопки «Загрузить» фактически отправляет HTTP-запрос на сервер, а полученный HTTP-ответ фактически содержит ссылку для загрузки приложения. После взлома оператор обнаружил, что запрос был на загрузку Tiantiandongting, поэтому он автоматически изменил ответ пользователю на адрес загрузки «QQ Browser».

Поэтому, поскольку содержимое http передается в виде простого текста, данные в виде простого текста будут проходить через несколько физических узлов, таких как маршрутизаторы, точки доступа Wi-Fi, операторы связи, прокси-серверы и т. д. Если информация будет перехвачена во время передачи, передаваемый контент будет полностью раскрыт. Угонщик также может подделывать передаваемую информацию незаметно для обеих сторон.Это атака «человек посередине», поэтому нам необходимо зашифровать информацию.
Не только операторы могут осуществлять взлом, но и другие хакеры также могут использовать аналогичные средства для взлома, чтобы украсть информацию о конфиденциальности пользователей или изменить контент. Только представьте, если хакер получает баланс учетной записи пользователя, когда пользователь входит в систему Alipay, и даже получает платежный пароль пользователя...
В Интернете передача открытого текста более опасна!!!
HTTPS шифруется на основе HTTP для дополнительной защиты информации пользователя.

1.2.3 Общие методы шифрования

Симметричное шифрование:
• Используя метод шифрования криптосистемы с одним ключом, один и тот же ключ может использоваться как для шифрования, так и для дешифрования информации.Этот метод шифрования называется симметричным шифрованием, также известным как шифрование с одним ключом.Особенности:используются для шифрования и дешифрования Ключи одинаковы.
• Распространенные алгоритмы симметричного шифрования (понять): DES, 3DES, AES, TDEA, Blowfish, RC2 и т. д.
• Особенности: открытый алгоритм, небольшой объем вычислений, высокая скорость шифрования и высокая эффективность шифрования.
Симметричное шифрование фактически заключается в шифровании открытого текста в зашифрованный текст и расшифровке зашифрованного текста в открытый текст с помощью одного и того же «ключа».
Пример: (простое симметричное шифрование, побитовое XOR)
Предполагая, что открытый текст a=1234 и ключевой ключ=8888, зашифрованный текст b, полученный при шифровании ключа a^, равен 9834. Затем снова вычислить b^key для зашифрованного текста 9834 и получить исходный открытый текст 1234. (То же самое верно и для симметричного шифрования строк, каждый символ может быть представлен как число)
Конечно, побитовое исключающее ИЛИ — это просто простейшая форма симметричного шифрования. Побитовое XOR не используется в HTTPS.
Асимметричное шифрование:
• Для шифрования и дешифрования необходимы два ключа: открытый ключ (открытый ключ, называемый открытым ключом) и закрытый ключ (закрытый ключ, называемый закрытым ключом).
• Распространенные алгоритмы асимметричного шифрования: RSA, DSA, ECDSA.
• Особенности: Алгоритм сложен, а безопасность зависит от алгоритма и ключа.Однако из-за сложности алгоритма скорость шифрования и дешифрования не такая высокая, как при симметричном шифровании и дешифровании.
В асимметричном шифровании используются два ключа, один из которых называется «открытым ключом», а другой — «закрытым ключом». Самым большим недостатком является то, что скорость работы очень низкая, что намного медленнее, чем симметричное шифрование.
• Зашифровать открытый текст с помощью открытого ключа и превратить его в зашифрованный текст.
• Расшифруйте зашифрованный текст с помощью закрытого ключа и превратите его в открытый текст.
также можно использовать в обратном порядке
• Зашифруйте открытый текст с помощью закрытого ключа и превратите его в зашифрованный текст.
• Расшифруйте зашифрованный текст с помощью открытого ключа и превратите его в открытый текст.
Пример. Математические принципы асимметричного шифрования относительно сложны и требуют некоторых знаний, связанных с теорией чисел. Вот простой пример из повседневной жизни.
А хочет передать Б какие-то важные документы, но Б может там не быть, поэтому А и Б заранее договариваются:
Б сказал: У меня на столе есть коробка, и я дам тебе замок, ты положишь файл в ящик и закроешь его на замок, а потом я оборачиваюсь и беру ключ, чтобы отпереть и получить файл.
В этом сценарии блокировка эквивалентна открытому ключу, а ключ — закрытому ключу. Открытый ключ может быть передан кому угодно (не боясь утечки), но закрытый ключ находится только у самого B. Только те, у кого есть закрытый ключ, могут его расшифровать.

1.2.4. Сводка данных и отпечаток данных

• Цифровой отпечаток (сводка данных). Основной принцип заключается в использовании однонаправленной хэш-функции (хеш-функция) для обработки информации для создания серии цифровых сводок фиксированной длины. Цифровой отпечаток пальца не является механизмом шифрования, но его можно использовать для определения того, были ли данные подделаны.
• Распространенные алгоритмы дайджеста: MD5, SHA1, SHA256, SHA512 и т. д. Алгоритм отображает бесконечное в конечное, поэтому возможны коллизии (две разные информации, вычисленный дайджест одинаков, но вероятность очень мала).
• Особенности дайджеста: отличие от алгоритма шифрования состоит в том, что дайджест не шифруется строго, потому что нет расшифровки, но из дайджеста сложно вывести исходную информацию, которая обычно используется для сравнения данных.
Пример приложения 1 сводки данных/отпечатков пальцев данных:
При загрузке фильма на Baidu Netdisk иногда он может загружаться за секунды.Как реализована замечательная функция передачи? Когда пользователь загружает фильм, сервер Baidu будет искать загруженный фильм, чтобы узнать, загружал ли какой-либо пользователь тот же фильм ранее.Если есть пользователь, который ранее загружал тот же фильм на сервер, эта загрузка будет прекращена. , и он будет загружен в каталог пользователя. Создайте программную ссылку, указывающую на тот же фильм, загруженный предыдущим пользователем.
Как сервер Baidu быстро сравнивает и проверяет, совпадает ли загруженный фильм с фильмом на сервере? Ответ заключается в использовании односторонней хеш-функции для создания сводки данных загруженного фильма и сравнения ее со сводкой данных всех фильмов на сервере. одни и те же ресурсы на сервере.
Пример приложения 2 сводки данных/отпечатка данных:
Если сервер хранит пароль пользователя в виде открытого текста внутри, существует высокий риск утечки пароля пользователя, поэтому после шифрования пароль пользователя обычно хранится на сервере.После того как пароль пользователя зашифрован, лучше не расшифровывать его. Хеш-функция особенно подходит для "зашифрованного" хранения паролей. После того, как пользователь вводит пароль учетной записи при регистрации, сервер использует одностороннюю хеш-функцию для обработки пароля для получения сводки данных зарегистрированного пароля.Хеш-функция обрабатывает дайджест данных пароля для входа и сравнивает дайджест данных пароля для входа в дайджест данных регистрационного пароля.Если два дайджеста данных совпадают, это означает, что пароль правильный.

1.2.5 Цифровая подпись

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


2. Изучение рабочего процесса HTTPS

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

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

2.1. Вариант 1 – использовать только симметричное шифрование

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

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

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

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

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

2.2. Сценарий 2 - только одна сторона использует асимметричное шифрование

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

2.3. Сценарий 3 - Обе стороны используют асимметричное шифрование

план:

(1) У сервера есть открытый ключ S и соответствующий закрытый ключ S', а у клиента есть открытый ключ C и соответствующий закрытый ключ C'.
(2) Клиент и сервер обмениваются открытыми ключами.
(3) Клиент отправляет сообщение серверу: сначала зашифруйте данные с помощью S, а затем отправьте их, что может быть расшифровано только сервером, поскольку только сервер имеет закрытый ключ S'.
(4) Сервер отправляет сообщение клиенту: сначала зашифруйте данные с помощью C, а затем отправьте их, их может расшифровать только клиент, потому что только клиент имеет закрытый ключ C'.
Приведенная выше схема, в которой обе стороны используют асимметричное шифрование, кажется безопасной и осуществимой, но на самом деле она неосуществима по следующим двум причинам:
• Слишком неэффективно. Обе стороны используют асимметричное шифрование, что очень неэффективно.
• По-прежнему существуют проблемы с безопасностью, он не может противостоять атакам «человек посередине» (подробнее об этом позже).

2.4 Схема 4 - Асимметричное шифрование + Симметричное шифрование

план:

(1) Сервер имеет асимметричный открытый ключ S и закрытый ключ S'.
(2) Клиент инициирует HTTPS-запрос для получения открытого ключа S сервера.
(3) Клиент локально генерирует симметричный ключ C, шифрует его открытым ключом S и отправляет на сервер.
(4) Поскольку промежуточное сетевое устройство не имеет закрытого ключа, даже если данные будут перехвачены, внутренний исходный текст не может быть восстановлен, а симметричный ключ не может быть получен.
(5) Сервер расшифровывает закрытый ключ S' и восстанавливает симметричный ключ C, отправленный клиентом. И используйте этот симметричный ключ для шифрования данных ответа, возвращаемых клиенту.
(6) Последующая связь между клиентом и сервером использует только симметричное шифрование. Поскольку ключ известен только двум хостам, клиенту и серверу, другим хостам/устройствам бессмысленно перехватывать данные, даже если они не знают ключ.
Так как эффективность симметричного шифрования намного выше, чем у асимметричного шифрования, асимметричное шифрование используется только тогда, когда ключ согласовывается на начальном этапе, а симметричное шифрование по-прежнему используется для последующих передач, что решает проблему низкой эффективности .
Однако вышеописанная схема асимметричного шифрования + симметричного шифрования по-прежнему имеет проблемы с безопасностью , и она не может противостоять атакам «человек посередине» (подробнее об этом позже) .

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

Атака «человек посередине»: атака «человек посередине», называемая «атакой MITM».
Действительно, в вышеприведенных схемах 3 и 4 после получения клиентом открытого ключа S сформированный клиентом симметричный ключ X шифруется открытым ключом S, предоставленным сервером клиенту, даже если посредник крадет данные, в это время действительно посредник не может расшифровать ключ X, сформированный клиентом, потому что только сервер имеет закрытый ключ S'. Однако, если атака «человек посередине» выполняется в начале согласования рукопожатия, это не обязательно так.
Атака «человек посередине»:
(1) Сервер имеет открытый ключ S и закрытый ключ S' алгоритма асимметричного шифрования.
(2) Посредник имеет открытый ключ M и закрытый ключ M' алгоритма асимметричного шифрования.
(3) Клиент инициирует запрос к серверу, и сервер отправляет открытый ключ S клиенту в виде простого текста.
(4) Посредник перехватывает сообщение данных, извлекает открытый ключ S и сохраняет его, затем заменяет открытый ключ S в перехваченном сообщении своим собственным открытым ключом M и отправляет поддельное сообщение клиенту.
(5) Клиент получает сообщение, извлекает открытый ключ M (конечно, он не знает, что открытый ключ был изменен), сам формирует симметричный ключ X, шифрует X открытым ключом M и отправляет сообщение. на сервер.
(6) После захвата посредником он напрямую расшифровывает его с помощью своего личного ключа M', чтобы получить ключ связи X, а затем шифрует его с помощью сохраненного открытого ключа сервера S и отправляет сообщение на сервер.
(7) Сервер получает сообщение, расшифровывает его своим закрытым ключом S' и получает ключ связи X.
(8) Две стороны начинают использовать X для симметричного шифрования для связи. Но все в руках посредника, перехват данных, подслушивание или даже модификация — все это возможно.
Схема атаки «человек посередине» здесь применима и к схеме 3.
Где суть проблемы? Клиент не может быть уверен, что полученное сообщение данных, содержащее открытый ключ, отправлено целевым сервером!

2.6 Импортный сертификат

2.6.1 Аутентификация ЦС

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

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

2.6.2 Понимание подписей данных

• Ведь сертификат — это строка символов, то есть данные Как обеспечить действительность сертификата? Как убедиться, что сертификат и открытый ключ в сертификате не были подделаны? Ответ заключается в том, чтобы нести подпись данных сертификата при выдаче сертификата, что будет подробно объяснено ниже.
Формирование подписи основано на алгоритме асимметричного шифрования.

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

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

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

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

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

Примечание. В настоящее время это не имеет ничего общего с https, поэтому не путайте его с открытым ключом и закрытым ключом в https.

Когда сервер подает заявку на сертификат ЦС, организация ЦС проверит сервер и сформирует цифровую подпись для веб-сайта.Процесс выглядит следующим образом:
(1) Организация CA имеет асимметрично зашифрованные закрытый ключ A и открытый ключ A'.
(2) Учреждение ЦС выполняет хэш-обработку данных сертификата, применяемых сервером, для формирования сводки данных.
(3) Затем зашифруйте абстрактные данные с помощью закрытого ключа CA A', чтобы получить цифровую подпись S.
Открытый текст сертификата, применяемого сервером, и цифровая подпись S вместе образуют цифровой сертификат, так что цифровой сертификат может быть выдан серверу.
Примечание: закрытый ключ организации ЦС принадлежит только вам. У других нет закрытого ключа организации ЦС, поэтому они не могут имитировать организацию ЦС для выдачи сертификатов. Поэтому, пока организация ЦС владеет закрытым ключом исключительно, сертификат, выданный им, является авторитетным.

2.7. Схема 5 - Асимметричное шифрование + Симметричное шифрование + Аутентификация сертификата

Когда клиент и сервер только что установили соединение, клиент отправляет серверу запрос на соединение, а сервер возвращает клиенту сертификат, который содержит открытый ключ сервера и идентификационную информацию веб-сайта.
Клиент аутентифицирует:
После того, как клиент получит сертификат, он проверит сертификат (чтобы предотвратить подделку сертификата).
• Определить, истек ли срок действия сертификата (если срок действия сертификата истек, браузер предложит, что срок действия соответствующего сертификата веб-сайта истек, следует ли продолжать посещение).
• Определите, является ли доверенным центр, выдающий сертификат (доверенный центр, выдающий сертификат, встроенный в операционную систему) (если центр, выдающий сертификат, не является доверенным, браузер предложит, что эмитент сертификата веб-сайта не является доверенным, следует ли продолжать посещать шрифт ).
• Проверить, был ли сертификат подделан: получить открытый ключ организации, выдавшей сертификат, из системы (открытый ключ каждого ЦС, выдавшего сертификат, встроен в систему), расшифровать подпись и получить хеш-значение (называемое дайджест данных), установить его в хэш1, затем вычислить хеш-значение всего сертификата, установить его в хеш2, сравнить, равны ли хеш1 и хеш2, если они равны, значит, сертификат не был подделан.
После того, как клиент получит открытый ключ сервера из сертификата, он может выполнить коммуникационную логику Решения 4.
Проверьте доверенные центры сертификации вашего браузера:
В качестве примера возьмем браузер Edge, другие браузеры аналогичны:
Нажмите кнопку с тремя точками в правом верхнем углу и выберите «Настройки», как показано на рисунке 1 ниже. Нажмите «Управление сертификатами» в разделе «Поиск и обслуживание конфиденциальности» -> «Безопасность», как показано на рисунке 2 ниже. Выберите доверенный корневой центр сертификации, и в списке будет указан доверенный , как показано на рисунке 3 ниже. Щелкните доверенный центр выдачи сертификатов, нажмите «Просмотр» и выберите «Подробности», чтобы просмотреть открытый ключ соответствующего доверенного центра выдачи сертификатов, как показано на рис. 4 ниже.

Вопрос 1: Может ли посредник подделать сертификат?
Ответ: Посредник подделал открытый текст сертификата.Поскольку у него нет закрытого ключа организации ЦС, он не может зашифровать его закрытым ключом для формирования подписи после хеширования, поэтому нет возможности сформировать совпадающую подпись за поддельный сертификат. Если он принудительно подделан, клиент обнаружит, что открытый текст и расшифрованное значение подписи несовместимы после получения сертификата, что указывает на то, что сертификат был подделан и сертификат не заслуживает доверия, поэтому передача информации в сервер отключается, чтобы предотвратить утечку информации посреднику.
Вопрос 2: Что, если посредник откажется от всего сертификата?
Ответ: Поскольку у посредника нет закрытого ключа ЦС, он не может создавать поддельные сертификаты, поэтому посредник может только подать заявку на настоящий сертификат от ЦС, а затем использовать сертификат, на который он подал заявку, для обмена пакетом. Этот метод действительно может привести к полной потере пакета сертификата, но не забывайте, что открытый текст сертификата содержит информацию для аутентификации сервера, такую ​​как имя домена.Если пакет упакован целиком, клиент все равно может его распознать.
Всегда помните, что у посредника нет закрытого ключа ЦС, поэтому он не может легально изменить какой-либо сертификат, включая ваш собственный.
Вопрос 3. Почему дайджест-контент должен быть зашифрован для формирования подписи при его передаче по сети?
Дополнение: Общие алгоритмы дайджеста: MD5 и SHA series На примере MD5 нам не нужно изучать конкретный процесс вычисления подписи, нам нужно только понимать характеристики MD5:
• Фиксированная длина: независимо от длины строки расчетное значение MD5 имеет фиксированную длину (16-байтовая версия или 32-байтовая версия).
• Дисперсия: если исходная строка немного изменена, конечное значение MD5 будет сильно отличаться.
• Необратимый: легко сгенерировать MD5 из исходной строки, но теоретически невозможно восстановить исходную строку с помощью MD5.
Просто потому, что MD5 имеет такие характеристики, мы можем думать, что если значения MD5 двух строк одинаковы, то эти две строки считаются одинаковыми.
Ответ: понять процесс оценки подделки сертификата: (этот процесс подобен оценке того, является ли это удостоверение личности поддельным удостоверением личности), предполагая, что наш сертификат представляет собой просто строку hello, и вычислить значение хеш-функции (например, md5) для этой строки. , результат будет BC4B2A76B9719D91, если какой-либо символ в hello будет подделан, например, станет hella, то вычисленное значение md5 сильно изменится. Затем мы можем вернуть строку hello и значение хеш-функции BC4B2A76B9719D91 с сервера клиенту.Как в это время клиент проверяет, не было ли изменено приветствие? Затем просто вычислите хеш-значение приветствия, чтобы увидеть, является ли оно BC4B2A76B9719D91.
Но есть еще проблема: если хакер подделает hello и при этом пересчитает значение хеш-функции, клиент не сможет отличить.
Таким образом, переданное хэш-значение не может быть передано в виде открытого текста и должно быть передано в зашифрованном виде, чтобы сформировать хеш-резюме для хэша открытого текста сертификата (здесь «привет»), а затем CA использует свой собственный закрытый ключ для шифрования и формирования подпись и объединить hello с зашифрованной подписью Сформировать сертификат ЦС и выдать его на сервер.Когда клиент запрашивает его, он отправляется клиенту.Посредник перехватывает его.Поскольку нет закрытого ключа ЦС, он не может быть поменяли или выбросили весь пакет, а легальность сертификата можно смело доказать. . Наконец, клиент расшифровывает с помощью открытого ключа органа, выдавшего сертификат, уже сохраненного в операционной системе, восстанавливает исходное хеш-значение, а затем выполняет проверку.
Вопрос: Почему подпись не шифруется напрямую, а сначала хэшируется для формирования дайджеста?
Ответ: Уменьшите длину зашифрованного текста подписи и увеличьте скорость расчета ЭЦП и проверочной подписи.

2.8. Завершить процесс

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

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

2.9 Как стать посредником

• Подмена ARP: в локальной сети хакеры могут прослушивать (IP, MAC) адреса других узлов после получения широковещательных пакетов запроса ARP. Например, хакер получает адреса двух хостов A и B и сообщает B (жертве), что он A, так что все пакеты данных, отправленные B к A, перехватываются хакером.
• Атака ICMP: поскольку в протоколе ICMP есть тип пакета перенаправления, мы можем подделать сообщение ICMP и отправить его клиенту в локальной сети, притворяясь лучшим путем маршрутизации. В результате весь интернет-трафик цели будет направляться на указанный нами интерфейс, достигая того же эффекта, что и спуфинг ARP.
• Поддельный Wi-Fi и поддельные веб-сайты и т. д.

рекомендация

отblog.csdn.net/qq_45113223/article/details/130840799
рекомендация