Ssl что это такое. Принципы шифрования сертификатом

Обновлено 20.01.2023

Ssl что это такое. Принципы шифрования сертификатом

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

Что такое SSL и TLS

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

  • Пароли
  • Номера кредитных карт
  • Переписка

Именно эти данные и являются добычей для хакеров, сколько уже было громких дел, с кражей персональной информации и сколько еще будет, ssl сертификат шифрования, призван это минимизировать. Разработкой технологии SSL выступила компания Netscape Communications, позднее она представила Transport Layer Security или проще TLS, это протокол основанный по спецификации SSL 3.0. И Secure Socket Layer и Transport Layer Security призваны обеспечить передачу данных между двумя узлами по интернету.

SSL и TLS не имеют принципиальных различий в своей работе, могут даже быть использованы на одном сервере одновременно, делается это исключительно из соображений обеспечения работы новых устройств и браузеров, так и устаревших, где Transport Layer Security не поддерживается.

Если рассматривать современный интернет, то там в качестве сертификата безопасности сервера и шифрования используется TLS, просто знайте это

Для примера откройте сайт Яндекса, я это делаю в Google Chrome, там на против адресной строки есть значок замка, щелкаем по нему. Тут будет написано, что подключение к веб-сайту защищено и можно нажать подробнее.

сертификат открытого ключа шифрования-1

сразу видим значок Secure TLS connection, как я и говорил, большая часть интернет ресурсов именно на этой технологии. Давайте посмотрим сам сертификат, для этого жмем View certificate.

сертификат открытого ключа шифрования-2

В поле о сведениях о сертификате видим его предназначение:

  1. Обеспечивает получение идентификации от удаленного компьютера
  2. Подтверждает удаленному компьютеру идентификацию вашего компьютера
  3. 1.2.616.1.113527.2.5.1.10.2

сертификат открытого ключа шифрования-3

История версий сертификатов шифрования

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

  • SSL 1.0 > данная версия в народ так и не попала, причины, возможно нашли его уязвимость
  • SSL 2.0 > эта версия ssl сертификата была представлена в 1995 году, на стыке тысячелетий, она так же была с кучей дыр безопасности, сподвигнувшие компанию Netscape Communications к работе над третье версией сертификата шифрования
  • SSL 3.0 > пришел на смену SSL 2.0 в 1996 году.  Стало это чудо развиваться и в 1999 году крупные компании Master Card и Visa купили коммерческую лицензию на его использование. Из 3.0 версии появился  TLS 1.0
  • TLS 1.0 > 99 год, выходит обновление SSL 3.0 под названием TLS 1.0, проходит еще семь лет, интернет развивается и хакеры не стоят на месте, выходит следующая версия.
  • TLS 1.1 > 04.2006  это его отправная точка, было исправлено несколько критичных ошибок обработки, а так же появилась защита от атак, где делался режим сцепления блоков шифротекста
  • TLS 1.2 > появился в августе 2008
  • TLS 1.3 > появится в конце 2016 года

История версий сертификатов шифрования

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

Давайте разбираться как работает протоколы SSL и TLS. Начнем с основ, все сетевые устройства имеют четко прописанный алгоритм общения друг с другом, называется он OSI, который порезан на 7 уровней. В ней есть транспортный уровень отвечающий за доставку данных, но так как модель OSI это некая утопия, то сейчас все работаю по упрощенной модели TCP/IP, из 4 уровней. Стек TCP/IP, сейчас стандарт передачи данных в компьютерных сетях и он включает в себя, большое количество известных вам протоколов прикладного уровня:

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

Принцип работы TLS и SSL-1

Ну и схема стека SSL/TLS, для наглядности.

Принцип работы TLS и SSL-2

Теперь все тоже самое простым языком, так как не всем понятны эти схемы и принцип работы ssl и tls не понятен. Когда вы открываете например мой блог pyatilistnik.org, то вы обращаетесь по прикладному протоколу http, при обращении сервер видит вас и передает на ваш компьютер данные. Если это представить схематично, то это будет простая матрешка, прикладной протокол http, кладется в стек tcp-ip.

