Содержание

HTTPS — Википедия. Что такое HTTPS

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

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

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

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

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

[6]

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

[7]

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

[8]

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

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

[10]

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

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

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

HTTP/TLS запросы генерируются путём разыменования URI, в следствие чего имя хоста становится известно клиенту. В начале общения, сервер посылает клиенту свой сертификат, чтобы клиент идентифицировал его. Это позволяет предотвратить атаку человек посередине. В сертификате указывается URI сервера. Согласование имени хоста и данных, указанных в сертификате, происходит в соответствии с протоколом RFC2459

[13].

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

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

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

[15]

Уязвимости HTTPS

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

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

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

В HTTPS были обнаружены уязвимости, связанные с анализом трафика. Атака с анализом трафика — это тип атаки, при которой выводятся свойства защищённых данных канала путём измерения размера трафика и времени передачи сообщений в нём. Анализ трафика возможен, поскольку шифрование SSL/TLS изменяет содержимое трафика, но оказывает минимальное влияние на размер и время прохождения трафика. В мае 2010 года исследователи из Microsoft Research и Университета Индианы обнаружили, что подробные конфиденциальные пользовательские данные могут быть получены из второстепенных данных, таких например, как размеры пакетов. Анализатор трафика смог заполучить историю болезней, данные об использовавшихся медикаментах и проведённых операциях пользователя, данные о семейном доходе и пр. Всё это было произведено несмотря на использование HTTPS в нескольких современных веб-приложениях в сфере здравоохранения, налогообложения и других.
[17]

Человек посередине. HTTPS

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

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

[18]

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

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

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

См. также

Примечания

  1. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Проверено 25 декабря 2017.
  2. Walls, Colin. Embedded software. — Newnes, 2005. — P. 344. — ISBN 0-7506-7954-9.
  3. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Проверено 25 декабря 2017.
  4. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Проверено 25 декабря 2017.
  5. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Проверено 25 декабря 2017.
  6. Tim Dierks <[email protected]>. 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. Tim Dierks <[email protected]>. The Transport Layer Security (TLS) Protocol Version 1.2 (англ.). tools.ietf.org. Проверено 25 декабря 2017.
  10. 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). — May 2015. — С. 990–995. — DOI:10.1109/INM.2015.7140423.
  11. ↑ HTTPS usage statistics on top websites. statoperator.com. Проверено 28 июня 2016.
  12. ↑ Статистика российского интернета runfo.ru (рус.). www.runfo.ru. Проверено 16 февраля 2017.
  13. Solo, David, Housley, Russell, Ford, Warwick. Certificate and CRL Profile (англ.). tools.ietf.org. Проверено 22 декабря 2017.
  14. E. Rescorla. HTTP Over TLS (англ.). tools.ietf.org. Проверено 22 декабря 2017.
  15. Tim Dierks <[email protected]>. The Transport Layer Security (TLS) Protocol Version 1.2 (англ.). tools.ietf.org. Проверено 22 декабря 2017.
  16. ↑ How to Deploy HTTPS Correctly (англ.), Electronic Frontier Foundation (15 November 2010). Проверено 23 декабря 2017.
  17. 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.
  18. 1 2 Callegati et al, 2009, с. 78.

Литература

wiki.sc

Что такое HTTPS протокол, его использование и принцип работы

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

HTTPS (Hypertext Transport Protocol Secure) – это протокол, который обеспечивает конфиденциальность обмена данными между сайтом и пользовательским устройством. Безопасность информации обеспечивается за счет использования криптографических протоколов SSL/TLS, имеющих 3 уровня защиты:

  1. Шифрование данных. Позволяет избежать их перехвата.
  2. Сохранность данных. Любое изменение данных фиксируется.
  3. Аутентификация. Защищает от перенаправления пользователя.

 

В каких случаях необходим сертификат HTTPS?

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

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

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

Что нужно для перехода сайта на HTTPS?

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

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

  • Лицо, которому он выдан, действительно существует,
  • Оно является владельцем сервера (сайта), который указан в сертификате.

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

 

Сертификатов существует несколько видов в зависимости от:

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

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

 

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

Вернуться назад

Статьи по теме:

www.kasper.by

Что такое HTTPS-протокол и чем отличается HTTP от HTTPS

Чем отличается HTTP от HTTPS и SSL 

