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

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

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

Проверка подписи для рассматриваемого способа использования проводится при помощи открытого ключа, опубликованного в TLS-сертификате. Тут возникает административный момент, связанный с политикой управления доверием, используемой приложением на проверяющей стороне. Это приложение может “верить в сертификат”, а может – “верить в сам ключ”.

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

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

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



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

Исследователи, сравнивая в автоматизированном режиме (fuzzing) поведение различных микропроцессоров семейства RISC-V, обнаружили дефекты команд в линейке распространённых ЦПУ T-Head C910. Дефекты относятся к конкретной реализации и расширениям RISC-V, которые могут использовать разработчики совместимой аппаратуры.

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

(Новость OpenNet.)



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

Официальная новость ТЦИ про добавление определения X25519Kyber768 на audit.statdom.ru (САБИУ). Цитата:

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

Вообще, этот момент почему-то сейчас упускают из виду: может, оно и прошло незаметно, но сейчас, если вы используете Google или Youtube через более или менее современный браузер из распространённых, TLS-трафик уже защищён при помощи ключей, полученных с использованием Kyber768 – то есть, постквантовой криптосистемы. А если сюда добавить, что очень многие мало-мальски популярные сайты используют Cloudflare, – в том числе, в Рунете этот сервис очень распространён, – то окажется, что немалая часть обычного TLS-трафика в Вебе, – точно больше трети, – уже перешла, так сказать, на “постквантовые ключи”. А момент довольно интересный, но почему-то про него не особо-то пишут даже технические СМИ.

(Кстати, по наличию поддержки на стороне сервера можно, – примерно, – судить, у кого насколько “свой” TLS-бэкенд. Тоже занимательно.)



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

С “червём” CrowdStrike, конечно, странная история, но не менее странно и то, что уж в корпоративной-то Windows-среде есть все штатные способы настроить тестовую зону для раскатки обновлений. То есть, обновления должны сперва локально раздаваться только на некоторые машины, где отдельная служба может проверить, что оно не сломало всё, куда дотянулось, а только потом, когда некоторая уверенность появилась, обновления можно попробовать применять дальше. Наверное, с CrowdStrike ситуация другая. Наверное, можно так устроить программу-агента с центральным управлением, что она сломается только после того, как расползётся по достаточному количеству компьютеров.

Да, понятно, что описанный способ администрирования, с контролируемым изменением системного ПО, как и многие смежные технологии, это сейчас скорее из области теории, поскольку на практике, когда у вас есть внешний “непогрешимый ИИ”, управляющий “безопасностью ИТ-решений”, то этот ИИ может сам центрально раздать любой код на любые машины, где работают его “пробники”, поскольку windows-операторы свою часть уже сделали в самом начале: “прокликали Next->Next->Next до Finish”.

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



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

Наземная сеть радиоприёмников, – например, базовых станций мобильной связи, – может быть использована для определения координат (геолокации) передатчиков. Типовой пример передатчика – мобильный терминал. Для такой геолокации не требуется связь со спутниками GNSS (GPS, в частности), как не требуется и прямое участие самого терминала: главное, чтобы этот терминал излучал сигнал с известной модуляцией. То есть, терминал может работать с какой-то “внешней” системой, – даже со спутниковой, – но определять его местоположение может совсем другая сеть.

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

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

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

Узкая практическая интерпретация задачи: определение координат пользовательских терминалов, работающих с той или иной мобильной сетью. Естественно, в качестве источника сигнала может выступать не только типовой радиомодуль смартфона 4G/5G – годится и какой-нибудь WiFi-сигнал или Bluetooth. Данный технологический “сеттинг” легко переносится и на сценарии с прочими передатчиками. При этом, например, в самых современных стандартах мобильной связи, обычно называемых 5G, для непрерывной, точной геолокации терминалов, что называется, и методы определены, и специальные сигналы выделены: определение местоположения терминала имеет решающее значение для сети. Конечно, геолокация, без привязки к GNSS, доступна и в более ранних системах сотовой связи (LTE).