сертификат шифрования-1

Если бы на Pyatilistnik.org стоял бы сертификат шифрования TLS, то матрешка протоколов была бы посложнее и выглядела бы вот так. Тут прикладной протокол http, кладется в SSL/TLS, который в свою очередь кладется в стек TCP/IP. Все тоже самое, но уже зашифровано, и если хакер перехватит эти данные по пути их передачи, то получит всего навсего цифровой мусор, а вот расшифровать данные может только та машина, которая устанавливала соединение с сайтом.

сертификат шифрования-2

Этапы установки соединения SSL/TLS

Ssl что это такое. Принципы шифрования сертификатом

  1. Клиент обращается к серверу, устанавливая с ним соединение, далее запрашивается защищенное подключение, тут два варианта, если вы изначально обращаетесь на порт 443, который предназначен для TLS/SSL соединения, или после того как вы установили обычное подключение, клиент делает дополнительный запрос на защищенное соединение.
  2. Когда идет установка соединения, клиент говорит серверу, какие алгоритмы шифрования ему известны, сервер сравнивает его со своим списком алгоритмов шифрования и находит тот, который поддерживается обоими сторонами. Далее он говорит клиенту, что будет использоваться именно этот метод защиты. По умолчанию сервер будет стараться использовать самый современный алгоритм (SSLv3, TLSv1, TLSv1.1, TLSv1.2)
  3. После того, как определились с алгоритмами шифрования, сервер передает клиенту свой цифровой сертификат, который подписан вышестоящим, мировым центром сертификации и открытый ключ сервера.
  4. Клиент проверяет ликвидность полученного сертификата от сервера, для этого он обращается к центру сертификации, который его выдавал, и спрашивает есть ли у тебя такой сертификат, если все нормально, можно продолжать. Тут главное, чтобы сертификат не был отозван и вы доверяли корневому центру сертификации, выдавшим его, по умолчанию в операционной системе Windows, уже есть большое количество корневых сертификатов, которым вы доверяете, и они обновляются при установке новых обновлений в систему.tls сертификат
  5. Следующим этапом, после получения клиентом нужных ключей, начинается генерация сеансового ключа для защищенного соединения по принципу: Клиентом происходит генерация случайной цифровой последовательности, которую он шифрует с помощью открытого ключа полученного от сервера и отсылает результат шифрования на сервер. Полученный сеансовый ключ расшифровывается сервером с помощью его закрытого ключа, в виду того, что используется асимметричный алгоритм шифрования, то расшифровать последовательность полученную от клиента, может только сервер. Об алгоритмах шифрования мы еще поговорим ниже.
  6. Все защищенный канал настроен и будет работать до тех пор, пока не будет разорвано соединение.

Вот еще одна красивая и наглядная схема создания защищенного канала.

ssl сертификат безопасность

Установка соединения SSL/TLS на уровне сетевых пакетов

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

