Выпустил ежегодное обновление технического описания TLS, которое я поддерживаю: в этом году лишь добавил в раздел “TLS и постквантовая криптография” краткое изложение внедрения X25519Kyber768 в браузере Chrome (и то – только про интеграцию в схему TLS; в принципе, это уже публиковалось на dxdt.ru).



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

Открытый ключ Kyber768 (постквантовой криптосистемы) – это 1184 байта, то есть, 9472 бита. Это заметно больше, чем занимает практический 8-килобитный ключ RSA. Для взлома такого RSA-ключа на квантовом компьютере (весьма гипотетическом), требуется количество логических кубитов в разных регистрах не меньше 24576 == 8K * 3. Но это теоретический минимум для логических кубитов, без учёта квантовых схем и возможной физической реальности. Поскольку технологические принципы реализации алгоритма Шора пока что не известны, оценки того, сколько физических кубитов и квантовых элементов потребуется для подобной разрядности, затруднены и сильно различаются, но нетрудно получить оценку в миллион (и более). И этот миллион квантовых эллементов, к тому же, может не сработать.

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



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


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

Один из самых старых способов скрытого получения доверенного доступа к не менее скрытым сервисам в Интернете (как IP-сети) это port knocking (метод “секретного портового стука”). Суть метода изложить не трудно: скрываемый сервис работает на закреплённом за ним номером порта, но доступ для TCP-соединений (например) к этому номеру порта открывается только для тех IP-адресов, которые выполнили установленный набор попыток подключений по другим номерам портов. Чуть более развёрнутое объяснение для тех, кто не сетевой инженер (опять же, используем TCP): TCP-соединение – это соединение “точка-точка”, на каждом из концов соединению соответствует IP-адрес и номер порта, где номер порта, можно считать, это просто 16-битное число; например, 10.11.12.13:14395 -> 10.101.102.103:22 – соединение клиента с номером порта 14395 на серверный номер порта 22 (это обычный номер для SSH); предположим, что доступ на сервере по порту 22 закрыт межсетевым экраном (брандмауэром), то есть, попытка соединения на этот номер порта будет проигнорирована сервером; но если некоторый клиент с IP 10.11.12.13 выполнит попытки TCP-подключения на другие номера портов сервера по заданной ключевой последовательности: 1011, 1022, 1033, то брандмауэр, который фиксирует у себя попытки подключения, откроет подключения по номеру порта 22, но только для соответствующего IP-источника.

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

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

Идея port knocking очень гибкая, потому что достаточно общая: во-первых, годится и TCP, и UDP, и ещё что угодно “с номерами”; во-вторых, последовательность “стука” не обязательно фиксированная – если есть общий секретный ключ и общее время, то номера можно генерировать псевдослучайным образом; в-третьих, вежливо постучать клиент может в один узел (IP-адрес), а доступ ему откроется на совсем другом (так тоже бывает). Поэтому именно “портовый стук” представляет собой эффективный дополнительный инструмент, затрудняющий обнаружение скрытого сервиса разными активными сканерами (что называется – connection probe). Если последовательность стуков неправильная, то, понятно, никто на неё просто не ответит, поэтому и никакой новой информации получить не выйдет.

Действительно, номера портов, которые открывают возможность соединения, видны в сетевом трафике. Но если это псевдослучайная последовательность, толку, в плане анализа трафика и сервисов, от этого не очень много – мало ли кто и какие порты сканирует? Добавление же контекста в DPI тут существенно повышает сложность анализа трафика. К port knocking можно добавить пакеты (UDP, например), содержащие дополнительные ключи, что, вместе с заменой адресов, совсем хорошо перемешает информацию, ещё больше затруднив анализ и построение контекста. Интересно, что через номера портов, в принципе, можно передавать и выбранный номер входного узла, к которому требуется получить доступ. То есть, конкретный вход в туннель и его свойства определяются выбранной последовательностью “стуков”. Впрочем, если простой port knocking в линуксах, например, относительно легко реализуется силами iptables (типовой межсетевой экран), то расширенные, хитрые способы – потребуют отдельного специализированного модуля, обрабатывающего низкоуровневую информацию о соединениях.



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

В октябре 2008 года, пятнадцать лет назад, на dxdt.ru, например, вышла записка про загадочную программу DARPA GANDALF – носимую систему поиска, идентификации и определения координат радиопередатчиков:

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

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



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

Атака Блейхенбахера, использующая дефекты дополнений в RSA при RSA-шифровании, всё ещё работает на практике для многих приложений (пусть и с оговорками), что показано в практическом исследовании под названием The Marvin Attack (Hubert Kario, RedHat). Исходной атаке, заметьте, 25 лет с момента публикации. RSA, конечно, устарела, – особенно, в роли RSA-шифрования, – а в современных TLS-решениях (например) не должна бы использоваться, однако пока что никуда не девается из приложений, далеко не только в TLS.



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

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

Papyrus 2966
Venetus A

