Что такое SSL/TLS

28 July 2024
Rate this item
(0 votes)

 

Днём рождения Интернета считается 1 января 1983 года, но знаешь ли ты, что первая успешная и защищенная продажа в нем случилась только спустя 10 лет, когда предприниматель Дэн Кон продал своему другу CD-диск Стинга Ten Summoner’s Tales? Только удобство, только хардкор! Другу пришлось
установить специальный браузер, который был доступен только на Linux и поддерживал хитрый алгоритм шифрования. Зато он мог ввести данные банковской карты и не бояться, что кто-нибудь их перехватит. Тогда диск Стинга стоил другу 12.48$, нескольких часов установки Linux и настройки этого браузера, чтобы можно было совершить покупку. Сегодня же ты просто добавляешь себе костюм человека паука в корзину на маркетплейсе, оплачиваешь его и ждёшь пока курьер постучится в дверь. Изи. Но задумываля ли ты, благодаря чему всё так просто? Благодаря доверию. Вспомни, заходя в онлайн-магазин, ты обязательно бросишь взгляд на адресную строку браузера, чтобы увидеть там заветный замочек. Или побежишь прочь с этого сайта, если он не безопасный. Ты же побежишь, да?

На самом деле повышению доверия в Интернетах способствовало то, что в 95 году компания нескафе… в смысле Netscape выкатила для своих браузеров протокол для защищенного обмена информацией, который и добавляет те самые замочки в адресную строку и назвала его - SSL (эс эс эль) - Secure Socket Layer. Его первая версия, SSL 1.0, так и осталась где-то на компах Netscape и никогда не видела свет. Потом был SSL 2.0, но не прошло и года как хакеры заявили, что взломали этот протокол и от его использования решено было отказаться. Пацаны из Netscape не сдавались: заварили нескафе и начали работать над SSL 3.0. Но тут в гонку включилась компания Microsoft, которая переосмыслила SSL и выкатила свою версию для тогда ещё живого Internet Explorer. К 99 году браузерные войны достигли своего апогея и всё это начинало попахивать проприетарным кошмаром, а тут ещё выходит сингл Бритни Спирс Oops!… I Did It Again, в общем.. надо было срочно что-то делать.

Тогда протокол решили сделать открытым и передать управление над ним Инженерному совету Интернета - IETF(ай и ти эф) (Internet Engineering Task Force), но с одним условием - его нужно было переименовать. Так появился TLS (ти эл эс) (Transport Layer Security), что вызывает путаницу между этими терминами и по сей день. Вот такой вот цирк с конями. Теперь к технике. Но перед этим скажем, что c TLS тоже всё было не так уж гладко, версии 1.0 и 1.1 признаны устаревшими и сейчас в приличном обществе используют только 1.2 и 1.3. Так вот, TLS создан для того, чтобы обеспечивать 3 вещи при обмене данными и это: конфиденциальность, целостность и аутентификация. Самые распространенные данные - это конечно вэб-данные, которыми ты обмениваешься с сайтами: логины, пароли и конечно же данные твоей банковской карточки, но TLS также может защитить голос, видео, почту, да что угодно! Чтобы было понятнее, сразу лови примеры. “Конфиденциальность” гарантирует, что никто не сможет перехватить данные, которые ты отправишь. Ну ладно, перехватить смогут, но прочитать - нет, для них это будет просто что-то на Клингонском языке. Допустим, если ты отправишь своему другу рецепт крабсбургера, то TLS позаботится, чтобы для того, кто его перехватит это выглядело как то так: В свою очередь “целостность” гарантирует, что эти данные никто не сможет изменить. Ну то есть, если ты отправляешь своему другу сообщение о том, что ты сегодня съел 10 хинкалек с грибочками и сыром, то после применения TLS даже самый наглый хакер не сможет вмешаться и превратить это число в 100 хинкальчиков. Здесь важно придерживаться правды, особенно когда дело касается съеденных хинкальских! “Аутентификация” гарантирует, что сайт, с которым ты общаешься действительно тот за кого себя выдает, а не просто мимо проходил. Доверие и зеленый замочек, помнишь?

