Зашифрованный протокол HTTPS – что это, и какие у него преимущества

Зашифрованный протокол HTTPS – что это, и какие у него преимущества Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте. Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен. Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?

Трубопровод

Перед тем как мы погрузимся в то, как это работает, давайте коротко поговорим о том, почему так важно защищать Интернет-соединения и от чего защищает HTTPS.

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

Transport Layer Security (TLS)

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

TLS — наследник SSL — это такой протокол, наиболее часто применяемый для обеспечения безопасного HTTP соединения (так называемого HTTPS). TLS расположен на уровень ниже протокола HTTP в модели OSI.

Объясняя на пальцах, это означает, что в процессе выполнения запроса сперва происходят все “вещи”, связанные с TLS-соединением и уже потом, все что связано с HTTP-соединением.

TLS – гибридная криптографическая система. Это означает, что она использует несколько криптографических подходов, которые мы и рассмотрим далее:

1) Асиметричное шифрование (криптосистема с открытым ключом) для генерации общего секретного ключа и аутентификации (то есть удостоверения в том, что вы – тот за кого себя выдаете).

2) Симметричное шифрование, использующее секретный ключ для дальнейшего шифрования запросов и ответов.

Криптосистема с открытым ключом

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

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

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

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

Клиент и сервер используют свои собственные закрытые ключи (каждый – свой) и опубликованный открытый ключ для создания общего секретного ключа на сессию. Это означает, что если кто-нибудь находится между клиентом и сервером и наблюдает за соединением – он все равно не сможет узнать ни закрытый ключ клиента, ни закрытый ключ сервера, ни секретный ключ сессии. Как это возможно? Математика!

Алгоритм Ди́ффи — Хе́ллмана

Одним из наиболее распространенных подходов является алгоритм обмена ключами Ди́ффи — Хе́ллмана (DH). Этот алгоритм позволяет клиенту и серверу договориться по поводу общего секретного ключа, без необходимости передачи секретного ключа по соединению.

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

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

Немного математики…

Математические функции, лежащие в основе этого алгоритма, имею важную отличительную особенность — они относительно просто вычисляются в прямом направлении, но практически не вычисляются в обратном. Это именно та область, где в игру вступают очень большие простые числа.

Пусть Алиса и Боб – две стороны, осуществляющие обмен ключами по DH-алгоритму. Сперва они договариваются о некотором основании root (обычно маленьком числе, таком как 2,3 или 5 ) и об очень большом простом числе prime (больше чем 300 цифр).

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

Напомним, что и у Алисы, и у Боба есть собственные закрытые ключи (из более чем 100 цифр), которые никогда не передаются по каналам связи.

По каналу связи же передается смесь mixture, полученная из закрытых ключей, а также значений prime и root.

Таким образом: Alice’s mixture = (root ^ Alice’s Secret) % prime Bob’s mixture = (root ^ Bob’s Secret) % prime где % — остаток от деления

Таким образом, Алиса создает свою смесь mixture на основе утвержденных значений констант (root и prime), Боб делает то же самое. Как только они получили значения mixture друг друга, они производят дополнительные математические операции для получения закрытого ключа сессии. А именно:

Вычисления Алисы (Bob’s mixture ^ Alice’s Secret) % prime Вычисления Боба (Alice’s mixture ^ Bob’s Secret) % prime Результатом этих операций является одно и то же число, как для Алисы, так и для Боба, и это число и становится закрытым ключом на данную сессию. Обратите внимание, что ни одна из сторон не должна была пересылать свой закрытый ключ по каналу связи, и полученный секретный ключ так же не передавался по открытому соединению. Великолепно!

Для тех, кто меньше подкован в математическом плане, Wikipedia дает прекрасную картинку, объясняющую данный процесс на примере смешивания цветов:

Зашифрованный протокол HTTPS – что это, и какие у него преимущества Обратите внимание как начальный цвет (желтый) в итоге превращается в один и тот же “смешанный” цвет и у Боба, и у Алисы. Единственное, что передается по открытому каналу связи так это наполовину смешанные цвета, на самом деле бессмысленные для любого прослушивающего канал связи.

Симметричное шифрование

Обмен ключами происходит всего один раз за сессию, во время установления соединения.

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