Привет уважаемые читатели seoslim.ru! Вы знаете, что представители поисковой системы Google заявили, что вскоре новая версия веб-браузера Chrome может начать блокировать загрузку веб-сайтов, осуществляющих обмен данными по небезопасному протоколу HTTP?

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

Отображение сайтов в браузерах

Кому же хочется, чтобы его ресурс блокировался в самом популярном браузере или понижался в выдаче за ТОП-20 или даже ТОП-30.

Всем, кто работает в сети, хорошо известно, что за пределами ТОП-10 жизни нет, тому что 90% трафика идет строго с первой страницы поисковых результатов.

Читайте также: 10 ошибок на сайте, которые не надо допускать

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

  • Обязательным безопасный протокол HTTPS будет только для проектов, на которых активно осуществляется обмен пользовательскими данными.

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

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

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

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

Поэтому давайте разбираться, что такое HTTP и чем оно отличается от HTTPS, пока не стало слишком поздно.

Чем отличается HTTPS от HTTP

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

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

  1. Еще в далеком 1994-ом году разработчики компании Netscape Communications позаботились созданием безопасной среды коммуникаций для пользователя браузера Netscape Navigator и придумали защищенный протокол обмена данными HTTPS при помощи криптографического протокола SSL.
  2. К сожалению, в результате «Войны браузеров» поистине замечательный веб-обозреватель, во многом опередивший время, был повержен могуществом маркетологов корпорации Microsoft. В результате чего компания Netscape обанкротилась, а браузер Netscape Navigator перестал обновляться.
  3. Наступила эра глобализма браузера Internet Explorer.
  4. Hyper Text Transfer Protocol переводится как «трансферный протокол гипертекста» или «протокол трансфера внутри гипертекста». Говоря простыми словами – протокол передачи данных между гипертекстовыми документами.
  5. В данном контексте под протоколом следует понимать некий набор правил функционирования сетевого интерфейса.
  6. Под интерфейсом помается некая аппаратно-программная прослойка между функциональными единицами всемирной сети.
  7. SSL – Secure Sockets Layer переводится как «слой защищенных сокетов». Речь идет о алгоритме передачи данных между сетевыми интерфейсами, основанном на криптографическом шифровании.
  8. Правила обмена данными шифруются криптографическим образом для обеспечения невозможности третьих сторон получить доступ к передаваемым данным.

Если бы в свое время компания Netscape Communications не пала жертвой Войны Браузеров, мы бы имели безопасный протокол HTTPS внедренным уже двадцать лет назад.

пример https

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

  • HTTPS – способ обмена данными на базе открытого протокола HTTP интегрированного в слои криптографического протокола SSL.

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

  • HTTPS – это не есть какой-то новый или отдельный протокол.

Это HTTP, в котором защищенность от внешнего считывания достигается за счет передачи данных по шифрованным каналам или слоям криптографического протокола SSL.

Применение

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

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

Использование протокола сайтов

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

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

Для каких интернет-проектов протокол HTTPS необходим?

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

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

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

Вспомним историю, компания Netscape Communications создавала HTTPS для защиты конфиденциальности пользователей своего браузера Netscape Navigator.

По какому принципу работает SSL сертификат и почему он безопасный

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

  • Когда клиент в интернет-магазине заполняет форму оплаты покупки и нажимает кнопку «Купить», платежным и персональным данным этого гражданина предстоит пересечь всемирную сеть.
  • Информация по транзакции шифруется программными криптографическими средствами SSL и интегрируется в стандартный протокол передачи данных в среде гипертекста.
  • Вот такой «гибридный» протокол и называется HTTPS. То есть, HTTP, но только с опцией обеспечения безопасности – Secure.

Как работает ССЛ

Принцип работы криптографического сертификата довольно прост.

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

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

Не защищенный сайт

Все пользователи могли видеть уведомление при попытке зайти на какой-либо сайт – «Сертификат недействителен, установить соединение невозможно».

Внимание! Качество проверки SSL-сертификата завит от того, каким именно браузером вы пользователь.

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

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

Далее разберемся, какие бывают сертификаты и где их взять.

Виды SSL сертификатов

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

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

Бесплатные SSL с доверенной подписью

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