Методов определения координат для решения только что описанной задачи неожиданно много, а если определяемое устройство в той или иной мере “кооперативное”, то есть, помогает измерять свои координаты, то и методов становится больше. Но и для “не кооперативного” случая методов не мало.

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

Теперь можно кратко рассмотреть основные методы геолокации, среди которых есть и редко упоминаемые.

Измерение времени распространения сигнала

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

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

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

Разработка алгоритмов коррекции ошибок по времени, которые возникают на этих направлениях, приводит к следующему методу геолокации передатчиков.

Измерение разности времени поступления сигнала

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

Запрос с подтверждением

Этот метод не пассивный. Он основан на отправке опорного сигнала в сторону определяемого узла с получением ответа от этого узла. Ответ отправляется через строго заданный промежуток времени после получения запроса. Здесь сигнал ходит в обе стороны, а опорный узел может измерить дальность по суммарному времени: предполагается, что расстояния в одну и в другую сторону – одинаковые. Далее метод работает аналогично первому (или второму, в зависимости от деталей). Заданный интервал ожидания позволяет компенсировать рассогласование локальных часов.

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

Угол (направления) на приёмнике

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

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

Затухание сигнала

Мощность передатчика часто известна. Не только потому, что она, предположим, определена спецификацией оборудования. Значение рабочей мощности может передаваться и в составе сигналов, обеспечивающих работу радиоканала. Зная мощность на антенне передатчика и мощность на принимающей антенне, можно вычислить расстояние по степени затухания. Так как, по условию задачи, опорных приёмников несколько, то измерение затухания позволяет определить координаты передатчика по расстояниям от нескольких опорных узлов.

Этот метод можно улучшить, если измерять не просто затухание, а “разность” затухания на нескольких опорных узлах – логика совпадает с измерением разности времени получения сигнала (см. выше).

Гибридные методы

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

***

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

Естественно, если снова отказаться от полностью пассивной роли сети, то в качестве источников сигналов, по которым измеряется деформация, могут служить сами опорные узлы, координаты которых известны по определению. Собственно, в LTE, в 5G, для таких измерений даже предусмотрены отдельные сигналы. А само поле деформации, если его заранее измерить, может служить основой для навигации и определения координат.



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

Практический пример того, как автоматизация процессов работы с исходным кодом и репозиториями (читать нужно: CI/CD) может легко и неожиданно “выйти боком”: токен с правами полного доступа к репозиториям Python и PyPI на GitHub долгое время находился в открытом доступе.

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



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

Кстати, очередная типовая академическая атака на процессоры: в этот раз – процессоры Intel и Indirect Branch Predictor (IBP) поверх Branch Target Buffer (BTB) – то есть, косвенное извлечение данных, относящихся к соседнему процессу на том же CPU, через подстановку фиктивных ветвлений и измерение состояний аппаратуры, пытающейся оптимизировать исполнение кода.

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

(Статья на Bleeping Computer.)



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

Google убирает из Chrome доверие оконечным сертификатам, выпущенным Entrust/AffirmTrust, начиная с 1 ноября 2024 года.

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



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

Сообщают про неожиданную замену кода JS-библиотеки Polyfill.io после смены администратора домена или администратора веб-сервера, раздающего код (насколько можно понять). Библиотека используется в качестве внешнего ресурса на многих сайтах, а в результате изменения кода некоторые браузеры пользователей перенаправляются на сторонние сайты. Это происходит без ведома веб-мастера, понятно, который может ничего и не замечать, поскольку для него перенаправлений нет.

Я, например, в 2019 году (но, конечно, и многим раньше) писал про внешние библиотеки на сайтах буквально следующее:

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

[…]

Администратор узла, с которого загружается библиотека, волен как угодно вмешиваться в её код. Реально передаваемый клиентскому браузеру файл может выбираться индивидуально, другими словами, атака, связанная с подменой библиотеки, может быть точно настроена на:

конкретные IP-адреса (т.е. конкретных пользователей);
конкретные типы браузеров;
определённое время;
любую комбинацию этих настроек.

То есть даже если администратор исходного веб-ресурса, test.ru в нашем примере, пытается как-то отследить корректность работы узлов, на которых находятся используемые библиотеки, он не в состоянии этого сделать: для IP-адресов, с которых проводится проверка, всё может работать корректно, при этом для других посетителей сайта картина окажется совсем другой.

(Отмечу, в скобках, что хотя бы SRI сейчас начали иногда использовать, но внедрение SRI – всё равно редкий случай.)



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

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

1.

В записи трафика присутствуют начальные TLS-сообщения, обеспечивающие распределение общего секрета. Если таких сообщений нет, то раскрыть трафик рассматриваемым способом – не выйдет. Выделить начальные сообщения нетрудно: они начинаются с байтового префикса с зафиксированным значением и имеют строгую структуру. В трафике всегда остаются ключи, согласованные сторонами по протоколу Диффи-Хеллмана (равно как и с использованием RSA или другого метода инкапсуляции). Я писал об этом ранее. Заметьте, что записываются и ключи, согласованные с использованием современных криптосистем, обладающих постквантовой стойкостью. Просто, считается, что их сложнее восстановить даже с использованием гипотетического квантового компьютера.

Из начального сообщения клиента выделяется блок с открытой частью клиентского обмена ECDH. Например, если используется ECDH на кривой P-256, то в специальном и легко обнаруживаемом блоке данных будет содержаться пара координат точки P на кривой P-256, представляющей собой открытую часть обмена ECDH. Это 64 байта (плюс дополнительные байты с указанием на используемый формат), то есть, два блока по 32 байта: координаты X и Y.

2.

Клиентская часть ECDH представляет собой результат умножения базовой точки на секретный скаляр – значение скаляра и есть секретная часть ECDH клиента: это натуральное число n. Открытая часть ECDH, точка P, это результат [n]G, где G – точка-генератор, заданная в параметрах криптосистемы.

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

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

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

Аналогичная схема сработает и для открытого параметра ECDH, который отправил сервер. Для раскрытия ключей защиты трафика – достаточно знать один из секретов: клиентский или серверный.

3.

Общий секрет в ECDH образуется путём умножения точки-генератора на произведение секретов сторон. В рассмотренном только что случае, достаточно умножить открытый параметр DH сервера Q на секрет клиента, вот так: [n]Q (именно эту операцию проделывает клиент в ходе штатного процесса установления TLS-соединения). Секрет клиента, как мы только что выяснили, был раскрыт при помощи квантового компьютера. Результат умножения даёт точку на кривой, координата X которой используется в качестве задающего значения для генерирования секретных симметричных сеансовых ключей защиты трафика TLS. Функция, генерирующая сеансовые ключи, известна. Так как защищённые записи содержат коды аутентификации, сторона, взломавшая секрет ECDH, может тут же легко проверить, что найденный секрет соответствует записанному трафику. Симметричные ключи позволяют расшифровать трафик сеанса, используя шифр, номер которого тоже записан в начальных сообщениях: эти сообщения как раз и нужны для того, чтобы, кроме прочего, стороны согласовали используемый шифр.

*

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



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

Очередное подтверждение того, что “диагонализация” неустранима для сколь-нибудь сложного процессора: типовая манипуляция (вряд ли эту схему нужно считать уязвимостью или атакой) под названием TIKTAG, раскрывающая “соседние” метки указателей на процессорах ARM при помощи перебора, подкреплённого измерением состояния кеша. (Кстати, метод логически совпадает с некоторыми атаками из области TLS.) Я не так давно писал, что архитектура современных процессоров на самом базовом уровне гарантирует, что подобные манипуляции возможны:

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



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