И ещё минутка просвещения
Mar. 25th, 2017 12:32 pmКогда технически грамотные программисты рассказывают, что главное в TLS — шифрование, мне становится понятно, что надо пересказать тот кусок презентаций, который я обычно адресую широкой публике. Это упрощённое изложение, но типичный сценарий покрывает.
Сенситивные данные могут подслушать те, кто читает трафик в произвольной точке между вами и получателем. От этого спасает шифрование данных при передаче. Но когда вы передаёте номер банковской карты и прочие реквизиты, вам надо убедиться, что передаёте вы их именно туда, куда надо.
У протокола TLS есть несколько задач. И перед тем, как мы согласуем ключи шифрования и начнём передавать зашифрованные данные, наша задача — убедиться, что соединились мы именно с тем, с кем хотели. Для этого предусмотрена фаза handshake. На этой фазе клиент и сервер сверяют разные куски информации, которыми они обменялись, между собой. Типичный случай — доменное имя в DNS-запросе и в сертификате. Если они не совпали, то возможно, вы пытаетесь договориться не с тем.
Если они совпали, то надо внимательно посмотреть на сертификат, потому что сертификат может выписать кто угодно кому угодно. Но есть список доверенных корневых сертификатов (сертификатов удостоверяющих центров, УЦ), приходящий с браузерами и операционной системой в целом. Если мы смогли проверить, что предъявленный сертификат (вообще говоря, цепочка сертификатов) кончается одним из доверенных, то мы можем на что-то надеяться. Сертификат конкретного домена, конечно, может быть отозван, и это можно проверять, но на практике это работает довольно странно.
Доверенный потому и доверенный, что предпринимает процедуру проверки того, что ему принесли. Процедура проверки может быть довольно развесистой, включющей в себя обращение с бумажными документами, и в результате на свет родится так называемый EV-сертификат. При соединении с таким сайтом в любом браузере у вас вылезет плашка на половину адресной строки с указанием компании-владельца.
Процедуры проверки удостоверяющими центрами заявителей сильно регламентированы, и на нарушениях УЦ время от времени попадаются. Так, пару месяцев назад пострадал УЦ WoSign. Сейчас Google предъявляет претензии Symantec. Но проблема не в УЦ, а в том, что если сертификат УЦ выпадает из списка доверенных, то страдают все, кто у них сертификаты купил. В результате единожды попавший в браузеры доверенный сертификат порождает проблему "Too big to fail". Из-за этого реальные проверки в браузерах не сводятся к построению цепочки доверия. Кажется, чуть ли не единственный случай, когда доверие отзывалось моментально, был связан с Diginotar, голландским УЦ, который был взломан несколько лет назад.
И только если предъявленный сервером сертификат не вызывает никаких вопросов по всем процедурам проверки, стороны и начнут обмениваться зашифрованным трафиком.
Сенситивные данные могут подслушать те, кто читает трафик в произвольной точке между вами и получателем. От этого спасает шифрование данных при передаче. Но когда вы передаёте номер банковской карты и прочие реквизиты, вам надо убедиться, что передаёте вы их именно туда, куда надо.
У протокола TLS есть несколько задач. И перед тем, как мы согласуем ключи шифрования и начнём передавать зашифрованные данные, наша задача — убедиться, что соединились мы именно с тем, с кем хотели. Для этого предусмотрена фаза handshake. На этой фазе клиент и сервер сверяют разные куски информации, которыми они обменялись, между собой. Типичный случай — доменное имя в DNS-запросе и в сертификате. Если они не совпали, то возможно, вы пытаетесь договориться не с тем.
Если они совпали, то надо внимательно посмотреть на сертификат, потому что сертификат может выписать кто угодно кому угодно. Но есть список доверенных корневых сертификатов (сертификатов удостоверяющих центров, УЦ), приходящий с браузерами и операционной системой в целом. Если мы смогли проверить, что предъявленный сертификат (вообще говоря, цепочка сертификатов) кончается одним из доверенных, то мы можем на что-то надеяться. Сертификат конкретного домена, конечно, может быть отозван, и это можно проверять, но на практике это работает довольно странно.
Доверенный потому и доверенный, что предпринимает процедуру проверки того, что ему принесли. Процедура проверки может быть довольно развесистой, включющей в себя обращение с бумажными документами, и в результате на свет родится так называемый EV-сертификат. При соединении с таким сайтом в любом браузере у вас вылезет плашка на половину адресной строки с указанием компании-владельца.
Процедуры проверки удостоверяющими центрами заявителей сильно регламентированы, и на нарушениях УЦ время от времени попадаются. Так, пару месяцев назад пострадал УЦ WoSign. Сейчас Google предъявляет претензии Symantec. Но проблема не в УЦ, а в том, что если сертификат УЦ выпадает из списка доверенных, то страдают все, кто у них сертификаты купил. В результате единожды попавший в браузеры доверенный сертификат порождает проблему "Too big to fail". Из-за этого реальные проверки в браузерах не сводятся к построению цепочки доверия. Кажется, чуть ли не единственный случай, когда доверие отзывалось моментально, был связан с Diginotar, голландским УЦ, который был взломан несколько лет назад.
И только если предъявленный сервером сертификат не вызывает никаких вопросов по всем процедурам проверки, стороны и начнут обмениваться зашифрованным трафиком.
no subject
Date: 2017-03-25 10:45 am (UTC)Ты на протяжении всего поста расписываешь какие проверки для этого делаются, но вот базовая идея "вы передаете их туда, куда надо" сформулирована в одной фразе и походя.
Народ ведь не понимает именно этого. Что TLS-соединение может быть терминировано вовсе не там, где ожидает его инициатор и зачем вообще все эти пляски с сертификатами.
no subject
Date: 2017-03-25 11:28 am (UTC)no subject
Date: 2017-03-25 12:06 pm (UTC)Для нас с тобой эта мысль слишком банальна, чтобы ее упоминать не вскользь. А для читателя - слишком неочевидна, чтобы уловить, когда она упомянута вскользь.
Это просто какие-то туннели реальности имени Переслегина. В нашем тоннеле это прямо по центру стоит, как обелиск, а из того туннеля, где обитают большинство пользователей и даже прикладных программистов, этого вообще не видно. Туннель проходит мимо. Угроза от подслушивающего по дороге видна. Угроза от подмены второго конца канала - не видна.
no subject
Date: 2017-03-25 01:25 pm (UTC)no subject
Date: 2017-03-25 01:26 pm (UTC)Собирался писать практически ту же самую реплику, но вот с каким добавлением:
"При соединении с таким сайтом в любом браузере у вас вылезет плашка на половину адресной строки с указанием компании-владельца." НО НЕ СКАЗАНО, что с этой плашкой ДЕЛАТЬ ПОЛЬЗОВАТЕЛЮ, и что с чем сравнивать и где.
Подавляющее большинство находится в отсостоянии "вижу зелёненькое - и хорошо!"
Иными словами - ничего конструктивного для конечного пользователя из этого описания плашки сейчас не следует.
no subject
Date: 2017-03-25 01:36 pm (UTC)Чтобы обдурить типичную жертву фишинга вполне хватит сертификата от Let's Encrypt. И это большая социальная проблема.
no subject
Date: 2017-03-25 02:18 pm (UTC)no subject
Date: 2017-03-25 05:59 pm (UTC)no subject
Date: 2017-03-25 01:34 pm (UTC)1. Компания с торговой маркой MAI1 регает домен mai1.ru и получает все нужные сертификаты и пры. То есть адресная строка будет вполне "зелёная".
2. Злоумышленный хакер, получивший контроль над сервером компании, на выходные вешает на этом домене фишинговые страницы, имитирующие интерфейс mail.ru
3. Почтовик компании рассылает кучу писем, имитирующих соответствующие письма от mail.ru и завлекающих пользователей на соотв страницы сайта mai1.ru сменить пароли к почте их ящиков (в том числе - ввести новые пароли к почтам тех ящиков, с которых mail.ru собирает почту по воле этих пользователей).
Что должен делать/проверять получатель письма чтобы не попасться на такой крючок и понять, что "его терминировали не туда"?
no subject
Date: 2017-03-25 01:43 pm (UTC)Когда я попал на фишинг в ЖЖ в своё время, я не сомневался, что пароль приходится вводить, потому что идиоты что-то наулучшали.
no subject
Date: 2017-03-25 06:47 pm (UTC)дада, отличи mai1.ru от mail.ru
Способов развлечься подобным способом есть слишком много.
;-)
Иными словами - я как раз и говорю о том, ЧТО должен проверить человек.
То есть - на мой взгляд, в тексте на эту тему, предназначенном для ПРОСВЕЩЕНИЯ МАСС, должны быть фразы и картинки такого типа:
"на настоящем сайте плашка зелёненькая большая с описанием компании"
"на фальшивом - плашка маленькая, ибо сертификат халявный"
"вот такая разница между ними и так её проверять"
no subject
Date: 2017-03-25 07:06 pm (UTC)no subject
Date: 2017-03-26 03:57 am (UTC)Тут фишка в том, что "компания mai1" НА САМОМ ДЕЛЕ может и создавалась как "будущая площадка для таких подвигов", а не как "честный бизнес".
И потому сходство фальшивой страницы с настоящей может быть СКОЛЬ УГОДНО хорошим.
Однако я говорю о том, что у тебя в тексте, "просвещающем" пользователей низкого уровня - отсутствуют КОНКРЕТНЫЕ рекомендации и для более простых случаев (для отсева которых и нужны вот эти самые "зелёненькие" и "большие зелёненькие").