Ну и подробно про каждый этап обмена сетевых сообщений протоколов SSL/TLS.

  • 1. ClientHello > пакет ClientHello делает предложение со списком поддерживаемых версий протоколов, поддерживаемые наборы шифров в порядке предпочтения и список алгоритмов сжатия (обычно NULL). Еще от клиента приходит случайное значение 32 байта, его содержимое указывает отметку текущего времени, его позже будут использовать для симметричного ключа и идентификатора сессии, который будет иметь значение ноль, при условии, что не было предыдущих сессий.
  • 2. ServerHello > пакет  ServerHello, отсылается сервером, в данном сообщении идет выбранный вариант, алгоритма шифрования и сжатия. Тут так же будет случайное значение 32 байта (отметка текущего времени), его также используют для симметричных ключей. Если ID текущей сессии в ServerHello имеет значение ноль, то создаст и вернёт идентификатор сессии.  Если в сообщении ClientHello был предложен идентификатор предыдущей сессии, известный данному серверу, то протокол рукопожатия будет проведён по упрощённой схеме. Если клиент предложил неизвестный серверу идентификатор сессии, сервер возвращает новый идентификатор сессии и протокол рукопожатия проводится по полной схеме.
  • 3.Certificate (3) > в данном пакете сервер отправляет клиенту свой открытый ключ (сертификат X.509), он совпадает с алгоритмом обмена ключами в выбранном наборе шифров. Вообще можно сказать в протоколе, запроси открытый ключ в DNS, запись типа KEY/TLSA RR. Как я писал выше этим ключом будет шифроваться сообщение.
  • 4. ServerHelloDone > Сервер говорит, что сессия установилось нормально.
  • 5. ClientKeyExchange > Следующим шагом идет отсылка клиентом ключа pre-master key, используя случайные числа (или отметки текущего времени) сервера и клиента. Данный ключ (pre-master key) как раз и шифруется открытым ключом сервера. Данное сообщение может расшифровать только сервер, с помощью закрытого ключа. Теперь оба участника вычисляют общий секретный ключ master key из ключа pre-master.
  • 6. ChangeCipherSpec — клиент > смысл пакета, указать на то, что теперь весь трафик, который идет от клиента, будет шифроваться, с помощью выбранного алгоритма шифрования объёмных данных и будет содержать MAC, вычисленный по выбранному алгоритму.
  • 7. Finished — клиент > Это сообщение содержит все сообщения, отправленные и полученные во время протокола рукопожатия, за исключением сообщения Finished. Оно шифруется с помощью алгоритма шифрования объемных данных и хэшируется с помощью алгоритма MAC, о которых договорились стороны. Если сервер может расшифровать и верифицировать это сообщение (содержащее все предыдущие сообщения), используя независимо вычисленный им сеансовый ключ, значит диалог был успешным. Если же нет, на этом месте сервер прерывает сессию и отправляет сообщение Alert с некоторой (возможно, неконкретной) информацией об ошибке
  • 8. ChangeCipherSpec — сервер > пакет, говорит, что теперь весь исходящий трафик с данного сервера, будет шифроваться.
  • 9.Finished — сервер > Это сообщение содержит все сообщения, отправленные и полученные во время протокола рукопожатия, за исключением сообщения Finished
  • 10. Record Protocol (протокол записи) > теперь все сообщения шифруются ssl сертификатом безопасности

Установка соединения SSL-TLS на уровне сетевых пакетов

Как получить ssl сертификат безопасности

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

Бесплатный способ получить tls сертификат безопасности

Этот способ, подразумевает использование самоподписного сертификата (self-signed), его можно сгенерировать на любом веб-сервере с ролью IIS или Apache. Если рассматривать современные хостинги, то в панелях управления, таких как:

  • Directadmin
  • ISPmanager
  • Cpanel

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

Ssl что это такое. Принципы шифрования сертификатом

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

Давайте смотреть как можно получить ssl сертификат безопасности, для этого формируется запрос на выпуск сертификата, называется он CSR запрос (Certificate Signing Request). Делается это чаще всего у специальной компании в веб форме, которая спросит вас несколько вопросов, про ваш домен и вашу компанию. Как только вы все внесете, сервер сделает два ключа, приватный (закрытый) и публичный (открытый). Напоминаю открытый ключ не является конфиденциальным, поэтому вставляется в CSR запрос. Вот пример Certificate Signing Request запроса.

сертификат tls ssl

Все эти не понятные данные легко можно интерпретировать специальными CSR Decoder сайтами.

сертификат tls ssl-2

Примеры двух сайтов CSR Decoder:

  • http://www.sslshopper.com/csr-decoder.html
  • http://certlogik.com/decoder/

Состав CSR запроса

  • Common Name: доменное имя, которое мы защищаем таким сертификатом
  • Organization: название организации
  • Organization Unit: подразделение организации
  • Locality: город, где находится офис организации
  • State: область или штат
  • Country: двухбуквенный код, страны офиса
  • Email: контактный email технического администратора или службы поддержки