Используя секретный ключ, полученный ранее, а также договорившись по поводу режима шифрования, клиент и сервер могут безопасно обмениваться данными, шифруя и дешифруя сообщения, полученные друг от друга с использованием секретного ключа. Злоумышленник, подключившийся каналу, будет видеть лишь “мусор”, гуляющий по сети взад-вперед.

Аутентификация

Алгоритм Диффи-Хеллмана позволяет двум сторонам получить закрытый секретный ключ. Но откуда обе стороны могут уверены, что разговаривают действительно друг с другом? Мы еще не говорили об аутентификации.

Что если я позвоню своему приятелю, мы осуществим DH-обмен ключами, но вдруг окажется, что мой звонок был перехвачен и на самом деле я общался с кем-то другим?! Я по прежнему смогу безопасно общаться с этим человеком – никто больше не сможет нас прослушать – но это будет совсем не тот, с кем я думаю, что общаюсь. Это не слишком безопасно!

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

Но, на самом деле, что это за сертификат, и как он предоставляет нам безопасность?

Сертификаты

Зашифрованный протокол HTTPS – что это, и какие у него преимущества

Доброго времени суток, дорогие друзья!

В этой статье я расскажу про протокол HTTPS: что это такое, какие у него преимущества и недостатки, чем он лучше обычного HTTP-протокола. Обсудим моменты поисковой оптимизации, я расскажу, почему наличие этого протокола у сайта напрямую влияет на позиции в поисковой выдаче. В общем, в этом материале я раскрою эту тему максимально подробно. Давайте начинать!

Зашифрованный протокол HTTPS – что это, и какие у него преимущества

HTTPS – что это

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

HTTP и HTTPS – это протоколы, которые наиболее часто используются при работе с различными веб-ресурсами. Сама аббревиатура HTTP расшифровывается как HyperText Transfer Protocol или протокол передачи гипертекста. Использовался этот протокол для передачи данных HTML-страниц, поэтому когда речь заходит о веб-сайтах, люди всегда вспоминают эти буквы.

HTTPS имеет схожую расшифровку. В конце находится буква S, которая расшифровывается как Secure. Данное слово можно перевести как безопасность или защита. То есть аббревиатура HTTPS расшифровывается как защищенный протокол передачи гипертекста.

HTTP и HTTPS всегда можно видеть в начале ссылок. Сама модель ссылки подразумевает, что в самом начале всегда указывается протокол передачи данных. Если вы введете http, сайт откроется по этому протоколу. Если https, браузер попытается открыть его по защищенному каналу, однако это не всегда сработает.

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

Читайте также:  Постановка цели по smart: суть метода и понятная инструкция

Обычное HTTP-соединение очень уязвимо для различного рода перехватов, хакерских атак, подмены и кражи данных.

То есть если вы будете работать с сайтом, используя этот вид протокола, то есть вероятность, что при обмене данными вы получите их недостоверную копию. Также у вас есть риск потерять ту информацию, которую вы передавали на сайт.

В процессе обмена данными может вмешаться третье лицо и получить копию той информации, которую вы передали сайту.

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

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

Зашифрованный протокол HTTPS – что это, и какие у него преимущества

Чтобы вам было понятнее, я приведу простой пример. Представьте, что есть некий банк, сайты и серверы которого работают на простом HTTP-протоколе без использования защиты, антивирусного ПО или брандмауэра. Такой банк сразу попадает в поле зрения злоумышленников, и это значит, что есть риск взлома и потери всех средств на счетах.

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

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

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

Разница между HTTP и HTTPS

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

То есть если обмен данными при помощи защищенного соединения идет между пользователем и веб-ресурсом, то вся информация будет иметь зашифрованный вид.

Если какое-то третье лицо захочет увидеть эти сведения, оно никак не сможет получить их в исходном виде.

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

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

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

Если этот срок истекает, то сайт более не будет доступен по защищенному протоколу. При попытке соединения браузер выдаст предупреждение, что данный сайт небезопасен, и его сертификат истек.

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

Во время этих проверок весь сайт будет проанализирован, также будет проверена вся информация, которая есть на сайте. Она должны быть достоверной, законной и т. д.

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

