Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Забавно, что в некотором рейтинге “перспективных технологий 2025 года” от газеты “Коммерсант” присутствует постквантовая криптография на седьмом месте, а вот ни квантовых вычислений, ни квантовой криптографии – в данном рейтинге уже нет, хотя, казалось бы. Рейтинг, впрочем, весь забит ИИ – на первом месте “просто всё про ИИ”, а потом ещё, несмотря ни на что, куча пунктов про “подвиды ИИ”, – так что общая тенденция рейтингования сохранилась. (Особенно весёлый термин – “Микро-LLM”: то есть, “очень маленькие, но большие” языковые модели. Если что, то странный термин, конечно, придумал не “Коммерсант” – такое сочетание реально используется.)
Комментировать »
В DNS бывают “хостнеймы”, а бывают “DNS-имена” (именно так эти объекты нужно называть на русском). Хостнейм – это сетевое имя компьютера (“имя хоста”), для записи которого разрешено использовать только следующие ASCII-символы (без учета регистра при сравнении): [a-z\,\-] (от “a” до “z”, “запятая”, “минус”) и, в качестве разделителя “лейблов”, ASCII-символ “.” (“точка”). “Лейбл” – это подстрока в полном имени хоста: dxdt.ru. Все эти правила сложились, что называется, исторически.
(Есть ещё некоторые старые ограничения, требующие, например, чтобы “лейбл” всегда начинался с буквы, что позволило бы отличать запись IPv4-адресов от хостнеймов; но, к сожалению, эти ограничения сейчас применяются крайне редко, а в практике глобальной DNS – отменены, поэтому в DNS невозможно отличить хостнейм от IPv4-адреса.)
А вот в DNS-именах допускается использование и других символов. Вообще говоря, закодировать можно произвольные октеты, но это тема для другой записки, поскольку сам смысл отстройки по алфавиту от хостнеймов не настолько общий. Широко используется знак “_” (“нижнее подчёркивание”), который позволяет заведомо отличить DNS-имя от хостнейма, чтобы строго определить смысл соответствующей DNS-записи. Пример: _dmarc.dxdt.ru. – это имя (ключ) для размещения политики DMARC в TXT-записи. Такое имя не может быть хостнеймом, но может быть DNS-именем. Это важное отличие: хостнеймы вкладываются в пространство DNS-имён, но не совпадают с ним.
Комментировать »
NASA сообщает, что марсианский “коптер” Ingenuity, который потерпел аварию 18 января 2024 года, подвела навигационная система. Эта система работала с использованием изображений подстилающей поверхности, которые получала специальная камера (см. картинку). В последнем (а не “крайнем”, да) полёте, при выполнении посадки, слишком однообразное изображение поверхности не позволило программному обеспечению найти достаточно “зацепок”, чтобы корректно посчитать горизонтальную скорость аппарата, а некорректная скорость оказалось слишком большой и робот перевернулся при касании, поломав лопасти.
Специально обученным людям известно, что если довелось спускаться на парашюте над большой водой, – например, в море, – то отстёгивать подвесную систему допускается только после касания воды ногами: всё потому, что над водой очень сложно визуально определить реальную высоту – можно легко ошибиться на десятки метров. Естественно, то же самое верно для любой ситуации отсутствия ориентиров, а вот степень этого самого “отсутствия” как раз определяется характеристиками системы зрения, которая и подвела робота, правда, в плане скорости, а не высоты (для высоты там есть отдельный альтиметр).