Как только Certificate Signing Request сгенерирован, можно начинать оформлять заявку на выпуск сертификата шифрования. Центр сертификации будет производить проверку, всех данных указанных вами в CSR запросе, и если все хорошо, вы получите свой ssl сертификат безопасности и вы его сможете использовать для https. Теперь ваш сервер, автоматом сопоставит выпущенный сертификат, со сгенерированным приватным ключом, все вы можете шифровать трафик подключения клиента к серверу.

Что такое центр сертификации

Что такое CA — Certification Authority или центр сертификации, читайте по ссылке слева, я подробно рассказал об этом там.

Какие данные содержит в себе SSL сертификат

В сертификате хранится следующая информация:

  • полное (уникальное) имя владельца сертификата
  • открытый ключ владельца
  • дата выдачи ssl сертификата
  • дата окончания сертификата
  • полное (уникальное) имя центра сертификации
  • цифровая подпись издателя

сертификат безопасности ssl сайта

Какие существуют виды SSL сертификатов шифрования

Основных видов сертификатов безопасности три:

  • Domain Validation — DV >  Это сертификат шифрования, который только подтверждает доменное имя ресурса
  • Organization Validation — OV > Это сертификат шифрования, который подтверждает организацию и домен
  • Extendet Validation — EV > Это сертификат шифрования, который имеет расширенную проверку

Назначение Domain Validation — DV

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

approver email так же имеет требования, логично, что если вы заказываете сертификаты шифрования для домена, то и электронный ящик должен быть из него, а не mail или rambler, либо он должен быть указан в whois домена и еще одно требование название approver email, должно быть по такому шаблону:

  • webmaster@ваш домен
  • postmaster@ваш домен
  • hostmaster@ваш домен
  • administrator@ваш домен
  • admin@

Я обычно беру ящик postmaster@ваш домен

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

Назначение Organization Validation — OV

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

Назначение Extendet Validation — EV

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

  • Могут посмотреть есть ли организация международных желтых страницах, кто не знает, что это такое, то это телефонные справочники в Америке. Проверяют так не все CA.
  • Смотрят whois домена у вашей организации, делают это все центры сертификации, если в whois нет ни слова о вашей организации, то с вас будут требовать гарантийное письмо, что домен ваш.
  • Свидетельство о государственной регистрации ЕГРИП или ЕГРЮЛ
  • Могут проверить ваш номер телефона, запросив счет у вашей телефонной компании, в котором будет фигурировать номер.
  • Могут позвонить и проверить наличие компании по этому номеру, попросят к телефону человека указанного администратором в заказе, так что смотрите, чтобы человек знал английский.

Сам сертификат шифрования extendet Validation — EV, самый дорогой и получается всех сложнее, у них кстати есть green bar, вы его точно видели, это когда на сайте в адресной строке посетитель видит зеленую стоку с названием организации. Вот пример клиент банка от сбербанка.

 

сертификат шифрования green bar

К расширенным сертификатам шифрования (extendet Validation — EV) самое большое доверие, это и логично вы сразу видите, что компания существует и прошла жесткие требования к выдаче сертификата. SSL cертификаты extendet Validatio делаются CA, только при выполнении двух требований, что организация владеет нужным доменом и, что она сама существует в природе. При выпуске EV SSL сертификатов, существует строгий регламент, в котором описаны требования перед выпуском EV сертификата

  • Должен проверить правовую, физическую и операционную деятельности субъекта
  • Проверка организации и ее документов
  • Право владения доменом, организации
  • Проверить, что организация полностью авторизована для выпуска EV сертификата

SSL cертификаты extendet Validatio выпускаются примерно от 10-14 дней, подходят как для некоммерческих организаций, так и для государственных учреждений.

