Протокол Диффи-Хеллмана (DH) – одна из основ современной практической криптографии, да и не только современной: на этом же протоколе базируется и ряд предлагаемых постквантовых криптосистем. Сейчас часто приходится слышать, что, при использовании данного протокола, симметричные криптографические ключи “есть только у клиентов” – тут имеются в виду стороны, которые договариваются о симметричном ключе, используя некоторый центральный сервер. Если подходить к вопросу строго, то DH позволяет сторонам безопасно договориться об общем секрете через открытый канал, но протокол, сам по себе, вовсе не гарантирует, что эти самые стороны действительно смогут договориться. Прежде всего: протокол в чистом виде – уязвим для атаки посредника (человек посередине). То есть, если центральный сервер подменяет открытые сообщения, выдавая себя за каждую из сторон, то DH не позволяет этого обнаружить.

Поэтому стороны должны применять какие-то внешние средства, позволяющие проверить, что они действительно обменялись параметрами DH между собой. Правильный вариант такой проверки базируется либо на электронной подписи (подписываются параметры), либо на статических параметрах, которые распределяются заранее и по независимому от центрального сервера каналу, либо на использовании некоторого общего секрета (пароль или что-то подобное). (При наличии общего секрета, впрочем, необходимость применять ещё и DH обычно отпадает.) Есть также распространённый метод под условным названием “сравни картинку”, который состоит в том, что стороны, находясь рядом, могут визуально сравнить изображения, соответствующие полученному в результате обмена DH секрету. Можно сравнивать не изображения, а сами числа.

Всё это хорошо, а DH – замечательный протокол. Но, к сожалению, в большинстве практических реализаций, всё сводится не к доверию протоколу, а к доверию приложению: если приложение показывает двум пользователям одинаковые картинки, то это означает, что приложение показывает какие-то одинаковые картинки, а не то, что корректно выполнено согласование ключей по протоколу DH (о том, что ключи согласованы с кем-то, можно судить по факту успешного обмена сообщениями, но конкретные картинки – не обязательно прямо соответствуют реальным ключам).

Что касается самих ключей: опять же, строго говоря, открытая часть протокола DH доступна для записи, а в открытой части содержится достаточно информации для получения секрета. Стойкость протокола основана только на том факте, что не известно универсальных практических (то есть, работающих на доступном классическом компьютере) алгоритмов быстрого вычисления секрета на основе только открытых параметров DH. Но это не означает, что “ключи есть только на клиенте”. Если центральный сервер записывает трафик, то ключи, вообще говоря, есть и у него, но в представлении, которое сложно обратить (получить из открытого ключа секретный, эта задача называется дискретным логарифмированием). Сложно, но вовсе не невозможно. Более того, считается, что для конкретных параметров DH, обладающих определёнными свойствами, можно провести предварительные вычисления на специализированном суперкомпьютере, а потом очень быстро вычислять секретные ключи. Именно по этой причине рекомендуется при использовании DH генерировать полностью собственные параметры, а не применять заранее известные, которые, например, выдаёт центральный сервер. В случае классического DH (не эллиптического), основным параметром является простое число (модуль), задающее группу, в которой проводятся операции протокола. Это, впрочем, технические детали – я писал о них раньше, применительно к TLS. Главное наблюдение состоит в том, что информация о секретных ключах содержится в параметрах, которыми стороны обмениваются в открытом виде.

Другим универсальным источником проблем для добротных криптографических протоколов является генерация (псевдо)случайных чисел. И тут опять возникает доверие к используемому приложению: если оно генерирует числа предсказуемым (для третьей стороны) способом, то о стойкости DH уже можно не говорить, так как третья сторона может за разумное время вычислить секрет простым перебором.

Про DH и связанные с этим протоколом ограничения я неоднократно писал раньше, например – здесь и здесь.



Комментарии (1) »

Новая версия протокола TLS 1.3 в ближайшее время получит статус рекомендации (статус уже одобрен). Я написал статью с обзором этого нового протокола. Он действительно новый, потому что от TLS 1.2 отличается радикально. Статья – TLS 1.3: на пути к внедрению.



Comments Off on Статья про TLS 1.3

Немного теорий заговора. Сетевого уровня.

