В Германии нашли (англ.) римский навесной замочек с золотым корпусом. Размер замка всего лишь 11 на 12 миллиметров. Датируют четвёртым-пятым веком (“около 400 года”). На коллаже ниже – реконструкция (большая) и фотография найденного замка (внизу слева).

Roman Lock
(Credit: LWL /S. Brentführer.)

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

Roman Lock, inside
(Credit: LWL/S. Brentführer.)
Это, очевидно, увеличенная модель запорного механизма. Цепочка должна скользить по желобу, который на картинке виден слева (ориентирован вертикально). Когда замок заперт, скольжению мешает ригель (засов), зацепляющий звено цепочки. Ригель подпёрт “собачкой”, которая закреплена на задней стенке (плоский светлый элемент).

Roman Lock, inside
(Credit: LWL/S. Brentführer.)
Ключ вставлен и повернут. Бородка прижала “собачку” к стенке, ригель сдвинут – цепочку можно вынуть.

Реконструкцию внутреннего механизма сделали по результатам томографии исходного замка.

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



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

В DNS-зоне dxdt.ru уже несколько лет присутствует HTTPS-запись. Эта запись позволяет размещать много полей, например, конфигурацию ECH (Encrypted Client Hello). Можно указать и так называемые “хинт-адреса” – IPv4, IPv6, – что я на днях и проделал, ограничившись, впрочем, IPv4-адресом. Указан тот же адрес, что и в A-записи. Ниже приведён скриншот страницы сервиса audit.statdom.ru с параметрами HTTPS для dxdt.ru.

Screenshot, HTTPS record data

Вообще, браузеры сейчас не используют “хинт-адреса” из HTTPS-записей. Возможно, это правильно, потому что спецификация несколько “перекручена”: строго говоря, HTTPS-запись – это разновидность SVCB-записи, а последняя допускает не только разные поля и префиксы, но и поддерживает два различных “режима” рекурсивного опроса; если этого мало, то один из этих режимов (AliasMode) усложняет и так самую путаную часть DNS – обработку CNAME. Так что далеко не факт, что браузеры начнут поддерживать SVCB полностью, однако для конфигураций ECH поддержка уже есть.

Логика, которая скрывается за добавлением “хинт-адресов”, такая: можно из DNS запросить сразу HTTPS-запись для искомого имени хоста; если ответ получен, то в этом ответе уже будет и перечень IP-адресов, к которым можно подключаться (в дополнение к адресам может быть указан перечень протоколов, криптографическая конфигурация для скрытого доступа и т.д.). В теории, “хинт-адреса” в HTTPS-записи экономят запрос на извлечение A-записей (и AAAA-записей), однако спецификация отдаёт приоритет последним – то есть, A- и AAAA-записям, – мотивируя это заботой о работе балансировщиков нагрузки.

Посмотреть HTTPS-записи можно при помощи “dig -t HTTPS”.



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

Реализации ML-KEM могут быть очень быстрыми, быстрее, чем X25519 – это относится к гибридам в браузерах. Например, реализация ML-KEM-768 для OpenSSL из проекта OpenQuantumSafe для инкапсуляции ключа работает в пять раз быстрее, чем X25519 в том же OpenSSL “при прочих равных” (декапсуляция – в три раза быстрее):

(openssl speed X25519 mlkem768)

           keygens/s  encaps/s  decaps/s
X25519     26646.1    12213.9   24366.2
mlkem768   53101.6    62756.0   63933.0

То есть, в гибридной схеме, где ML-KEM присоединяется к X25519, будет весьма небольшой рост вычислительных затрат по сравнению с X25519. При этом браузер Firefox, скажем, ещё и экономит время на генерирование ключей, поскольку использует один и тот же открытый параметр X25519 и в гибриде, и в отдельном варианте. Понятно, что на серверной стороне разницы тут нет – серверу так или иначе придётся для гибрида выполнить и X25519, и ML-KEM. Но всё равно это лишь небольшой дополнительный расход вычислительных мощностей.

Конечно, ML-KEM, согласно стандарту, может использоваться отдельно, тогда схема будет и работать быстрее, и постквантовую стойкость обеспечивать; гибрид используется для подстраховки – и совсем не лишней подстраховки, надо заметить. А работает ML-KEM быстро потому, что там используется NTT (“теоретико-числовое преобразование”) и, соответственно, быстрые операции с полиномами.



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

CAA-запись в DNS позволяет управлять тем, какие УЦ могут выпускать сертификаты для имён в соответствующей доменной зоне. Проще говоря, в DNS публикуется имя УЦ, которому разрешено выпускать сертификаты. Чьё имя не указано – тем выпускать нельзя. (Есть тонкости с Wildcard-именами и уведомлениями о попытках заказа сертификата.) Интересно, что отсутствие CAA-записи в зоне разрешает выпуск всем. А если в CAA для имён УЦ указать пустой список (“;”), то выпускать нельзя никому.

