Кстати, в рамках свежего обновления, на сервис ТЦИ audit.statdom.ru, кроме прочего, добавлен вывод HTTPS-записи (при наличии, см. скриншот) и определение поддержки MLKEM+X25519 для TLS-узлов (см. второй скриншот).
На скриншоте – HTTPS-запись DNS-зоны, размещённой на сервисе Cloudflare. Можно видеть сведения об IP-адресах, указание на то, что присутствует ECH-конфигурация (сама конфигурация пока что не выводится).
Обнаружение поддержки постквантовой гибридной криптосистемы MLKEM+X25519 выполяется TLS-сканером отдельно (естественно, это, пока что, редкая криптосистема, если распространённость определять по количеству TLS-узлов).
Комментировать »
Немного занятной и техничной практики DNS. Если взять зону kommersant.ru, то нетрудно выяснить, что с этой зоной что-то сильно не так. Вот “покрасневший” скриншот из отчёта открытого сервиса audit.statdom.ru:
Почему тут указаны только “адреса”, которые отмечены как недоступные? Во-первых, это не адреса, а имена хостов (хостнеймы), которые выглядят похожими на IP-адреса, но намётанный глаз сразу обнаружит подвох: всё выдаёт крайняя справа точка, отделяющая корневой домен; это так называемый FQDN – Fully Qualified Domain Name (“полное имя домена”). Во-вторых, серверы имён, обозначенные таким образом, доступны быть не могут, поскольку в глобальной DNS нет имени первого уровня “20.” (две цифры – 2 и 0).
Между тем, если попробовать зайти на соответствующий апексу зоны веб-сайт kommersant.ru браузером, то, скорее всего, сайт откроется. Получается, что всё работает? Нет, далеко не всё. Но это лишь очередное подтверждение того, что DNS, как сервис и совокупность технологий, в сочетании с вебом, обладает очень высокой степенью устойчивости к ошибкам настройки (кроме, конечно, DNSSEC).
Посмотрим, как же настроена зона kommersant.ru на момент написания данной записки. В домене верхнего уровня RU зона делегрована на два сервера имён (NS) с именами ns.kommersant.ru. и ns5.kommersant.ru., что, скажем, подтверждается следующим фрагментом скриншота того же отчёта:
Поскольку это так называемые “субординатные” имена NS, – то есть, находящиеся в той же зоне, которая делегируется, – серверы зоны RU возвращают соответствующие glue-записи (в отчёте они не показаны). Glue-записи содержат IP-адреса для имён делегирования (ns.kommersant.ru. и ns5.kommersant.ru.). В DNS, glue-записи необходимы для того, чтобы исключить возможность бесконечной рекурсии. Представьте, что зона test.ru делегирована на ns.test.ru. Как же определить IP-адрес ns.test.ru? Ведь для его определения нужно знать адреса NS-ов зоны test.ru, а чтобы их знать, нужно опросить зону test.ru. Как найти адреса? Верный ответ – никак не найти, если бы только не было glue-записей, которые-то и приносят нужные адреса сразу.
Почему здесь вообще возникает такая проблема с аресами/именами? Потому, что в качестве значения DNS-записи NS могут быть указаны только имена хостов. Но соединение и обмен данными в глобальном Интернете происходят по IP. То есть, для отправки запросов и получения ответов нужны именно IP-адреса. Можно ли всё же указать IP-адреса в NS-записях? Нет, нельзя. Причина в том, что значения записей в DNS не могут подразумевать какой бы то ни было протокол обмена данными. Это очень важный и логичный момент: DNS превратилась бы в непонятную путаницу, если бы какие-то дополнительные сведения об установлении соединения “подразумевались” бы: в той же NS-записи – получаем то адрес, то хостнейм, то “какие-то минусы”, то “здесь админы рыбу заворачивали”. Заметьте, сюда ещё накладывается и тот занимательный факт, что вообще невозможно вне контекста отличить запись IPv4-адреса от хостнейма. В практике DNS есть много случаев, когда тот или иной протокол доступа, да ещё и с параметрами, прямо указывается, но корректно это делается только при помощи префиксов в самом имени, например: _443._tcp.name.test.ru. (обратите внимание: предыдущая DNS-строка – не хостнейм!).
Итак, NS-запись должна содержать имя хоста, соответствующее серверу имён. Для разрешения возможных циклов – предусмотрены glue-записи.
Однако доверенным источником полного списка серверов имён для зоны является не делегирующий сервер, не glue-записи, а ответ авторитативного сервера зоны на запрос NS. По этой причине сервис тестирования DNS-узлов получает список этих узлов с авторитативного сервера. Ну, или пытается получить. Серверы, указанные для kommersant.ru в списке делегирования, на запрос NS возвращают те самые “подложные” хостнеймы, сформированные из IP-адресов четвёртой версии. То есть, так указано в файле зоны. Указано неверно. Распространённая ошибка. Видимо, ничего не поделать. Отличить тут адрес от хостнейма программное обеспечение не может, поэтому DNS-сервер будет отвечать тем, что ему написано. А написаны, как уже указано выше, заведомо “неразрешимые” имена (нет, это не IP-адреса; IP-адреса нельзя указывать в NS-записях, поэтому резолвер никак и не может понять, что это, якобы, “IP-адреса”, потому что это хостнеймы).
Почему же работает веб-сайт? Вот почему. Для большинства сценариев доступа к вебу нужен IP-адрес, который передаётся в A-записи DNS. По IP-адресам из glue-записей для обсуждающейся зоны kommersant.ru отвечают серверы имён, которые возвращают A-записи, содержащие корректный и доступный IP-адрес, который указывает на веб-узел. И тут многое зависит от рекурсивного резолвера. Если этот резолвер использует непосредственно адреса из glue-записей для того, чтобы запросить A-записи, то всё сработает. Но glue-записи небезопасно кэшировать – кэшировать следовало бы хотя бы минимально проверенные значения NS, которые требуется достать с авторитативных серверов. Если резолвер попробует получить список NS корректным способом, то он обнаружит дефектные записи, после чего попробует отправить ещё несколько запросов и, скорее всего, всё же найдёт A-запись, чтобы вернуть её клиенту. То есть, резолвер, обычно, настроен так, чтобы хоть что-то достать из DNS (не всегда это правильный выбор, поскольку регулярно служит фундаментом для целевых атак). Так что, спрашивая и переспрашивая, игнорируя и как-то исправляя ошибки в зоне, но резолвер, в большинстве случаев, сможет найти IP-адрес, чтобы потом по этому адресу попробовал подключиться браузер, если только способ достать данный IP-адрес существует. Что же касается других функций DNS – ну, они в данной зоне просто недоступны (тем более, что упомянутые серверы имён не поддерживают современный EDNS-доступ вообще).
Вот. У подобной некорректной настройки DNS есть ещё много неприятных побочных эффектов, связанных с надёжностью и безопасностью. А ведь существует ещё и QNAME Minimization.
(Недавно я описывал другую занятную ошибку настройки DNS, из “дикой природы”, наблюдающуюся в куда более популярной зоне vk.com. Представьте, кстати, куда все эти интернеты прикатятся, если DNSSEC, – несравнимо более требовательная к уровню аккуратности технология, – вдруг получит максимальное распространение.)
Комментировать »
Google, периодически, даже для веб-интерфейса электронной почты, поддерживаемой в рамках GoogleApps, начинает спрашивать телефонный номер, который, якобы, нужен “для повышения безопасности”. Повышение безопасности планируется проводить отправкой кода на указанный телефонный номер (SMS, звонком, может, ещё как-то). В некоторых случаях без указания телефонного номера при создании Google-аккаунта вообще не обойтись, это понятно. Но отдельно печалит то, что даже при подключении с правильными реквизитами аккаунта к веб-интерфейсу почты “из других сетей”, кроме привычной “авторизатору” Google, в почту эта система больше через веб не пускает, а настойчиво требует указать телефонный номер. Конечно, там есть другие варианты (дополнительный email-адрес, ещё что-то), но почему-то эти методы не срабатывают и всё опять возвращается к телефонному номеру (возможно, кроме вмешательства технической поддержки, если она там есть – этот путь я не проверял).
Печально это вот почему: уж сколько лет говорится, что телефонный номер – это ресурс оператора связи, который никак не может принадлежать пользователю-абоненту; оператор связи совсем не обязан как-то дополнительно “защищать” конкретный абонентский телефонный номер и телефонный трафик (хоть и может, конечно). Более того, само наличие схем с отправкой простых кодов на телефонные номера нередко приводит к возникновению уязвимостей, вообще не имеющих отношения к телефонии.
Но ничего на этом направлении не меняется: понятно, что Google тоже нужно собирать телефонные номера.
Комментировать »
Вот одна из интересных концепций, позволяющих оптимизировать взаимодействие интернет-узлов по разным сессионным протоколам: “при повторном подключении – сразу отправляем полезные данные для приложения”; это вместо сложного этапа установления соединения, требующего отправки и приёма нескольких сообщений, до того, как полезные данные станут доступны приложению.
То есть, если при первом соединении два узла должны выполнить некоторый обмен пакетами по схеме “запрос-ответ-подтверждение”, чтобы на обоих концах “сокета” сформировался синхронный контекст, то почему бы не запомнить контекст на стороне клиента и при повторных соединениях обойтись без дополнительных шагов для формирования нового контекста, а просто отправить вместе с начальным сообщением немедленно и полезные данные?
Пример уровня сетевого транспорта – TCP Fast Open, который, почему-то, известен мало: здесь клиент в рамках первого TCP-соединения, выполняемого по обычной схеме с созданием сессии, получает специальный идентификатор (cookie), чтобы при последующих соединениях сразу начать передачу полезных данных.
В TCP штатно используется схема установления соединения с тремя этапами согласования (SYN, SYN-ACK, ACK), когда передача данных приложению начинается только после завершения всех трёх этапов. И тут уже есть интересный момент, про который, бывает, забывают даже специалисты: вообще-то, данные между узлами в TCP начинают передаваться сразу же, с первым пакетом (SYN), так же, как, скажем, в UDP; потому что если бы данные не передавались (как минимум, заголовки с идентификаторами и параметрами), то и установить соединение было бы невозможно – это очевидно. То есть, с точки зрения возможности “отправить пакет в одну сторону”, TCP не слишком-то отличается от UDP на уровне, так сказать, NOC. Другое дело, что начальная информация TCP, составляющая обмен для установления сессии, не должна быть штатно доступна на уровне абстракции “сокета”. И вот тут-то начинаются отличия от того же UDP. Но сами по себе пакеты TCP вполне могут служить транспортом для “безсессионной” доставки данных.
Вариант Fast Open, если оставить за скобками детали, лишь обобщает эту возможность (о чём прямо написано в RFC), выводя её на уровень того самого “сокета”. Это делается при помощи дополнительной информации (cookie), подтверждающей, что сессия уже была установлена с соответствующими параметрами. Это и есть пример внедрения метода “сразу отправляем полезные данные”. Для реализации аналогичных логических схем в других протоколах используется, конечно, и UDP – посмотрите на WireGuard через Wireshark.
На уровне выше – тоже есть примеры: в TLS 1.3 имеется достаточно продвинутая сокращённая схема установления соединения 0-RTT (Zero Round-Trip Time), где клиент сразу же начинает передачу полезных данных в защищённом виде, если известна дополнительная информация о TLS-сервере, которую можно было получить в предыдущих соединениях (или как-то ещё).
Так что использование одной и той же полезной логической схемы самого верхнего уровня позволяет оптимизировать разные протоколы. Если задуматься, то сюда даже попадает port knocking. Вообще, если клиент и сервер заранее договорились о некотором секрете, то и обмен данными можно свести к отправке “случайных” пакетов со “случайным шумом” по случайным адресам. Пропускная способность, впрочем, будет не велика. Это работает далеко не только для Интернета.
Комментировать »
Трудности анонимизации реальных данных в реальных условиях полезно демонстрировать на примерах, в том числе, на условных примерах. Вот такой пример, очень простой.
Предположим, некоторые объекты, принадлежащие “персонам” (потому что “персональные данные”), для подсчёта отображают в одинаковые по размеру разноцветные шары, которые укладывают в урну. Персон-источников – трое. Каждому сопоставлен цвет, в который окрашиваются шары. Однако исследователям “данные предоставляются в анонимизированном, обезличенном виде”, поэтому таблица соответствия цветов персонам – уничтожается сразу, как только урна заполнена шарами.
Исследователи “обезличенных данных”, извлекая шары из урны, могу считать, сколько у “некоторой персоны” имеется объектов-шаров, но определить, кому именно из реальных персон принадлежат объекты в заданном количестве – не могут. Это действительно так. Более того, описанный метод, в разных версиях, очень широко используется и считается хорошим инструментом анонимизации данных.
В нашей учебной схеме – три персоны. Так что, предположим, в урне обнаружено 11 зелёных шаров, 13 синих, и 27 красных. Исследователи записывают эти данные. Заметьте, что исследователи могут различить все три персоны (A, B, C). Если бы это было не так, то и анонимизации с шарами не потребовалось бы – просто не возникало бы необходимости: весь смысл обезличивания тут в том, чтобы “отсоединить” данные от конкретных узнаваемых персон. Из-за обезличивания данных исследователи не имеют возможности ответить на вопрос, сколько у конкретной узнаваемой персоны объектов, обозначенных шарами. Ну, пока что не имеют такой возможности.
Теперь представьте, что начинается следующая итерация: персона A передаёт персоне B один свой объект. Можно считать, что передаёт шар, но при этом не раскрывается цвет шара. Тем не менее, факт обмена исследователям известен, поскольку именно для определения того, как “распределяются ресурсы”, подобные исследования и затеваются. Чтобы обновить данные – применяется всё тот же метод анонимизации. Соответствие цветов, конечно, выбирается новое, и информация о нём тоже уничтожается после распределения шаров.
Теперь в урне 10 красных шаров, 13 синих и 28 зелёных. Думаю, уже всё понятно.
Исследователи ведут архив. Так что у них теперь две выборки: до передачи шара и после. Поэтому-то вся “анонимизация” вдруг исчезла, так как в одной из выборок один шар поменял “цвет” (и не важно, что он мог его реально сохранить, поскольку применялась рандомизация цветов – сопоставить цвета между выборками нетрудно). Поменявший цвет шар – это и есть тот шар, который поменял владельца. А значит, исследователям теперь известно, кому из персон принадлежит каждая выборка шаров по цвету, в том числе, с историей. Ошибка схемы анонимизации тут в том, что обезличивалось владение объектом, но вовсе не факт смены владельца. Переход шара между выборками – никак в этой схеме не маскируется. Вот если бы в каждом цвете всегда было одинаковое количество шаров – но, погодите, а что бы тогда исследователям исследовать?
Конечно, чтобы только что описанный пример сработал, требуется использование “дополнительной базы данных”, из которой известно, что была конкретная передача шара, что она произошла между выборками, а если передач шаров много, то ещё нужно учитывать чётность и так далее. Но на то он и простой пример. С другой стороны, подобная анонимизация ведь и обосновывается тем, что “защищает” от нахождения персон в “других базах”: на то оно и “обезличивание”. Однако обезличивать реальные данные, по которым можно построить историю, весьма и весьма сложно, если, конечно, нужно сохранить хоть какие-то полезные показатели в этих данных.
Ещё один хороший пример, регулярно всплывающий, это обезличивание “геопривязки”, о чём я писал ещё в 2009 году.
Комментировать »
Как технологии “уровня приложений” помогают что-то узнавать про базовый уровень Интернета, то есть, про IP? Вот свежий пример того, как именно: на стороне веб-серверов поддержка постквантовых криптосистем в TLS есть у Cloudflare; соответственно, увидев на уровне веба для каких-то IP-адресов поддержку X25519Kyber768, можно предположить, что за этими IP-адресами скрываются системы Cloudflare, пусть адреса напрямую за Cloudflare и не записаны; сделав же такое предположение – можно подтвердить (или опровергнуть) его другими способами, скажем, через анонсы BGP и т.д. Полезный инструмент.
Вообще, что касается ветки “опровергнуть”: конечно, тот же Kyber768 есть, скажем, и у меня на тестовом сервере, который не за Cloudflare (но, кстати, их низкоуровневую библиотеку c Kyber и ML-KEM я всё же использую, так что влияние есть и тут); раз есть и где-то ещё поддержка, то можно и ошибиться. Можно, но тогда, скорее всего, там окажется Google – обособленных узлов, реализующих новшества, крайне мало, их количество начинает расти только тогда, когда поддержка появляется в распространённых линейках веб-серверов (Apache, nginx и др.). Но всё та же компания Cloudflare выступает тут локомотивом: ничего не поделать, поскольку именно наличие собственной полноценной разработки на всех базовых уровнях только и позволяет говорить что-то о практическом владении технологией. К сожалению, данный момент сейчас почти повсеместно замылен: факт прикручиваения “готового движка” теперь нередко является мерой “освоения технологии” (хорошо, что хоть не прикручивания “шильдика”).
Да, это отдельный вопрос, где именно и как именно возникает настоящая “технологическая зависимость”. Принято считать, что, как минимум, начинается она “от станкостроения”, то есть, не от изготовления, допустим, конкретных гвоздей при помощи некоторой машины, а от процесса изготовления этой машины. Но есть и более глубокие моменты. В примере с гвоздями – они касаются знаний о том, как нужно выстраивать процессы разработки машин, пусть и таких “простых”, как машины, делающие гвозди. Кстати, не так давно я писал ещё и про обратную разработку карамелек – похожая тема, пусть и не только “про эти ваши интернеты”.
Комментировать »
Поскольку браузеры, – в том числе, самый свежий Firefox, – перешли с Kyber768 на ML-KEM, я добавил на свой тестовый сервер TLS поддержку X25519MLKEM768 (не удаляя “гибриды” с Kyber768). Проверить можно при помощи новых версий браузеров Chrome и Firefox.
Кстати, немного занимательных элементов. В процессе развития постквантовой криптографии в TLS уже успели поменять “порядок байтов”. Так, в новых версиях представлений гибридных ключей – разная конкатенация массивов: в “старом” X25519Kyber768, если смотреть в сетевом порядке (так сказать, слева направо, что, конечно, математически неверно), сначала идёт ключ X25519, а потом – Kyber768; в “новом” X25519MLKEM – наоборот, сначала данные ML-KEM, а потом – X25519.
Почему это занимательно? А вот почему. Те немногие читатели dxdt.ru, которые непосредственно связаны с разработкой и реализацией ГОСТ-криптографии, совершенно точно наслышаны о технической шутке про “вращение байтов”, всплывающей в данной области постоянно и много лет. Суть вот в чём: при записи криптографических представлений, понятно, очень важен порядок байтов; так вот, в реализациях ГОСТ-криптографии, порядок байтов местами “сетевой”, а местами – в другую сторону. “Тупоконечное” и “остроконечное” представление. Так сложилось исторически. И смена направления, хоть и строго определена, но всегда происходит неожиданно. И она вовсе не так тривиальна, как можно подумать: байтовые последовательности попадают в хеш-функции; координаты точек – записываются в файлы; и так далее, и тому подобное. Понятно, что на стойкость и свойства математических операций, как и на описание алгоритмов в спецификациях, это не влияет. Однако если две реализации “байты вертят в разные стороны”, то они между собой несовместимы. На этом направлении даже есть тесты, которые, впрочем, не всегда помогают (как и в других областях, конечно). А самый забавный вариант – это когда значение оказалось “палиндромом”.
Комментировать »
Очередная атака “про Spectre”, позволяющая, в частности, читать память произвольных процессов в Linux, и на Intel, и на AMD. Пусть в этот раз речь в публикации не про новые аппаратные особенности, а про исправления в старых особенностях, но я всё же сошлюсь на свою записку о неустранимости подобных дефектов аппаратуры.
(Подробная статья на OpenNET.)
Комментировать »
В массовом TLS для веба криптосистемы с постквантовой стойкостью уже имеются, но есть ещё немало направлений, где такие криптосистемы нужны (если учитывать “угрозу квантовых компьютеров”, конечно). И во многих случаях требуются не криптосистемы согласования симметричного секрета, как в случае внедрения ML-KEM для TLS, а криптосистемы подписи. Можно, например, посмотреть в сторону DNS и DNSSEC, пусть последняя и не очень-то распространена, но там требуется именно электронная подпись. В DNS всегда приветствовались короткие пакеты данных, без излишнего раздутия. В предлагаемых сейчас постквантовых криптосистемах, традиционно, ключи и/или подписи – очень большие. Как это будет упаковываться в DNS – пока что не очень понятно: десять, предположим, килобайт на подписи с ключами – для DNS это слишком много.
Вообще, уже из распространённого предположения, что симметричные шифры сохраняют достаточную стойкость перед “квантовыми атаками”, можно сделать вывод, что возможны и короткие подписи, – то есть, что-то асимметричное, – главное, чтобы такие криптосистемы оказались ещё и эффективными: проверка 256-битной подписи, занимающая один час, тоже не особенно хороший вариант.
Длины ключей/подписей в текущем состоянии постквантовой криптографии и “квантовых вычислений” тема довольно странная: с одной стороны, как оно могло бы преобразовываться на “квантовом компьютере” не ясно, но если исходить из того, что для RSA нужна тысяча “квантовых элементов” компьютера на один бит ключа, то и для RSA можно просто добавить несколько килобит, получив практическую постквантовую стойкость – в конце концов, стойкость к обычным атакам для RSA развивалась именно так: 512-битный ключ сейчас можно факторизовать достаточно быстро для того, чтобы практическую разрядность передвинули к 2048 битам. С другой стороны, нет никаких гарантий того, что для задач, лежащих в основе уже стандартизованных постквантовых систем, тоже не найдут эффективных квантовых алгоритмов.
Поэтому, кстати, довольно странно читать в популярных статьях и новостных сообщениях по этой теме, что “сложность решения задач не отличается для обычных и квантовых компьютеров”. Ведь вовсе и не предполагается, что квантовые компьютеры что-то там вычисляют, так что вообще странно сравнивать сложность для “обычных и квантовых” компьютеров, поскольку там разные модели. При этом: и для классических атак (на “обычном компьютере”) на постквантовые криптосистемы возможны улучшения, и всякий квантовый алгоритм можно выполнить на классическом компьютере, и ту же задачу факторизации “нетрудно” очень быстро решать для произвольных больших чисел, если только вычислитель обладает быстрой памятью в объёме факториала от обрабатываемого числа (“небольшая” особенность, да).
Естественно, длина ключей постквантовых подписей диктуется и скоростью работы на практических компьютерах, и требованиями стойкости к атакам на этих практических классических компьютерах: улучшат такие атаки – разрядность (в том или ином виде) придётся увеличивать, вне зависимости от того, появились уже подходящие квантовые компьютеры или нет (собственно, посмотрите на тот же ML-KEM – бывший Kyber, – там уже сейчас несколько вариантов с разной классической стойкостью).
Но вернёмся к DNS и TLS. Можно предположить, что если “огромные постквантовые ключи” в данную систему не влезут, а уменьшить длину ключей не получится, то, скорее всего, из этого выйдет лишь ещё одна причина для повсеместного перехода на очередной вариант “DNS-over-TLS”: мол, там постквантовая стойкость уже есть, а то, что задача решается совсем другая – аутентификация узлов, а не защита подлинности данных, – ну так придётся как-то скорректировать модель угроз и привыкать “к новым подходам”. Впрочем, возможны и какие-то не использующие TLS, но существенно более интерактивные, варианты на замену DNS, поскольку именно интерактивность позволяет встроить более компактные схемы проверки подлинности данных. Речь тут про схемы, когда и конкретный запрос формируется с учётом некоторого ключа, и ответ приходит – тоже с учётом состава сессионных ключей из запроса и долгих ключей “из DNSSEC”. Возможны, скажем, варианты алгоритма Диффи-Хеллмана (постквантового, конечно). Поэтому, если темпы внедрения постквантовой криптографии не ослабеют, то можно ожидать новой, “интерактивной DNS”.
Комментировать »
Криптосистемы с постквантовой стойкостью предлагается внедрять в составе гибридных схем. Именно так сделано в TLS и в браузерах: широко и давно используемая X25519 + постквантовая криптосистема Kyber, на случай, если последняя окажется нестойкой. Под “гибридной” схемой здесь подразумевается объединение секретов, независимо полученных применением одной и второй криптосистемы: ни о каком “подмешивании” шагов одной криптосистемы в другую речи нет – X25519 не влияет на стойкость Kyber и наоборот (формальная оценка стойкости гибридной схемы в целом и для разных моделей – несколько другая история, но эти детали тут не важны). Подобная “гибридизация” имеет ряд занимательных особенностей: так, постквантовая Kyber должна, очевидно, обладать и стойкостью к классическим атакам, а это означает, что она некоторым образом усиливает защиту сессий с точки зрения переспективных атак “неквантовыми методами”.
То есть, данные криптосистемы достаточно различаются математически, чтобы даже универсальная атака на X25519 не сломала, гарантированно, и Kyber. Так что, если через десять лет вариант протокола Диффи-Хеллмана (ECDH), реализуемый X25519, научатся быстро ломать, – например, для конкретных параметров, – то записанный трафик всё равно будет защищён Kyber. Естественно, это всего лишь обращение мотивации для использования X25519 вместе с Kyber, чтобы подстраховаться на случай внезапного обнаружения неустранимых дефектов в последней. Обратная схема тоже работает, но X25519 используется дольше и, возможно, лучше изучена, так что “поломка” Kyber, конечно, выглядит более вероятным событием.
Вообще, из того, что Kyber признана криптосистемой с постквантовой стойкостью и стандартизована как ML-KEM, вовсе не следует, что доказано отсутствие квантовых алгоритмов взлома Kyber; уж тем более неверно будет утверждать, что эффективность решения базовой задачи для Kyber не отличается на обычных и квантовых компьютерах. Во-первых, квантовых компьютеров пока что нет, и непонятно, как они вообще могли бы быть устроены, чтобы ломать Kyber. Во-вторых, квантовые компьютеры сами ничего “не вычисляют” в том смысле, чтобы сравнивать с “обычными” (но всякий квантовый алгоритм можно запустить и выполнить на “обычном компьютере” – времени потребуется несравнимо больше, чем хотелось бы для достижения практической полезности). В-третьих, доказывать отсутствие алгоритмов вообще непросто. Так что в случае с постквантовой стойкостью слишком многое сводится к алгоритму Шора, в его самой теоретической интерпретации, а для ML-KEM/Kyber резонно ожидать и квантовых улучшений атак тоже.
Более того, поскольку одна задача (Kyber) не переводится быстро в другую (ECDH), то можно предположить не только появление специального квантового алгоритма для эффективного взлома Kyber, но и то, что квантовый компьютер, реализующий этот алгоритм, окажется (согласно некоторой теории) построить проще, чем не менее квантовый компьютер для алгоритма Шора. А что? Теоретические аналоговые вычислители они на то и теоретические, и аналоговые, что это сейчас только различные оценки количества “квантовых элементов” для практической атаки на RSA расходятся на несколько десятичных порядков, а на следующем шаге – могут разойтись и оценки достижимости по новым и старым алгоритмам.
Комментировать »
Неочевидные особенности веб-TLS в Интернете. Посмотрим на сертификат узла dxdt.ru, а точнее на разные таймстемпы, присутствующие в этом сертификате, выпущенном удостоверяющим центром (УЦ) Let’s Encrypt. Так, время в SCT-метках: Sep 4 20:35:05 2024 GMT (миллисекунды я не указываю), а начальная граница интервала валидности сертификата: Sep 4 19:36:35 2024 GMT. То есть, время меток позже почти ровно на один час. Как такое могло бы получиться? Естественно, вариант тут только один: УЦ Let’s Encrypt выпускает сертификаты, сдвинув время начала действия на час назад. То есть, что называется, “задним числом” (backdate), но только на один час. Реальное время заказа сертификата ближе к таймстемпу из SCT-метки – понятно, что данный УЦ не мог ждать один час, чтобы отправить пресертификат в лог. Тем не менее, это означает, что сертификат “действовал” за час до того, как его заказали.
Это известная особенность, неоднократно упоминавшаяся в обращениях в Let’s Encrypt. Её традиционно объясняют необходимостью учитывать возможные неточности часов у клиентов: то есть, сертификат выпускается за секунды и должен заработать мгновенно, но если у клиентского компьютера отстают часы, то он покажет ошибку, так как в сертификате время стоит позже момента валидации по “сдвинутым часам”.
Почему достаточно одно часа? Не ясно. Возможно, из-за летнего/зимнего времени. Возможно, из-за того, что в 60 минут укладывается бо́льшая часть обычного “дрейфа” локальных часов (она, конечно, укладывается минут в двадцать, но почему бы не взять один час?).
Как это коррелирует с тем, что в SCT-метке всё равно стоит актуальное время, которое оказывается “в будущем” и валидатор всё равно мог бы заругаться? Ну, наверное, эффект остался с тех пор, когда никакие SCT-метки в сертификаты не ставились, к тому же, опережение на час находится в допустимом интервале и валидаторы браузеров не пугает: лишь бы подписи сходились.
Означает ли это, что Let’s Encrypt выпускает пресертификаты (для добавления в CT-лог) “с упреждением”? Вряд ли. Но проверить это нельзя: технически, УЦ может какие угодно сертификаты у себя штамповать, на то он и УЦ. Выпуск пресертификата без факта его заказа и подтверждения прав управления DNS-именем – будет являться грубейшим нарушением принятых правил, но (пре)сертификат ещё должен утечь. Тем не менее, какого-то смысла в подобных фокусах не просматривается.
Вообще, даже и выпуск сертификатов “задним числом” – довольно серьёзное нарушение для УЦ: в своё время именно его использовали в качестве одной из причин для отзыва доверия браузеров к некоторому китайскому УЦ. Но, наверное, один час – это не так много. Обратите внимание на то, что в сертификатах нет никакого зонирования времени, там просто таймстемп, – в случае с CT-логами – миллисекундный, – поэтому списать данную особенность на разные часовые пояса не получится.
Комментировать »