Типы SSL сертификатов шифрования

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

  • Обычные SSL сертификаты > это самые распространенные сертификаты, делаются автоматически, для подтверждения только домена. Стоят в среднем 18-22 доллара.
  • SGC сертификаты > это SSL - TLS сертификаты с поддержкой, более высокого уровня шифрования. Они в основном идут для старперных браузеров, у которых есть поддержка только 40-56 битное шифрование. SGC принудительно повышает уровень шифрования , до 128 бит, что в несколько раз выше. Так как XP доживает свои последние годы, скоро SGC сертификаты шифрования не будут нужны. Стоит это чудо около 300-ста баксов за год.
  • Wildcard сертификаты > Требуются, для субдоменов вашего основного домена. Простой пример мой блог pyatilistnik.org, если я покупаю Wildcard, то имею возможно его вешать на все домены 4 уровня у себя, *.pyatilistnik.org. Стоимость Wildcard сертификатов шифрования варьируется от количества поддоменов, от 190 баксов.
  • SAN сертификаты > Допустим у вас есть один сервер, но на нем хостятся много разных доменов, вот SAN сертификат можно повесить на сервер и все домены будут использовать его, стоит от 400 баксов в год.
  • EV сертификаты > про расширенные мы уже все обсудили выше, стоят от 250 баксов в год.
  • Сертификаты c поддержкой IDN доменов

список сертификатов, у которых есть такая поддержка, IDN доменов:

  • Thawte SSL123 Certificate
  • Thawte SSL Web Server
  • Symantec Secure Site
  • Thawte SGC SuperCerts
  • Thawte SSL Web Server Wildcard
  • Thawte SSL Web Server with EV
  • Symantec Secure Site Pro
  • Symantec Secure Site with EV
  • Symantec Secure Site Pro with EV

Полезные утилиты:

  1. OpenSSL — самая распространенная утилита для генерации открытого ключа (запроса на сертификат) и закрытого ключа.
    http://www.openssl.org/
  2. CSR Decoder — утилита для проверки CSR и данных, которые в нем содержаться, рекомендую использовать перед заказом сертификата.
    http://www.sslshopper.com/csr-decoder.html или http://certlogik.com/decoder/
  3. DigiCert Certificate Tester — утилита для проверки корректно самого сертификата
    http://www.digicert.com/help/?rid=011592
    http://www.sslshopper.com/ssl-checker.html

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

Автор - Сёмин Иван

12 Responses to Ssl что это такое. Принципы шифрования сертификатом

  1. Артур:

    Спасибо за статью.

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

  2. Иван Семин:

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

  3. Артур:

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

    Другой пример. В беспроводной сети, если знаешь пароль, можно перехватывать все сетевые пакеты и расшифровывать секретные. И не только в беспроводной сети, в любой локальной сети, дома, в офисе, в кафе, в гостинице.
    Однажды я запускал на своём компьютере программу-перехватчик (sniffer) и перехватывал http-логины и пароли от сайтов. Теперь для этих целей нужен перехватчик с поддержкой расшифровывания https. Ведь так?

    Тогда зачем нужен https, если всё можно перехватить и расшифровать? Как я понял, есть необходимые условия для расшифровки https:
    1) перехват и анализ абсолютно всех пакетов определённого типа (например, от клиента на порт 443 сервера);
    2) перехват с самого начала сетевой сессии, когда идёт обмен ключами.

    Из пункта (1) следует, что при большом количестве пакетов нужны большие вычислительные мощности, не у каждого провайдера они есть. Для перехвата возникает трудность.
    Из пункта (2) следует, что, если перехватывать пакеты не с начала, а с середины сеанса, то мы получим «цифровой мусор», ведь ключи, переданные в начале сеанса, упущены. Для перехвата вознивает ещё одна трудность.

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

  4. Иван Семин:

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

  5. ArtGrek:

    Ненавижу читать. Но не мог оторваться! Спасибо!

  6. Иван Семин:

    Спасибо, это большой комплимент мне как автору.

  7. Евгений:

    отлично написанная статья, спасибо.

  8. Иван Семин:

    Очень, рад, что вам понравилось!

  9. Константин:

    Спасибо за популяризацию специфической информации. Объяснил доходчиво и в картинках.

  10. Андерсон:

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

  11. Виталий:

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

  12. Виталий:

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

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

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