Лицензия tls что это
SSL-сертификаты бывают разные
Рассказываем, что такое цифровые сертификаты, какими они бывают и какие с ними связаны проблемы
Чем отличается защищенное соединение от незащищенного – знает довольно большое количество людей. А вот дальше довольно часто начинается темный лес: откуда берется сертификат, чем один сертификат отличается от другого, в чем разница между SSL и TLS и кто это вообще такие, какое отношение сертификат имеет к безопасности и так далее.
В рамках этого поста мы попробуем ответить хотя бы на часть этих и подобных вопросов, а начнем все-таки издалека – с того, что значат HTTP и HTTPS в адресной строке.
Что такое HTTP и HTTPS и чем они отличаются
Когда кто-нибудь из нас заходит на какой-нибудь сайт в Интернете, просто читает его или вводит на нем какие-то данные, происходит обмен информацией между нашим компьютером и сервером, на котором размещен сайт. Происходит он в соответствии с протоколом передачи данных — набором соглашений, определяющих порядок обмена информацией между разными программами.
Протокол, который используется для передачи данных в сети и получения информации с сайтов, называется HTTP (англ. HyperText Transfer Protocol — протокол передачи гипертекста). У него существует расширение, которое называется HTTPS (англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста). Его суть — в том, что расширение позволяет передавать информацию между клиентом и сервером в зашифрованном виде. То есть информация, которой обмениваются клиент и сервер, доступна только этому клиенту и этому серверу, а не третьим лицам (например, провайдеру или администратору Wi-Fi-сети).
Шифрование данных, которые передаются от клиента к серверу, происходит, в свою очередь, в соответствии со своим, криптографическим протоколом. Сначала для этого использовался протокол под названием SSL (англ. Secure Sockets). У него было несколько версий, но все они в какой-то момент подвергались критике из-за наличия проблем с безопасностью. В итоге была выпущена та версия, которая используется сейчас — ее переименовали в TLS (англ. Transport Layer Security). Однако название SSL прижилось лучше, и новую версию протокола до сих пор часто называют так.
Для того чтобы использовать шифрование, у сайта должен быть специальный сертификат, или, как он еще называется, цифровая подпись, который подтверждает, что механизм шифрования действительно надежен и соответствует протоколу. Индикаторами того, что у сайта такой сертификат есть, являются, помимо буквы «S» в HTTPS, зеленый замочек и надпись «Защищено» или название компании в адресной строке браузера.
Как сайту получить SSL-сертификат
Существует два способа. Способ первый — веб-мастер может издать и подписать сертификат самостоятельно, сгенерировав криптографические ключи. Такой сертификат будет называться самоподписанным (англ. Self-Signed). В этом случае соединение с сайтом также будет зашифровано, но при попытке зайти на сайт с таким сертификатом пользователю будет показано предупреждение, что сертификат — недоверенный (неподтвержденный центром или устаревший). Обычно в окне браузер показывает перечеркнутый замочек и выделенные красным буквы HTTPS, или выделяет красным и перечеркивает буквы HTTPS в поисковой строке — зависит от браузера.
Второй способ (и единственный правильный) — приобрести сертификат, подписанный каким-либо из доверенных центров сертификации (Certificate authority). Сертификационные центры изучают документы владельца сайта и его право на владение доменом — ведь, по идее, наличие сертификата должно также гарантировать пользователю, что ресурс, с которым он обменивается информацией, принадлежит реальной легитимной компании, зарегистрированной в определенном регионе.
Сертификационных центров существует довольно много, но авторитетные среди них можно пересчитать по пальцам. От репутации центра зависит то, насколько ему будут доверять компании-разработчики браузеров и как они будут отображать сайт с таким сертификатом. От вида сертификата, срока его действия и репутации центра и зависит цена на сертификат.
Какими бывают SSL-сертификаты
Сертификаты, подписанные центрами, делятся на несколько видов — в зависимости от уровня надежности, того, кто и как их может получить и, соответственно, цены.
Первый называется DV (англ. Domain Validation — проверка домена). Для его получения физическому или юридическому лицу нужно доказать, что они имеют некий контроль над доменом, для которого приобретается сертификат. Проще говоря, что они либо владеют доменом, либо администрируют сайт на нем. Этот сертификат позволяет установить защищенное соединение, но в нем нет данных об организации, которой он выдан, а для его оформления не требуется никаких документов. Процесс получения такого сертификата обычно занимает несколько минут.
Сертификаты более высокого уровня — OV (англ. Organization Validation — проверка организации). Такие сертификаты выдаются только юридическим лицам, и от них требуются документы, подтверждающие существование организации, — так подтверждается не только безопасность соединения с доменом, но и то, что домен принадлежит организации, указанной в электронном сертификате. Оформление может занимать несколько дней, пока проверяются все документы. Наличие DV или OV-сертификата у сайта в браузере отображается серым или зеленым замочком, словом Secure и буквами HTTPS в адресной строке.
И еще есть EV (англ. Extended Validation — расширенная проверка) — сертификаты самого высокого уровня. Такой сертификат также могут получить только юридические лица, предоставившие все необходимые документы, а отличительной особенностью является то, что название и локация организации отображаются зеленой надписью в адресной строке после зеленого замочка. Такие сертификаты пользуются наибольшим доверием у браузеров, но они и дороже всего. В основном их приобретают крупные компании. Даже банки часто приобретают их в основном не для основного сайта, а отдельно для домена своего сервиса онлайн-платежей.
Информацию о сертификате (кем выдан, когда и сколько действует) можно посмотреть, кликнув на название организации или надпись Secure — правда, это можно сделать не во всех браузерах.
Что может быть не так с сертификатами
Один из принципов, по которым основные разработчики браузеров, такие как Google и Mozilla, выстраивают свою политику — безопасность Интернета и пользовательских данных в нем. В этой связи осенью 2017 года Google анонсировала, что отныне будет маркировать все страницы, использующие HTTP-соединение, как «незащищенные», и, по сути, блокировать пользователям доступ к ним.
Фактически, это условие вынудило все сайты на HTTP в ускоренном темпе приобретать доверенные сертификаты. Соответственно, спрос на услуги сертификационных центров вырос в разы, а время на проверку документов последним, естественно, хотелось бы сократить, чтобы выдать как можно больше этих самых сертификатов. Поэтому многие из центров стали проводить проверку гораздо менее тщательно.
Результатом этого становится то, что надежные сертификаты получают далеко не самые надежные сайты. Так, Google провела расследование, по результатам которого выяснилось, что один из самых крупных и авторитетных центров выдал более 30 тыс. сертификатов, не осуществив при этом должной проверки. Последствия для центра не радужные: Google заявила, что перестанет считать доверенными все сертификаты, выданные центром, пока тот полностью не переделает всю систему проверки и не установит новые стандарты. Mozilla также планирует ужесточить верификацию сертификатов в своих браузерах и тем самым повлиять на требования к их выдаче.
Тем не менее пока полностью уверенным в надежности сертификата и получившей его организации быть нельзя. Даже если это EV-сертификат, внешне соответствующий всем требованиям безопасности, не стоит доверять тому, что написано зеленым шрифтом, безоговорочно.
С EV-сертификатами все даже особенно плохо: злоумышленник может зарегистрировать компанию с названием, подозрительно похожим на название какой-нибудь известной компании и получить для своего сайта EV-сертификат. В этом случае зелеными буквами в адресной строке будет написано как раз-таки название компании (очень похожее на название другой известной компании), что позволит злоумышленнику повысить доверие пользователя к фишинговому сайту. Поэтому никогда не забывайте об осторожности и соблюдении правил при использовании любой веб-страницы.
Что такое TLS в КриптоПро
Из нашей статьи вы узнаете:
Что такое TLS
TLS (transport layer security — протокол защиты транспортного уровня)— это протокол защиты данных при транспортировке их в сети интернет. Протокол шифрует передаваемую информацию криптографическим методом, оставляя данные конфиденциальными.
Для чего нужен протокол
Протокол TLS — шифрует все виды интернет-трафика, в том числе и веб-трафик, используя широкий набор методов шифрования. Используется приложениями электронной почты и системами телеконференций.
Как работает протокол
Протокол использует асимметричное шифрование для аутентификации данных, симметричное шифрование для конфиденциальности и коды аутентичности для сохранения целостности сообщений.
Важнейшим фактором шифрования является условия для отсутствия уязвимостей при передаче данных. Протокол TLS компании КриптоПро отражает такие атаки, как дешифрование куки-файлов и атаки на блочный шифр, благодаря российским наборам шифрования на основе ГОСТ Р 34.10-2001, ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012. Реализация протокола используется для обеспечения безопасности защищённых соединений и совместимости продуктов различных производителей. Список совместимости со средствами криптографической защиты информации других компаний расширяется по мере проведения тестовых испытаний.
Модуль сетевой идентификации входит в комплект поставки ПО КриптоПро CSP 5.0 и не требует отдельной установки и настройки. Протокол КриптоПро TLS совместим с программным обеспечением (ПО) средств криптографической информации (СКЗИ) компании КриптоПро.
Версию с бесплатным периодом КриптоПро CSP 5.0 с актуальными наборами шифрования можно скачать на сайте КриптоПро. После использования пробного периода приобрести лицензию КриптоПро можно в «Астрал-М». «Астрал-М» является официальным дилером продукции торговой марки КриптоПро. Этот статус даёт право на распространение, внедрение и сопровождение программ КриптоПро с круглосуточной поддержкой пользователей 24/7. Достаточно заполнить форму обратной связи на сайте, вписав своё имя, телефон и адрес электронной почты.
Что такое TLS
Данный текст является вольным переводом вот этой главы замечательной книги «High Performance Browser Networking» авторства Ильи Григорика. Перевод выполнялся в рамках написания курсовой работы, потому очень вольный, но тем не менее будет полезен тем, кто слабо представляет что такое TLS, и с чем его едят.
Общие сведения о TLS
Протокол TLS (transport layer security) основан на протоколе SSL (Secure Sockets Layer), изначально разработанном в Netscape для повышения безопасности электронной коммерции в Интернете. Протокол SSL был реализован на application-уровне, непосредственно над TCP (Transmission Control Protocol), что позволяет более высокоуровневым протоколам (таким как HTTP или протоколу электронной почты) работать без изменений. Если SSL сконфигурирован корректно, то сторонний наблюдатель может узнать лишь параметры соединения (например, тип используемого шифрования), а также частоту пересылки и примерное количество данных, но не может читать и изменять их.
Конкретное место TLS (SSL) в стеке протоколов Интернета показано на схеме:
После того, как протокол SSL был стандартизирован IETF (Internet Engineering Task Force), он был переименован в TLS. Поэтому хотя имена SSL и TLS взаимозаменяемы, они всё-таки отличаются, так как каждое описывает другую версию протокола.
Первая выпущенная версия протокола имела название SSL 2.0, но была довольно быстра заменена на SSL 3.0 из-за обнаруженных уязвимостей. Как уже упоминалось, SSL был разработан компанией Netscape, так что в январе 1999 года IETF открыто стандартизирует его под именем TLS 1.0. Затем в апреле 2006 года была опубликована версия TLS 1.1, которая расширяла первоначальные возможности протокола и закрывала известные уязвимости. Актуальная версия протокола на данный момент – TLS 1.2, выпущенная в августе 2008 года.
Как уже говорилось, TLS был разработан для работы над TCP, однако для работы с протоколами дейтаграмм, такими как UDP (User Datagram Protocol), была разработана специальная версия TLS, получившая название DTLS (Datagram Transport Layer Security).
Шифрование, аутентификация и целостность
Также в рамках процедуры TLS Handshake имеется возможность установить подлинность личности и клиента, и сервера. Например, клиент может быть уверен, что сервер, который предоставляет ему информацию о банковском счёте, действительно банковский сервер. И наоборот: сервер компании может быть уверен, что клиент, подключившийся к нему – именно сотрудник компании, а не стороннее лицо (данный механизм называется Chain of Trust и будет рассмотрен в соответствующем разделе).
Наконец, TLS обеспечивает отправку каждого сообщения с кодом MAC (Message Authentication Code), алгоритм создания которого – односторонняя криптографическая функция хеширования (фактически – контрольная сумма), ключи которой известны обоим участникам связи. Всякий раз при отправке сообщения, генерируется его MAC-значение, которое может сгенерировать и приёмник, это обеспечивает целостность информации и защиту от её подмены.
Таким образом, кратко рассмотрены все три механизма, лежащие в основе криптобезопасности протокола TLS.
TLS Handshake
Перед тем, как начать обмен данными через TLS, клиент и сервер должны согласовать параметры соединения, а именно: версия используемого протокола, способ шифрования данных, а также проверить сертификаты, если это необходимо. Схема начала соединения называется TLS Handshake и показана на рисунке:
Также имеется дополнительное расширение процедуры Handshake, которое имеет название TLS False Start. Это расширение позволяет клиенту и серверу начать обмен зашифрованными данными сразу после установления метода шифрования, что сокращает установление соединения на одну итерацию сообщений. Об этом подробнее рассказано в пункте “TLS False Start”.
Обмен ключами в протоколе TLS
По различным историческим и коммерческим причинам чаще всего в TLS используется обмен ключами по алгоритму RSA: клиент генерирует симметричный ключ, подписывает его с помощью открытого ключа сервера и отправляет его на сервер. В свою очередь, на сервере ключ клиента расшифровывается с помощью закрытого ключа. После этого обмен ключами объявляется завершённым. Данный алгоритм имеет один недостаток: эта же пара отрытого и закрытого ключей используется и для аутентификации сервера. Соответственно, если злоумышленник получает доступ к закрытому ключу сервера, он может расшифровать весь сеанс связи. Более того, злоумышленник может попросту записать весь сеанс связи в зашифрованном варианте и занять расшифровкой потом, когда удастся получить закрытый ключ сервера. В то же время, обмен ключами Диффи-Хеллмана представляется более защищённым, так как установленный симметричный ключ никогда не покидает клиента или сервера и, соответственно, не может быть перехвачен злоумышленником, даже если тот знает закрытый ключ сервера. На этом основана служба снижения риска компрометации прошлых сеансов связи: для каждого нового сеанса связи создаётся новый, так называемый «временный» симметричный ключ. Соответственно, даже в худшем случае (если злоумышленнику известен закрытый ключ сервера), злоумышленник может лишь получить ключи от будущих сессий, но не расшифровать ранее записанные.
На текущий момент, все браузеры при установке соединения TLS отдают предпочтение именно сочетанию алгоритма Диффи-Хеллмана и использованию временных ключей для повышения безопасности соединения.
Следует ещё раз отметить, что шифрование с открытым ключом используется только в процедуре TLS Handshake во время первоначальной настройки соединения. После настройки туннеля в дело вступает симметричная криптография, и общение в пределах текущей сессии зашифровано именно установленными симметричными ключами. Это необходимо для увеличения быстродействия, так как криптография с открытым ключом требует значительно больше вычислительной мощности.
Возобновление сессии TLS
Как уже отмечалось ранее, полная процедура TLS Handshake является довольно длительной и дорогой с точки зрения вычислительных затрат. Поэтому была разработана процедура, которая позволяет возобновить ранее прерванное соединение на основе уже сконфигурированных данных.
Начиная с первой публичной версии протокола (SSL 2.0) сервер в рамках TLS Handshake (а именно первоначального сообщения ServerHello) может сгенерировать и отправить 32-байтный идентификатор сессии. Естественно, в таком случае у сервера хранится кэш сгенерированных идентификаторов и параметров сеанса для каждого клиента. В свою очередь клиент хранит у себя присланный идентификатор и включает его (конечно, если он есть) в первоначальное сообщение ClientHello. Если и клиент, и сервер имеют идентичные идентификаторы сессии, то установка общего соединения происходит по упрощённому алгоритму, показанному на рисунке. Если нет, то требуется полная версия TLS Handshake.
Процедура возобновления сессии позволяет пропустить этап генерации симметричного ключа, что существенно повышает время установки соединения, но не влияет на его безопасность, так как используются ранее нескомпрометированные данные предыдущей сессии.
Однако здесь имеется практическое ограничение: так как сервер должен хранить данные обо всех открытых сессиях, это приводит к проблеме с популярными ресурсами, которые одновременно запрашиваются тысячами и миллионами клиентов.
Для обхода данной проблемы был разработан механизм «Session Ticket», который устраняет необходимость сохранять данные каждого клиента на сервере. Если клиент при первоначальной установке соединения указал, что он поддерживает эту технологию, то в сервер в ходе TLS Handshake отправляет клиенту так называемый Session Ticket – параметры сессии, зашифрованные закрытым ключом сервера. При следующем возобновлении сессии, клиент вместе с ClientHello отправляет имеющийся у него Session Ticket. Таким образом, сервер избавлен от необходимости хранить данные о каждом соединении, но соединение по-прежнему безопасно, так как Session Ticket зашифрован ключом, известным только на сервере.
TLS False Start
Технология возобновления сессии бесспорно повышает производительность протокола и снижает вычислительные затраты, однако она не применима в первоначальном соединении с сервером, или в случае, когда предыдущая сессия уже истекла.
Для получения ещё большего быстродействия была разработана технология TLS False Start, являющаяся опциональным расширением протокола и позволяющая отправлять данные, когда TLS Handshake завершён лишь частично. Подробная схема TLS False Start представлена на рисунке:
Важно отметить, что TLS False Start никак не изменяет процедуру TLS Handshake. Он основан на предположении, что в тот момент, когда клиент и сервер уже знают о параметрах соединения и симметричных ключах, данные приложений уже могут быть отправлены, а все необходимые проверки можно провести параллельно. В результате соединение готово к использованию на одну итерацию обмена сообщениями раньше.
TLS Chain of trust
Пусть теперь Алиса получает сообщение от Чарли, с которым она не знакома, но который утверждает, что дружит с Бобом. Чтобы это доказать, Чарли заранее попросил подписать собственный открытый ключ закрытым ключом Боба, и прикрепляет эту подпись к сообщению Алисе. Алиса же сначала проверяет подпись Боба на ключе Чарли (это она в состоянии сделать, ведь открытый ключ Боба ей уже известен), убеждается, что Чарли действительно друг Боба, принимает его сообщение и выполняет уже известную проверку целостности, убеждаясь, что сообщение действительно от Чарли:
Описанное в предыдущем абзаце и есть создание «цепочки доверия» (или «Chain of trust», если по-английски).
В протоколе TLS данные цепи доверия основаны на сертификатах подлинности, предоставляемых специальными органами, называемыми центрами сертификации (CA – certificate authorities). Центры сертификации производят проверки и, если выданный сертификат скомпрометирован, то данный сертификат отзывается.
Из выданных сертификатов складывается уже рассмотренная цепочка доверия. Корнем её является так называемый “Root CA certificate” – сертификат, подписанный крупным центром, доверие к которому неоспоримо. В общем виде цепочка доверия выглядит примерно таким образом:
Естественно, возникают случаи, когда уже выданный сертификат необходимо отозвать или аннулировать (например, был скомпрометирован закрытый ключ сертификата, или была скомпрометирована вся процедура сертификации). Для этого сертификаты подлинности содержат специальные инструкции о проверке их актуальности. Следовательно, при построении цепочки доверия, необходимо проверять актуальность каждого доверительного узла.
Механизм этой проверки прост и в его основе лежит т.н. «Список отозванных сертификатов» (CRL – «Certificate Revocation List»). У каждого из центров сертификации имеется данный список, представляющий простой перечень серийных номеров отозванных сертификатов. Соответственно любой, кто хочет проверить подлинность сертификата, попросту загружает данный список и ищет в нём номер проверяемого сертификата. Если номер обнаружится – это значит, что сертификат отозван.
Таким образом, в данной статье рассмотрены все ключевые средства, предоставляемые протоколом TLS для защиты информации. За некоторую отсебятину в статье прошу прощения, это издержки изначальной цели выполнения перевода.
TLS 1.2 и новый ГОСТ
Вниманию читателей предлагается краткий обзор разрабатываемого проекта рекомендаций по стандартизации, определяющего использование российских криптографических алгоритмов в протоколе TLS 1.2 (далее просто проект рекомендаций).
Протокол TLS
Протокол TLS (Transport Layer Security) является одним из наиболее популярных протоколов, предназначенных для установления защищенного канала связи в сети Интернет. Он основан на спецификации протокола SSL (Secure Sockets Layer) версии 3.0, но за время своего существования претерпел довольно много изменений. Актуальной версией протокола на текущий момент является версия TLS 1.2, однако в ближайшем будущем ожидается выход версии TLS 1.3.
Протокол TLS состоит из двух уровней. На нижнем уровне находится протокол Записей TLS, работающий поверх некоторого транспортного протокола с гарантированной доставкой пакетов (см. TCP). Протокол Записей обеспечивает конфиденциальность и целостность передаваемых по каналу связи данных. Поверх протокола Записей, в свою очередь, работают протокол Оповещения, протокол Изменения Состояния, протокол Прикладных Данных и протокол Рукопожатия. Первые три по сути не решают никаких криптографических задач, а основной интерес здесь представляет протокол Рукопожатия, который отвечает за аутентификацию сторон и выработку параметров безопасности, необходимых для защиты данных на уровне протокола Записей.
Новые криптонаборы: кто они такие и зачем нужны?
В 2015 году вышли новые стандарты ГОСТ Р 34.12–2015 и ГОСТ Р 34.13–2015, которые описывают два алгоритма блочного шифрования Кузнечик и Магма, а также режимы их работы. Вследствие этого возникла необходимость интеграции данных алгоритмов в новые криптонаборы, которые бы соответствовали версии протокола TLS 1.2. Также одной из важных задач, стоявших перед авторами документа, являлось создание русскоязычного полного и самодостаточного описания одного из самых больших и сложных для понимания современных сетевых протоколов. И эту задачу решить удалось.
Разрабатываемый проект рекомендаций определяет два новых криптонабора:
Первый базируется на использовании блочного шифра Кузнечик, второй — на использовании
блочного шифра Магма.
Разберемся подробнее, что же нового, помимо новых алгоритмов шифрования, было добавлено в версию протокола TLS 1.2 с российскими криптонаборами.
Основные принципы и важные особенности
Основные принципы работы протокола Рукопожатия в новых криптонаборах почти не изменились по сравнению с предыдущей версией отечественных криптонаборов. Коротко, основной секретный параметр — premaster secret (PMS) — вырабатывается клиентом и передается серверу зашифрованным с помощью его открытого ключа. Аутентификация сервера осуществляется за счет факта корректного извлечения сервером секретного значения PMS с помощью своего закрытого ключа. Клиент, если это требуется, аутентифицируется с помощью подписи.
Основные криптографические нововведения в протокол Рукопожатия состоят в следующем:
В противовес протоколу Рукопожатия протокол Записей не похож ни на свой аналог из предыдущей версии отечественных рекомендаций, ни на зарубежные версии. В нем реализованы все передовые достижения, касающиеся задач обеспечения защищенного канала связи и минимизации нагрузки на ключ (то есть количества данных, обрабатываемых на одном ключе). Ключи, участвующие в защите данных, образуют иерархию (корневой ключ, ключи промежуточных уровней, ключи обработки сообщений и секционные ключи), которая позволяет увеличивать количество обрабатываемых сообщений, оставаясь в рамках безопасной нагрузки на ключ. Создание такой иерархии достигается за счет использования механизмов внешнего и внутреннего преобразования ключей (external и internal re-keying), положительные свойства которых доказаны в ряде работ как зарубежных (см. работу Абдалы и Беллара), так и отечественных криптографов (см. здесь и здесь). Эти механизмы реализуются посредством применения режима шифрования CTR-ACPKM и функции диверсификации ключей TLSTREE. Упомянутые подходы к уменьшению нагрузки на ключ описаны в драфте RFC, также разрабатываемого сейчас под руководством отечественных специалистов.
Заключение
Получившийся документ является в полной мере самодостаточным описанием и, несмотря на свой внушительный объем, стал понятным и структурированным. Помимо описания алгоритмической части в приложении к документу можно найти подробный журнал работы протокола, разобранный по полям используемых структур. Такое описание контрольных значений существенно облегчает понимание деталей работы протокола.
На настоящий момент номерам разрабатываемых криптонаборов присвоены временные значения из приватной области номеров IANA. Как только проект рекомендаций будет принят, планируется сразу же приступить к разработке его RFC.
Стоит также отметить, что ближайшими планами экспертов рабочей группы технического комитета 26 (ТК26) является начало разработки следующего проекта рекомендаций, посвящённого криптонаборам, соответствующим версии TLS 1.3. Работа над данным документом начнется сразу после утверждения в TK26 текущего проекта для TLS 1.2, а также после выхода нового RFC для TLS 1.3.