Сайты с такими сертификатами часто рассматриваются обозревателями Chrome, Opera Internet Explorer, Mozilla Firefox как подозрительные, не доверенные. В итоге сайты блокируются и не загружаются в самых распространенных браузерах.

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

Например, на сайте letsencrypt.org/ru/ выдаются бесплатно сертификаты, которые все популярные браузеры из «большой пятерки» рассматривают как надежные.

letsencrypt

Вот как выглядит адресная строка с сертификатом Let’s Encrypt. Если кликнуть на замочек, выпадает окно с информацией о сертификате.

Отображение блога seoslim.ru в браузере

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

сертификат Let’s Encrypt

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

Платные SSL

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

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

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

Платные SSL выдаются авторитетными центрами сертификации.

В их числе:

  • Symantec,
  • Norton,
  • Comodo,
  • Trustwave,
  • Thawte.

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

С проверкой домена

Сертификат типа DV (Domain Validation — валидация домена) переназначен для того, чтобы пользователь мог быть уверен, что попадает именно на заявленный сайт, а не на фишинговую копию.

На скриншоте выше сертификат с валидацией домена.

С проверкой компании

Сертификат OV (Organization Validation – валидация организации) подтверждает посещение сайта по правильному домену и что сайт точно принадлежит заявленной компании или организации.

С расширенной проверкой

Сертификат EV (Extendet Validation – расширенная валидация). Такие сертификаты осуществляют проверку как по перечисленным выше параметрам, так и дополнительные тесты, в том числе периодические.

Сертификация EV обозначается в адресной строке замочком, где рядом видно название компании.

Сертификат EV

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

Что дает HTTPS в поиске Яндекс и Google

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

Поисковая выдача

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

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

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

У потенциального клиента мгновенно возникает сомнение: «Как это так? Вроде бы солидный, банк, а не удосужились позаботиться о защите клиентов? Может быть это вовсе и не такая респектабельная и надежная финансовая организация, как сама себя позиционирует?»

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

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

«Если эта поисковая система навела меня на мошенников – лучше я воспользуюсь услугами другого поисковика».

Почему корпорация Google решила полностью блокировать загрузку веб-ресурсов без HTTPS в своем фирменном обозревателе Chrome?

Очень просто и логично. Основной рынок для Google – это США. Америка известна тем, что ее граждане по каждому поводу бегут судиться. По числу адвокатов на душу населения США впереди планеты всей.

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

Опытный адвокат сможет выбить из Google миллионы долларов компенсации за моральный и финансовый ущерб.

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

Ну и репутация безопасной поисковой системы – это тоже инвестиция на миллионы долларов.

Требуя от владельцев интернет-проектов внедрения HTTPS Яндекс и Google заботятся о наполнении своего кармана.

seoslim.ru

Простым языком об HTTP / Habr

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

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

Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol, «протокол передачи гипертекста». В соответствии со спецификацией OSI, HTTP является протоколом прикладного (верхнего, 7-го) уровня. Актуальная на данный момент версия протокола, HTTP 1.1, описана в спецификации RFC 2616.

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

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

Также HTTP часто используется как протокол передачи информации для других протоколов прикладного уровня, таких как SOAP, XML-RPC и WebDAV. В таком случае говорят, что протокол HTTP используется как «транспорт».

API многих программных продуктов также подразумевает использование HTTP для передачи данных — сами данные при этом могут иметь любой формат, например, XML или JSON.

Как правило, передача данных по протоколу HTTP осуществляется через TCP/IP-соединения. Серверное программное обеспечение при этом обычно использует TCP-порт 80 (и, если порт не указан явно, то обычно клиентское программное обеспечение по умолчанию использует именно 80-й порт для открываемых HTTP-соединений), хотя может использовать и любой другой.

Как отправить HTTP-запрос?

Самый простой способ разобраться с протоколом HTTP — это попробовать обратиться к какому-нибудь веб-ресурсу вручную. Представьте, что вы браузер, и у вас есть пользователь, который очень хочет прочитать статьи Анатолия Ализара.

Предположим, что он ввёл в адресной строке следующее:

http://alizar.habrahabr.ru/

Соответственно вам, как веб-браузеру, теперь необходимо подключиться к веб-серверу по адресу alizar.habrahabr.ru.

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

telnet alizar.habrahabr.ru 80