Поэтому наличие у ресурса HTTPS-соединения и зеленого замочка может говорить о надежности. По крайней мере, ресурс с SSL не сможет так просто перехватить вашу информацию. Она будет зашифрована даже для владельцев сайта.

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

Рассмотрим виды SSL-сертификатов.

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

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

Сертификаты этого уровня получить намного сложнее. Как минимум нужно доказать, что организация (бизнес или компания), на домен которой устанавливается SSL, существует. Помимо этого, нужно доказать, что домен принадлежит именно этой организации. После этого можно будет рассчитывать на бизнес-уровень SSL.

Сертификатам бизнес-уровня можно доверять больше. Не каждый проходимец сможет его получить. Также такой SSL не смогут получить мошенники, потому как для этого им придется создавать и регистрировать компанию. Причем на реальные данные. Кто из злоумышленников захочет себя выдавать? Думаю, никто.

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

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

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

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

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

Такой жест будет свидетельствовать о том, что вы перешли на настоящий официальный ресурс, а не какой-нибудь фейковый.

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

Однако в случае с расширенным SSL-сертификатом вам придется обломаться. Он выдается только для одного домена, и все поддомены, которые далее будут создаваться на его базе, не смогут использовать этот сертификат.

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

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

Сертификаты бывают платные и бесплатные. Платные разнятся в цене, все зависит от центра сертификации и уровня SSL. Бесплатные работают на базе Let`s Encrypt – опенсорсной технологии, которая продвигает идеи открытости исходного кода и бесплатные сертификаты начального уровня. Их очень легко получить, сейчас данную возможность имеет большое количество хостингов и регистраторов.

Также бесплатный SSL от Let`s Encrypt можно получить у посредников. Там вам придется самостоятельно добавлять домен, подтверждать свое владение им и получать ключи сертификата. Потом эти ключи можно будет использовать при установке на хостинг или на сайт регистратора.

Более подробно о том, как установить и настроить SSL-сертификат на своем сайте я рассказывал в отдельной статье. Рекомендую перейти по ссылке и ознакомиться.

HTTPS и поисковая оптимизация

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

Ни для кого не секрет, что сейчас поисковики стремятся улучшать качество своей работы.

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

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

Да, прямого влияния тут нет и сейчас, однако другие нововведения косвенно могут влиять на позиции ресурса в поисковых системах. Сейчас в браузерах, да и в самой поисковой выдаче можно все чаще встретить формулировку “Ненадежный сайт”. Эту метку получают те ресурсы, которые до сих пор работают на HTTP.

Читайте также:  14 лучших сервисов проверки орфографии бесплатно и платно

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

Поисковые системы пока просто ненавязчиво предупреждают пользователей. Однако как это влияет на них – большой вопрос. Представьте, что вы ввели в строку поиска какой-то запрос, и вам в результатах вылетело несколько ресурсов.

У первого ресурса отсутствует SSL, и сам поисковик сообщает вам о его ненадежности. Будете ли вы переходить на него, учитывая, что далее идут результаты без этих пометок.

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

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

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

Хоть ПС и говорят, что прямого влияния на ранжирование SSL не дает, но никто не исключает косвенного.

Именно поэтому все SEO-специалисты сейчас срочно рекомендуют устанавливать SSL. Тем более что это можно сделать буквально в пару кликов и абсолютно бесплатно. На многих популярных хостингах данная функция уже предустановлена, поэтому если вы держите свой сайт, и у него еще нет SSL-сертификата, то я советую его вам установить.

Заключение

Я надеюсь, что теперь вы понимаете, в чем разница между HTTP и HTTPS. В этой статье я постарался подробно раскрыть данную тему и рассказать вам обо всех нюансах, которые могут быть с ней связаны. Все довольно просто: использование защищенного соединения практически обязательно для всех сайтов.

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

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

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

HTTPS — Википедия

HTTPS

Название

HyperText Transfer Protocol Secure

Уровень (по модели OSI)

Прикладной

Семейство

TCP/IP

Создан в

2000

Порт/ID

443/TCP

Назначение протокола

Безопасное соединение с сервером

Спецификация

RFC 2818

Основные реализации (клиенты)

