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

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

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



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

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

В работе по ссылке – показано, что механизм наследования достаточно силён для того, чтобы покрыть практически всю популяцию, собрав ДНК лишь у небольшой части людей. И речь тут идёт о том, что публичные “анонимизированные” базы позволяют идентифицировать персон, ДНК которых в базе отсутствует, но нашлись родственники разной степени “отдалённости”. Цитата:

“Используя конкретную модель, мы можем предсказать, что база данных с записями о приблизительно 3 млн жителей США европейского происхождения (2% соответствующего взрослого населения), позволяет найти для 99% населения данной этнической принадлежности как минимум одного троюродного родственника, а для 65% – как минимум одного двоюродного”.

Чтобы сопоставить реальных персон записям в базах ДНК, исследователи используют год рождения, примерное место проживания – это позволяет резко улучшить точность. Собственно, задача складывается в чисто комбинаторную, а комбинаторные соображения очень часто помогают убрать всё лишнее и найти реальную структуру, стоящую за данными. Я довольно давно писал на сходную тему, правда, в привязке к “анонимизированным” данным геолокации.



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

Немного занимательной теории чисел, применительно к одной весьма экзотической особенности TLS (как известно, это основной защищённый протокол современного Интернета). Изучая настройки и параметры данного протокола, можно столкнуться с интересной формулой:

p = 2ⁿ – 2ⁿ⁻⁶⁴ + 2⁶⁴(⌊2ⁿ⁻¹³⁰e⌋ + x) – 1

Для чего она нужна и что обозначает?

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

Это формула, по которой генерируются простые числа, задающие группу для DH в TLS. n – требуемая разрядность, e – основание натурального логарифма, x – переменная, принимающая целые положительные значения. То есть, можно сказать, эта формула извлекает из числа e подходящее целое простое число нужной разрядности (подходящее – потому что подходит не всякое, но это детали). Для получения именно простого числа – нужно подбирать значение x (используется минимальное подходящее). Механизм описан в RFC 7919 (но попробуйте “нагуглить” эту формулу).

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

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



Комментировать »

Многие слышали про криптографию на эллиптических кривых. Но эллиптические кривые, которые давно являются мощным инструментом теории чисел, можно успешно применить к решению элементарной (по формулировке) арифметической задачки про бананы, яблоки и ананасы. Текст ниже – несколько сокращённая версия моего перевода ответа Quora.com, который дал Alon Amit (англ.).
Читать полностью



Комментировать »

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

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

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

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

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

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

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



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

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

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

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



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

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

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



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

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

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

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



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

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

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

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

Пусть кодирование речевого сигнала с приемлемым уровнем качества требует (с запасом) 500 байт/сек. Периоды, когда ничего не слышно, не пишутся, поэтому активности в сутки будет где-то часов пять, в самом напряжённом графике. Тогда требуемый объём памяти для хранения данных за сутки составит: 3600*5*500=9*106 байтов, или около 9 Мбайт/сутки. Сохранять такой объём в современном смартфоне труда не составляет: типичные объёмы памяти измеряются гигабайтами. Естественно, хранить запись можно незаметно для пользователя, например, зарезервировав часть памяти. И девять мегабайт – это очень большой объём речи, подавляющее большинство сценариев использования будут выдавать меньше.

Как незаметно передать несколько мегабайт информации? Неплохим вариантом является маскировка данных под случайные – шум. Для этого достаточно шифровать выходной поток, соответственно, он будет практически неотличим от (псевдо)случайных данных. Хорошим носителем для дальнейшей передачи данного “шума” являются цифровые изображения – фотографии, сделанные встроенной камерой. В них, кстати, полезный сигнал и записываться может без ведома операционной системы, непосредственно в схемах камеры. Фотографии загружаются “в облако”. Получаем стеганографический канал. Обнаруживать наличие скрытых данных может только та сторона, у которой есть соответствующий секретный ключ – для всех других “шум” выглядит как шум, обычный для цифровых камер. Проблема лишь в том, что “плотность записи” в подобных стеганографических схемах невелика, не более нескольких процентов от объёма данных, выступающих в роли носителя. Соответственно, чтобы передать 10 мегабайт скрытых данных, потребуется исходящий трафик вплоть до 500 Мбайт. С другой стороны, все 9 мегабайт разом можно было бы передать в виде одной “испорченной” фотографии – данная схема вполне реализуема, так как её тоже можно замаскировать под сбой (главное, чтобы пользователь не удалил фотографию раньше, чем она будет загружена “в облако”).

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

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



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