Сразу уточню, что если вы вдруг передумаете, то нажмите Ctrl + «]», и затем ввод — это позволит вам закрыть HTTP-соединение. Помимо telnet можете попробовать nc (или ncat) — по вкусу.

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

Для того, чтобы сформировать HTTP-запрос, необходимо составить стартовую строку, а также задать по крайней мере один заголовок — это заголовок Host, который является обязательным, и должен присутствовать в каждом запросе. Дело в том, что преобразование доменного имени в IP-адрес осуществляется на стороне клиента, и, соответственно, когда вы открываете TCP-соединение, то удалённый сервер не обладает никакой информацией о том, какой именно адрес использовался для соединения: это мог быть, например, адрес alizar.habrahabr.ru, habrahabr.ru или m.habrahabr.ru — и во всех этих случаях ответ может отличаться. Однако фактически сетевое соединение во всех случаях открывается с узлом 212.24.43.44, и даже если первоначально при открытии соединения был задан не этот IP-адрес, а какое-либо доменное имя, то сервер об этом никак не информируется — и именно поэтому этот адрес необходимо передать в заголовке Host.

Стартовая (начальная) строка запроса для HTTP 1.1 составляется по следующей схеме:

Метод URI HTTP/Версия

Например (такая стартовая строка может указывать на то, что запрашивается главная страница сайта):

GET / HTTP/1.1

Метод (в англоязычной тематической литературе используется слово method, а также иногда слово verb — «глагол») представляет собой последовательность из любых символов, кроме управляющих и разделителей, и определяет операцию, которую нужно осуществить с указанным ресурсом. Спецификация HTTP 1.1 не ограничивает количество разных методов, которые могут быть использованы, однако в целях соответствия общим стандартам и сохранения совместимости с максимально широким спектром программного обеспечения как правило используются лишь некоторые, наиболее стандартные методы, смысл которых однозначно раскрыт в спецификации протокола.

URI (Uniform Resource Identifier, унифицированный идентификатор ресурса) — путь до конкретного ресурса (например, документа), над которым необходимо осуществить операцию (например, в случае использования метода GET подразумевается получение ресурса). Некоторые запросы могут не относиться к какому-либо ресурсу, в этом случае вместо URI в стартовую строку может быть добавлена звёздочка (астериск, символ «*»). Например, это может быть запрос, который относится к самому веб-серверу, а не какому-либо конкретному ресурсу. В этом случае стартовая строка может выглядеть так:

OPTIONS * HTTP/1.1

Версия определяет, в соответствии с какой версией стандарта HTTP составлен запрос. Указывается как два числа, разделённых точкой (например 1.1).

Для того, чтобы обратиться к веб-странице по определённому адресу (в данном случае путь к ресурсу — это «/»), нам следует отправить следующий запрос:

GET / HTTP/1.1
Host: alizar.habrahabr.ru

При этом учитывайте, что для переноса строки следует использовать символ возврата каретки (Carriage Return), за которым следует символ перевода строки (Line Feed). После объявления последнего заголовка последовательность символов для переноса строки добавляется дважды.

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

Если вы хотите отправить запрос в точном соответствии со спецификацией, можете воспользоваться управляющими последовательностями \r и \n:

echo -en "GET / HTTP/1.1\r\nHost: alizar.habrahabr.ru\r\n\r\n" | ncat alizar.habrahabr.ru 80

Как прочитать ответ?

Стартовая строка ответа имеет следующую структуру:

HTTP/Версия Код состояния Пояснение

Версия протокола здесь задаётся так же, как в запросе.

Код состояния (Status Code) — три цифры (первая из которых указывает на класс состояния), которые определяют результат совершения запроса. Например, в случае, если был использован метод GET, и сервер предоставляет ресурс с указанным идентификатором, то такое состояние задаётся с помощью кода 200. Если сервер сообщает о том, что такого ресурса не существует — 404. Если сервер сообщает о том, что не может предоставить доступ к данному ресурсу по причине отсутствия необходимых привилегий у клиента, то используется код 403. Спецификация HTTP 1.1 определяет 40 различных кодов HTTP, а также допускается расширение протокола и использование дополнительных кодов состояний.

Пояснение к коду состояния (Reason Phrase) — текстовое (но не включающее символы CR и LF) пояснение к коду ответа, предназначено для упрощения чтения ответа человеком. Пояснение может не учитываться клиентским программным обеспечением, а также может отличаться от стандартного в некоторых реализациях серверного ПО.