веб-браузеры

Основные реализации (серверы)

Apache, nginx, IIS
 Медиафайлы на Викискладе

HTTPS (аббр. от англ. HyperText Transfer Protocol Secure) — расширение протокола HTTP для поддержки шифрования в целях повышения безопасности. Данные в протоколе HTTPS передаются поверх криптографических протоколов TLS или устаревшего в 2015 году SSL[1]. В отличие от HTTP с TCP-портом 80, для HTTPS по умолчанию используется TCP-порт 443[2].

Протокол был разработан компанией Netscape Communications для браузера Netscape Navigator в 1994 году[3].

Принцип работы

HTTPS не является отдельным протоколом. Это обычный HTTP, работающий через шифрованные транспортные механизмы SSL и TLS[4]. Он обеспечивает защиту от атак, основанных на прослушивании сетевого соединения — от снифферских атак и атак типа man-in-the-middle, при условии, что будут использоваться шифрующие средства и сертификат сервера проверен и ему доверяют[5].

По умолчанию HTTPS URL использует 443 TCP-порт (для незащищённого HTTP — 80)[2]. Чтобы подготовить веб-сервер для обработки https-соединений, администратор должен получить и установить в систему сертификат открытого и закрытого ключа для этого веб-сервера.

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

Сертификат открытого ключа и сам открытый ключ посылаются клиенту при установлении соединения; закрытый ключ используется для расшифровки сообщений от клиента[6].

Существует возможность создать такой сертификат, не обращаясь в центр сертификации. Подписываются такие сертификаты этим же сертификатом и называются самоподписанными (self-signed). Без проверки сертификата каким-то другим способом (например, звонок владельцу и проверка контрольной суммы сертификата) такое использование HTTPS подвержено атаке посредника[7].

Эта система также может использоваться для аутентификации клиента, чтобы обеспечить доступ к серверу только авторизованным пользователям. Для этого администратор обычно создаёт сертификаты для каждого пользователя и загружает их в браузер каждого пользователя.

Также будут приниматься все сертификаты, подписанные организациями, которым доверяет сервер.

Такой сертификат обычно содержит имя и адрес электронной почты авторизованного пользователя, которые проверяются при каждом соединении, чтобы проверить личность пользователя без ввода пароля[8].

В HTTPS для шифрования используется длина ключа 40, 56, 128 или 256 бит. Некоторые старые версии браузеров используют длину ключа 40 бит (пример тому — IE версий до 4.0), что связано с экспортными ограничениями в США. Длина ключа 40 бит не является надёжной.

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

Шифрование с длиной ключа 128 бит значительно затрудняет подбор паролей и доступ к личной информации[6].

Традиционно на одном IP-адресе может работать только один HTTPS-сайт. Для работы нескольких HTTPS-сайтов с различными сертификатами применяется расширение TLS под названием Server Name Indication (SNI)[9].

На 17 июля 2017 года, 22,67 % сайтов из списка «Alexa top 1,000,000» используют протокол HTTPS по умолчанию[10]. HTTPS используется на 4,04 % от общего числа зарегистрированных российских доменов[11].

Идентификация в HTTPS

Идентификация сервера

HTTP/TLS запросы генерируются путём разыменования URI, вследствие чего имя хоста становится известно клиенту.

В начале общения, сервер посылает клиенту свой сертификат, чтобы клиент идентифицировал его. Это позволяет предотвратить атаку посредника. В сертификате указывается URI сервера.

Согласование имени хоста и данных, указанных в сертификате, происходит в соответствии с протоколом RFC2459[12].

Если имя сервера не совпадает с указанным в сертификате, то пользовательские программы, например браузеры, сообщают об этом пользователю. В основном, браузеры предоставляют пользователю выбор: продолжить незащищённое соединение или прервать его[13].

Идентификация клиента

Обычно сервер не располагает информацией о клиенте, достаточной для его идентификации. Однако для обеспечения повышенной защищённости соединения используется так называемая two-way authentication. При этом сервер после подтверждения его сертификата клиентом также запрашивает сертификат. Таким образом, схема подтверждения клиента аналогична идентификации сервера[14].

Уязвимости HTTPS

Совместное использование HTTP и HTTPS

