Step 5 (S-44747)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14823/step/5

Step 5 (S-44747) 1.png

[00:00 - 00:17] так а браузер установил соединение а далее а в принципе может работать по протоколу http но если использовать спец а протокол необходимо поверхности соединение установить отелло соединения


[00:17 - 00:32] а что значит мы уже обсуждали это означает что у нас стеки вызовов появляется еще 1 прослойка из протокола t last которая а вызывает функции а


[00:32 - 00:48] давайте кратко рассмотрим что такое тс а зачем он нужен такт приблизительно работает протокол t last а очень объемный сложный а поэтому мы рассмотрим простейший сценарий при работе в случае со 6


[00:48 - 01:04] ps protocol to last расшифровывается как транспорт level of security а этот протокол безопасной передачи данных если теперь испечь with надежную доставку


Step 5 (S-44747) 2.png

[01:04 - 01:18] а то тв обеспечивает безопасную доставку в каком слове смысле безопасно а ну самая распространенная то что всех на слуху это шифрование а


[01:18 - 01:35] дело в том что в протоколе теперь данные передаются в открытом виде и злоумышленник подключенные к сети а может перехватить передаваемые данные отсюда результатами


[01:35 - 01:51] узнать пароли сделать что то от лица а пользователи и так далее а протокол t last обеспечивает шифрование данных а так что они передаются в зашифрованном недоступном для злоумышленника виде


[01:51 - 02:07] помимо этого обеспечивается аутентификацию сервера и клиента а зачем это нужно при подключение подключение а


[02:07 - 02:22] мы доверяем а потому хостов которому подключается то есть нас есть некоторое ip адрес а мы считаем что если мы к нему подключимся то это действительно сервер скажем а википедия они кого то другого


[02:22 - 02:41] а на самом деле существует а существуют некоторые уязвимости при которых вы можете подключаться не к тому серверу которому желаете то есть например у вас а компьютер может быть испорчен


[02:41 - 03:00] а файлик etc hosts кто то подменил имя сервера и будет отличаться к другому человеку а к другому серверу а вам нужно как то проверить что сервер к которому подключаетесь является именно тем кому вы хотите подключиться а это значит также решается


[03:00 - 03:18] в протоколе t last и помимо этого решается задача а подписи передаваемых данных то есть каждое сообщение помимо того что она зашифрованы а оно еще подписано и тем самым оно защищено от с


[03:18 - 03:33] изменений и а добавляется проверка целостности сообщений а зачем это нужно если оно уже зашифровано ну допустим вы получаете какие то данные


[03:33 - 03:52] а в зашифрованном виде злоумышленник конечно их не может но может вклиниться и добавить свои льда а вы расшифруете получится какой то непонятный бред а вы не будете знать что это а данные имена злоумышленников того чтобы этого не произошло все сообщение


[03:52 - 04:11] они подписываются протоколе t was a last с точки зрения программиста он прозрачный эта прозрачность доступа теперь то есть когда у вас есть


[04:11 - 04:27] а вы преобразуйте его высокие высокие досуг то в принципе те же самые а метода sand которой были список то а поэтому не для


[04:27 - 04:45] прикладного программиста ничего кардинально не меняется давайте посмотрим как происходит установление того соединения а протокол тв сработает когда уже есть 10 соединения и он передает свои сообщения по нему


Step 5 (S-44747) 3.png

[04:45 - 05:01] а начинается все с отправке сообщения hello в этом сообщении клиент в нашем случае браузер указываете опции соединения которые он хотел бы использовать частности а нужно ли ему


[05:01 - 05:17] шифрование нужно ли ему сжатия данных которая предоставляет как каким именно шифром он хотел бы пользоваться сервер получает сообщение отвечает сообщение сервер слов


[05:17 - 05:32] hello сервер а сервер hello это подтверждение того что сервер действительно согласен с клиентом и может работать с такими параметрами шифрования и сжатия и тому подобное а после этого сервер


[05:32 - 05:49] отправляет свой сертификат сертификат нужен для аутентификации сер а в классическом в большинстве случаев в протоколе спец а аутентифицируется именно сервер то есть клиент обычно не ответил


[05:49 - 06:06] а что такое сертификат сертификат содержит в себе публичный ключ для асимметричного шифрования и а сертификат подписан другим сертификатом подлежащим в традиционном оценки это некоторый кусочек данных


[06:06 - 06:22] по которому можно проверить что сервер действительно тот за кого себя выдает цепочке доверенности сертификата это отдельная тема мы не будем пока мы читаем то что сертификат


[06:22 - 06:39] который передает сервер позволяет клиенту во 1 аутентифицировать сервер во 2 а позволяет установить симметричного шифрования клиент получил от сервера сертификат


[06:39 - 06:55] проверка сертификата на самом деле сама по себе длительная процедура которая происходит вот здесь на может занять много времени может занять после чего если клиент а


[06:55 - 07:10] доверять сервера они приступают установке настройке симметричного шифрования а если сертификат не удалось проверить появится сообщение о том что сервер предлагает вам не подписанный сертификат


[07:10 - 07:26] и наверняка вы это видели в браузерах вам предлагают а согласиться с ним то есть ответственность за проверку сертификата перекладывается на вас вы должны сами согласиться с тем что вы доверяете данному серверу а


[07:26 - 07:44] после чего происходит установка симметричного шифрования а для того чтобы работа симметричное шифрование клиента и сервера должен быть 1 и тот же ключ есть разные варианты клиент может просто передать


[07:44 - 08:03] какой то ключ на сервер зашифровав его с помощью публичного ключа сертификата либо а может использовать а специальный алгоритм для генерации ключа одновременно на клиенте на серверы когда передаются некоторые опции


[08:03 - 08:18] алгоритм схема а при этом ключ шифрования появляется и на сервере и на клиенте но в явном виде он не передается это черного пса безопасности после того как


[08:18 - 08:37] а ключ получен сервер отвечает финиш ну клиент тоже посылал сообщение финиш и значит что мы готовы передача данных вот в этом месте а таким образом происходит установление соединения


[08:37 - 08:52] в чем здесь неприятный момент неприятный момент this раз 2 и 3 это время время которое тратится на пересылку данных


[08:52 - 09:11] по сети это как минимум round trip to то есть для установления полного стало соединение нужно как минимум 2 round trip time + время на проверку сертификата который вернулся в чем в общем то не утешительный вывод а при а


Step 5 (S-44747) 4.png

[09:11 - 09:27] для того чтобы отправить запрос нам сначала нужно а получить ip адрес сервера с помощью системы для нас оно этот этап хорошо кэшируется во 2 установите спи соединения


[09:27 - 09:42] ну это как минимум а и опционально установить соединение на это может входить 1 до 2 раундтрип так ну и больше соответственно там расходы на вычисление а то есть


[09:42 - 10:00] процесс установки этого соединения это на самом деле дорогостоящий процесс а даже не в плане вычислительная мощность а в плане времени которое он вносит а и поэтому если для каждого запроса


[10:00 - 10:07] устанавливать новые соединения это сильно замедляет процесс загрузки сайт