То есть, тут мы неожиданно, на практике, сталкиваемся с весьма важной особенностью из области теоретической математики вообще и математической логики в частности. Речь про логики и формальные системы разного уровня. Пустой ящик – имеет совсем другой смысл, чем отсутствие ящика. Отсутствие ящика – это отсутствие CAA-записи, которое отсутствие вовсе и не эквивалентно пустому значению CAA-записи. Ящик есть, но он пуст – это наличие CAA-записи, значение которой – пустое множество. В первом случае, пустое множество – это “количество” CAA-записей в зоне. Во втором случае – количество УЦ, имена которых указаны в CAA-записи. Пустое множество при этом одно и то же, но оно укладывается в разные, рекурсивные ящики. Так можно построить натуральные числа.

Конечно, в спецификации этот подход использован не с целью построения натуральных чисел, а всего лишь с целью сделать использование CAA мягким. Иначе без доступа к DNS вообще не получилось бы сертификаты заказывать у УЦ, которые следуют CAA-записям.



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

В Let’s Encrypt выпустили первый TLS-сертификат со сроком действия шесть дней. Пишут, что сертификаты на шесть дней не будут содержать не только ссылки на OCSP, но и ссылки на CRL. То есть, механизмов проверки отзыва – не будет. В опубликованном сертификате, впрочем, адрес OCSP-респондера почему-то указан. Обратите внимание, что в сертификате поле Subject вообще пустое – это тоже новый формат: указание Subject/CN некоторое время назад сделали опциональным. Сам сертификат – ниже.

-----BEGIN CERTIFICATE-----
MIIDSzCCAtGgAwIBAgISA7CwFcGk4mQWEXMacRtxHeDvMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NjAeFw0yNTAyMTkxNzMwMDFaFw0yNTAyMjYwOTMwMDBaMAAwWTATBgcqhkjOPQIB
BggqhkjOPQMBBwNCAAQoSItt2V1aocI5dxrKR8iLfmm0KiVvOhiwKByzu2kLeC7C
0BdfAgtwdICdkuEhAXokhXLq6DNZZgmh5T4flVwZo4IB9zCCAfMwDgYDVR0PAQH/
BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0j
BBgwFoAUkydGmAOpUWiOmNbEQkjbI79YlNIwVQYIKwYBBQUHAQEESTBHMCEGCCsG
AQUFBzABhhVodHRwOi8vZTYuby5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6
Ly9lNi5pLmxlbmNyLm9yZy8wKAYDVR0RAQH/BB4wHIIaaGVsbG93b3JsZC5sZXRz
ZW5jcnlwdC5vcmcwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEFBgorBgEEAdZ5AgQC
BIH2BIHzAPEAdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAAAZUf
d/zOAAAEAwBHMEUCIFNd51TfSNiJrO+294t49C5ANc4oC7gTUzf7xnlNlhKsAiEA
wi5hfiC9SsKLxlTQ0sctUxhLmdYh40r6ECWQS/yWw2AAdwDgkrP8DB3I52g2H95h
uZZNClJ4GYpy1nLEsE2lbW9UBAAAAZUfd/0TAAAEAwBIMEYCIQCs2NuZIUIloOaH
1t9eXDKb8bjoWESBPsK4i2BxMvEIswIhAOMNaQNyr1YkzrcNUz15qGV0oVLg5BJN
+ikWxXOdcRHFMAoGCCqGSM49BAMDA2gAMGUCMDANqy7G09AIwzXcd7SNl7uFwhC+
xlfduvp1PeEDHc/FA9K3mRYkGXuKtzNdOh7wcAIxALjEMDmBQiwXbB447oGkaZAe
0rqxA3EtNV5wj0obeObluj/NgUsVEG9OqiBIoggFRw==
-----END CERTIFICATE-----


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

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

На слуху сейчас пара методов защиты DNS, а также косвенно связываемый с DNS метод защиты доступа, реализующий аутентификацию по имени (TLS). Пара методов, относящихся непосредственно к DNS, это криптографическое расширение самой системы – DNSSEC, а кроме того защита трафика при помощи TLS – DNS-over-TLS (далее – DoT, сюда же относится “надстройка” в виде DNS-over-HTTPS, DoH). При этом часто можно услышать, что TLS, используемый для веба, – то есть, HTTP-over-TLS, – решает вопрос подмены DNS, так как позволяет аутентифицировать веб-узел по имени.

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