Когда сайты используют смешанную функциональность HTTP и HTTPS, это потенциально приводит к информационной угрозе для пользователя.

Например, если основные страницы некоторого сайта загружаются, используя HTTPS, а CSS и JavaScript загружаются по HTTP, то злоумышленник в момент загрузки последних может подгрузить свой код и получить данные HTML-страницы.

Многие сайты, несмотря на такие уязвимости, загружают контент через сторонние сервисы, которые не поддерживают HTTPS. Механизм HSTS позволяет предотвратить подобные уязвимости, заставляя принудительно использовать HTTPS соединение даже там, где по умолчанию используется HTTP[15].

Атаки с использованием анализа трафика

Основная статья: Атака с использованием анализа трафика

В HTTPS были обнаружены уязвимости, связанные с анализом трафика. Атака с анализом трафика — это тип атаки, при которой выводятся свойства защищённых данных канала путём измерения размера трафика и времени передачи сообщений в нём.

Анализ трафика возможен, поскольку шифрование SSL/TLS изменяет содержимое трафика, но оказывает минимальное влияние на размер и время прохождения трафика.

В мае 2010 года исследователи из Microsoft Research и Университета Индианы обнаружили, что подробные конфиденциальные пользовательские данные могут быть получены из второстепенных данных, таких например, как размеры пакетов.

Анализатор трафика смог заполучить историю болезней, данные об использовавшихся медикаментах и проведённых операциях пользователя, данные о семейном доходе и пр. Всё это было произведено несмотря на использование HTTPS в нескольких современных веб-приложениях в сфере здравоохранения, налогообложения и других[16].

Атака посредника

Рис.1 Стандартная конфигурация сети. Пользователь на хосте клиента (CH) хочет осуществить безопасную транзакцию, но уязвим для атаки «человек в середине».
Основная статья: Атака посредника

При «атаке посредника» используется то, что сервер HTTPS отправляет сертификат с открытым ключом в браузер. Если этот сертификат не заслуживает доверия, то канал передачи будет уязвимым для атаки злоумышленника. Такая атака заменяет оригинальный сертификат, удостоверяющий HTTPS-сервер, модифицированным сертификатом. Атака проходит успешно, если пользователь пренебрегает двойной проверкой сертификата, когда браузер отправляет предупреждение. Это особенно распространено среди пользователей, которые часто сталкиваются с самозаверенными сертификатами при доступе к сайтам внутри сети частных организаций[17].

На рис. 1 представлена ситуация, когда злоумышленник является шлюзом между клиентом, осуществляющим безопасную транзакцию, и сервером. Таким образом через злоумышленника проходит весь трафик клиента и он может перенаправить его по своему усмотрению. Здесь делаются следующие шаги:

  1. Злоумышленник встраивается между клиентом и сервером
  2. Пересылает все сообщения от клиента серверу без изменений
  3. Перехват сообщений от сервера, посланных по шлюзу по умолчанию
  4. Создание самозаверенного сертификата и подмена им сертификата сервера
  5. Отправление ложного сертификата клиенту
  6. Когда клиент подтвердит сертификат, будут установлены защищённые соединения: между злоумышленником и сервером и другое — между злоумышленником и клиентом.

В итоге такой атаки клиент и сервер думают, что осуществляют безопасное соединение, однако злоумышленник теперь также имеет закрытый ключ и может расшифровать любое сообщение в канале[17].

См. также

В родственных проектах

  • Книги в Викиучебнике
  • Медиафайлы на Викискладе
  • SSL
  • OpenSSL
  • TLS
  • SSH
  • HSTS
  • SPDY
  • SCTP
  • Let's Encrypt