Маршрутизаторы – эффективное направление атак на сети, которые являются сегментами глобальной Сети. В подавляющем большинстве случаев, если “погасить” несколько умело выбранных маршрутизаторов, сеть падает полностью, несмотря на попытки резервирования, предпринятые при проектировании и построении сегмента. Хрестоматийная ситуация: резервные маршрутизаторы не справляются с изменившейся конфигурацией сети; причин может быть много разных – от возросшего трафика, до невозможности обмена управляющей информацией в результате возникших в сети “штормов”. Например, предполагается, что довольно давний случай с глобальной аварией сети в Сирии был вызван тем, что специалисты АНБ, во время операции по удалённому внедрению (обновлению?) программных закладок, случайно “уронили” ключевой маршрутизатор.

Интересно, как можно обнаруживать подобные действия?

Предположим, доверять маршрутизатору нет оснований, поэтому сразу считаем, что там есть закладки. Естественно, крайний вариант закладки – это продвинутый kill switch, срабатывающий по какой-нибудь последовательности в проходящих через маршрутизатор данных. Обнаружить его до срабатывания – чрезвычайно сложно, поэтому противодействовать не получится. Можно рассчитывать, что нет универсального “выключателя”, поэтому взамен вышедших из строя удастся быстро ввести новые маршрутизаторы. (Наличие подобного инструмента, конечно, вообще выглядит довольно фантастично. Тем не менее, совсем не рассматривать его тоже нельзя.)

С универсальным выключателем – мало что можно сделать. Но возможен более мягкий вариант: наличие несанкционированного удалённого доступа к маршрутизатору (через недокументированные возможности). Такой доступ позволяет управлять настройками и, скажем, выстраивать хитрые логические атаки. Каналы, реализующие доступ, могут быть хорошо замаскированы средствами стеганографии. Быстрый поток там не нужен, достаточно передавать несколько десятков коротких команд в минуту. Поэтому набор транспортов – радует свой широтой. Можно передавать биты “полезной нагрузки” в заголовках пакетов (TCP, IP, UDP и т.п. – выбирайте сами). Для этого нужно знать маршруты и располагать узлами, находящимися по разные стороны от контролируемого маршрутизатора: пакеты должны ходить через маршрутизатор, чтобы процессоры могли считывать недокументированные команды и отвечать на них. Естественно, можно ограничиться и отправкой пакетов только снаружи, лишь бы они достигали маршрутизатора, но вариант с трафиком, проходящим “через пару портов”, гораздо более привлекателен с точки зрения реализации недокументированных возможностей: во-первых, так проще реализовать скрытую обработку (из-за архитектуры маршрутизатора); во-вторых, больше способов отправить ответ. С ответами – вообще отдельная задача. Маршрутизатор не может просто так заменять какие-то параметры в заголовках, допустим, произвольных пакетов – велика вероятность ненамеренно испортить значимые данные, тем самым демаскировав всю операцию. Но зато специально выделенные пакеты – можно заменить (или сгенерировать) полностью, даже вместе с содержимым. Выделить пакеты для связи помогут ранее отправленные команды, сам пакет – будет передан узлом, находящимся за одним из портов, но данные в пакете заменяются маршрутизатором (пакет передаётся для того, чтобы не рисковать поднятием флагов во всяких системах учёта трафика, повсеместно внедрённых – они считают именно пакеты и иногда их длину; впрочем, перекос даже в один процент – вряд ли вызовет подозрения).

IP или, например, UDP, оказываются универсальными в силу того, что работают на общем для всех узлов IP-сети логическом уровне. При этом другие протоколы спускаются на несколько уровней ниже. Так, есть инструменты VLAN (виртуальные сети) и другие логические элементы, невидимые для IP. Связанные с ними протоколы также можно было бы использовать для передачи недокументированных сигналов. Однако из-за того, что свойства даже соседствующих сетей на соответствующих уровнях очень сильно разнятся, тут встречаются трудности. С другой стороны, можно представить ситуацию, когда использование расширений стандарта Ethernet (например) позволяет скрывать от анализаторов трафика, работающих параллельно маршрутизаторам, целый пласт ходящих по физической линии связи данных. Элементарный пример, понятный каждому: представим, что для анализа трафика используется обычный компьютер и Wireshark, но продвинутая сетевая карта – игнорирует часть пакетов, например, обнаружив в заголовке Ethernet некоторый заранее зашитый в процессор карты индекс (заметьте, что такое поведение аналогично штатной функции, позволяющей разграничивать VLAN-ы). Понятно, что Wireshark в таком случае не будет видеть часть трафика, и обнаружить, что видны не все пакеты, вряд ли получится. Конечно, пакеты могло бы прятать и ядро ОС, но аппаратная фильтрация сетевой картой – куда как более эффективна: зафиксировать передачу данных теперь можно только при помощи логического анализатора, подключенного непосредственно к проводам. А вот уже представить себе логический анализатор, который прячет сигналы, гораздо сложнее, чем только что описанную конфигурацию с продвинутой сетевой картой. Но многие ли мониторят сети при помощи логических анализаторов? (Вопрос даже не риторический, а скорее похож на шутку.)

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



Comments Off on Скрытое управление пограничными маршрутизаторами

В заметке, объясняющей, как работает GPS-спуфинг (подделка сигнала GPS, либо другой спутниковой навигационной системы), упомянута группа приёмников, попавших под одну и ту же помеху. Например, несколько приёмников под воздействием простого спуфинга (из одного источника) переместятся в одну виртуальную точку, но, так как расстояние от конкретного приёмника до источника помехи может различаться, получат рассогласование GPS-времени. Это рассогласование можно обнаружить.

Посмотрим на онлайн-навигаторы, работающие на базе смартфонов. Эти приложения отправляют данные о местоположении и параметрах движения конкретного смартфона на центральный сервер (стандартная практика, позволяющая, например, собирать информацию о транспортном трафике). Соответственно, центральный сервер мог бы определять наличие GPS-спуфинга на основе анализа данных, поступающих от множества устройств. Скажем, несколько сотен устройств, согласно данным GPS, внезапно и синхронно “конденсировались” в одну точку – это уже надёжный признак, что все они оказались в зоне спуфинга. Смартфон видит дополнительные данные, которые можно использовать для геопривязки: идентификаторы базовых станций GSM, параметры точек доступа WiFi. Перепрыгнувшие в одну точку устройства, которые в реальности находятся достаточно далеко друг от друга (сотни метров), будут видеть различную конфигурацию этих вспомогательных параметров. Получаем ещё один признак наличия спуфинга. Возможны и различные другие алгоритмы, учитывающие скорость движения смартфона, данные от акселерометра и так далее.

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



Comments Off on GPS-спуфинг и онлайн-навигаторы

Популярная тема: антивирус, установленный на компьютере пользователя, обычно имеет полный доступ к дискам и оперативной памяти – соответственно, может забирать произвольные файлы, наверняка “секретные”, и отправлять их “куда-то в облако”. Отдельный вопрос: кто держит конфиденциальные или даже секретные файлы на компьютере, работающем под управлением антивируса; как ни странно, такое случается нередко, поэтому оставим вопрос за рамками записки. Вообще не будем привязывать дальнейшие рассуждения именно к антивирусу. Предположим, что есть некоторое условное программное обеспечение, работающее на компьютере пользователя с полными правами и возможностью занимать сколько угодно локальных вычислительных ресурсов. С тем же успехом это может быть не антивирус, а ядро операционной системы. Насколько сложно найти интересные файлы на компьютере пользователя в автоматическом режиме? Понятно, что отправлять на внешние серверы гигабайтные “дампы” дисков для ручного анализа – это слишком затратный вариант. Особенно, если пользователей очень много.

Какие-то конкретные файлы, с заранее известным содержимым, найти несложно: это основная заявленная функция – искать некоторые фрагменты по сигнатурам. То есть, самый простой вариант задачи – элементарно решается: загружаем набор сигнатур, файлы, в которых эти сигнатуры обнаружены, отправляем на центральные серверы. Проблема в том, что данное действие не имеет особого смысла, если рассматривать его в контексте получения новой информации из файлов. Раз есть сигнатуры, то информация уже известна. Новым является только сам факт обнаружения фрагментов с данными сигнатурами на конкретном компьютере. Несомненно, можно ограничить сигнатуры (свести их к коротким фрагментам) и расширить прочие данные, содержащиеся в файле. Получится поиск по ключевым словам.

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

С другой стороны, можно и не сужать выборку, нацеливаясь только на определённые ПК, а наоборот – использовать всё разнообразие данных для определения точных целей. Например, интересны только редкие документы со словом missile (пример, понятно, условный), тогда отнесём к “редким” такие документы, для которых совсем не найдено похожих или дублей на других доступных ПК (напомню: подразумевается, что пользователей очень много). Сравнение документов, да ещё удалённое, представляет отдельную, весьма непростую, проблему: вычисление хеш-суммы для всего файла позволит обнаружить только в точности совпадающие – даже две версии PDF-файла, содержащие идентичный текст, но отличающиеся форматированием, дадут разное значение хеш-функции. То есть, для определения того, насколько один документ похож на другой, необходимо ввести некоторую сложную метрику (сложную – в плане реализации, значение может быть элементарным, например, вектор из нескольких 64-битных целых значений). Это до сих пор большая прикладная проблема, хотя и хорошо разработанная. Тем не менее, некоторые практически полезные метрики придумать вполне реально, например, если у вас есть возможность запускать на машине пользователя сложные алгоритмы обработки файлов.

Предположим, что такая метрика есть. Тогда можно забирать с данного пользовательского компьютера только те файлы, со словом missile, которые совсем не похожи на встречающиеся на других ПК. Для формирования полной выборки – не нужно забирать все файлы, со всех доступных компьютеров: достаточно вычислить и передать в центральное хранилище короткое представление для каждого из них. На следующем шаге центр находит некоторое ядро для заданных сигнатур (это не обязательно слова), а потом запрашивает “редкие” файлы, оказавшиеся в данной метрике далеко за пределами ядра, но содержащие нужные признаки интересности.

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

Интересно, что если всё же вернуться к антивирусу, то такая система оказывается чрезвычайно полезна для обнаружения новых “штаммов” вредоносного ПО. Такое ПО, как раз, содержит некоторые короткие известные сигнатуры (по длинным сигнатурам – определять нет смысла, потому что каждый тщательно проектируемый “троянец” прежде всего пропускают через все доступные сканеры, чтобы убедиться, что они не распознают в нём вредоноса), но в целом не попадает в ядро, состоящее из уже известных программных кодов. Заметьте, что тут нужно использовать некоторое специальное представление, которое не зависит от того, в какой форме вредонос запакован – понятно, что основное тело может быть зашифровано, а загрузчик – генерироваться каждый раз новый. Это старая техника, скорее теоретическая, потому что с ней мало кто умеет работать, как со стороны антивирусов, так и со стороны зловредов. Тем не менее, даже базовая реализация позволяет приводить к единому виду разноформатные текстовые документы (или базы данных – не так важно).

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



Comments Off on Обнаружение и извлечение документов с пользовательского компьютера

Современные антивирусы нередко добавляют свой “особый” корневой сертификат в системное хранилище или в хранилище браузера (зависит от платформы), это делается для того, чтобы прозрачно и без предупреждений для пользователя инспектировать трафик, защищённый TLS (обычно – HTTPS). Антивирус проксирует соединения, генерируя в реальном времени подменные сертификаты для TLS-серверов, которые посещает пользователь. Подменные сертификаты подписаны от корневого сертификата антивируса. У такого решения есть ряд неприятных, с точки зрения безопасности, побочных эффектов. Так, при помощи ключа от этого корневого сертификата можно перехватывать TLS-соединения не только на компьютере пользователя, но и на других промежуточных узлах сети (при этом не обязательно, чтобы антивирус работал – достаточно, что его корневой сертификат находится в списке доверенных).

Естественно, антивирус должен бы при установке генерировать для добавляемого сертификата уникальный локальный ключ. В противном случае, всякий пользователь антивируса, который сумел извлечь ключ из своей копии программы, получает потенциальную возможность перехватывать трафик других пользователей. Но, во-первых, антивирус может полагать, что сгодится и одинаковый для всех установок ключ. Во-вторых, уже встречались ошибки (или условные “ошибки”) в реализациях аналогичных схем, приводившие к тому, что ключ везде получался один и тот же. В-третьих, генерировать локальный ключ можно таким способом, что, зная дополнительную информацию, его нетрудно быстро вычислить и использовать на перехватывающем узле.