Основное отличие TLS, как метода защиты в вебе, для HTTPS, от защиты DNS состоит в том, что для срабатывания TLS в вебе клиент всё же должен подключиться к атакующему, подменному узлу. А это совсем другая поверхность атаки. Например, атакующий узел может “проэксплуатировать” какие-то дефекты клиентской реализации TLS, что отменит требование о наличии легитимного сертификата: в особо продвинутых случаях ни один HTTP-запрос даже не будет отправлен, но клиент окажется взломан, получив код с атакующего узла. DNS, срабатывая раньше, позволяет предотвратить _само_ _подключение_ к подменному узлу по TLS. То есть, эффективная защита DNS предоставляет тут дополнительный рубеж безопасности. Поэтому предположение, что использование TLS с сертификатами в HTTP-over-TLS достаточно для защиты клиента, и поэтому не нужно защищать DNS, так как TLS решит все проблемы выше уровня IP, – ошибочно. (Не будем, впрочем, забывать, что TLS-сертификаты можно получить для IP-адресов тоже, даже в Let’s Encrypt автоматом.)

Но с защитой DNS есть свои проблемы. Вернёмся к паре упомянутых выше методов такой защиты. Первый из них – DNSSEC. Эта технология крайне мало распространена в доменных зонах. Зато DNSSEC касается буквально всех пользователей валидирующих резолверов, так как используется в корневом домене. Всего лишь несколько десятичных цифр позволяют отломить зону верхнего уровня целиком, при этом аварию DNSSEC в большой зоне замечают все и сразу, очередной раз демонстрируя, что про DNS мало кто вообще в курсе, пока эта технология работает, но как только ломается – о DNS узнаёт едва ли не каждый. Второй метод защиты, – DoT/DoH, – распространён существенно больше, поскольку на клиенте встроен прямо в браузеры, но касается только тех сессий, в которых используется. Так вышло потому, что эти технологии тоже принципиально различаются: и по шагам использования, и по уровню применения (почти как HTTP-over-TLS).

DNSSEC методами цифровой подписи обеспечивает аутентификацию данных в DNS. Основная практическая особенность DNSSEC в том, что она позволяет полностью отделить доверие источнику данных от доверия составу данных: не важно, каким образом и от какого узла получены DNS-данные с подписями DNSSEC, главное – чтобы подписи сходились к доверенному ключу. Доверенным, обычно, выступает ключ подписи ключей глобальной корневой зоны.

Если TLS позволяет удостоверить только узлы в рамках сессии, но не на уровне DNS, то DNSSEC, архитектурно, работает в другой плоскости: информация в DNS касается не сессий и узлов, а правил определения узлов и создания сессий. Поэтому, если поступили данные с DNSSEC-подписями, то DNS-клиенту всё равно, какой узел эти данные прислал, если подписи сходятся. В TLS, несомненно, тоже есть аутентификация передаваемых данных, однако эта аутентификация возможна только по конкретным сессионным ключам, то есть, здесь всё на уровне “передачи данных”. В TLS возможно только узнать, что данные передаёт тот сервер, у которого есть секретный ключ от ключа в сертификате, но ничего нельзя узнать про сами передаваемые данные. Поэтому, если требуется проверить сами данные, TLS не помогает, а нужны дополнительные методы.

Вспомним теперь, что DoH используется только на “последней DNS-миле”, то есть, от клиента к рекурсивному резолверу. DoT может использоваться и на авторитативных серверах (например, поддерживается NS wikimedia.org и facebook.com), но, всё же, распространена эта технология тоже только на “последней DNS-миле”. Таким образом, DoT/DoH не позволяют проверить подлинность DNS-данных, как их видит резолвер, но позволяют аутентифицировать резолвер и зашифровать данные на “последней DNS-миле”. DoT/DoH скрывают трафик от пассивно прослушивающей канал стороны – обычные DNS-пакеты, напротив, ходят в открытом виде, так как DNSSEC никакого зашифрования не предусматривает. Но “последняя миля” тут очень важна: трафик DNS к резолверу, соответствующий запросу клиента, всё равно ходит в открытом виде (если, конечно, резолвер не использует только DoT в направлении авторитативных серверов, но так сейчас работать DNS не будет на практике). В DNS-запросы могут быть встроены маркеры, которые позволят различать источники этих запросов на промежуточных узлах “за резолвером”.

