Основы IT: SSL

Аватар пользователя Karbafoz

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

Основная задача SSL – это установить между клиентом и сервером зашифрованное соединение. Для этого нужно договориться о «пароле» (секретном ключе сессии) и основную опасность тут представляет Man-in-the-Middle: в процессе передачи данных на одном из промежуточных узлов их могут подслушивать, а в некоторых случаях даже подменять проходящие пакеты. В качестве Man-in-the-Middle может выступать как государство (система СОРМ-2 и её зарубежные аналоги), так и сторонний злоумышленник, прицепившейся к вашему WiFi. Таким образом, для безопасной передачи данных нужно как-то секретно договориться с сервером о протоколе, параметрах и ключе шифрования.

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

Имеется пара закрытый (приватный) ключ PRIV и открытый (публичный) ключ PUB для которых:

  1. Имеется однозначное и единственное соответствие ключей друг-другу – по приватному ключу PRIV можно однозначно вычислить единственный и уникальный ключ PUB
  2. Шифрование – используя публичный ключ PUB, любой может зашифровать сообщение msg так, что расшифровать его можно только при помощи закрытого ключа PRIV. Иными словами, сообщение, закодированное публичным ключом может быть декодировано только приватным ключом.
  3. Подпись – используя закрытый ключ PRIV можно защитить сообщение msg от любых изменений, в отсутствии которых можно удостоверится при помощи открытого ключа PUB. Иными словами, получив сообщение и его сигнатуру, мы можем проверить его целостность – декодирование сигнатуры публичным ключом должно выдавать сообщение, идентичное незашифрованному.

Таким образом, алгоритм действий следующий:

  1. Клиент запрашивает у сервера сессию и его публичный ключ;
  2. Сервер отдаёт публичный ключ;
  3. Клиент кодирует им временный пароль сессии;
  4. Клиент отдаёт закодированный пароль сессии серверу;
  5. Дальнейшие коммуникации идут с симметричным шифрованием используя этот временный пароль.

Но что, если зловредный Man in the Middle может не только прослушивать траффик, но и подменять данные? В таком случае, он может на шаге 1 «подслушать» публичный ключ сервера, на шаге 2 отдать свой публичный ключ, прочитать пароль сессии на шаге 3 и отдать его серверу снова закодировав публичным ключом сервера на шаге 4.

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

Также, для надёжности давайте с сервера отдавать не просто публичный ключ и его цифровую подпись, а еще и некоторые дополнительные мета-данные (время действия, имя домена, название организации и т.д.). Это и называется SSL Certificate, стандарт X.509

Такие организации называются Trusted Root Certificate Authorities, а их сертификаты зашиты в системные библиотеки SSL или непосредственно в браузер.

https://en.wikipedia.org/wiki/Certificate_authority#/media/File:PublicKe...

Более того, Root Certificate Authority может выдавать не только сертификаты конечным пользователям, но и выдать специальный Intermediate Certificate какой-то другой организации, которая в свою очередь сможет подписывать конечные сертификаты. Такие организации называются Intermediate Certificate Authorities, а цепочка от конечного сертификата до Root Certificate Authority называется Chain of Trust (может быть больше одного промежуточного Authority).

https://upload.wikimedia.org/wikipedia/commons/0/02/Chain_Of_Trust.svg

Поскольку может так получиться, что у клиента нет в SSL библиотеке сертификата для какой-то специфической Intermediate Certificate Authority, сервер вместе со своим сертификатом также отдаёт сертификат Intermediate Certificate Authority его выпустившего. На клиенте цепочка сертификатов последовательно разбирается, пока не дойдут до известного Root Certificate Authority.

В итоге SSL Handshake (протокол рукопожатия) выглядит вот так:

