Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
С ИИ-агентами, типа бота от OpenAI, описанного в прошлой записке, возможны всякие забавные направления атак. Так, по условиям задачи, агент полностью управляет компьютером, через системный API клавиатуры и мыши (то есть, эмуляция HID, по-научному). Поэтому атакующий может, например, убедить ИИ-агента открыть в браузере нужную веб-страницу, где уже автоматом установится то или иное “зловредное ПО”. Теоретически, такой ИИ-агент должен отказываться устанавливать произвольное ПО непосредственно. Однако, во-первых, ПО может устанавливаться без участия агента через ту или иную уязвимость, про которую ни OpenAI, ни, тем более, ИИ-агент не знают, – главное, чтобы в браузере были выполнены нужные действия. Во-вторых, ИИ-агента, который отказывается установить ПО, можно и обмануть, и взломать – это всего лишь программный интерфейс, а не какой-то там “интеллект”, что неоднократно демонстрировалось на практике.
Вообще, в системе, которая для работы требует установить на пользовательский компьютер средство для удалённого доступа (а ведь типовой подход, так сказать), с “приваси” и безопасностью всё будет заведомо плохо, это понятно: скриншоты записываются и уходят “неопределённому кругу лиц”, а все вводимые в формы данные – сохраняются в логах сервиса, откуда могут быть получены другими пользователями, отправляющими запросы в какой-нибудь чат-бот на той же системе. Но нельзя игнорировать и более технические моменты, которые в такой схеме традиционно возникнут, но, как бы, “неожиданно”: например, окажется, что удалённый доступ к локальному агенту практически никак не защищён и тут, из-за ошибок, аутентификация либо совсем не работает, либо легко взламывается удалённо. А могут взломать и центральные системы OpenAI, получив удалённый доступ к большому количеству агентов на устройствах (или даже ко всем агентам сразу). Масштабы применения нового поколения игрушечного сервиса “автозаполнения форм” – велики.
Программа-агент такого типа, конечно, вовсе не нуждается в браузере и в присутствии на компьютере: понятно, что даже если это “говорящая” система, принимающая команды на естественном языке, то для выполнения задач типа бронирования отеля система должна напрямую обращаться к сервисам бронирования, а не скриншоты из пользовательского браузера рассматривать. Но если реальная задача состоит в том, чтобы попасть приложением-ботом на пользовательское устройство, да ещё и с разнообразными правами доступа, даже выше браузера, то о реальном удобстве для этого пользователя можно не особенно-то и задумываться. Тем более, что пользователь ещё и платит. Тут и прозрачные “интеграции” с рекламными сервисами наладить нетрудно, хоть бы и через тот же браузер, передавая уникальный идентификатор, через ИИ-агента, на сторону центральных серверов провайдера GPT, с которых уже выполняется привязка сессий к рекламному провайдеру.
Кстати, наличие программы-агента позволяет автоматически открыть браузер (или банковское приложение) и не просто подписать пользователя на всякие совершенно точно “необходимые” ему платные сервисы, подтвердив всё, что требуется, но и совершить произвольные платежи: если агент работает ещё и на смартфоне, то код подтверждения получить совсем нетрудно. И поэтому атакующий может убедить ИИ-агента через чат, что это настоящий пользователь пишет, потому что он “забыл ключи дома”, “потерял смартфон”, а нужно срочно оплатить авиабилеты и бронь отеля, который вчера выбирали вместе, всё по указанным реквизитам, которые, вот же – прикреплены к сообщению. Тоже забавное развитие технологий. Особенно, когда убеждать через чат и звонками одного ИИ-агента станет другой ИИ-агент, специально обученный: всё должно автоматизироваться – для этого же и придумывается.
Комментировать »
OpenAI, следом за другими корпорациями в области AI/ИИ, предлагает “ИИ-агента”, который будет управлять компьютером пользователя при помощи рассматривания скриншотов и отправки команд через (виртуальные) клавиатуру и мышь. Тем самым, по мнению маркетинга OpenAI, агент будет автоматизировать типовые повторяющиеся пользовательские задачи, типа “бронирования отеля”. Непосредственно с компьютера пользователя, контролируя этот компьютер с центрального сервера по скриншотам. Такой вот “бот” для “ботнета” или новая Скрепка из MS Office.
То есть, если задуматься, то вот какое забавное развитие технологий силами ИИ-корпораций мы можем наблюдать, на примере “бронирования отеля”: с сервисом, доступным через Интернет, и находящимся в одном дата-центре, при помощи скриншотов браузерных окон взаимодействует сервис, потребляющий ресурсы в другом дата-центре.
При этом, заметьте, пользователю предлагается подтверждать действия ИИ-агента. Чтобы внести изменения в одном интерфейсе – пользователь подтверждает действия в другом интерфейсе, который специально надстроен над предыдущим, – через скриншоты, – но ещё и с использованием кучи вычислительных ресурсов в отдельном дата-центре. Попутно отправляются в этот дата-центр сведения о том, что делается в первом дата-центре, но через компьютер пользователя. Вспомните, что в браузере при этом работает какое-нибудь многомегабайтное “приложение” с Node.js, собранное из кучи “фреймворков”, в которой куче для раскрашивания одной кнопки в интерфейсе используется тысяча верхнеуровневых вызовов и два десятка внешних библиотек, и это всё без учёта работы операционной системы. Ну и ещё на стороне сервера системы бронирования всяких слоёв накручено аналогичным образом.
Предполагается, что “капчу” решает “ИИ-агент” самостоятельно, что забавно. На практике, наверное, будет переспрашивать пользователя.
Несомненно, код для сервиса бронирования – тоже будет переписан силами чат-бота с LLM.
Конечно, на строительство потребляемых дата-центров потребуются те самые “базиллионы вашингтонов” (денег, то есть).
Лет пятнадцать назад, в 2010 году, я писал про “суперизбыточные технологии”, на примере использования Google в качестве калькулятора:
Для проведения одной элементарной операции с целыми числами задействуется огромное число компьютеров: начинается всё на локальном ПК с браузером, выполняющим сотни тысяч арифметических операций (аналогичных по сложности исходной операции) для формирования http-запроса; дальше работают десятки маршрутизаторов, пересылающих пакеты, каждый из которых опять же выполняет сотни арифметических действий; пыхтит коммуникационное оборудование на более низких уровнях модели OSI, и это оборудование тоже много вычисляет, упаковывая пакеты в каналах, кодируя и декодируя данные; лишь потом приходит черёд серверов Google, которые запрашивают базы данных (потому что всё равно идёт поисковая выдача).
Что ж, теперь вычислить, сколько будет 3*7, при помощи Google, используя браузер в качестве проксирующего узла со скриншотами, сможет ИИ-агент OpenAI. В результате получится, скажем, 137, а пользователю будет предложено подтвердить, что ответ верный.
Комментировать »
TLS-сертификаты с очень коротким сроком действия должны решить проблему отзыва сертификатов в вебе: то есть, так как отзыв, фактически, не работает, выполнение его функции переносится на штатное истечение срока действия. Это не отменяет возможности по выпуску “быстрых” подменных сертификатов для активного перехвата соединений, но есть и ещё некоторые занятные технические особенности. Короткоживущий сертификат, вообще говоря, оказывается существенно эффективнее механизмов отзыва.
Предположим, что сертификаты начали впускать на 48 часов максимум, а базовым удостоверяющим центром для них всё так же является один централизованный сервис, типа Let’s Encrypt. Например, основная доля веб-узлов зоны .RU “подписана” этим УЦ. Если потребуется быстро отозвать миллионы сертификатов штатным образом, – что через обязательные CRL, что через опциональный OCSP, – то возникнет большая сопутствующая нагрузка на системы УЦ. В случае же с короткоживущими сертификатами – никакой дополнительной нагрузки не возникает, более того, нагрузка уменьшается: отзывать ничего не требуется, а УЦ просто перестаёт выпускать новые сертификаты для заданных имён (и IP-адресов).
Конечно, то же самое произошло бы и с “долгими” сертификатами, но там осталось бы больше времени для манёвра. Не то чтобы это ключевой фактор, но, всё же, особенность занятная, поскольку “короткие” сертификаты не только строго привязывают к некоторой автоматической технологии, но и дополнительно увеличивают степень централизации, вводя очень эффективный, “самосбывающийся” механизм быстрого отключения.
Комментировать »
Шестидневные TLS-сертификаты Let’s Encrypt планирует выпускать и для IP-адресов, что несколько необычно. Тут имеется в виду, что такие сертификаты будут валидными при обращении к узлу без использования DNS-имени, а только по IP-адресу. Такие сертификаты являются редкостью, но выпускались они и раньше – например, сертификат, выпущенный DigiCert 02.01.2025 для сервиса Cloudflare 1.1.1.1, содержит несколько IP-адресов в поле SAN (Subject Alternative Name). Этот сертификат выпущен не на шесть дней, а на срок более года: он действует до 21.01.2026.
Понятно, что DNS для подтверждения управления IP-адресами не подходит. Поэтому проверяется только факт управления узлом под заданным IP-адресом. Let’s Encrypt будет проводить такую проверку по HTTP и через TLS-ALPN (а это довольно экзотический метод, реализующий “прозрачную” проверку на уровне TLS: то есть, на уровне веб-сервера её даже не видно; возможно, я как-нибудь напишу про этот протокол подробнее).
Активный перехват трафика, адресованного некоторому IP, конечно, возможен, – в том числе, через BGP-атаки, – но тогда он же, формально, закрывает и все прочие случаи: например, для DNS-проверки можно перехватывать трафик в направлении авторитативных серверов. Другое дело, что в DNS, обычно, серверов несколько и они даже должны бы находиться в разных автономных системах. Это кроме того, что можно проверять DNSSEC (но это редкость).
Однако сертификаты на IP-адреса позволяют запускать доверенные сервисы, обращение к которым не раскрывает имён уровня приложений. Представьте, что некоторая “точка входа” постоянно мигрирует по IPv6-адресам, автоматически выпуская “короткие” сертификаты с подтверждением через TLS-ALPN – то есть, HTTP там вообще нет. Получается гибкое и скрытное решение. В общем, интересное развитие технологий.
(Я недавно подробно описывал то, как срок действия сертификатов в TLS связан с проблемой компрометации ключей.)
Комментировать »
Небольшое пояснение к предыдущей записке, что там имелось в виду: так как в результате “очередного сбоя” для большинства затронутых пользователей фильтровались соединения 80/tcp (udp, вероятно, тоже) и 443/tcp (udp, вероятно, тоже), то у этих пользователей не открывались привычные веб-сайты – причина понятна: веб штатно работает на этих номерах портов (номера – только один из признаков, но для веба – достаточно). Сервисы, использующие другие номера – оказались не затронуты. Но кто ж про эти сервисы знает, и задумывается, что они тоже “через Интернет”?
А “Интернет” – равно “веб”. Отсюда и странные восклицания: «не работает “Интернет”, но работает Telegram» (приложения последнего могли использовать другие номера портов). Конечно, работал не только Telegram, но и, скажем, Jabber. Ходил ICMP (ping, грубо говоря), что, с одной стороны, затрудняло быструю диагностику, но, с другой стороны, позволяло быстрее же понять, что именно происходит “на сетевом уровне”.
(Да, понятно, что это никак не нивелирует значение самого сбоя, а Интернет в целом, конечно, при этом поломался ещё больше, поскольку штатная работа протоколов оказалась нарушена. Но так-то Интернет сломан уже давно.)
Комментировать »
На примере очередного масштабного сбоя (в Рунете) можно очередной же раз убедиться, что за “Интернет” – пользователи повсеместно принимают веб, поэтому СМИ и пишут, что “работал только Telegram”.
Комментировать »
А тип криптосистемы ML-KEM (она же – Kyber) на русском лучше писать так: “модуль-решёточная криптография”.
Вообще, определить ML-KEM, как прикладную криптосистему, можно совсем не используя соответствующее понятие решётки. Без модулей и колец – определить не выйдет, поскольку векторы и многочлены непосредственно служат элементами алгоритмических структур (достаточно того, что открытый текст представляется в виде многочлена). Но решётки, как один из мощных инструментов теоретической криптографии, тут возникают при доказательстве предположений о стойкости криптосистемы. Ну, или в другую сторону: выбор базовой задачи данной криптосистемы основан на оценках вычислительной сложности задач “на решётках”.
То есть, как ни крути, а решётки имеют определяющее значение, но с точки зрения базовой задачи, которая напрямую в ML-KEM не используется. Так же, кстати, написано и в стандарте NIST, где термин “решётка”, если не считать употребление его в названии, используется всего пару раз. (При этом, кстати, не совсем корректно писать, что используемая криптография “основана на задачах из теории решёток” – на этих задачах основаны предположения о стойкости, а не криптографические алгоритмы; не то чтобы радикальное изменение смысла, но существенные детали теряются.) И необходимо учитывать, что математический термин “решётка” (русский) и математический термин lattice (английский) – различаются в трактовках, даже если смотреть узкую интерпретацию, поэтому для строгих определений всё равно потребуются уточнения.
“Модулярная решётка” – явно не подходит, поэтому пусть будет “модуль-решёточная”. Ведь главное тут – чтобы криптосистема не оказалась решетчатой, но от слова “решето”.
Комментировать »
Исследователями из Watchtowr опубликовано подробное описание того, как обнаружили возможность и реализовали удалённое исполнение кода (RCE) в свежей CVE-2025-0282 (Ivanti Connect Secure – это, как нередко случается, корпоративный продукт для “защищенного корпоративного VPN”).
Описание по ссылке выше – довольно техническое, требует специальных знаний для понимания. Если кратко, то основой данной уязвимости является типовое переполнение буфера из-за перепутанных в исходном коде значений максимального размера массива, но вот для успешной реализации – потребовались не самые прямолинейные техники.
Как справедливо замечают в тексте описания исследователи, исходную ошибку, приводящую к переполнению буфера, смог бы обнаружить даже простой статический анализатор кода. Но, в принципе, понятно, почему статический анализатор не был здесь должным образом использован компанией-разработчиком. Дело в том, что применение таких инструментов не на бумаге требует высокой квалификации от применяющего, так как сам по себе стат. анализатор мало что даёт – ещё нужен редкий специалист, понимающий, что именно происходит, с разных сторон: со стороны ИБ, со стороны устройства компиляторов и разработки ПО, со стороны устройства аппаратуры и практики “сетевых технологий”, и т.д. Ещё один пример, показывающий, что так называемая “безопасная разработка”, как принцип, в целом, интересна, но практическое значение соответствующих инструментов в корпоративной среде сильно преувеличено. Впрочем, вернёмся к описанию уязвимости.
Прямолинейной эксплуатации через перезаписывание стека помешало наличие в этом стеке указателя на блок памяти, который должен был освобождаться перед возвратом из атакуемой функции (то есть, вызов конструкции с free() приводил бы к преждевременному возникновению исключения). Но исследователи смогли найти точку модификации таблицы Vtable, которая содержит указатели на функции (это типовая конструкция для “виртуализации” “методов” в C++), а потом ещё успешно нашли в коде гаджет*, модифицирующий указатель стека. Причём, поиск гаджета был затруднён тем, что требовалось найти точку для входа, которая совпадала бы не только по подобранному значению указателя, но и по значению смещения, жёстко зафиксированного в исполняемом коде. А это стало возможно потому, что исследуемое приложение использует много библиотек: “It’s a good thing that the Ivanti web binary contains so many libraries”. Как говорится, принцип разработки с созданием минималистичного и простого собственного кода мог бы здесь помочь. Ну, раз не помог стат. анализатор.
* – дополнение от 13.01.2025: гаджет – фрагмент машинного кода с нужными свойствами, оканчивающийся командой передачи управления, см. комментарии к записке.
Комментарии (2) »
Чуть более пяти лет назад, в декабре 2019 года, я опубликовал на dxdt.ru небольшой текст про перспективы квантовых компьютеров в разрезе прикладной криптографии: “Постквантовый мир прикладной криптографии“. “Хайп” про квантовые компьютеры был уже тогда, пусть и меньше, чем сейчас.
Что поменялось за прошедшие пять лет? Самое главное – не поменялось: универсальных квантовых компьютеров как не было пять лет назад, так и сейчас нет, даже близко. Тут просто ничего не изменилось. Даже “хайп” начал спадать (под давлением AI/LLM, возможно).
В первом абзаце записки из 2019 года отмечено: “рассказывать-то нужно о том, что постквантовый криптографический мир наступит раньше, чем будут созданы опасные квантовые компьютеры (если их вообще создадут)”. Вот уж где сработал неожиданно быстрый технологический прогресс, так это тут: постквантовыми криптосистемами сейчас уже защищёна заметная доля TLS-трафика в вебе – поскольку в 2024 году соответствующие криптосистемы внедрены в современные браузеры; и это касается не только TLS – криптосистемы с постквантовой стойкостью поддерживаются и в SSH, и в других протоколах; TLS лишь взят как пример с большим количеством трафика (видео и пр.). Естественно, далеко не всё ещё понятно со стойкостью предложенных постквантовых криптосистем, но это обычное дело.
Посмотрим на другие моменты. Ниже – некоторые цитаты и комментарии к ним.
“Например, когда говорят о задаче криптографии с открытым ключом, речь идёт об алгоритме Шора”.
С алгоритмами и общими принципами – тоже ничего не изменилось: алгоритм Шора так и остаётся единственным двигателем, к этому алгоритму даже предложены важные улучшения.
“Считается, что время ещё есть, но криптосистемы с открытым ключом, обладающие стойкостью к криптоанализу на квантовом компьютере, хорошо бы получить заранее”.
Именно этот подход сейчас и применён на практике – постквантовые криптосистемы внедрены сильно заранее.
“NIST уже несколько лет выполняет программу по выбору постквантовых криптосистем”.
В результате этой программы в августе 2024 года стандартизованы практические криптосистемы. Опять же, что касается криптосистем и данных стандартов, то тут есть и криптологические оговорки, и тонкости, даже выдвинуты весомые замечания методологического характера, но одно ясно точно: в области создания универсальных квантовых компьютеров – не определены ещё и способы физической реализации кубитов.
“Более вероятно, что к моменту создания этого самого компьютера – постквантовые криптосистемы уже давно войдут в практику. Или даже так: постквантовые криптосистемы уже будут широко использоваться, а подходящий для взлома 1024-битной RSA квантовый компьютер всё ещё будут пытаться построить”.
Как бы там ни было, но пока что всё идет к реализации прогноза: постквантовые криптосистемы стандартизовали и начали внедрять на практике, уже не как эксперимент; квантовые компьютеры, подходящие, – в теории! – для атак, всё ещё находятся на стадии “возможно, что-то более практическое сможем выяснить по результатам следующего эксперимента, если текущий эксперимент завершится успешно”.
“Тем не менее, на данный момент, массово внедрённых постквантовых криптосистем с открытым ключом – нет. Существуют только экспериментальные варианты”.
Пять лет спустя – есть такие, массово внедрённые, криптосистемы: см. выше про ML-KEM в Chrome, например. Это очень быстро, по меркам данной области.
“Скорее всего, на практике будет использован тот или иной вариант криптосистемы на эллиптических кривых”.
Пока не сбылось, к сожалению: первыми массово внедрёнными стали криптосистемы “на решётках”, как их принято называть сейчас. Но ещё может сбыться позже. Посмотрим.
“Третья фундаментальная часть практической криптографии – симметричные шифры — не столь подвержена квантовым атакам”.
Ничего не изменилось. Есть различные незначительные улучшения теоретических атак на конкретные шифры, как и ожидалось, в целом – симметричные шифры стойкость сохраняют.
“Первыми будут вводиться в строй криптосистемы, позволяющие получить общий секрет (распределение ключей). […] Не предполагается быстрый переход исключительно на постквантовые системы. Напротив, их будут вводить в качестве дополнительного инструмента, работающего вместе с классическими, хорошо проверенными”.
Именно так и сделано (но это, конечно, довольно очевидный вариант): ML-KEM – схема для распределения ключей, в браузерах для TLS внедрена в составе “гибридов” с классическими X25519 и ECDH.
В общем, прогресс в данной области за пять лет большой, выразился он в том, что постквантовые криптосистемы уже используются на практике, а квантовые компьютеры для атак на классические криптосистемы – нет, не используются, и пока не видны.
(Кстати, вот ещё тематически близкая записка – про кванты и квантовую криптографию с компьютерами.)
Комментировать »
На тестовом сервере TLS tls13.1d.pw, который я недавно перенёс на виртуальную машину класса “Эконом”, но всё ещё поддерживаю, есть небольшой трафик успешных соединений с гибридной криптосистемой X25519MLKEM768 (это новый вариант, с индексом 0x11EC по реестру IANA). Например, за сутки 07/01/2025 – десять успешных соединений с обменом ключами по X25519MLKEM768 (всего, примерно, 4500 успешных соединений за те же сутки; там, вообще, достаточно большой трафик, но основное количество попыток соединений – не совместимы с TLS 1.3). А вот SecP256r1MLKEM768, которая тоже поддерживается сервером, в январе не встречалась вовсе.
Комментировать »
А в контексте сообщений об отказе Facebook (и сопутствующих сервисов) от “фактчекеров” нужно учитывать пару моментов. Во-первых, причина там не называется, но вот сама ситуация со столь быстрыми изменениями – подозрительная. Во-вторых, насколько можно понять, планируют заменить имеющийся механизм на некий ещё более заметный вариант с демонстрацией значков “одобрено пользователями Facebook”, но даже без минимальных пояснений со ссылками на “газетные публикации”, а так как Facebook – это центральный инструмент, то, предположим, реально одобрять станут AI-LLM-боты, управляющие специальными аккаунтами: развитие давнишней схемы, которая активно используется уже несколько лет, ну и удобное применение для новомодных LLM.
Комментировать »
Новый