Примечания

  1. Ярослава Рябова. SSL-сертификаты бывают разные (неопр.). Kaspersky Daily (24 апреля 2018). — «У него [SSL] было несколько версий, но все они в какой-то момент подвергались критике из-за наличия проблем с безопасностью. В итоге была выпущена та версия, которая используется сейчас — ее переименовали в TLS (англ.

    Transport Layer Security). Однако название SSL прижилось лучше, и новую версию протокола до сих пор часто называют так.».

  2. 1 2 E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Дата обращения: 25 декабря 2017.
  3. Walls, Colin. Embedded software (неопр.). — Newnes, 2005. — С. 344.

     — ISBN 0-7506-7954-9.

  4. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Дата обращения: 25 декабря 2017.
  5. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Дата обращения: 25 декабря 2017.
  6. 1 2 Tim Dierks . The Transport Layer Security (TLS) Protocol Version 1.2 (англ.

    ). tools.ietf.org. Дата обращения: 25 декабря 2017.

  7. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Дата обращения: 25 декабря 2017.
  8. Aboba, Bernard, Simon, Dan. PPP EAP TLS Authentication Protocol (англ.). buildbot.tools.ietf.org. Дата обращения: 25 декабря 2017.
  9. ↑ Shbair et al, 2015, pp. 990–995.

  10. ↑ HTTPS usage statistics on top websites (неопр.) (недоступная ссылка). statoperator.com. Дата обращения: 28 июня 2016. Архивировано 9 февраля 2019 года.
  11. ↑ Статистика российского интернета runfo.ru (рус.). www.runfo.ru. Дата обращения: 16 февраля 2017.
  12. Solo, David, Housley, Russell, Ford, Warwick.

    Certificate and CRL Profile (англ.). tools.ietf.org. Дата обращения: 22 декабря 2017.

  13. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Дата обращения: 22 декабря 2017.
  14. Tim Dierks . The Transport Layer Security (TLS) Protocol Version 1.2 (англ.). tools.ietf.org. Дата обращения: 22 декабря 2017.

  15. ↑ How to Deploy HTTPS Correctly (англ.), Electronic Frontier Foundation (15 November 2010). Дата обращения 23 декабря 2017.
  16. Shuo Chen, Rui Wang, XiaoFeng Wang, Kehuan Zhang. Side-Channel Leaks in Web Applications: a Reality Today, a Challenge Tomorrow (англ.) // Microsoft Research. — 2010-05-01.

  17. 1 2 Callegati et al, 2009, с. 78.

Литература

  • Shuo Chen, Rui Wang, XiaoFeng Wang, Kehuan Zhang. Side-Channel Leaks in Web Applications: a Reality Today, a Challenge Tomorrow (англ.) // Microsoft Research. — 2010-05-01.
  • F. Callegati, W. Cerroni, M. Ramilli. Man-in-the-Middle Attack to the HTTPS Protocol // IEEE Security Privacy. — 2009. — Январь (т. 7, вып. 1). — С. 78—81. — ISSN 1540-7993. — doi:10.1109/MSP.2009.12.
  • W. M. Shbair, T. Cholez, A. Goichot, I. Chrisment. Efficiently bypassing SNI-based HTTPS filtering // 2015 IFIP/IEEE International Symposium on Integrated Network Management (IM). — 2015. — Май. — doi:10.1109/INM.2015.7140423.

Что такое протокол HTTPS, и как он защищает вас в интернете — Блог Яндекса

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

Как правило, обмен данными происходит по протоколу HTTP.

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

При всём удобстве и популярности HTTP у него есть один недостаток: данные передаются в открытом виде и никак не защищены.

На пути из точки А в точку Б информация в интернете проходит через десятки промежуточных узлов, и, если хоть один из них находится под контролем злоумышленника, данные могут перехватить.

То же самое может произойти, когда вы пользуетесь незащищённой сетью Wi-Fi, например, в кафе. Для установки безопасного соединения используется протокол HTTPS с поддержкой шифрования.

Применение HTTPSВ некоторых сервисах, например, в электронных платёжных системах, защита данных исключительно важна, поэтому в них используется только HTTPS.

Этот протокол также очень часто применяется и в других сервисах, которые обрабатывают приватную информацию, в том числе любые персональные данные. Многие сервисы Яндекса работают только по протоколу HTTPS: Паспорт, Почта, Директ, Метрика, Такси, Яндекс.

Деньги, а также все формы обратной связи, имеющие дело с персональными данными пользователей.

Все современные браузеры поддерживают протокол HTTPS. Его не нужно специально настраивать — он автоматически включается в процесс, когда это необходимо и возможно.