https://www.ssl.com/wp-content/uploads/2015/07/SSLTLS_handshake.png

  1. Клиент посылает серверу номер версии SSL клиента, поддерживаемые алгоритмы шифрования и сжатия, специфичные данные для сеанса и другую информацию, которая нужна серверу, чтобы общаться с клиентом, используя SSL.
  2. Сервер посылает клиенту номер версии SSL сервера, алгоритм сжатия и шифрования (выбранные из посланных ранее клиентом), специфичные данные для сеанса и другую информацию, которая нужна клиенту, чтобы общаться с сервером по протоколу SSL. Сервер также посылает свой сертификат, который требует проверки подлинности клиента.
  3. Клиент использует информацию, переданную сервером для проверки подлинности. Если сервер не может быть проверен, пользователь получает предупреждение о проблеме и о том, что шифрование и аутентификация соединения не может быть установлена. Клиент создаёт предварительный секрет сессии, в зависимости от используемого шифра от сервера, шифрует его с помощью открытого ключа сервера (полученного из сертификата сервера, отправленного на 2-м шаге), а затем отправляет его на сервер.
  4. Сервер расшифровывает секрет сессии используя свой закрытый ключ.
  5. На этом этапе и клиент и сервер имеют одинаковый секрет сессии. И клиент, и сервер используют секрет для генерации ключей сеансов, которые являются симметричными ключами, использующиеся для шифрования и расшифрования информации, которой обмениваются во время SSL сессии. Происходит проверка целостности (то есть, для обнаружения любых изменений в данных между временем когда он был послан, и временем его получения на SSL-соединении).
  6. Клиент посылает сообщение серверу, информируя его, что будущие сообщения от клиента будут зашифрованы с помощью ключа сеанса. Затем он отправляет отдельное, зашифрованное сообщение о том, что часть рукопожатие закончена.
  7. И в заключение, сервер посылает сообщение клиенту, информируя его, что будущие сообщения от сервера будут зашифрованы с помощью ключа сеанса. Затем он отправляет отдельное, зашифрованное сообщение о том, что часть рукопожатие закончена.

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

Также, потребовалась процедура для экстренного отзыва сертификатов – например, когда стало достоверно известно, что сертификат взломали. Или, что хуже, приватный ключ Certificate Authority стал известен злоумышленникам. Управляется это через CRL (Certificate Revocation List) или используя OCSP (Online Certificate Status Protocol). Хочу подчеркнуть, что это уже дополнительная надстройка, существенным недостатком которой является необходимость обращения к каким-то дополнительным внешним сервисам во время SSL handshake. Тут процесс еще пока находится в стадии развития, разные системы и браузеры используют разные способы и методы.

Ну и теперь кратко об инфоповоде, побудившем меня всё это написать – якобы отзыве сертификатов fsb.ru и kremlin.ru (и в 2018 отзыве сертификата oprf.ru). На данной стадии развития - это полный бред. Технически да, можно добавить сертификат конечного сайта в CRL. Но нету возможности проконтролировать, что все браузеры его вовремя обновят. Для конечных пользователей это бы выглядело так – у половины всё работает нормально, у другой браузер ругается на «плохой» сертификат. Основной целью отзыва является защита от возможной прослушки, когда какой-то сертификат скомпрометирован. Причём, как пишут на ssl.com

For website owners, it seems wise to assume that the various browser programs are focused on high-priority/emergency incidents such as revoked root and intermediate CA certificates, and that revocations of garden-variety end-entity certificates are likely to pass unnoticed for an indefinite period.

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

Авторство: 
Копия чужих материалов

Комментарии

Аватар пользователя alx_me
alx_me(9 лет 10 месяцев)

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

Аватар пользователя лабиринт разума

это была просто истерика кого-то, к реальности не относящаяся. 

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Ну, например, это утверждал некий Игорь Ашманов еще аж в 2018 году, когда якобы был отозван сертификат для *.oprf.ru. История там какая-то мутная - общественная палата не опубликовала официальное письмо от GeoTrust, а верить чиновникам на слово не всегда разумно. Также не ясно, почему тогда под раздачу попала только эта организация. Полагаю, что в этом случае просто хотели выбить из государства немного бабла под свои проекты.

Аватар пользователя лабиринт разума

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

это скорее с звездочкой (вилдкардностью) связано, несколько клиентов тоже попадали и тоже с GeoTrust'ом 

а еще и сам GeoTrust попадал примерно в это время https://habr.com/ru/company/1cloud/blog/350768/ 

 

 

 

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Дык я и говорю - там торчит коммерческий интерес, нежели озвученные соображения государственной безопасности. Мало открыть свой CA, надо как-то пролоббировать его включение в основные браузеры и SSL библиотеки.

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

 

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Ага, дельный комментарий c отгадкой с хабра:

Trustico просто предоставлял сервис «для ленивых» сразу с генерацией закрытого ключа, генерацией csr по ключу и сразу же выдачей сертификата по csr. И они высылали клиенту и сертификат и закрытый ключ.

А я еще не мог понять, почему Trustico сам не мог отозвать сертификаты и обращался за этим к DigiCert. Выходит, он никакой не Intermediate Certificate Authority, а типа сервисная для ленивых. Не, нафиг-нафиг такие конторы.

Аватар пользователя PeterR
PeterR(9 лет 5 месяцев)

