Кратко

  • В снимке каталога LACNIC от 12 сентября было 150 файлов данных обратного DNS, сведённых в 75 пар имён, а также 150 отделённых подписей и открытый ключ.
  • Два проверенных имени содержали одинаковые байты, а опубликованный MD5 совпал. Это полезная проверка файла, но не доказательство состава всей версии.
  • Отсутствие манифеста не означает пропажу файла, неверную подпись или сбой DNS. Оно означает лишь, что завершение партии не выражено отдельным подписанным объектом.

Если оператор заранее знает имя нужного фрагмента, каталог устроен понятно. Для 002-LACNIC рядом лежат .asc и .md5; в корне доступен PUBLIC_KEY. Отдельный файл можно получить вместе с материалами для проверки.

При полном зеркалировании возникает иной объект учёта. На момент фиксации каталог показывал 150 имён данных. Первая половина имела трёхзначный вид, например 002-LACNIC; вторая — соответствующий вид 2.in-addr.arpa-LACNIC. Все 75 числовых соответствий присутствовали.

В том же списке находились 150 имён .asc и 151 имя .md5. Лишней по отношению к файлам данных была показанная индексом пустая запись *-LACNIC.md5. Имен README, manifest, индекса SHA-256 или признака release не было.

Это точное описание общедоступной страницы в 15:21 UTC 12 сентября. Оно ничего не говорит о внутренних журналах LACNIC и не позволяет утверждать, что генератор не ведёт собственную опись.

Одна пара прошла ограниченную проверку

Файлы 002-LACNIC и 2.in-addr.arpa-LACNIC имели размер 2222 байта и один SHA-256. MD5, указанный для короткого имени, совпал с вычисленным по полученному содержимому. В HTTP-заголовках время изменения различалось на одну секунду.

Секундная разница не доказывает рассогласование. Два совместимых имени могли быть записаны по очереди. Проверка установила только равенство одной пары в момент наблюдения. Остальные 74 пары побайтово не сравнивались, а постоянное равенство не заявлено.

Внутри образца находятся $ORIGIN . и строки делегирования NS. Это не результат запроса к рабочему авторитетному DNS и не свидетельство загрузки на все серверы. Файл для скачивания, активация на авторитетной системе и ответ, увиденный резолвером, требуют разных доказательств.

Подлинность элемента и полнота набора

RFC 9580 описывает отделённую подпись OpenPGP над внешними данными. Если проверяющий принял ключ именно для этой цели и действительно выполнил проверку, механизм способен связать подпись с конкретным файлом.

В исследовательской среде не было проверяющей программы OpenPGP. Поэтому здесь нет вывода ни о действительности подписи образца, ни о недоверии к соседнему ключу. Подтверждается более простой факт: LACNIC выдаёт материалы для пофайлового процесса проверки. Это сильная сторона нынешней публикации.

Однако подпись 002-LACNIC не перечисляет 149 соседей. HTML-индекс показывает состояние выдачи в момент запроса, но не подписывает факт, что обновление завершено. Заголовок Last-Modified также относится к доставке отдельного объекта, а не к идентичности всей партии.

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

Почему пофайловая схема может быть правильной

Возможно, каталог не задуман как атомарный снимок. Пользователь может забирать известный файл, кэшировать его и не переносить весь набор. Независимое обновление одной части уменьшает трафик и область изменения. Для такого сценария единый пакет не обязателен.

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

Зеркало может успешно проверить каждую полученную подпись и всё равно смешать два поколения, если сбор пришёлся на обновление. Чтобы исключить эту неопределённость, достаточно одного подписанного манифеста на поколение.

В нём должны быть версия, идентификатор партии, время формирования и завершения, упорядоченный перечень имён. Для каждой строки нужны идентификатор пары, роль имени, размер, SHA-256 и имя подписи. Цепь дополнят отпечаток принятого ключа и идентификатор предыдущей партии.

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

Манифест не засвидетельствует рабочий DNS. Он не проверит делегирование и не гарантирует ответ резолвера. Его утверждение намного уже: LACNIC завершил публикацию именно такого набора файлов.

Отдельные подписи скрепляют листы. Манифест скрепил бы содержание издания.

Источники