Почему HTTPS безопасенЗащиту данных в HTTPS обеспечивает криптографический протокол SSL/TLS, который шифрует передаваемую информацию. По сути этот протокол является обёрткой для HTTP. Он обеспечивает шифрование данных и делает их недоступными для просмотра посторонними. Протокол SSL/TLS хорош тем, что позволяет двум незнакомым между собой участникам сети установить защищённое соединение через незащищённый канал.Предположим, сегодня последний день месяца, и вы вспомнили, что нужно заплатить за интернет. На сайте провайдера вы находите нужную ссылку и переходите в личный кабинет. Всю передаваемую информацию вы наверняка хотите сохранить в секрете, поэтому она должна быть зашифрована: это и ваш пароль, и сумма платежа и номер кредитной карты. Проблема в том, что изначально ваш компьютер обменивался данными с сервером провайдера по открытому каналу, то есть по HTTP. Как в таких условиях можно установить безопасное соединение по HTTPS, если предположить, что канал всё время прослушивается? Сделать это позволяет простая математическая уловка.

Как работает безопасное соединение

Представьте, что вы хотите передать какую-то вещь другому человеку. Вы кладёте её в ящик и отправляете по почте. А чтобы курьер — или кто угодно другой — не украл её, вы запираете ящик на замок. Курьер доставляет ящик, но ваш адресат не может его открыть — у него нет ключа. Тогда он вешает на ящик свой замок и отправляет обратно вам.

Вы получаете ящик под двумя замками, снимаете свой — теперь это безопасно — и отправляете снова. Адресат получает, наконец, ящик, на котором висит только его замок, открывает его и достаёт то, что вы ему послали.

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

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

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

Однако для полной надёжности ей кое-чего не хватает: гарантии того, что ваш собеседник именно тот, за кого себя выдаёт.

Зачем нужны цифровые сертификаты

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

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

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

Избежать такой ситуации помогает цифровой сертификат — электронный документ, который используется для идентификации сервера.Вам как пользователю сертификат не нужен, но любой сервер (сайт), который хочет установить безопасное соединение с вами, должен его иметь. Сертификат подтверждает две вещи: 1) Лицо, которому он выдан, действительно существует и 2) Оно управляет сервером, который указан в сертификате. Выдачей сертификатов занимаются центры сертификации — что-то вроде паспортных столов. Как и в паспорте, в сертификате содержатся данные о его владельце, в том числе имя (или название организации), а также подпись, удостоверяющая подлинность сертификата. Проверка подлинности сертификата — первое, что делает браузер при установке безопасного HTTPS-соединения. Обмен данными начинается только в том случае, если проверка прошла успешно.Если вернуться к аналогии с ящиком и замками, цифровой сертификат позволяет убедиться в том, что замок вашего собеседника на ящике принадлежит именно ему. Что это уникальный замок, который невозможно подделать. Таким образом, если кто-то посторонний попытается вас обмануть и пришлёт ящик со своим замком, вы легко это поймёте, ведь замок будет другой.

Распространение HTTPS

Одна из самых популярных рекомендаций любых интернет-сервисов — всегда использовать последние версии программного обеспечения. Если вы никогда не задумывались о том, зачем это нужно, то вот вам одна из причин — поддержка последних разработок в области безопасности.

Распространение HTTPS и вообще новых технологий в интернете во многом зависит от того, насколько быстро появляется инфраструктура для их использования. К примеру, если бы у половины пользователей интернета браузеры не поддерживали HTTPS, многие сайты просто не смогли бы его использовать.

Это привело бы к тому, что сайт какого-нибудь банка, полностью перешедший на HTTPS, был бы недоступен у половины клиентов.Кроме того, в криптографических протоколах, в том числе и в SSL/TLS, время от времени находят уязвимости, которые позволяют перехватывать даже зашифрованную информацию.

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

Где ещё применяется шифрование

В интернете немало протоколов обмена данными, помимо HTTP и HTTPS, и они тоже должны обеспечивать защиту. Например, Яндекс.Почта поддерживает шифрование входящих и исходящих писем, о чём можно прочитать в нашем технологическом блоге на Хабрахабре. Мы заботимся о безопасности наших пользователей и стараемся защитить их данные везде, где это представляется возможным.

Ссылка на основную публикацию