Интересно, что в DNS, как в систему, давно встроены базовые методы защиты от спуфинга ответов. Встроены они на уровне пакетов и UDP-обмена. Классический элемент пакета – это поле TransactionID, которое содержит 16-битный идентификатор: предполагается, что корректный ответ сервера будет содержать TransactionID, совпадающий с присланным в запросе, и это позволит клиенту (резолверу) отличить настоящий ответ от “подспуфленного”, который присылает узел, не видевший запроса. Второй элемент – номер порта источника, указываемый в UDP-пакете. Работать должно аналогично схеме с TransactionID, но с учётом особенностей транспорта: то есть, ответ на тот же номер порта, который указан в качестве источника (и тут необходимо “передать привет” NAT). Есть и более экзотическая схема, построенная на рандомизации регистра символов имени (DNS Case Randomisation). Эти методы работают где-то между DNSSEC и DNS-over-TLS: сторона, видевшая запрос, всё равно может подделать ответ.

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



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

Пишут, якобы The New York Times разрешили и рекомендуют использование LLM/AI-систем при подготовке материалов к публикации журналистами (newsroom staff). Впрочем, там в начале речь про внутренний инструмент с LLM – однако непонятно, насколько он “внутренний”, то есть, насколько это собственная разработка. Но тенденция забавная: новостные заметки и статьи СМИ, которые обработаны ИИ/LLM, опять попадут в ИИ/LLM, но уже в качестве материалов для “обучения” (да ещё и с корректировками новостника-человека). Роботы переписывают то, что другие роботы написали для роботов (поисковых, например). Процитирую заметку на dxdt.ru от декабря прошлого года:

Заметьте, что текст может быть не только газетной статьёй, но, как уже показывает практика, и законопроектом, и каким-то более важным распоряжением. То есть, вроде, формальный статус ИИ LLM тут получается на уровне “используется в работе сотрудниками”, а реальный статус – провайдер сервиса получает рычаги для целевого влияния на результат: такой spear phishing в квадрате.

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



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

На базе нескольких простых микроконтроллеров ESP32S построили приёмник (фактически – фазированную антенную решётку), который вычисляет разностные характеристики сигналов WiFi, позволяя, кроме прочего, определять местоположение передатчиков, даже тех, которые находятся не в прямой видимости (а, например, за углом). Называется ESPARGOS. WiFi, понятно, сейчас есть в каждом смартфоне (по определению). И не только в смартфоне.

(via)



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

В продолжение недавней записки про числа в ML-KEM. Один из ключевых параметров ML-KEM, одинаковый для всех наборов, это число (модуль) 3329. Почему выбрано именно 3329? Был ли выбор “случайным” (а иногда используют проверяемые методы для выбора параметров) или это число подобрано специально?

Число 3329, обозначаемое q, в ML-KEM выбрано строго специально. И вот из каких соображений. Весь практический вычислительный смысл ML-KEM (Kyber) в преобразовании (NTT), позволяющем быстро производить арифметические операции с полиномами. Чтобы быстрые операции NTT стали возможны в ML-KEM, число q должно быть простым, а (q-1) должно делиться на 256. (Более “общо” – делиться должно на степень двойки.) 256 – это другой параметр ML-KEM, его значение продиктовано разрядностью операций (256 бит).

То есть, 3329 – простое, (3329 – 1)/256 == 13. Если эти требования не выполняются, быстрый NTT работать должным образом не будет, поскольку это не настолько универсальный алгоритм, умножать полиномы “в лоб” – очень медленно, и другие быстрые алгоритмы – тоже оказываются медленными по сравнению с NTT. Неподалёку от 3329 не так много чисел, обладающих описанными свойствами: 257, 769, 3329, 7681, 7937. При этом, нужно выбрать число поменьше (важна экономия каждого бита), но чтобы не слишком выросла вероятность получения неверного результата при работе криптосистемы. Для 257 и 769 вероятность ошибки заметно больше. Поэтому авторы алгоритма выбрали 3329.



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

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



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

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

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

Дело в том, что “цифровой двойник” может прямо утверждать, что он не двойник никакой, а настоящий, но потерял смартфон, поэтому и не может получить код. Или часы в смартфоне “поломались”, ушли вперёд “и такой вот код”. Заметьте, что очень многие схемы манипуляции и введения в заблуждение именно такой момент и используют в качестве опорного при установлении “контакта” с атакуемым: “потерял ключ”, “пёс сожрал пропуск и другие документы”, “кормила чайку и смартфон уронила в пруд”, “забыла, где именно машина на парковке”, ну и так далее. Тут можно ещё заметить, что протокол требует предоставления кода вызывающей стороной, но направление вызова можно регулировать, используя промежуточные звенья: “Наш общий знакомый Имярек срочно просит ему немедленно же перезвонить!”. Естественно, успехи компьютерных технологий позволяют “цифрового двойника” установить в качестве “прокси” между реальными персонами, чтобы получить актуальный код в нужный момент. Так что не ясно, сильно ли TOTP-приложение помогает, на фоне кодов из SMS.



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