После стартовой строки следуют заголовки, а также тело ответа. Например:

HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Sat, 08 Mar 2014 22:53:46 GMT
Content-Type: application/octet-stream
Content-Length: 7
Last-Modified: Sat, 08 Mar 2014 22:53:30 GMT
Connection: keep-alive
Accept-Ranges: bytes

Wisdom

Тело ответа следует через два переноса строки после последнего заголовка. Для определения окончания тела ответа используется значение заголовка Content-Length (в данном случае ответ содержит 7 восьмеричных байтов: слово «Wisdom» и символ переноса строки).

Но вот по тому запросу, который мы составили ранее, веб-сервер вернёт ответ не с кодом 200, а с кодом 302. Таким образом он сообщает клиенту о том, что обращаться к данному ресурсу на данный момент нужно по другому адресу.

Смотрите сами:

HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Sat, 08 Mar 2014 22:29:53 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Keep-Alive: timeout=25
Location: http://habrahabr.ru/users/alizar/

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h2>302 Found</h2></center>
<hr><center>nginx</center>
</body>
</html>

В заголовке Location передан новый адрес. Теперь URI (идентификатор ресурса) изменился на /users/alizar/, а обращаться нужно на этот раз к серверу по адресу habrahabr.ru (впрочем, в данном случае это тот же самый сервер), и его же указывать в заголовке Host.

То есть:

GET /users/alizar/ HTTP/1.1
Host: habrahabr.ru

В ответ на этот запрос веб-сервер Хабрахабра уже выдаст ответ с кодом 200 и достаточно большой документ в формате HTML.

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

А что с безопасностью?

Сам по себе протокол HTTP не предполагает использование шифрования для передачи информации. Тем не менее, для HTTP есть распространённое расширение, которое реализует упаковку передаваемых данных в криптографический протокол SSL или TLS.

Название этого расширения — HTTPS (HyperText Transfer Protocol Secure). Для HTTPS-соединений обычно используется TCP-порт 443. HTTPS широко используется для защиты информации от перехвата, а также, как правило, обеспечивает защиту от атак вида man-in-the-middle — в том случае, если сертификат проверяется на клиенте, и при этом приватный ключ сертификата не был скомпрометирован, пользователь не подтверждал использование неподписанного сертификата, и на компьютере пользователя не были внедрены сертификаты центра сертификации злоумышленника.

На данный момент HTTPS поддерживается всеми популярными веб-браузерами.

А есть дополнительные возможности?

Протокол HTTP предполагает достаточно большое количество возможностей для расширения. В частности, спецификация HTTP 1.1 предполагает возможность использования заголовка Upgrade для переключения на обмен данными по другому протоколу. Запрос с таким заголовком отправляется клиентом. Если серверу требуется произвести переход на обмен данными по другому протоколу, то он может вернуть клиенту ответ со статусом «426 Upgrade Required», и в этом случае клиент может отправить новый запрос, уже с заголовком Upgrade.

Такая возможность используется, в частности, для организации обмена данными по протоколу WebSocket (протокол, описанный в спецификации RFC 6455, позволяющий обеим сторонам передавать данные в нужный момент, без отправки дополнительных HTTP-запросов): стандартное «рукопожатие» (handshake) сводится к отправке HTTP-запроса с заголовком Upgrade, имеющим значение «websocket», на который сервер возвращает ответ с состоянием «101 Switching Protocols», и далее любая сторона может начать передавать данные уже по протоколу WebSocket.

Что-то ещё, кстати, используют?

На данный момент существуют и другие протоколы, предназначенные для передачи веб-содержимого. В частности, протокол SPDY (произносится как английское слово speedy, не является аббревиатурой) является модификацией протокола HTTP, цель которой — уменьшить задержки при загрузке веб-страниц, а также обеспечить дополнительную безопасность.

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

Опубликованный в ноябре 2012 года черновик спецификации протокола HTTP 2.0 (следующая версия протокола HTTP после версии 1.1, окончательная спецификация для которой была опубликована в 1999) базируется на спецификации протокола SPDY.

