Все мы знаем, что в процессе передачи данных между клиентом и сервером небезопасна передача протокола http, т.е.простой текстПередача инфекции. Однако передача данных протокола https является безопасной, то есть передача данных https зашифрована.
В общении между двумя незнакомыми людьми, которые никогда не встречались, клиентом и сервером, как https обеспечивает безопасность передачи данных?
Ниже я расскажу вам шаг за шагом, чтобы понять, как https шифруется для обеспечения безопасности передачи данных. Сначала мы вызываем клиента как Xiaoke, а сервер как Xiaofu. Затем шаг за шагом изучите, как в общении между Xiaoke и Xiaofu (то есть, одна сторона просит другую сторону ответить), как https гарантирует, что их общение не будет подслушано посредником.
1. Симметричное шифрование
Если Сяоке и Сяофу сейчас собираются поговорить наедине, они не хотят, чтобы другие посторонние знали содержание этого разговора. Однако в нашем обычном процессе передачи данных они передаются в виде простого текста, и если хакер украдет содержимое их разговора, ему будет некомфортно.
Чтобы решить эту проблему, Сяофу придумал способшифрованиеДанные, чтобы хакеры не могли видеть конкретный контент. Метод выглядит следующим образом:
Перед каждой передачей данных Xiaofu сначала будет передавать ключ для Xiaoke, а затем Xiaofu будет использовать этот ключ для выполнения нажатий клавиш на эти сообщения в процессе отправки сообщений в Xiaoke.шифрование. После получения этих сообщений Сяоке будет использовать то, которое ранее было предоставлено Сяофу.ключв этих сообщенияхрасшифроватьТаким образом, маленький гость может получить настоящие данные в зашифрованном тексте. Если Сяоке хочет отправить сообщение Сяофу, также используйте этотключЧтобы зашифровать сообщение, Xiaofu также использует этот ключ для расшифровки после его получения. Таким образом, обеспечивается безопасность передачи данных. как показано на рисунке:
В это время Сяофу думал о своей собственной стратегии и был очень горд.
Однако здесь возникает проблема. Предпосылкой безопасности этой стратегии является то, что у Сяоке есть ключ Сяофу. Но проблема в том, что Сяофу передает ключ Сяоке открытым текстом, в это время, если хакер перехватит ключ, будет неудобно. Даже если Сяофу и Сяоке зашифровали контент, в глазах хакера, перехватившего ключ, он ничем не отличался от открытого текста.
2. Асимметричное шифрование
Сяофу был довольно умен, и через некоторое время Сяофу понял, что ключ будет перехвачен. Упрямый Сяофу придумал другой метод: использоватьАсимметричное шифрованиеспособ шифрования данных. Метод такой:
И у Сяофу, и у Сяоке по два ключа, один ключ открытый (неважно, знает ли его весь мир), который называетсяоткрытый ключ; а другой ключ — секретный (то есть известный только ему самому), называемыйзакрытый ключ. а также,Данные, зашифрованные с помощью открытого ключа, могут быть расшифрованы только с помощью соответствующего закрытого ключа; данные, зашифрованные с помощью закрытого ключа, могут быть расшифрованы только с помощью соответствующего открытого ключа.
Поэтому в процессе передачи данных Сяофу будет использовать данные, которые Сяоке дал ему при передаче данных в Сяоке.открытый ключШифрование, а затем после того, как его получит маленький клиент, использовать его собственноезакрытый ключрасшифровать. Когда Сяоке отправляет сообщение Сяофу, он также шифрует его с помощью открытого ключа, который Сяофу дал ему, а затем Сяофу расшифровывает его с помощью своего личного ключа. Таким образом, данные безопасно достигают обеих сторон. Как показано на рисунке:
Думая о такой сложной стратегии, Сяофу не может быть слишком горд...
Увидев такого гордого Сяофу, Сяо Кэ в этот момент была в плохом настроении. Прежде чем Сяофу успокоился, Сяоке облила его холодной водой.
Маленький гость торжественно сказал: На самом деле, ваш метод не так уж и безопасен. По-прежнему существует риск быть перехваченным хакерами. Например:
В процессе передачи мне вашего открытого ключа, если хакер перехватит ваш открытый ключ и заберет свой собственный открытый ключ, чтобыолицетворение вашего открытого ключаотправить его мне. После того, как я получу открытый ключ, я буду использовать открытый ключ для зашифрованной передачи (открытый ключ, используемый в настоящее время, на самом деле является открытым ключом хакера). После того, как хакеры перехватят зашифрованные сообщения, они могут использоватьего собственный закрытый ключрасшифровать, чтобы получить содержимое сообщения. Затем используйте свой открытый ключ (Xiaofu) для шифрования сообщения, а затем отправьте его вам (Xiaofu). Таким образом, наш разговор все же был перехвачен хакерами. (И наоборот, то же самое верно, когда Сяоке передает открытый ключ Сяофу).
Черт возьми, такая изысканная идея не работает, лицо Сяофу ошеломлено этой волной.
Вставка
На самом деле в процессе передачи данных скоростьСимметричное шифрованиеметод будет лучше, чемАсимметричное шифрованиеспособ намного быстрее. Поэтому при передаче данных, как правило, используется не только асимметричное шифрование (сначала мы предполагаем, что асимметричное шифрование очень безопасно), а обычно используется асимметричное шифрование.Асимметричное шифрование + Симметричное шифрованиеСочетание этих двух методов. Вы думаете, что симметричное шифрование небезопасно, потому чтоключВ процессе передачи это стало известно другим. Исходя из этого, мы можем использоватьАсимметричное шифрованиеметод безопасной передачиключ, а затем использовать метод симметричного шифрования для передачи содержимого сообщения (конечно, я предполагаю, что передача с асимметричным шифрованием является безопасной, и я расскажу о том, как сделать ее безопасной ниже).
Цифровой сертификат
Давайте вернемся и подумаем, что вызвалоАсимметричное шифрованиеКак насчет ненадежности этого подхода? это иСимметричное шифрованиеНенадежность методов различна. Причина, по которой асимметричное шифрование небезопасно, заключается в том, что после того, как Xiaoke получает открытый ключ, невозможно определить, действительно ли открытый ключ принадлежит Xiaofu.
То есть нам нужно найти стратегию, чтобы доказать, что открытый ключ принадлежит Сяофу, а не кому-то другому.
Чтобы решить эту проблему, Сяофу и Сяоке придумали окончательную стратегию, ломая голову:Цифровой сертификат:
Нам нужно найти кого-то, кто пользуется доверием и признан всеми.Центр сертификации (ЦС)
Когда Сяофу отправляет открытый ключ в Сяоке, он передает открытый ключ и личную информацию Сяофу черезХэш-алгоритмгенерироватьДайджест сообщения. Как показано на рисунке:
Чтобы предотвратить обмен рефератом, Сяофу также используетЗакрытый ключ, предоставленный ЦСДайджест сообщения шифруется для формирования цифровой подписи. Как показано на рисунке:
И, в конце концов, информация и цифровая подпись перед первоначальным алгоритмом хеширования будут объединены вместе, чтобы сформироватьЦифровой сертификат. Как показано на рисунке:
Когда Сяо Кэ получит этот цифровой сертификат, он будет использоватьОткрытый ключ, предоставленный ЦСк цифровому сертификатуцифровой подписирасшифровать, чтобы получитьДайджест сообщения, а затем внутри цифрового сертификатаОткрытый ключ и личная информация СяофуХэш, чтобы получить другую копиюДайджест сообщения, а затем сравните два дайджеста сообщений. Если они совпадают, это доказывает, что эти вещи действительно от Сяофу, в противном случае это не так. Как показано на рисунке:
В это время у некоторых могут возникнуть вопросы, как публичный ключ УЦ попал к гостю? Откуда у Сяофу закрытый ключ центра сертификации? На самом деле (некоторые) серверы запрашивают эти сертификаты у центра сертификации в начале, и эти сертификаты также встроены в клиент. Как показано на рисунке (это изображение из сетевого журнала Юань Жуан Ифэн)
Когда клиент получает данные, возвращенные сервером, он проверяет встроенный список сертификатов, чтобы увидеть, есть ли открытый ключ для разблокировки цифрового сертификата, если да... иначе.....
На данный момент все почти закончилось. Надеюсь, это поможет вам. Если есть что-то не так, пожалуйста, укажите это.
Рекомендуемое чтение:
Статья, чтобы понять, как один компьютер передает данные на другой компьютер