Перехватывающему узлу, конечно, ещё необходимо определить, что у клиента, который пытается установить TLS-соединение, встроен корневой сертификат от данного антивируса. Дело в том, что список корневых сертификатов системы не передаётся наружу, а попытка подмены при неустановленном сертификате – вызовет предупреждение в браузере. Однако перехватывающий узел может распознать антивирус подходящей версии при помощи анализа пакетов, которыми этот антивирус обменивается с центральными серверами разработчика. При целевой атаке – определить антивирус можно, просто взглянув на интерфейс операционной системы. Ну, либо сами разработчики могут посмотреть в регистрационной БД. И нельзя исключать вариант, что подходящий антивирус установлен у подавляющего большинства пользователей.

С другой стороны, при таком проксировании, соединение с удалённым сервером устанавливает не браузер, а прокси антивируса. Реализация TLS в данном прокси может содержать уязвимости. В целом, следует ожидать добротной реализации TLS от браузера, а не от того или иного антивируса (либо другого TLS-прокси). Дело в том, что подобное проксирование на клиентской стороне находится в некотором противоречии уже с идеологией протокола TLS, поэтому ситуацию в любом случае не улучшает. TLS-прокси может не валидировать или некорректно валидировать серверные сертификаты, соответственно, отсутствие аутентификации сервера позволит перехватывать соединение третьей стороне. Более того, TLS-прокси антивируса может быть ошибочно (или даже намеренно, ничего нельзя исключать) настроен так, что в качестве сессионных используются нестойкие ключи, которые достаточно легко вычислить, наблюдая TLS-трафик (либо даже просто зная время соединения и параметры клиента), для этого даже не потребуется знать секретный ключ от сертификата и активно перехватывать соединение. При этом, браузер может быть современным, а браузерная/системная реализация TLS – надёжной, но так как ключи для внешней сессии генерирует проксирующий модуль антивируса, появляется дополнительная возможность для пассивной расшифровки трафика, которая никак от браузера не зависит.



Комментарии (2) »

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

(Речь здесь идёт только о шифровании, обеспечение целостности и аутентификацию – оставим за рамками заметки. И там же, за рамками, очевидный момент: тезис “внутренней сети” – весьма и весьма спорный.)

Есть заметное количество довольно разумных обоснований того, почему некоторый промышленный протокол не использует шифрование. Например, оконечные устройства чрезвычайно ограничены в вычислительной мощности (это, например, могут быть некоторые изолированные интеллектуальные датчики, на “тысячу транзисторов”, “паразитно” питающиеся от самого сигнала опрашивающего узла). Или максимальный размер передаваемых данных ограничен единицами битов. И так далее. Однако тот момент, что шифрование, якобы, мешает мониторингу – в реальности не является ограничением для внедрения шифрования. Просто потому, что анализировать можно и данные в зашифрованном протоколе. Единственное, достаточно экзотическое, исключение: ручной разбор трафика с помощью логического анализатора при отладке или при поиске плохо воспроизводимых дефектов – здесь, действительно, шифрование заметно добавляет трудностей, но тоже не делает анализ невозможным.

Авторизованный узел, реализующий автоматический мониторинг, должен знать используемые ключи. Или уметь эффективно вычислять эти ключи. Тогда мониторинг можно реализовать пассивно, без необходимости как-то вмешиваться в канал связи и в передачу пакетов. Ключи, используемые в некоторой сессии, могут быть определены на основе метаинформации, к которой относятся номера пакетов, адреса самих устройств, метки времени; вариантов – очень много. Ключи могут вычисляться на основе некоторого мастер-ключа, известного мониторингу. Опять же, это далеко не единственная схема: возможно применение общей для системы псевдослучайной функции с секретом, которая позволяет узлу, знающему секрет, быстро подобрать ключ; можно даже просто использовать статические ключи на устройствах или внедрить сервер ключей. (Заметьте, что узел, реализующий мониторинг трафика, обычно не испытывает недостатка в вычислительных ресурсах.)

При этом, с точки зрения защиты передаваемой информации, решение с шифрованием окажется заведомо не хуже, чем полностью открытый протокол. А внедрить именно мониторинг – особенной проблемы не составляет, если только сразу проектировать протокол с учётом этого требования. Другое дело, что в случае с шифрованным протоколом, у чисто внешнего решения, предназначенного для “защиты”, возникнут проблемы: это решение должно уметь работать с ключами, как-то получать их, и так далее. Это существенно увеличивает затраты на разработку, по сравнению с “мониторингом” открытого протокола, где можно быстро и просто приспособить имеющиеся в “офисной линейке” решения (с сомнительной степенью полезности).

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



Комментарии (1) »