Многие архитектурные решения, используемые в протоколе SPDY, а также в других предложенных реализациях, которые рабочая группа httpbis рассматривала в ходе подготовки черновика спецификации HTTP 2.0, уже ранее были получены в ходе разработки протокола HTTP-NG, однако работы над протоколом HTTP-NG были прекращены в 1998.

На данный момент поддержка протокола SPDY есть в браузерах Firefox, Chromium/Chrome, Opera, Internet Exporer и Amazon Silk.

И что, всё?

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

Впрочем, если вы знаете английский и хотите углубиться в изучение не только самого HTTP, но и используемых для передачи пакетов TCP/IP, то рекомендую прочитать вот эту статью.

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

Удачи и плодотворного обучения!

habr.com

HTTPS — это… Что такое HTTPS?

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

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

HTTPS поддерживается всеми популярными браузерами.

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

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

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

Существует возможность создать такой сертификат, не обращаясь в ЦС. Такие сертификаты могут быть созданы для серверов, работающих под Unix, с помощью таких утилит, как ssl-ca от OpenSSL [1] или gensslcert от SuSE. Подписываются такие сертификаты этим же сертификатом и называются самоподписанными (self-signed). Без проверки сертификата каким-то другим способом (например, звонок владельцу и проверка контрольной суммы сертификата) такое использование HTTPS подвержено атаке man-in-the-middle.

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

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

См. также

dic.academic.ru

Чем отличается https от http

Чем отличаются протоколы — разница в безопасности

Буквы HTTP в начале адресной строки означают, что клиент и сервер обмениваются данными по прикладному протоколу – hypertext transfer protocol. Это стандартный протокол для обмена любыми данными в Интернете. Внешне аббревиатура HTTP ничем не выделяется – она такого же черного цвета, что и остальная часть адресной строки. Либо незащищенный протокол вообще не указывается в адресной строке браузера.

http протокол

Если в адресной строке вместо черной надписи HTTPS появилась зеленая HTTPS, значит, данные передаются по тому же HTTP протоколу, но с дополнительной надстройкой, обеспечивающей криптографическую защиту (отсюда и буква «s», означающая «security», т.е. безопасность). Передаваемые данные шифруются с помощью протоколов SSL и TLS, которые невозможно расшифровать без ключа. Узнать защищенное соединение просто – помимо зеленого цвета букв, в адресной строке появляется изображение закрытого замка и надпись «Надежный».

https протокол

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

Есть и техническое отличие – HTTP обычно использует порт соединения 80, тогда как HTTPS – порт 443. При необходимости системный администратор может указать другой порт, но они всегда будут разными для HTTP и HTTPS протоколов.

Основные преимущества и недостатки HTTPS

Помимо собственно защиты данных, HTTPS выполняет дополнительную задачу – увеличивает приток посетителей на сайт. Еще в 2014 г. компания Google объявила, что будет повышать выдачу в поисковике сайтов, использующих https, и многие сайты купили цифровой сертификат для шифрования информации. К сожалению, из-за разницы в принципах работы поисковых систем Яндекс и Гугл при замене HTTP на HTTPS у некоторых ресурсов наблюдалась просадка позиций из-за некорректно выполненного переноса.

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

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

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

Виртуальный хостинг сайтов для популярных CMS:

Что нужно знать вебмастеру при переходе с HTTP на HTTPS

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

яндекс и ssl

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

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

Для корректного переноса и работы важно, чтобы все без исключения ссылки на загружаемое содержимое – картинки, веб-шрифты, скрипты, файлы стилей – проходили через HTTPS. Если HTTPS ресурс загружает часть контента через незащищенный HTTP протокол, пользователям может высвечиваться уведомление неполной защите сайта. Некоторые браузеры могут не поддерживать отображение комбинированного (HTTPS + HTTP) контента, что приведет некорректной работе сайта.

www.ipipe.ru

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

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

В современных условиях безопасность в интернете имеет огромное значение. Мы постоянно совершаем покупки в интернет-магазинах, переводим деньги онлайн, вводим пароли в социальных сетях и даже можем общаться с государственными органами не вставая с дивана. Это очень удобно, однако есть существенный риск, что передаваемые вами данные перехватят злоумышленники. Как обезопасить себя во всемирной паутине и что такое 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 отправив его на свалку истории. Вполне возможно, что это займет всего несколько лет.

beginpc.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *