[О блоге] [наверх] [пред] [2018-07-04 21:42:47+03:00] [b1ac1638ae7ee50c6f7c6fcbd57730b83a807330]
Темы: [web]

Google воюет против HTTP

https://habr.com/post/415981/
Лично я на стороне противников подобного внедрения HTTPS. Если точнее,
то я в корне не согласен с понятием "безопасный HTTPS". И всё упирается
в инфраструктуру публичных ключей.

Во-первых, нужно понимать что Google только отвечает за свой Chrome
проприетарный. Что хотят то и делают -- их поделие, вольны и в праве.

Если я буду использовать просто самоподписанные сертификаты для HTTPS,
то что поменяется? Если пользователь будет использовать certificate
pinning и как-то out-of-HTTPS-band узнает мой сертификат и будет ему
доверять, то будет ли это безопасно? Безусловно! Третьи лица не
задействованы, доверие к публичному ключу сервера полное, определение
факта подмены пакетов будет. Против такого использования HTTPS-а я не
против -- оно (ну, с учётом использования свежей версии TLS протокола,
хороших библиотек, итд) будет безопасно с моей точки зрения.

Если я буду использовать HTTP, но оно будет идти поверх Tor (к .onion)
или I2P (к .i2p) или Freenet (.freenet) или поверх cjdns, или поверх
IPsec/SSH туннеля, то будет ли такое соединение безопасно? В случае с
Tor/I2P/Freenet/cjdns -- да, так как сам факт подключения к заданному
узлу аутентифицирует публичный ключ сервера и MitM не останется
незамеченным. HTTPS нет, но лично у меня нареканий нет. Даже более того:
лично я бы только так и предпочитал использовать ресурсы, так как у них
самоаутентифицирующиеся адреса, не нужен долбанный транспортный TLS
протокол, броузер с поддержкой certificate pinning. Если IPsec/SSH
туннели аутентифицированы, то тоже всё ok.

Будет ли что-либо из этого считаться доверенным в Chrome? Нет.

Если я по HTTP качаю собранные пакеты для своего дистрибутива и эти
пакеты OpenPGP подписаны доверяемой мной стороной, публичные ключи
которой я знаю (обменялся на конференции), то безопасно ли это? Или я
качаю документы, пускай даже подписанные HTML страницы. Это безопасно:
MitM не сможет изменить трафик. Конфиденциальности нет -- верно. Кто-то
скажет что произойдёт и утечка фактов скачивания того или иного
документа: по размеру файлов, порядку скачивания это, как правило, не
сложно будет сделать и с HTTPS. О других проблемах которые HTTPS не
решит и добавит других касательно этого случая писал в
09b4c5f483eaf11b15d503bdc4f5dd449c32c84d.

Проблема с certificate pinning-ом это то, как доверенно получить
сертификат сервера. Для этого в Web принято использовать инфраструктуру
публичных ключей (PKI). Если коротко, то добавляется третье лицо
которому оба участника (клиент, сервер) доверяют и это третье лицо
заверяет что сертификат доверенный. Тут то и проблема: репутация всех
этих центров сертификации не самая лучшая и мы прекрасно знаем что они
не дают никаких гарантий. Почти все крупные CA были замечены в
недопустимом: d722fb300a046783c9bf7bec055c18dcb828f8ee
И на Google они выдавали сертификаты и на Microsoft. А сколько 100%
имеющихся случаев когда спецслужбы просят их выпустить для MitM-а
сертификат для прослушки трафика? И ничего с этими CA не случалось. С CA
которые бесплатно выпускали сертификаты или которые были не под
контролем США -- по любой, за уши притянутой причине, США-подконтрольные
компании (Google, Mozilla, Microsoft) убирали их сертификаты из списка
доверенных. Сплошная политика и лицемерие о которой предпочитают
молчать.

