Кратко

  • Зафиксированная редакция LACNIC 20260828 объявляет 49 894 строки записей в строке версии и трёх итогах. По правилам исключения из формата RIR фактически остаётся 48 214 строк. Вся разница в 1680 приходится на ASN: заявлено 16 000, найдено 14 320.
  • delegated-lacnic-latest и датированный объект совпадали побайтно, оба опубликованных MD5 сошлись с независимым расчётом. Это исключает обычное расхождение при передаче в данной фиксации, но не исправляет число в заголовке и не доказывает смысловую верность каждой строки.
  • delegated-lacnic-latest.asc отсутствовал. Датированная подпись прошла математическую проверку, однако была создана в 2026 году с SHA-1 под ключом DSA-1024 2002 года — сочетанием, которое современный OpenPGP запрещает создавать и принимать.

Сначала строка, потом доверие

Файл открывается записью 2|lacnic|20260828|49894|19870101|20260828|-0300. RIR Statistics Exchange Format определяет четвёртое поле как число строк записей после исключения строки версии, итоговых строк, комментариев и пустых строк. Итог по каждому типу тоже должен считать строки этого типа, а не общий объём представленных ресурсов.

Между элементами метаданных противоречия нет. Итог IPv4 равен 20 375, IPv6 — 13 519, ASN — 16 000. Их сумма составляет 49 894 и совпадает с заголовком. Проверка, сравнивающая только первые четыре строки, завершилась бы успешно.

Тело файла даёт другой результат. В нём 48 218 физических строк: одна версия, три итога и 48 214 ресурсных записей. Для IPv4 действительно насчитывается 20 375 строк, для IPv6 — 13 519. Для ASN имеется 14 320 строк вместо 16 000. Недостающие в счёте 1680 полностью объясняют разницу общего итога.

Это не доказательство отсутствия 1680 ASN. Спецификация сама предупреждает, что число строк не равно количеству ресурсов. Аудит не признал ложной ни одну отдельную делегацию, не обнаружил утрату права, ошибочный маршрут или недоступность сети. Он показал только, что получатель, строго следующий опубликованному правилу, не воспроизводит число издателя.

Ограниченность вывода не делает его незначительным. README LACNIC описывает каталог как ежедневные сводки распределений и назначений IPv4, IPv6 и ASN. Формат требует доступности свежей редакции под постоянным именем delegated-<registry>-latest, чтобы её забирали системные задания. Поле records в таком интерфейсе — не справочная подпись, а условие машинной проверки.

Сильная сторона публикации LACNIC

Факты сначала требуют снять более тяжёлые обвинения.

На момент фиксации delegated-lacnic-latest и delegated-lacnic-20260828 были одинаковыми 2 311 991 байтами. Их общий SHA-256 — 95d59beaa4deb0ed5f40ae33a37210e11b4bce5b518613cfd4097fe442e7abf4. В HTTP-ответах совпадали ETag и время последнего изменения. Не наблюдалось, чтобы постоянное имя вело к иному содержимому, чем датированная версия.

Оба MD5-файла публиковали 30f2fac07e846d1706c1fa8c7bb0ebd6; независимое вычисление для обоих объектов дало то же значение. Унаследованная проверка выполнила свою узкую работу. Нет признака обрыва или случайной подмены байтов при получении.

Отделённая подпись датированной редакции тоже относится к этим байтам. Проверка разобрала пакеты OpenPGP, восстановила подписанный SHA-1 и вычислила уравнение DSA с опубликованным ключом LACNIC. Результат положительный. Называть подпись поддельной или намекать на вмешательство злоумышленника было бы бездоказательно.

Старый формат даёт LACNIC ещё один аргумент. Он требует одноимённый MD5, но говорит, что дополнительная PGP-подпись может быть опубликована. Это не обязательное поле. Поэтому 404 по адресу latest.asc сам по себе не нарушает старого требования о подписи. Проблема в другом: нынешняя раскладка не даёт современному потребителю единого правила принятия выпуска.

Одно слово скрывает четыре проверки