Тут появляется такая штука как сертификат и центр сертификации. Если кратко, то любой уважающий себя сайт должен иметь сертификат, гарантирующий, что все данные, которые ты на него отправишь - защищены и с ним общаться безопасно. Так что можешь не бояться и записаться на совершенно бесплатный и совершенно безопасный вводный урок к курсу по кибербезопасности. Для того, чтобы обеспечить эти 3 условия в TLS применяются механизмы шифрования - симметричный и ассиметричный.

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

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

А теперь давай рассмотрим как это происходит в реальности. У нас будет 2 действующих лица - клиент и сервер. В качестве клиента будет твой любимый браузер, а в качестве сервера - твой PornHUB. Всё, как и в жизни, начинается с рукопожатия, а точнее даже с двух - сначала TCP , а потом TLS - он то нам и интересен: Итак, браузер отправляет на сайт сообщение Client Hello, которое означает примерно: “Здаров, я тут безопасное соединение хочу установить, а то мало ли что. Вот версии TLS и список алгоритмов шифрования, в которые я могу, чё скажешь?” Сайт отправляет тебе Server Hello, в котором говорит: “Окэ, мне нравится вот эта версия TLS и этот алгоритм - будем работать по ним. А и ещё - лови мой сертификат и публичный ключ, а еще чекни, что я реально тот, за кого себя выдаю.” Твой браузер внимательно проверит сертификат и если всё ок, то отправит сообщение Client Key Exchange: “Серт в норме. Но мне нужно проверить твой закрытый ключ. Я щас сгенерирую общий секретный ключ (это называется pre-master key) и зашифрую твоим открытым ключом. Посмотрим, сможешь ли ты расшифровать его!” “Да ваще изи, ща как возьму свой закрытый ключ и готово. Теперь, с помощью pre-master ключа, я намучу нам главный секрет (или сеансовый ключ) (shared secret), которым будем шифровать всё наше общение - лови!” “Круто!”, ответит твой браузер - “Я зашифровал тестовое сообщение сеансовым ключом, расшифруй его и пришли мне обратно” полетит это всё в сообщении Change Cipher spec “Изи, но постыдился бы ты такое писать… лан, всё работает, погнали шифровать все наши сообщения” - и отправит тебе Finished Понимаешь, что произошло? Сеансовый ключ - это симметричное шифрование, а обменялись они им при помощи алгоритмов ассиметричного! И всё это происходит так за миллисекунды, ты даже этого не замечаешь.

Всё это конечно круто, скажешь ты, но откуда сайт получил сертификат, которым он так хвастался? От центра сертификации или удостоверяющего центра (certificate authority). Это специальные организации, которые занимаются 3 вещами: выпускают сертификаты подтверждают личность владельца сертификата подтверждают, что сертификат валиден и не протух Тут ещё важна такая штука, как цепочка доверия. На самом деле, сертификаты может выпускать кто угодно, но заветный замочек ты увидишь только в том случае, если он связан с центром сертфикации, которому можно доверять или корневым центром (Root Certificate Authority). Их довольно много - GoDaddy, GlobalSign, DigiCert, GeoTrust и тд. На самом деле, когда твой браузер проверял сертификат от сайта - он проверял цепочку доверия. Сначала он скачал сертификат с сайта, проверил, что он не просрочен, но сайт, скорее всего, не является корневым центром. Тогда он посмотрел кто подписал этот сертификат и скорее всего он также был подписан не корневым центром, а каким нибудь промежуточным. Подуставший браузер проверил кем был подписан промежуточный сертификат и это уже скорее всего будет корневой центр! “Ура, цепочке сертификатов, а значит и сертификату сайта можно доверять!” До встречи!

Related items

More in this category: « Микросервисы

Leave a comment

Popular Posts

Advertisement

Headlines