Доверенный с точки зрения Google Chrome сайт это тот, чей CA является
доверенным с точки зрения Google (+Microsoft/Apple/итд). То есть
"доверенным" сайтом будет тот, как правило, кого "одобрили" эти
корпорации (или не одобрила только Google:
http://www.chromium.org/Home/chromium-security/root-ca-policy).
Бесплатные и китайские CA -- выпиливают (проблема бизнесу и политике
страны). Особняком стоит Let's Encrypt, внезапно который взялась
поддерживать куча компаний и активно преактивно подталкивает людей к его
использованию. Нужно понимать чем им это может быть выгодно. Вместо
сотен разрозненных CA выдающих миллионы сертификатов, мы имеем один
большой пребольшой в котором сконцентрирован контроль над доверием
доступа к сайтам. А чтобы люди не полагались на certificate pinning, то
у него относительно короткоживущие сертификаты -- и действительно я на
множество сайтов, судя по моей БД сертификатов, захожу действительно раз
в 1-2 месяца, каждый раз видя уже недействительный с точки зрения
pinning сертификат. Ещё раз замечу: CA от которого зависит доверие к всё
увеличивающемуся количеству серверов, который один и который под
контролем страны, мягко говоря, не боящейся заниматься прослушкой.
Идеально чтобы подталкивать использовать именно его, Let's Encrypt, а не
платные решения (очевидно что никто не хочет платить за то, что можно
получить бесплатно).

Забудем о Let's Encrypt. Так можно ли считать доверенным HTTPS при
использовании PKI? Лично для меня в общем случае -- нет. С какой стати я
должен доверять либо этим корпорациям либо сотням неизвестно каких CA?
Допустим лишь малая часть их этих CA поставляемых с броузером или ОС --
не очень "благонадёжны". Но достаточно лишь ровно одного
неблагонадёжного CA чтобы можно было безнаказанно делать MitM. По опыту
крупных известных CA -- мы видим что наказания даже за раскрытые
инциденты не последует и репутация тут не работает. Но Chrome будет
считать это безопасным.

Если использовать certificate pinning вместе с PKI, то это можно считать
надёжным. Но смысл PKI тут уже теряется, разве что Chrome не будет
ругаться.

А что будет если MitM всё же сделают, подменив сертификат на
самоподписанный какой-нибудь? Всплывёт предупреждение, точно такое же
как и для HTTPS сайтов честно подписанных крупными CA, но по каким-то
политическим причинам не добавленных Google/Microsoft/Apple в список
доверенных. Пользователь либо уйдёт -- тем самым контроль США/корпораций
за тем куда можно/стоит ходить пользователю будет успешным. Речи про
безопасность тут нет, если что -- на аутентичность и конфиденциальность
это никак не повлияет. Либо пользователь нажмёт "плюнуть и всё-равно
зайти". Как ему отличить был ли действительно совершён MitM или это
просто политические игры систем которые он использует? Без какого-либо
дополнительного out-of-band канала (DANE, DNSSEC, связь с сервером ещё
другим образом, итд) -- никак. В итоге, даже при настоящем злонамеренном
грязном MitM-е пользователь как баран повинуется указаниям корпораций
(кстати лучше справляющихся с цензурой, таким образом, чем многие
государства) (и действительно защищён, но не от прослушки/изменения
трафика теми кто контролирует CA (государства например, спецслужбы)),
либо всё-равно нажимает "продолжить".

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

Самое страшное, как мне кажется, во всей этой истории с Chrome и
"небезопасным HTTP" и "безопасным HTTPS" -- то, что пользователь не в
состоянии больше оценивать риски. Используя HTTP он точно знает что это
не безопасно и он прикидывает что ему можно/стоит делать. Используя
HTTPS он видит мнимую безопасность -- ему показывается что всё
безопасно, что вы общаетесь *именно* с указанным сервером, хотя это
может быть очень далеко от правды, так как эта "безопасность" в руках
одного из трёхсот CA включённом в вашем броузере/ОС, репутация которых
далека от идеала. А вполне себе отличный вариант с хождением по HTTP на
cjdns адреса будут считаться небезопасным. Нет *ничего* хуже иллюзии
безопасности, так как риски становится невозможно оценивать.

Ну а кроме иллюзии безопасности в общем случае (но я ничего особо не
имею против certificate pinning например), HTTPS добавляет и кучу
дополнительных серьёзных проблем: невозможность делать кэширующие
прокси/зеркала (опять же, например для хранения OpenPGP подписанного
кода), вопросы производительности. Плюс не забывать что сертификаты, как
правило, стоят немалых денег и требуют постоянного обновления. Сколько
бесплатных CA сейчас поставляются с броузерами/ОС? Ровно один Let's
Encrypt? А что будет когда он упадёт или исчезнет по тем или иным
причинам? Миллионы ресурсов, привыкших к HTTPS-у из-за усилий Google что
будут делать? Уверен что побегут покупать уж какие есть сертификаты, не
бесплатные -- profit всем корпорациям и, повторюсь, всё такая же иллюзия
безопасности.

Отдельного упоминания заслуживает Cloudflare. Многие рекомендуют его
использовать как HTTPS-frontend для вашего сайта. Во-первых, это
полностью рушит саму идею того что HTTPS гарантирует что вы связываетесь
вот именно с чётко указанным сервером. Во-вторых, Cloudflare крайне не
любит "посетителей" из Tor и не даёт им доступа. Захотели повышения
рейтинга в выдаче Google и решили разместиться за Cloudflare? Получайте
кучу отрезанных от него пользователей и... гарантию что MitM совершается
буквально (ok, "доверенными" вами людьми).

    [оставить комментарий]