Перейти к основному содержанию
BeginPC.ru

Компьютер для новичков и не только

протокол для веб с шифрованием трафика

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

Чтобы разные электронные устройства могли взаимодействовать между собой, передавать и принимать информацию требуется набор определенных правил и соглашений, которого все они будут придерживаться, это называется протоколом передачи данных. В настоящее время для связи компьютеров между собой в сети интернет используется стек протоколов TCP/IP, а самым распространенным протоколом прикладного уровня является протокол HTTP (HyperText Transfer Prоtocоl) использующийся для просмотра сайтов в World Wide Web.

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

Новичкам в интернете нужно понимать, что схема не зависит от используемого вами устройства или операционной системы. Все работает одинаковым образом на компьютере, смартфоне или телевизоре и неважно стоит на них Windows, Mac OS или Android.

Однако у данной схемы есть один существенный недостаток, все данные передаются по сети по не защищенным каналам в открытом виде, как есть. Причем нужно учитывать, что ваш браузер не устанавливает соединение с сервером напрямую тет-а-тет, а соединение происходит через множество промежуточных узлов, сначала вашей локальной сети (если она есть), затем принадлежащих вашему провайдеру, а потом и другим организациям пока в итоге не попадет на нужный сервер. В этом легко убедиться, если в командной строке Windows выполнить команду tracert имя_хоста (в Linux и MAC команда будет traceroute имя_хоста). Сначала с помощью dns-сервера будет определен ip-адрес нужного сервера, а затем построена цепочка прохождения пакетов до конечной точки, результат будет выглядеть примерно так.

Вывод команды tracert

Для начинающих пользователей это может быть удивительно но, тем не менее, это так. Отсюда можно сделать вывод, что если к одному из промежуточных узлов в цепочке к веб-серверу злоумышленник получит доступ, то он сможет перехватывать ваш трафик с сайтом и следовательно сможет получить все введенные вами пароли, персональную информацию, номера кредитных карт и так далее. Это особенно критично при использовании WI-Fi сетей в общественных местах. Последствия этого наверно объяснять не требуется. Это так называемая атака «человек посередине» или Man in the middle (MiTM).

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

Чтобы устранить эту проблему можно использовать HTTPS протокол. Чем отличается HTTP от HTTPS? Он является расширением HTTP протокола применяющий шифрование передаваемых данных с помощью криптографических протоколов SSL и TLS. Данный протокол получил название HTTPS (HyperText Transfer Protocol Secure) или на бытовом языке «защищенный протокол», а сайты его использующие соответственно «защищенные сайты».

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

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

Как определить используемый на сайте протокол

Неопытных пользователей компьютера этот вопрос может поставить в тупик, хотя на самом деле все просто. Любой URL начинается с указания используемого протокола, другое дело, что людям зачастую не требуется его вводить самостоятельно, браузер подставляет его автоматически. Если просто набрать в адресной строке браузера beginpc.ru, то браузер подставит перед доменом «http://» и откроет сайт по обычному незащищенному протоколу.

Хотя в адресной строке протокол обычно не показывается (IE отображает). При этом в Firefox и Chrome слева от адреса показывается значок в виде буквы i в кружке серого цвета, а в Яндекс.браузере значок земного шара справа в конце строки. Если навести курсор мыши на них, то появится подсказка, что используется не защищенное соединение. Нужно понимать, что все меняется и даже в разных версиях одного браузера внешний вид может отличаться.

 пример незащищенного соединения

Чтобы установить защищенное соединение с сайтом, нужно явно указать безопасный протокол перед адресом страницы https://beginpc.ru в адресной строке браузера. В результате будет установлено зашифрованное соединение по протоколу HTTPS, о чем браузер обязательно уведомит пользователя тем или иным способом. Обычно при этом браузер не скрывает в URL что используется https и дополнительно показывает иконку закрытого замка серого или зеленого цвета. Браузер Хром дополнительно пишет перед адресом зеленым цветом слово «Надежный».

пример сайта открытого по https

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

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

Для наглядности можете попробовать перейти по этой ссылке http://yandex.ru на поисковую систему Яндекс. Несмотря на прямо указанный протокол http вас принудительно перебросит на https, потому что теперь он доступен только по защищенному протоколу. Порой это может создавать проблемы некоторым пользователям компьютера.

Как работает HTTPS

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

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

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

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

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

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

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

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

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

схема атаки man in middle

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

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

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

Для этого существуют специальные организации называемые центрами сертификации (Certificate Authority, сокращенно CA). Их задача сводится к проверке существования домена и наличия прав на управление им. В случае успешного прохождения проверки, они выдают цифровой сертификат со своей подписью, его еще называют SSL-сертификатом сайта. Фактически, как и с паспортным столом все строится на доверии к организации, потому что если мы не доверяем центру сертификации, то и выданному им сертификату верить нельзя. В браузеры изначально заложены данные о центрах сертификации, которым доверяют его разработчики, но пользователи могут вносить изменения.

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

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

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

ваше подключение не защищено

Следует отметить одну особенность, не всегда все сертификаты совместимы со всеми браузерами. Порой старые браузеры не доверяют некоторым сертификатам подписанным новыми центрами сертификации и соответственно не соединяются с сайтом. В качестве примера можно привести несовместимость сертификатов выданных организацией Let’s Encrypt с Internet Explorer в Windows XP. В этом можно убедиться попробовав открыть в нем этот сайт по https.

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

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

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

В случае простого SSL-сертификата в момент выдачи CA проверяет только существование сайта и право управления им у заказывающего сертификат лица. Это самый широко распространенный тип цифровых сертификатов для сайтов в интернете.

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

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

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

EV сертификат

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

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

смешанный контент

В случае если внутри https соединения происходит попытка загрузки скриптов (js) или стилей (css) по протоколу http, то браузеры блокируют их загрузку, поскольку считают серьезной уязвимостью. Остальная часть загруженной страницы считается безопасной, но она может не работать должным образом из-за заблокированных файлов. Если человек все равно желает загрузить их, то может нажать соответствующую кнопку в информационном сообщении. Браузер выполнит перезагрузку страницы с учетом всех ресурсов, но пометит ее ненадежной.

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

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

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

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