Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Ещё немного про OpenSSL. Вся эта история с возможными утечками данных через Heartbleed является полезным уроком. Например, она показала, как очередной небольшой шаг в сторону усложнения и без того непростых протоколов семейства TLS привёл к огромному снижению уровня безопасности.
Откуда взялась уязвимость? В TLS добавили расширение Heartbeat (RFC 6520), довольно экзотическое, и уж точно не критическое для большинства современных сценариев использования TLS в Интернете. По сложившейся традиции, реализацию этого расширения быстренько загнали в OpenSSL. А в результате внедрения этой мало кем востребованной штуки – миллионы сервисов, сами того не желая, получили по огромной дыре. Они, выходит, использовали данное расширение TLS только для того, чтобы желающие могли получать несанкционированный доступ к оперативной памяти. Такая вот безопасность.
Что же было на другой чаше весов? То есть, ради чего добавляли новый код? Что могли бы получить такого полезного от данного расширения TLS все те миллионы сайтов, если бы реализация была выполнена без ошибки? Да в общем – ничего особенного: гипотетическую оптимизацию вычислительных затрат на управление TLS-сессиями. Очевидно, есть некие “структурные проблемы” в процессах создания протоколов, раз так получается.
Хотя, конечно, TLS не сломан, всё идёт своим чередом. Есть шансы, что новая версия TLS будет проще, а пачку расширений отрежут. Посмотрим.
Комментарии (3) »
По крайней мере, “углубившийся” анализ исходного кода криптобиблиотек даёт свои результаты – в OpenSSL открылась уязвимость, приводящая к утечке содержимого памяти (и на сервере, и на клиенте – без разницы: уязвимость универсальная). Естественно, такая утечка означает, что могли утечь секретные ключи; смена секретных ключей влечёт за собой смену сертификатов, в общем, проблем добавится.
Скорее всего, обнаружение подобных шедевров в коде наиболее распространённых библиотек продолжится. Конечно, с каждой найденной ошибкой защищённость растёт, это факт. Но если учитывать, что в АНБ (наверняка) есть хорошо аннотированные каталоги подобных уязвимостей, то рост защищённости уже не кажется таким уж многообещающим.
Кстати, это очередной хороший пример, объясняющий, почему может быть полезно хранить полный дамп шифрованного трафика. В штатных логах данная утечка никак не отражается, то есть, обнаружить в логах, что утекли ключи – не выйдет (только предположить, что могли утечь). А вот в дампе трафика ключи вполне себе будут заметны, и утечку можно детектировать с высокой точностью.
Пара полезных ссылок:
Diff исправления уязвимости (добавлена проверка границы области памяти, в общем-то, достаточно очевидная для опытного аудитора кода; но такой аудитор должен был ещё посмотреть в код, да).
Онлайн-инструмент для проверки уязвимости конкретного веб-сервера (проверил – похоже, работает корректно).
Комментарии (3) »
Сейчас нередко приходится слышать, что тотальный переход сайтов на HTTPS помешает проведению “мягких блокировок” избранных сайтов провайдерами. Потому что в HTTPS, для инспектора трафика, не видны полные URL. Впрочем, тут можно напомнить про SNI – в рамках этой технологии, практически все современные браузеры, охватывающие, наверное, не менее 90% пользователей, передают имя хоста, с которым устанавливают TLS-соединение (HTTPS), в открытом виде:

То есть, хоть URL-ов и не видно, но адрес сайта, с которым пытается соединиться пользователь, системам инспекции трафика (DPI) доступен: блокируй – не хочу.
Вообще, полезно иметь в виду, что ни TLS, ни, тем более, HTTPS, не разрабатывались для преодоления систем фильтрации и блокирования доступа, так что как-то радикально повлиять на ситуацию они не могут. Хотя, конечно, проведение “тонкого блокирования” затрудняют. Но проблема не в этом. Да и “тонкое блокирование” – похоже, мало кому нужно.
А проблема со всей этой набирающей обороты “фильтрацией доступов” в том, что в реальность сетевых инженеров входят новые сложные инструменты, от которых зависит связность Сети. К сожалению, в этой же самой реальности, многие действующие специалисты (даже крупных провайдеров) не умеют правильно настроить более простые и хорошо изученные системы. А тут – непонятная добавка, какое-то блокирование. Так что, вне зависимости от того, наступит тотальное распространение HTTPS или нет, мы, в ближайшее время, встретимся с большим количеством “странных проблем” связности, когда большие кластеры интернет-ресурсов (вполне себе российских) не будут доступны для большого количества пользователей. Решать эти проблемы будет сложно, потому что мало кто будет понимать, что вообще происходит, и кто первый бросил снежок, вызвавший лавину. (Понимание – это отдельная история: сейчас хорошо видно, как это понимание покидает сообщество, а на смену ему приходят карго-культы.)
Комментарии (3) »
Кстати, действия турецких провайдеров в отношении DNS вполне хорошо иллюстрируют, зачем может понадобиться “сложная конфигурация” DNS (сервиса доменных имён, то есть) в домашней сети и на персональных компьютерах. Я пару лет назад писал, что держу собственный рекурсивный резолвер на внешнем сервере, а его ответы проверяю локально, благо сделать это несложно. Раньше многие удивлялись такому решению. Сейчас удивления остаётся всё меньше.
В старой записке про аутентификацию внутри DNS, в качестве примера упоминается именно та ситуация, которая (кто бы сомневался!) приключилась в турецком сегменте Сети:
Предположим, что у вас настроен в качестве резолвера собственный сервер (пусть это будет BIND), доступный по IP-адресу 1.2.3.4. Откуда ваша локальная операционная система знает, что, отправляя запросы и получая ответы от 1.2.3.4, – она “разговаривает” именно с нужным резолвером?
Комментарии (1) »
Пишут, что турецкие провайдеры, в целях блокирования доступа к интернет-ресурсам, перехватывают трафик, идущий в сторону сервисов Google Public DNS. То есть, трафик пользователей, предназначенный для 8.8.8.8 и 8.8.4.4, заворачивается на локальные узлы провайдера, которые отдают поддельные ответы DNS (в частности, об адресах twitter.com). Перехват касается и других хорошо известных сервисов DNS-резолвинга.
После того, как местные провайдеры начали подменять ответы DNS на собственных, провайдерских, резолверах, пользователи массово перешли на резолверы Google (думаю, многие видели фотографию из Турции, запечатлевшую написанный большими буквами на стене дома адрес 8.8.8.8). Следующим шагом стало заворачивание провайдерами трафика, адресованного данному сервису, на свои узлы. Надо заметить, что, из-за популярности Google, мера наверняка оказалась эффективной.
Вообще говоря, это очередной (и достаточно ожидаемый) шаг в сторону разрушения традиционной связности Интернета. А наличие популярных и хорошо централизованных, в адресном смысле, сервисов, вроде гугловского DNS, только подстёгивает процесс.
(Замечу, что DNSSEC, которая упоминается в статье по ссылке, тут никак не поможет – потому что эта технология не предотвращает блокирование, а только позволяет обнаружить подмену ответов. Интересно, что наличие заранее распределённых по пользователям ключей, являющихся доверенными, создаёт отличный фундамент для введения универсальной системы преодоления подобных преград, выставляемых провайдерами; и не важно, с какой целью эти ключи распределялись – для использования в DNS или ещё для чего-то. Но вот только пользователи всё равно не умеют с ключами обращаться.)
Комментарии (2) »
Смартфоны, которые находятся в распоряжении у граждан, это хорошая основа для создания децентрализованных сетей связи, сетей обмена сообщениями. Я писал о таких mesh-сетях раньше и не раз. Самый доступный вариант создания подобной сети – специальное приложение, исполняемое смартфоном. А самый простой вариант сети – сеть, ретранслирующая текстовые (возможно, гипертекстовые) сообщения так, что в итоге они доступны всем участникам сети. Распространение сообщений может идти достаточно медленно, скажем, от минут до нескольких часов (полезна и функция отложенной передачи, когда долгое время отсутствовавший в сети узел может получить сообщения, накопившиеся за несколько суток).
Протокол обмена сообщениями должен быть независимым от транспорта передачи данных. Тогда для обмена данными годятся любые доступные смартфону средства коммуникации. Если есть доступ к Интернету, то данные передаются через глобальную Сеть. Есть только локальный WiFi – данные передаются через него. Есть только GSM – передача происходит через SMS (MMS). Совсем плохо со связью – узлы, находящиеся в непосредственной близости, синхронизируются через Bluetooth. Одна из непростых задач состоит в том, чтобы успешно реализовать анонсирование разнообразных адресов (для разных коммуникационных транспортов) новых узлов. Но эта задача решаема (подобные протоколы уже разработаны). И, конечно, из-за наличия GSM в сети будут проблемы с анонимностью, но это отдельная проблема. А вот скрыть сам трафик сети, так, чтобы он не обнаруживался и не блокировался системами DPI, проще.
Как бороться с такой сетью? Самый очевидный вариант: блокировать сервис, раздающий приложения (например, Google Play Market или Apple App Store). Однако пользователи могут начать обмениваться кодом приложения между собой, хоть это и потребует дополнительных усилий. В общем, как и другие децентрализованные решения, основанные на современных доступных коммуникационных устройствах, сеть получается очень устойчивой и живучей (хоть и заведомо медлительной).
Комментарии (4) »
Между прочим, сильный противник в Интернете может сделать гораздо больше, чем просто устраивать банальные DDoS. Сильный противник – это игрок уровня АНБ, например. А самый действенный вариант здесь – активная атака на ключевые маршрутизаторы и на BGP.
Известно, что системное программное обеспечение маршрутизаторов содержит уязвимости. Это касается не только “домашних роутеров”, но и дорогих продуктов уровня Cisco. Эти уязвимости, вероятно, позволяют не просто остановить работу маршрутизатора, но повлиять на то, как работает большой сегмент сети, где взломанный маршрутизатор находится. Маршрутизатор позволяет делать с трафиком всё что угодно, в том числе, проводить инъекцию пакетов, заменять данные в пакетах и выполнять другие, не менее занимательные, вещи. Атаковать маршрутизатор можно удалённо, а если он удачно расположен, то послужит отличной отправной точкой для проведения других атак.
Что касается BGP (это протокол обмена информацией о сетевых маршрутах, определяющий то, как ходят пакеты в Сети): здесь поможет использование точек присутствия на основных магистралях для воздействия на BGP . При должном масштабе и информированности атакующего эта, вполне себе инфраструктурная, атака может заставить трафик в выбранном сегменте Интернета “ходить не туда”. Естественно, захваченные чужие маршрутизаторы служат идеальным базисом для BGP-атак.
Комментарии (1) »
В связи с некоторым обострением международных отношений интересно вспомнить, что базовые системы адресации Интернета управляются из США, что только добавляет пикантности ситуации. (Предложения о прекращении предоставления адресного пространства в рамках санкций – уже встречались; правда, инициатором их была негосударственная организация из США.)
Надо сказать, что и у ICANN, и у “подведомственных” ей структур, есть технические возможности по весьма эффективному блокированию национальных сегментов Интернета, в том числе, национальных доменов. Да, эти возможности, пока что, – скорее теоретические, но они есть. А в данном контексте важны именно возможности, а вовсе не намерения, как можно было бы подумать.
Поделюсь несколькими ссылками на прошлые записки по теме (кто бы мог подумать, что они опять станут актуальны):
- ICANN и управление Интернетом;
- ICANN, правительство США и “независимость” Интернета (2009 год, между прочим);
- Новые домены, DNSSEC и главный рубильник.
И ещё одно наблюдение, по близкой теме:
Комментарии (10) »
Нашли как бы ответ на Goto fail от GnuTLS (это очень распространённая библиотека криптографических функций) – некорректная обработка сертификатов в GnuTLS приводит к тому, что сессию можно перехватить. Пишут, что эту свежую ошибку в GnuTLS выявили в рамках аудита кода для Red Hat.
Очень много подобного добра в коде криптобиблиотек, к сожалению. Сейчас, хотя бы, стали чуть более тщательно исследовать этот код, из-за шума вокруг деятельности АНБ.
Комментарии (1) »
В продолжение записки про ошибку “goto fail” в операционных системах Apple. Это очень показательный случай, очередной. Ошибка, заключающаяся в одной элементарной строке кода, приводит к тому, что “защищённое” соединение можно перехватывать без проблем. И практических методов защиты от использования этой ошибки – нет.
Сравнение отпечатков сертификатов никак не помогает, потому что сертификат используется легитимный, полученный с сервера – ошибка гарантирует, что не проверяется соответствие подписей. Подмена IP-адреса сервера может происходить с помощью DNS, это традиционный способ. Тут, в принципе, некоторую защиту обеспечивает DNSSEC, но только если атакуемый домен подписан (а это вряд ли). Более того, во многих сетевых конфигурациях (скажем, в чужой WiFi-сети) подмену сервера можно провести, сохранив его IP-адрес, то есть, DNSSEC уже никак не поможет. DANE – только добавит пользователю уверенности, что всё хорошо, так как отпечатки сертификатов из DNS и с подставного сервера – совпадут.
Вот.
Так работает современная массовая криптография. Один оператор goto – и больше нет защиты. Совсем.
Комментарии (3) »
Нашумевший недавно Outernet – представляет собой довольно наивный проект: сотни низкоорбитальных микроспутников транслируют на землю некий контент, связанный с Интернетом, да так, что этот контент могут принимать даже смартфоны, используя штатный канал WiFi. Схема работает наподобие радиостанции – в одну сторону. То есть, это никакой не “бесплатный WiFi-доступ к Интернету”, как поспешили написать многие СМИ.
Очевидно, что приём смартфоном полезных данных из сигнала WiFi, исходящего с борта кучи быстро движущихся микроспутников, за сотни километров, из космоса, через ионосферу – это, пока что, фантастика. Можно было бы предположить, что орбитальный сигнал смогут принимать модифицированные точки доступа WiFi, оснащённые дополнительными антеннами, но и такой вариант представляется труднореализуемым для массового потребителя.
Интересно, что, помимо прочих слов, на страничке с описанием проекта сказано, что планируется трансляция Blockchain из сети Биткоин. Blockchain позволяет проверять биткоин-транзакции (подробности – в отдельной заметке про биткоины). Однако центральная трансляция Blockchain противоречит основным принципам хождения биткоинов. Предполагается, что через Outernet данные достигнут тех жителей Земли, которым подключение к Интернету недоступно. То есть, спутниковая трансляция будет для них единственным источником Blockchain, соответственно, в него можно включить какие угодно транзакции, сделав ответвление от основной цепочки. Смысл теряется. Ну и, понятно, осуществить транзакцию без связи с Интернетом – всё равно не выйдет, так что особой практической пользы в такой трансляции нет.
(А вообще, спутниковые трансляции могут оказаться полезным источником особого программного обеспечения для граждан. Но это другая история.)
Комментарии (2) »
Новый