Целостность передачи отвечает, соответствуют ли полученные байты опубликованному дайджесту. Здесь MD5 совпал. Но RFC 6151 считает MD5 неприемлемым там, где требуется устойчивость к коллизиям. Он способен ловить многие случайные ошибки, но не служит современной аутентификацией издателя.

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

Структурная целостность отвечает, выполняет ли файл свои заявленные инварианты. Число строк не выполняет. Корректная подпись может надёжно сохранить ошибочный заголовок; исправить его она не может.

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

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

У постоянного имени нет одноимённой подписи

Во время фиксации delegated-lacnic-latest.asc возвращал HTTP 404. При этом delegated-lacnic-20260828.asc и delegated-lacnic-key были доступны. Путь к свежести и путь к подписи расходятся по именам.

Осторожный клиент может склеить их сам: загрузить latest, прочитать серийный номер 20260828, построить датированное имя, сравнить байты и затем получить подпись с ключом. Это работоспособный локальный алгоритм. Но это не подписанное утверждение LACNIC, что наблюдаемый alias в конкретный момент обозначал конкретную датированную редакцию.

Подвижность latest усиливает различие. Совпадение сегодня не хранит вчерашнее отображение и не объясняет завтрашнюю коррекцию. Каждый потребитель может архивировать собственную фиксацию, но тогда общая история выпуска превращается в набор частных свидетельств.

Математика говорит «да», современный протокол — «нет»

Отпечаток основного ключа — BED3BE6115A8AF036D271F9D3B8DD165F3FB5533, ID — 3B8DD165F3FB5533. Это DSA с основным параметром 1024 бита, созданный 12 декабря 2002 года. User ID: Auto Zone Generator. В проверенной самосертификации срок действия основного ключа не указан.

Подпись создана 29 августа 2026 года с DSA и SHA-1. ID издателя совпадает, математическая проверка проходит.

RFC 9580 тем не менее проводит однозначную границу. Реализация OpenPGP не должна создавать подписи SHA-1 и не должна проверять недавние подписи, зависящие от SHA-1. Она также не должна подписывать или проверять ключами DSA. Новая подпись 2026 года попадает под все эти условия.

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

NIST добавляет контекст перехода: к концу 2030 года SHA-1 должен уйти из всех применений криптографической защиты, а подготовку следует начинать раньше. Не нужно превращать это в утверждение, будто NIST отдельно признал файл LACNIC недействительным уже в 2026 году. Для OpenPGP прямая норма уже содержится в RFC 9580.

Недостающий объект можно сделать малым

Пропорциональное решение — не новый центр управления маршрутизацией. Это компактная квитанция выпуска, подписанная современным ключом и опирающаяся на SHA-256.

Она связывает версию своей схемы, RIR и набор данных, серийный номер и местную дату, датированное имя и latest, длину и SHA-256, заявленное и фактическое число строк по типам, момент отсечения и часовой пояс, отпечаток, алгоритм и срок ключа, а также ссылку на исправление или замену.

Квитанция рядом с latest называет точный датированный объект. Датированная квитанция остаётся неизменной. Если генератор снова объявит 49 894 и выдаст 48 214 строк, процесс должен сделать видимый выбор: остановить публикацию, объяснить исключение или выпустить коррекцию со ссылкой на заменённый объект.

Совместимость сохраняется. Старые имена и MD5 остаются, новая квитанция добавляется. Ротация ключа получает подписанную связь между старой и новой опорой. Зеркала могут долго хранить маленькие квитанции, даже если не архивируют каждую суточную выгрузку.

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

Чего данные не доказывают

Не доказаны атака, компрометация ключа, подделка, потеря ресурсов, ошибка маршрутизации, сбой или ущерб. Причина лишних 1680 в ASN-итоге из открытых файлов неизвестна. Внутренний генератор и частный процесс согласования не исследовались. Нет и доказательства, что конкретный потребитель доверился числу и пострадал.

Доказаны воспроизводимое структурное расхождение, разрыв между именем автоматической загрузки и именем подписи, а также несовместимость датированной подписи с современным режимом принятия OpenPGP. Этого достаточно для исправления выпуска, но недостаточно для выдумывания инцидента.

Источники