Что бы это могло означать? Скорее всего, на целом папирусе в этом месте была записана другая, более старая, версия строки 6.4, оканчивающаяся другим словом: στομαλίμνης. Полностью так: “μεσσηγὺς ποταμοῖο Σκαμάνδρου καὶ στομαλίμνης” (дословно: “между рекой Скамандр и лагуной/лиманом”), и эта версия длиннее, чем “современный” вариант, как в Venetus A, поэтому последнее слово могло “уехать” (“The Ptolemaic papyri of Homer”, Köln: Westdt. Verl. 1967). Кусок буквы как раз похож на μ, а возможно, что и на μν тоже тянет.

Считается, что на современный вариант, с потоками (ῥοάων) Ксанфа, мог переписать Аристарх Самофракийский или кто-то из работавших с ним. Версия со Скамандр-рекой указана в комментариях на полях цитируемого манускрипта Venetus A: там буквально написано, что вариант Скамандр-реки и лагуны записан в “старом тексте”, но его поменяли, – поменяли раньше, не в момент записи Venetus A, – на Симоент и Ксанф, потому что (Аристарху) так показалось географически точнее по событиям сеттинга. Кстати, строка в переводе Гнедича: “Меж­ду бре­гов Симо­иса и пыш­но­ст­ру­и­сто­го Ксан­фа” (почему “пышноструистый” – не ясно, но это всё известные особенности перевода Гнедича).

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

Etheken-1
(На кусочке папируса. 230 г. до н.э. Сомнительно, конечно, что там “Ν”.)

Etheken-2
(Манускрипт Venetus A. 10 в.)

Etheken-3
(Современный веб-браузер. 2023 г.)

Естественно, сотрудник скриптория, который записал Venetus A, тоже мог пользоваться источниками, которым было по тысяче или около того лет (оно примерно так и считается сейчас).

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



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

В сентябре 2023 года на dxdt.ru записки выходили часто, так что некоторые можно снова отдельно отметить:

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

Простой пример “про измерения” – о сложностях работы с погрешностями, которые не отражают в тематических статьях СМИ;

VPN и DNS-сервисы с ECS: утечка сведений об адресах – сервисы DNS-резолверов могут выносить наружу данные об исходном сетевом подключении клиента;

Технические подробности: постквантовая криптосистема X25519Kyber768 в TLS – описание некоторых деталей использования криптосистемы с постквантовой стойкостью, которую недавно внедрили в браузер Chrome;

Квантовые компьютеры и аксиома непрерывности – как себе представлять квантовый компьютер и как его (гипотетическая) работа связана со свойствами онтологической границы между макро- и микрообъектами.



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

Raspberry Pi 5, как пишут, выйдет на новом чипсете: BCM2712 с четырёхъядерным Cortex-A76 и новым видеопроцессором; максимальный объём ОЗУ – те же 8Gb, но это выглядит достаточным для Rasberry Pi. А вот по питанию обещают существенно большее пиковое потребление – 12W (против заявленных 8W у Pi 4).

Я постоянно использую несколько Raspberry Pi нескольких поколений, начиная с первого (до сих пор работает, как ни странно) – эти одноплатные компьютеры успешно играют (или играли) вот такие роли: сервер для SDR-приёмника (радио-USB-Ethernet); управляющий сервер для бэкапов; выделенный лог-процессор (собирает с разных машин логи и периодически строит графики/диаграммы, которые можно просматривать браузером); в качестве контроллера погодной станции; в качестве WiFi-точки доступа с записью трафика. Список неполный – штука очень удобная, поскольку позволяет аппаратно разделить выполнение задач по, так сказать, разным темам. На dxdt.ru, впрочем, Raspberry Pi упоминается не так часто, но упоминается – например, в заметке про вычисления на разной аппаратуре или про модули LoRa.



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

Кстати, в продолжение предыдущей заметки. В исходной работе (почему-то по оригинальной ссылке её больше нет, но, думаю, можно найти) в качестве примера используется модификация аппаратного генератора (датчика) случайных чисел, которая приводит к снижению эффективной энтропии до значений, доступных для быстрого прямого перебора. Что это означает и как может работать на практике, а не в качестве примера? Конечно, если бы речь шла о прямой замене на максимальное количество в 2^32 различных значений для 128-битной разрядности, то такой дефект элементарно обнаружился бы: он не только быстро проявится на статистике, но и будет выглядеть максимально подозрительно даже для самых простых методов – 2^32 16-байтных значений сейчас влезает в ОЗУ некоторых ноутбуков. Поэтому речь идёт о другой схеме. Практическая реализация должна работать в другом контексте: предполагается, что сторона, которой известно секретное значение, по нескольким результатам выдачи генератора (задающие элементы – их может быть даже два или три) за 2^32 (например) операций вычислит внутреннее состояние генератора и получит следующее значение, которое генератор выдал (ну или получит 116 битов из 128, а остальные – подберёт на следующем шаге). Во многих протоколах значение случайного числа, которое выдал генератор, передаётся в открытом виде, так что его можно прочитать тем или иным способом. А дальше уже, из-за свойств симметричных шифров и/или хеш-функций, можно найти точные ключи перебором. При этом в выдаче всегда остаётся некоторая добавленная энтропия, – предположим, аппаратная, – которая мешает вычислительно отличить выдачу генератора от качественной, если не известен ключ.



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

Десять лет назад на dxdt.ru, например, появилась заметка про занятную реализацию аппаратных закладок. Цитата:

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



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