(Фото: NASA/JPL-Caltech)
Комментировать »
Как я уже не раз упоминал, в том, что dxdt.ru выходит два десятка лет, есть и такая польза: можно иногда доставать старые заметки, подгадывая месяц под актуальный сейчас. Ну, и не только месяц. Например, десять лет назад на dxdt.ru выходила заметка про “ждущего” подземного робота, очевидно, гигантского, но вряд ли человекоподобного:
Предположим, подземный робот самостоятельно проник в нужный район и должен там остаться на длительное время. Естественно, под землёй. Естественно, скрытно, чтобы не обнаружили и не извлекли на поверхность. После наступления условленного часа или получения специального сигнала – робот активируется и, скажем, наконец-то выполняет свою главную задачу. Сколько лет такой робот может спать? (Записка полностью.)
Комментировать »
Сейчас много новостей про то, что в Google “совершили прорыв в квантовых вычислениях”, представив “метод коррекции ошибок”. Обычное для текущего уровня “хайпа” состояние, тем более, когда в источнике новости упоминается Google.
Вообще, если почитать соответствующий препринт, то окажется, что действительно интересных выводов там три, но ни один из них не попадает в заголовки СМИ: во-первых, в предложенной схеме коррекции тут же обнаружились новые “ошибки, природа которых пока не ясна”; во-вторых, очередной раз указано, что так как для дешифрования вывода “квантовых вычислений”, использующего коды коррекции, требуется классический вычислитель, то ещё предстоит определить, не окажется ли задача дешифратора экспоненциально сложной для этого классического компьютера; в-третьих, речь вообще не про универсальные квантовые вычисления, а про реализацию некоторых кодов для небольшого количества кубитов конкретных лабораторных устройств.
Первый аспект – “новые ошибки”, – выглядит как намёк на те самые дополнительные кубиты, которые необходимы для коррекции ошибок в схеме коррекции ошибок: такая иррациональная рекурсия, в стиле вычисления точной десятичной записи значения корня из двух.
Второй аспект, про необходимый “классический вычислитель”, указывает на то, что без классического компьютера квантовый аналоговый вычислитель бесполезен даже в качестве лабораторной установки, и при этом экспоненциальный рост сложности, соответствующий моделированию квантовых алгоритмов на классических компьютерах, вполне может вылезти в процессе коррекции ошибок (что, наверное, будет особенно обидно).
Занятно, что в исходной работе нет хотя бы примерных описаний используемой “классической аппаратуры” – она как бы подразумевается существующей “за кадром”, в виде “специализированной рабочей станции” с доступом по Ethernet. Наверное, это не имеет отношения к теме публикации (хотя, казалось бы – ведь классический вычислитель точно необходим, чтобы вся эта квантовая коррекция ошибок как-то заработала).
Ну и аспект третий, – “квантовые вычисления”, – самый “хайповый”: исходная работа – про оценки порога для реализации коррекции ошибок в “квантовой памяти” (что бы это ни значило), а не про универсальные вычисления, требующие, дополнительно, совсем других элементов.
Комментировать »
Очень популярное заблуждение: DNS использует только UDP. Это заблуждение постоянно мешает на практике. Конечно, протокол UDP является основным протоколом обмена данными между клиентами и серверами в DNS. Это так. Однако UDP используется при наличии возможности, а DNS, как система, строго требует доступности серверов и по TCP. Причём, TCP является ничуть не менее “стандартным” протоколом для DNS. То есть, необходима поддержка и UDP, и TCP.
Хрестоматийный исторический пример использования TCP вместо UDP в DNS, это превышение максимального объёма данных, которые удаётся передать по UDP. Здесь часто упоминают 512 байтов, как предельное количество. Но, опять же, то и дело упускают контекст, к которому лимит в 512 байтов относится. Эти знаменитые 512 байтов, во-первых, происходят из принципов фрагментации пакетов в IP-сетях, – так-то в UDP можно передать гораздо больше, – да ещё и относятся, как ограничение, конкретно к классическому DNS: то есть, из-за 512 байтов в Интернете 13 логических корневых серверов DNS, например. Сетевые детали оставим для другой записки, а в этой важно отметить, что и лимит давно не 512 байтов, потому что есть расширение под общим названием EDNS, позволяющее задать другие границы данных ответа сервера, и возможность увеличения размера UDP-ответов пакета никак не отменяет требований по TCP.
Это всё весьма упрощенное описание. За DNS скрывается очень сложная технология, непосредственно использующая множество весьма и весьма нетривиальных особенностей в своих протоколах. Очень большой ошибкой будет посчитать, что DNS – это “запрос-ответ” про “IP-адрес”. Это только “понятийное ядро” DNS на самом базовом уровне возможно описать как элементарный протокол “запрос-ответ”. При изучении же деталей придётся быстро столкнуться с неожиданными артефактами. Например, с тем, что в DNS есть сжатие строк в DNS-сообщениях, куча хитрых статусов и флагов. Реально работающая система изобилует неожиданными “краевыми случаями”. Вот, кстати, один из примеров: рандомизация регистра символов в DNS. И это, заметьте, тут ещё ничего не сказано про DNSSEC.
В общем, вернёмся к TCP/UDP. Верная интерпретация такая: если DNS-ответ имеется, но не получается доставить его полностью по UDP, то система должна использовать TCP. Следовательно, должен быть TCP-доступ. И вовсе не только между авторитативными серверами для трансфера зоны.
К сожалению, сплошь и рядом продолжают фильтровать и отключать TCP-доступ даже к авторитативным серверам DNS, мотивируя это тем, что, мол, “DNS работает по UDP”, а поэтому прочий доступ нужно закрыть “для безопасности” (хотя, казалось бы, при чём здесь метод “порты закрыл – сервер в безопасности”?). Это неправильно и плохо: резолверы могут штатно подключаться к DNS-серверам по TCP, если им не удаётся работать по UDP, а в DNS описан типовой механизм (Truncated bit), позволяющий сообщить клиенту (резолверу), что нужно переключиться на TCP. Но это только возможный способ. Резолвер, вполне штатно, может самостоятельно перейти на TCP, если этого требует контекст запроса и сетевая конфигурация. Так что DNS работает и по TCP тоже.
Комментарии (1) »
Добавил на страницу “Избранное” очередную порцию избранных записок:
Комментировать »
Интернет не только работает по IP, но этот протокол и определяет Интернет. Часть IP – это IP-адреса: номера, используемые для синтеза самого протокола. Интересно, что практическому восприятию IP-адресов в Интернете (не в локальной сети) соответствует несколько уровней.
Уровень первый: IP-сеть. То есть, IP-адреса позволяют проиндексировать узлы “одноранговой сети”, сопоставив каждому узлу номер, служащий адресом, по которому отправляются “пакеты данных”. Это самый простой уровень, он не так близок к логике IP, как можно подумать, но именно этот уровень используется в совсем популярных статьях для объяснения понятия “IP-адрес”: здесь IP-адрес виден как номер сетевого узла.
Уровень второй: межсетевой обмен данными. Оказывается, в Интернете существуют автономные системы. Более того, Интернет (с прописной буквы), как глобальную сеть, невозможно определить без использования хотя бы двух автономных систем. На этом уровне, – то есть, с точки зрения межсетевой маршрутизации, – IP-адреса видны как некие “точки” на сетевой границе автономной системы. Собственно, IP-адреса просто возникают на границе автономной системы. Как там устроено внутри, какой именно узел адресуется данным номером во внутренней логике автономной системы – не ясно: IP-адрес лишь задаёт точку входа (и выхода, если это транзитная автономная система).
Уровень третий: произвольные идентификаторы. IP-адрес является лишь произвольным идентификатором, по которому через сетевой порт может отвечать не менее произвольное устройство, в том числе, совсем не тот узел, как можно было бы подумать. Здесь уже граница проводится по сетевому интерфейсу. И действительно, технически, пакеты, адресованные какому-нибудь IP-адресу в Интернете, могут быть перехвачены произвольным промежуточным узлом. Это, понятно, не относится к IP, как к протоколу. Однако, если ваш компьютер отправляет пакет по адресу A.B.C.D, полагая, что это адрес “сервера Google”, то из этого вовсе и не следует, что в конкретном сетевом сегменте по данному адресу отвечает действительно “сервер Google”. Конечно, у данного подхода есть и продолжение: почему бы не вспомнить, что IP-адрес можно заменять на уровне сокета, в операционной системе? Но тут уже понятие вычислительной сети совсем “виртуализируется”, поскольку физический уровень полностью замыкается внутри одного устройства.
Комментировать »
В новостях попался забавный фрагмент, речь идёт про обучение студентов инженерных специальностей:
Или одно из семи новых направлений, где умение профессионально писать код не обязательно — кибербезопасность, Data Science, системный и бизнес-анализ, DevOps, SRE, а также тестирование ПО (QA).
“Умение профессионально писать код не обязательно”. Наверное, в направлении “бизнес-анализ”, действительно, не требуется умение писать код, тем более “профессионально”. Но во всех остальных перечисленных направлениях – писать код просто необходимо. Хотя, конечно, написание кода там совсем не является самоцелью, так что, возможно, это имелось в виду под “профессионально писать”. Но и для программиста написание кода не является самоцелью. Кстати, “писать код” и “быть программистом” – вовсе не эквивалентные понятия, хоть первое и является необходимым условием для второго. Впрочем, времена сейчас меняются: скажут, что LLM ИИ и так напишет триллионы строк кода.
Комментировать »
Кстати, в рамках свежего обновления, на сервис ТЦИ audit.statdom.ru, кроме прочего, добавлен вывод HTTPS-записи (при наличии, см. скриншот) и определение поддержки MLKEM+X25519 для TLS-узлов (см. второй скриншот).

На скриншоте – HTTPS-запись DNS-зоны, размещённой на сервисе Cloudflare. Можно видеть сведения об IP-адресах, указание на то, что присутствует ECH-конфигурация (сама конфигурация пока что не выводится).

Обнаружение поддержки постквантовой гибридной криптосистемы MLKEM+X25519 выполяется TLS-сканером отдельно (естественно, это, пока что, редкая криптосистема, если распространённость определять по количеству TLS-узлов).
Комментировать »
Новый