Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
В браузере Chrome версии 122, вышедшей на днях, включена по умолчанию поддержка постквантовой гибридной криптосистемы TLS X25519Kyber768 (раньше данная возможность включалась вручную, через флаг). Данная криптосистема уже некоторое время поддерживается моим экспериментальным сервером TLS – посмотрим, увеличится ли количество подключений с X25519Kyber768: у этой криптосистемы на сервере повышен приоритет, но подключений пока что очень мало (естественно, там далеко не только браузеры в качестве клиентов).
(Кстати, так как популярный “Яндекс.Браузер” является клоном Chromium/Chrome, а TLS-стек там соответствует версии Chromium, то и в браузер от “Яндекса”, как я понимаю, поддержка постквантовой криптосистемы в TLS тоже приехала автоматически.)
(Update, 07/03/2024: оказывается, в последний момент выход передвинули на версию 124.)
Комментировать »
“Песочница – это такая изолированная среда, где производится виртуальное исполнение подозрительного кода, чтобы без ущерба выявить возможную вредоносную активность. Вредоносы развиваются, логика их активации пользователем становится всё сложнее. Поэтому песочница должна имитировать действия пользователя всё точнее и точнее. Мы постоянно улучшали модель пользователя. Наша модель “открывала” файлы, “двигала” мышкой, генерировала клавиатурный ввод – сперва достаточно простые марковские цепи, потом многоуровневая система библиотек из словарей, построенная на литературном корпусе, с нелинейной памятью.
В какой-то момент выяснилось, что модель полностью выполняет все пользовательские задачи. Если процесс не прерывался вредоносным кодом, то обработка входящих сообщений в песочнице давала такой же результат, как и действия настоящего пользователя; а нередко результат был лучше. Оставалось только достать этот результат из песочницы и – настоящий пользователь уже оказывался не нужен. Неожиданно открывшиеся перспективы поражали.
Но коллеги из отдела “Основания математики”, говорившие что-то про диагонализацию, оказались правы. Как только мы попытались реализовать механизм безопасного вытаскивания наружу результата работы модели пользователя, выяснилось, что в модель требуется включить функцию взаимодействия с песочницей – иначе непоправимо страдала полнота: например, нельзя не учитывать такой триггер, как копирование файла на внешний, относительно песочницы, носитель. К сожалению, это означает, что внутри нашей песочницы придётся эмулировать ещё одну песочницу, которая нужна для полной модели пользователя. А внутри новой песочницы – нужна ещё одна. Казалось бы, на третьем уровне можно остановиться: потому что если “вывернуть” получившуюся конфигурацию, то она, в алгоритмическом смысле, окажется эквивалентной новому шагу конструктивного построения полной модели. Но операция “выворачивания” точно так же требует расширения модели.
Всё это довольно сложно. В общем, сейчас нас занимает совсем другая мысль: не являемся ли мы сами чьей-то моделью пользователя, ограничения которой не позволяют довести нашу песочницу до ума?”
(Май 2017 г.)
Комментировать »
Когда-то давно, в качестве ответа программам, обнаруживавшим компьютерные вирусы по сигнатурам исполняемого кода, появились полиморфные вирусы: основной код вируса тем или иным способом “запаковывался” или зашифровывался, а к результату приписывался небольшой распаковщик, преобразовывавший код в пригодную для исполнения форму непосредственно в момент работы вируса (или даже некоторых частей вируса). Например, относительно простой вариант реализации мог использовать некоторую маску (гамму), которая суммировалась с байтами кода при помощи XOR, при этом конкретный “распаковщик” генерировался непосредственно при реплицировании кода, то есть, у распаковщика тоже не было постоянной формы (ну, в каких-то пределах, конечно). Поиск по зафиксированным значениям сигнатур тут не работает, так как байтовое представление вируса всякий раз разное, даже несмотря на то, что исполняемый код вируса – одинаковый. Понятно, что код можно предварительно сжать, а маскирующую гамму генерировать по некоторому псевдослучайному алгоритму, реализация которого тоже изменяется.
Обнаружение подобных программных кодов, с той или иной степенью достоверности, потребовало создания всяких “виртуальных песочниц” и тому подобных инструментов, пытающихся детектировать не запись кода, а алгоритм, что, естественно, наталкивается на огромные вычислительные проблемы (связанные, кстати, с задачей P ≟ NP). Естественно, все эти результаты и разработки “полиморфного” кода актуальны и сейчас, есть целое направление, посвящённое тому, как можно закрыть код от анализа, какие есть ограничения и так далее. Используется не столько для компьютерных вирусов, сколько для защиты прочих программ (и даже аппаратуры).
Занятно, что сходным методом можно строить программные закладки, которые чрезвычайно сложно обнаружить даже после того, как они были использованы на конкретной системе. Тут нужно вспомнить про ещё один подход, позволяющий расщеплять логику и навязывать неожиданные алгоритмы машинному коду, который предназначался для совсем другого: это так называемое ROP – Return-Oriented Programming (“возвратное” или “возвратно-ориентированное программирование”).
Суть ROP – в выделении набора “гаджетов”, представляющих собой кусочки исполняемого кода, оканчивающиеся командой RET (return и пр. – то есть, “возврат”, передача управления по адресу, взятому из стека). “Гаджеты” – это достаточно произвольные фрагменты из разных мест исходной программы, главное, чтобы конкретный гаджет выполнял нужные действия. Утрированный пример: какой-то гаджет может увеличивать значение заданного регистра на единицу (A: ADD AX, 1; RET;), а другой – записывать значение из регистра в память, по адресу, заданному тоже регистром (B: MOV [AX], DX; RET;). Тогда, разместив в подготовленный стек нужное количество вызовов первого гаджета (A), можно получить нужное значение адреса, куда, при помощи второго гаджета (B), запишется то или иное значение (загрузить это значение в регистр-источник можно третьим гаджетом).
Гаджеты исполняются процессором один за другим, в нужном порядке, как только в стек загружен соответствующий набор адресов переходов – то есть, полезная программа, напоминающая, по своей роли, распаковщик вируса, упомянутый выше. Обычно, загрузить адреса в стек и выполнить нужный алгоритм “на гаждетах” можно в результате срабатывания программного дефекта (уязвимости). Это, собственно, такой, довольно тонкий, метод осуществления взлома ПО. Но ничто не мешает так устроить какую-то программу, что необходимый набор гаджетов внутри неё активируется в какой-то момент по внешнему сигналу (или по времени), а этот внешний сигнал – неотличим от штатного набора данных. Например, это может быть контрольная сумма пакета, попавшего в сетевой стек (это к вопросу эффективности закрытия прикладных доступов через netfilter и iptables).
Закладки вообще непросто обнаруживать. Но обнаружить такое решение ещё сложнее, даже если анализировать постфактум дампы памяти, взятые в момент срабатывания. А представьте, что к чисто программной части добавлена недокументированная аппаратная составляющая – эффективность и степень маскировки увеличиваются в разы.
Комментировать »
Забавный заголовок новости на SpaceNews.com: “AI company developing software to detect hypersonic missiles from space” (“ИИ-компания разрабатывает программное обеспечение для обнаружения гиперзвуковых ракет из космоса”). Думаю, понятно, почему заголовок забавный: это, фактически, художественный пересказ ключевого события из фантастической кинематографической ленты (даже из разных лент), так как речь-то в сообщении про заказ от штатовского SDA – профильного военного агентства.
В целом, конечно, оценивая картину в современных традициях Нового Средневековья, можно уже и допустить, что реально разрешат использовать непрозрачный машинный перебор со случайным результатом в качестве системы детектирования ракетных угроз. Но, всё же, пока что нельзя полностью исключать, что это такой способ поддержать общий “хайп”, так как определение “с использованием ИИ” слишком размыто – под ИИ можно без труда подвести вполне детерминированные линейные фильтры, собранные в пару слоёв. А про то, что спутники с ИК-сенсорами, согласованно действующие на низкой орбите, представляют собой новый этап в развитии космических средств наблюдения, я писал некоторое время назад, и не раз.
Комментировать »
Воскресное чтение манускриптов. В этот раз – пара иллюстраций из инструкции по созданию метательных машин от Герона Александрийского (первый век н.э), в версии манускрипта Vat.gr 1164 (а это уже 11 в., тысячу лет спустя) из Ватиканской Апостольской библиотеки. Схема баллисты:

Подробный чертёж важной детали (περίτρητα), которая обеспечивала крепление механической обвязки вокруг “торсиона” (текст со скриншота – относится к другому чертежу):

Описание этой детали из труда Герона обычно приводят в качестве примера древних научно-технических подходов, предоставлявших нужный уровень обобщения и абстракции не только через буквенные обозначения и математические основы черчения, но и путём использования вместо конкретных размеров указаний на отношение величин. Например, как в данном случае: через определение отношения 1:2 для сторон задающего деталь параллелограмма и т.д., это всё описывается в сопроводительном тексте – то есть, буквально, основы машинной графики и компьютерной геометрии, но две тысячи лет назад.
Комментировать »
На сайте Gramota.ru заработала озвучка омографов (я некоторое время назад приводил примеры), при этом поменялся формат вывода статей о словах. А вот странный “метасловарь” – так и остаётся странным: запрос “ключом” так и приводит к бесполезному выводу блока о слове “крючок”. Казалось бы, это вот прямо самое тематическое направление в разработке, какое только можно придумать для подобного сайта-сервиса. И тем не менее – “крючок” вместо “ключа”, что делает “метасловарь” бесполезным.
Если вы думаете, что “ключом” и “крючок” тут только для того, чтобы зацепиться, то вы ошибаетесь: на запрос “краном” – данный сервис выводит, как и раньше, “рань” и “каноэ”. “Метасловарь” это модно, однако немного напоминает восприятие ИИ LLM, когда не хватило памяти и видеокарт. Лучше – сделать “постсловарь”.
Комментировать »
Можно предположить, что передача сообщений по радио полностью защищена от прослушивания, если прослушивающая сторона ничего не знает об электромагнитных волнах (что уж там говорить про наличие у этой стороны радиоприёмников). В газете напишут – “абсолютно защищена”. Может ли такая вымышленная ситуация служить аллегорией для современного внедрения квантовой криптографии? Навряд ли.
По крайней мере, аллегория получится слишком неполной и размытой. Да, про квантовую криптографию, следуя волне “хайпа”, едва ли не постоянно пишут, что она является “абсолютно защищённой, абсолютно стойкой”, якобы, из-за некоторых “физических законов” (естественно, законов таких нет, они в физике невозможны; есть некоторые допущения, но это, впрочем, другая история). Проблема с упомянутой аллегорией в том, что у тех, кто обменивается сообщениями по радио – есть радиостанции. Неявно предполагается, что они их как-то изготовили, а потом ещё смогли оценить степень исключительности своих знаний. То есть, несколько другая история. В случае квантовой криптографии, предположения о стойкости строятся в рамках почти той же прикладной модели, которая позволила создать сами оконечные устройства – приёмники и передатчики. Так что вариант, когда оценка степени защиты информации в радиоканале на уровне “абсолютная защита” делается из допущения, что прослушивающая сторона ничего не знает о радиосвязи, он совсем о другом – получается что-то вроде принципа Керкгоффса, а не аллегория оценок квантовой криптографии.
Можно предположить, что и сами пользователи радиостанций ничего не знают не только об устройстве радиостанций, но и понятия не имеют об электромагнитных волнах. Для того, чтобы запомнить, что голос из одной коробочки передаётся в другую – многие знания не требуются, так как система работает сама. Ну, пока батарейка не разрядилась. Тут уже принцип Керкгоффса исчезает сам собой (обратите, кстати, внимание на то, что применимость данного принципа, оказывается, зависит от контекста). Но к роли квантовой криптографии в современности это тоже совсем и никак не подходит: построить даже опытный образец усилиями ИИ с LLM внутри не выйдет, что уж там рассуждать про интерпретации квантовой механики.
Впрочем, история показывает, что разработчики и, особенно, пользователи радиооборудования могут недооценивать возможности утечек по побочным каналам (те самые ПЭМИН). Это, аллегорически, означает, что кто-то смог разобраться с электромагнитными излучениями чуть лучше. Известно, что такие утечки работают и для устройств квантовой криптографии. Кто бы, как говорится, сомневался: известно ещё до появления оптоволоконных линий связи – даже если по кабелю передаются сообщения, зашифрованные абсолютно, – в полноценном, математическом смысле, – стойким шифром, это не означает, что вместе с зашифрованными сигналами не передаётся и эхо исходника, в открытом виде. Но то всё “классические” утечки. Возможны ли утечки “квантовые”? Пока что непонятно. Однако к аллегории про радиоканал и технически неподготовленную прослушивающую сторону, которая пытается подползти к окну радиобудки, чтобы снять акустическое эхо собственными ушами, это уже не относится.
Комментировать »
Кстати, насчёт того, было ли известно о различных векторах DoS-атак, которые с собой приносит DNSSEC (это касательно свежих CVE с коллизиями ключей и подписей). Я, ради интереса, посмотрел, что я писал в книге “Доменные войны II”, вышедшей ещё в 2011 году, и там на странице 269 сказано следующее:
“Уже понятно, что DNSSEC создаст новые возможности для атак типа “отказ в обслуживании” (DoS), ведь криптографические процедуры защищённой DNS гораздо более ресурсоемки, в вычислительном смысле. Злоумышленники при помощи отправки системам, поддерживающим DNSSEC, “дефектных” наборов данных смогут с большей, относительно “классической” DNS, легкостью занять все вычислительные ресурсы компьютера проверкой “бессмысленных” адресных данных.”
Это, конечно, достаточно общее рассуждение, но оно отражает ситуацию. Добавлю, тем не менее, что про совпадение тегов и, соответственно, про дополнительную “комбинаторную нагрузку” алгоритмов проверки DNSSEC-подписей, известно давно (это есть и в RFC, и в статье по ссылке выше – не новость), да и не все реализации стараются проверять все комбинации ключей. Другое дело, что специалистов, достаточно глубоко разбирающихся в соответствующих областях, – а также и во многих смежных областях, что тут необходимо, – в мире очень мало, что бы там ни писали СМИ и ни говорили на конференциях, и упомянутые специалисты, обычно, заняты чем-то другим, поскольку конкретные решения в этих областях не только мало кому понятны, но ещё и мало кого интересуют: это же не шумный подход в стиле “истина рождается в споре”. Так что моменты конкретных демонстраций атак на известных направлениях наступают в своё время, а в том, что некоторый класс атак был возможен два десятка лет – нет ничего удивительного. Таких классов и направлений в интернетах ещё много.
Естественно, это никоим образом не отменяет актуальности конкретных современных атак на конкретные современные системы.
Комментировать »
Картинка из прошлогодней записки про таблицу подстановок:

С чем связана такая геометрия верхней части? Прежде всего, с тем, что каждая строка там – это уменьшение “неопределённости” в два раза. И действительно: картинка состоит из значений байтов, повёрнутых вертикально, то есть, это таблица, в которой верхняя строка соответствует старшему биту байта. Последовательное увеличение значений байтов, справа налево, с использованием типового кодирования (это важная оговорка), означает, что половина клеток-пикселей старшего бита заполнена нулями, половина – единицами.
Нули и единицы разбивают всё пространство возможных значений на две равных части. Вот это и есть ключевой момент теоретико-информационного определения бита, про который нередко забывают даже при постоянной, – ручной, так сказать, – работе с битами/байтами: один бит информации соответствует уменьшению “неопределённости” в два раза, что бы там под “неопределённостью” ни подразумевалось. Если взять произвольный байт, то значений у него может быть 256 различных, это будет степень неопределённости. Если известен один бит, то возможных значений уже 128, если два бита, то 64, и так далее, перемещаясь по картинке вниз. А если эту концепцию наложить на идею непрерывности, то нетрудно увидеть целый набор фундаментальных математических объектов.
Комментировать »
Опубликована исходная работа, описывающая создание DoS-атак на резолверы при помощи специально сконструированных зон с коллизиями (совпадениями) идентификаторов ключей. Совпадение – это именно тот случай, который я недавно описывал на примере конкретной зоны. Там, конечно, не только совпадающие идентификаторы/теги используются, но они имеют определяющее значение, поскольку заставляют валидирующий резолвер перебирать большое количество ключей. Цитата:
Evaluating KeySigTrap, we set up a zonefile with 582 colliding DNSSEC keys and 340 signatures.
Это CVE-2023-50387.
(via)
Комментировать »
ИИ-говорилка GigaChat теперь, как бы, умеет английский язык, однако на все запросы через Telegram-бот, потенциально ведущие к показательному “запутыванию контекста”, отвечает в стиле, что “на эти темы не могу разговаривать” (на русском, кстати). В английском, из-за аналитических свойств языка, запутывать контексты LLM заметно сложнее, чем в русском, но тоже можно (простой пример из области ИТ или, другими словами, из речного хозяйства – bank и log, что в не слишком “грамматической” версии для LLM может, например, выглядеть так: “Having logs removed in timely manner keeps bank totally speckless”). Кстати, в английском неплохо помогают гладкие переключения существительное/глагол. Но, конечно, если подозрительные ветки закрываются системным барьером, то и увидеть ничего нельзя. Впрочем, наличие однотипного ответа тоже демонстрирует уровень “интеллекта”.
Комментировать »
Новый