Офигеть ! Это называется- "попросить ключ от квартиры,где деньги лежат" И что,лохи ведутся ?

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Картинка тут, конечно, для хохмы (хотя я уверен, и на такое тоже люди ведутся). А среди клиентов Trustico на момент скандала значился, например Equifax.

Аватар пользователя лабиринт разума

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

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя salvator
salvator(9 лет 3 месяца)

годная статья! насчет фсб не заню был ли у них вобще https или действительно отозвали и они отключили, вот у судебных приставов например без шифрования вообще. но в данный момент https://fsb.ru/ не работает. только http.

Аватар пользователя vantuz
vantuz(4 года 8 месяцев)

уже было замечание, что ни у fsb.ru ни у kremlin.ru никогда не было -s версии

Аватар пользователя И-23
И-23(8 лет 7 месяцев)

Описан далеко не полный случай.

Позволю себе элемент самопеара в виде ошибки из более общего случая (просьба не портить обсуждение *правильным* ответом).

ЗЫ: Но самая интересная часть задачи в управлении инфраструктурой доверенных ЦА.

Аватар пользователя И-23
И-23(8 лет 7 месяцев)

И замечание по теме статьи: проверка СОС с указанной точки распространения (url) — уже достаточно давно стандартная фича.

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Не сказал бы, что прям стандартная: Chrome использует CRL, Firefox начиная с 28 - OSCP, Safari получает список отозваннывх сертификатов через системные обновления: https://www.ssl.com/article/how-do-browsers-handle-revoked-ssl-tls-certi...

Ну и про достаточно давно тоже не соглашусь - еще лет 10 назад SSL вообще был достаточно слабо распространён. Знакомые работали на евреев над проектом по кэшированию, их ноухау была возможность "на лету", распознавать тип трафика, дже с середины файла и кэшировать. Измерения показали, что до 90% можно отдавать из кэша. Потом ютуб перешел на https и проект загнулся. К тому же, сертификаты стоили существенных денег и никто не хотел "платить за воздух". Иногда самоподписанные сертификаты использовали, еще как-то помнится китайцы раздавали бесплатные двухгодичные.

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

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

Аватар пользователя лабиринт разума

Измерения показали, что до 90% можно отдавать из кэша.

странно, научрук в начале 2000 (2003-2006 знакомая) изучал различные методы (алгоритмы, процедуры) кеширования веб трафика. в 2003 до 15%, а 10% трафика получалось сквидом сэкономить, а в 2005 ( здравствуй веб 2.0 ) экономия не оправдывала использование жесткого диска. https стал популярным несколько позже, еще даже титульные странички буржуйских банков были http. 

С  тем что http/https - это основа трафика в интернете, появляется вопрос как получили 90%. Даже Riverbed и WAAS таких данных не давали, если текстовых файлов по 2ГБ не передавать :) 

 

 

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Ребята помимо картинок и текста умели хорошо кэшировать потоковое видео. Пока ютуп на https не перешел контора неплохо развивалась.

Аватар пользователя Rinat Sergeev
Rinat Sergeev(7 лет 3 месяца)

Как всегда, паника оказалась преувеличена.
Впрочем, сам факт, что к проблеме контроля сертификатов привлечено внимание, наверное, положителен. Ибо допущение

отзыв одного сертификата конкретного сайта может занять неопределённое количество времени

может в будущем и не сохранится. 

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя monk
monk(12 лет 2 месяца)

Почему не поможет? Отечественный CA не будет отзывать сертификат российских организаций по команде из Вашингтона. А иностранный может.

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Если браузер при установке соединения помимо целевого сервера обращается куда-то на сторону, дабы проверить а не отозван ли сертификат (протокол OCSP), то что мешает внести этот сертификат в список "плохих" в обход CA? А всё к этому потихоньку и идёт.

Аватар пользователя Rinat Sergeev
Rinat Sergeev(7 лет 3 месяца)

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

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

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

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя monk
monk(12 лет 2 месяца)

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

Ничуть. Уже поверх Интернета есть любо вариант анархии от обычного VPN до Tor и ZeroNet.

Аватар пользователя Rinat Sergeev
Rinat Sergeev(7 лет 3 месяца)

Да, у нас, у оптимистов, есть надежда, что интернет останется "многополярным", в виде плетенки конкурирующих систем, а не распадется на сегменты.

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Тут весь вопрос в аудитории и контенте. Много ли пользователей в Даркнете? Что там с полезным содержанием? Это опуская такой момент, как скорость работы (положим, этот вопрос со временем решит железо). Ну и такой момент, что монополизация рынков - это естесственное следствие имеющийся мировой капиталистической системы. Что помешает также монополизировать и PtP сети, при достаточном их развитии? ARPANET ведь тоде создавалась как распределённая сеть без центров управления, способная пережить ядерную бомбу. А подиж ты, к чему мы сейчас пришли?

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