Стеганография – это различные методы сокрытия дополнительной информации в некотором открытом носителе. В современной ситуации, особенно, если рассматривать её в контексте Интернета, отличительная особенность стеганографии в том, что она позволяет скрывать метаинформацию об обмене данными: то есть, скрывать сам факт установления соединения. Так, защитить передаваемую по открытому каналу информацию от прослушивания поможет шифрование, но сам факт соединения (передачи зашифрованной информации) будет виден прослушивающей стороне, и она, например, может помешать этому соединению, прервав его в самом начале.

Создание хорошо сокрытого канала связи представляет проблему. В случае с Интернетом, дополнительный канал может быть спрятан внутри того или иного “обычного трафика”, но подобрать правильный трафик – непросто. Например, не годится метод, когда для маскирования используется специально создаваемая сессия с особым удалённым узлом, даже если эта сессия является “обычной” парой “HTTP-запрос/HTTP-ответ”: во-первых, будет зафиксирован факт отправки запроса; во-вторых, активная атакующая сторона может перехватить соединение, прервать его, а потом повторить запрос самостоятельно, тем самым выяснив какие-то детали обмена информацией.

Посмотрим на простой пример достаточно защищённой схемы. Если стеганографический канал организуется между двумя узлами, у которых есть заранее распределённые секретные ключи, то эти ключи можно использовать для формирования “стеганографической канвы”, которая будет вычислительно неотличима от случайной. Предположим, что в качестве носителя используется “обычный” видеопоток, например, с того или иного видеохостинга (или видеоконференция, если требуется сравнимый поток трафика в обе стороны). Тогда отправляющий узел с помощью симметричного блочного шифра и секретного ключа генерирует некоторую псевдослучайную последовательность чисел (например, последовательно зашифровывает значения счётчика), эти числа адресуют фрагменты передаваемого трафика-носителя, в которых будут изменены некоторые биты с целью передачи скрытой информации. Псевдослучайная последовательность выглядит как шум. Если неизвестен ключ и нет опорной копии трафика-носителя, то выявить подозрительные блоки данных в этом трафике практически невозможно. Однако принимающая сторона, которой адресованы скрытые данные, может их легко найти, сгенерировав ту же самую псевдослучайную последовательность на основе известного секретного ключа. (Сами полезные данные, естественно, тоже должны быть зашифрованы и защищены от подмены.)

На практике эта схема сталкивается с трудностями распределения ключей. На первый взгляд, можно предположить, что узлы просто используют тот или иной типовой вариант протокола Диффи-Хеллмана (DH). Но этот протокол обычно виден в трафике: так, в случае подходящего варианта на эллиптических кривых, открытый ключ представляет собой координаты точки на кривой – соответственно, если прослушивающая сторона знает кривую, то она может элементарно обнаружить факт обмена DH, проверив, что подозрительные байты действительно кодируют точки на кривой. Сам секрет таким образом вычислить, конечно, нельзя, поэтому узлы смогут использовать полученный ключ в других сессиях. Более того, далеко не всегда можно с большой вероятностью сказать, что стороны действительно обменялись ключами, а не просто передали случайные значения (точки). Однако, речь идёт именно о сокрытии факта соединения, а сеанс DH этот факт документирует довольно неплохо.

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

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

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



Комментарии (1) »

Сейчас вновь поднялся шум, касающийся внедрения биометрической идентификации, применительно к банкам. Например, клиент идентифицируется по изображению лица и записи голоса. Подобные системы пытаются внедрять уже много лет. Естественно, банки привлекает потенциальное удобство для клиента: можно говорить, что ему больше не нужны никакие дополнительные “идентификаторы”, потому что банкомат уже не потребует банковской карты.

При этом с самой биометрией, естественно, ничего не изменилось: данные, которые предлагается использовать для идентификации, общедоступны. Лицо человека несложно сфотографировать (если, конечно, он не носит постоянно маску). Голос – нетрудно записать. При этом удалённые системы сразу создают новые направления для атак методами социальной инженерии (с повторным проигрыванием голосовой записи, или с трансляцией ответов атакуемого клиента банка).

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

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

Биометрическая идентификация должна использоваться только в качестве дополнения к другим методам, и проводить её должен тоже человек (пусть и с применением “технических средств”).



Комментарии (2) »
Навигация по запискам: « Позже Раньше »