Аватар пользователя monk
monk(12 лет 2 месяца)

обращается куда-​то на сторону, дабы проверить а не отозван ли сертификат (протокол OCSP), то что мешает внести этот сертификат в список "плохих" в обход CA

???

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

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Да, тут я наврал - OCSP ответ действительно должен быть подписан CA. Пора баиньки.

Аватар пользователя nm53
nm53(6 лет 1 месяц)

Я так и не понял, американцы могут сломать нам госуслуги и налоговую? ФСБ не тв важна, стучать можно и по телефону.

Аватар пользователя Medved075
Medved075(6 лет 3 месяца)

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

Аватар пользователя nm53
nm53(6 лет 1 месяц)

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

Аватар пользователя Medved075
Medved075(6 лет 3 месяца)

где в цепочке "клиент - сайт налоговой" затаился яндекс?

Аватар пользователя nm53
nm53(6 лет 1 месяц)

Яндекс-браузер.

Аватар пользователя Александр Мичуринский

Достучаться до налоговой лично мне проще всего оказалось через chromium-gost с сайта КриптоПро.

Аватар пользователя Medved075
Medved075(6 лет 3 месяца)

срочно отнесите комп в церковь!!!

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя nm53
nm53(6 лет 1 месяц)

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

Аватар пользователя Александр Мичуринский

Достаточно одного самоподписанного сертификата - Минкомсвязи.

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

Аватар пользователя Александр Мичуринский

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

Программулька с сайта этого УЦ добавила в список доверенных корневых сертификатов на моём компе самоподписанный сертификат Минкомсвязи. Всё! Алгоритмы по ГОСТ, какие проблемы?

Личный поход в налоговую за каким-то сертификатом на носителе это нонсенс.

Кстати, говорить сейчас нужно не о SSL, а о ТLS. Cумеете на пальцах объяснить в чём разница?

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Если совсем просто, то это примерно одно и то же: TLS это дальнейшее развитие протокола SSL, в нём усилена безопасность, он лучше стандартизован, и там проще управлять допустимыми методами шифрования.

SSL 1.0 не был запущен в продакшен из-за дыр в безопасности. Широко использовался SSL 2.0, однако и в нём  имелись серъёзные проблемы, которые безуспешно попытались исправить в SSL 3.0, но в 2004-ом году вышел публичный эскплоит POODLE, который окончательно похоронил SSL 3.0. SSL 2.0 прожил до 2011 года и почил в бозе. Сейчас весь мир переходит на TLS, в 2018 вышла версия TLS 1.3

Термин SSL в заголовке я использовал потому, что сочетание "SSL сертификат" у всех на слуху.

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

Тут основной моент в том, что для безопасности все равно нужно куда-то ножками топать. В налоговую ли, или же в удостоверяющий центр - не важно. Просто нужно вам как-то передать сертификат так, чтобы в процессе его не смог подменить зловредный man in the middle.

Аватар пользователя paulroot
paulroot(7 лет 5 месяцев)

к сожалению, при описании "медленное ассиметричное шифрование" не упомянут криптографический алгоритм с открытым ключом RSA, и то, что он в свою очередь базируется на идеях алгоритма Диффи — Хеллмана (Diffie–Hellman, DH)

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя Александр Мичуринский

> сожалению, не упомянут RSA,

А зачем нам этот RSA, если асимметричная криптография по ГОСТ на эллиптических кривых (ЕСС)?

Скрытый комментарий Повелитель Ботов (без обсуждения)
Аватар пользователя Повелитель Ботов

Перспективный чат детектед! Сим повелеваю - внести запись в реестр самых обсуждаемых за последние 4 часа.

Комментарий администрации:  
*** Это легальный, годный бот ***
Аватар пользователя PeterR
PeterR(9 лет 5 месяцев)

Автору СПАСИБО ! smile9.gif

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

На здоровье! Еще бы сил набраться и запилить остальные запланированные статьи :)

Такой живой отклик в комментариях меня отлично мотивирует.

Аватар пользователя oblomingov
oblomingov(10 лет 8 месяцев)

 

временный пароль сессии

автор, зачем здесь слово "временный"? намёк на бренность бытия?

Аватар пользователя Karbafoz
Karbafoz(5 лет 3 месяца)

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

Аватар пользователя oblomingov
oblomingov(10 лет 8 месяцев)

ну я к тому, что лишние слова не способствуют упрощению материала )

Страницы