
Эталонная реализация постквантовой аутентификации LR+ в контексте WebPKI CA, включающая конвейер корпуса, реконструкцию, оценку и манифесты происхождения для воспроизводимых исследований.
Этот пакет содержит финальную эталонную реализацию LR+, обёртки для воспроизведения производственных результатов, тесты и сгенерированные результаты оценки для постквантовой аутентификации с замкнутым контекстом поверх контекста CA WebPKI.
Пакет намеренно оформлен как артефакт для подачи, а не как снимок исследовательского журнала: имена целей, имена файлов, имена модулей и отчёты используют стабильную терминологию реализации.
src/lrplus/ Эталонные модули LR+
scripts/ Загрузка корпуса, сборка, восстановление, оценка и проверки
config/ Зафиксированная конфигурация восстановления и загрузки
results/ Сгенерированные производственные результаты, используемые в статье
audit/ Отчёт о происхождении и манифест хешей выходных данных
backups/ Манифест резервной копии входного корпуса, созданной перед пересборкой
data/ccadb_full/ Манифест загрузки CCADB и хеши файлов
working_corpus/ Манифест пересборки корпуса для компактного пакета
tests/ Тесты протокола и согласованности артефактов
Компактный пакет содержит манифесты и сгенерированные результаты. Полностью свежая регенерация требует доступа в интернет и доступа к существующему конвейеру корпуса WebPKI, который предоставляет и .
scripts/normalize_ccadb.pyscripts/build_graph.pyИспользуйте Python 3.9 или новее. Типичная настройка:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
Адаптер ML-DSA-44 использует pqcrypto==0.4.0. Если этот бэкенд недоступен, реальный тест ML-DSA пропускается, а остальные эталонные тесты продолжают выполняться. Для производственного шлюза верификации установите все зависимости из pyproject.toml.
Обёртка CCADB делегирует нормализацию и построение графа существующему конвейеру корпуса WebPKI. Задайте одно из следующих значений перед запуском полной сборки:
export WEBPKI_PIPELINE_ROOT=/path/to/existing_webpki_pipeline
или передайте путь через Make:
make verify PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Корень конвейера должен содержать:
scripts/normalize_ccadb.py
scripts/build_graph.py
Единственная команда:
make verify PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Она выполняет следующие этапы по порядку.
make backup-corpus
Это копирует текущие подкаталоги working_corpus/{raw,normalized,graph,outputs_scc_repaired}, если они присутствуют, в backups/input_corpus_<timestamp>/ и записывает manifest.json, file_inventory.csv и SHA256SUMS.
make download-ccadb
Это использует config/ccadb_download.yaml и записывает:
data/ccadb_full/download_manifest.json
data/ccadb_full/SHA256SUMS
Манифест фиксирует выбранный тег crtsh/ccadb_data, коммит, хеш записи сертификата V5, годовой диапазон PEM-файлов и входной хеш корневого доверия.
make build-corpus PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Обёртка подготавливает загруженные файлы CCADB в working_corpus/raw/, а затем вызывает нормализатор и построитель графов существующего конвейера. Она записывает:
working_corpus/rebuild_manifest.json
working_corpus/normalized/certificates.parquet
working_corpus/normalized/records.parquet
working_corpus/outputs_scc_repaired/graph.json
make test
Набор тестов охватывает канонические идентификаторы, разбор тёплой линии, привязку текущего терминала, канонизацию типизированных потоков, согласование, дельты навёрстывания диапазона, сериализацию аутентифицированного состояния, схему выходных данных восстановления и интеграцию ML-DSA, когда бэкенд установлен.
make reconstruct
Это читает config/reconstruction.yaml и выдаёт по одной строке на выбранный контекст пути/представления:
results/path_view_trace.csv
results/typed_dependency_records.csv
results/view_root_sets.csv
results/reconstruction_gate.json
Каждая строка пути фиксирует представление, конкретные идентификаторы сертификатов, выбранную родословную, идентификатор пути, ссылки на типизированные зависимости, типы зависимостей, тёплые байты, базовые байты и дайджесты привязки терминала.
make evaluate
Это вычисляет:
results/global_summary.json
results/per_view_summary.csv
results/per_view_dependency_records.csv
results/catalog_summary.csv
results/lifecycle_per_view.csv
results/byte_accounting.json
Формулы учёта байтов:
LR+ тёплая подсказка профиля: 8 + 48*m
SPB: 2588 + 209*m
Профиль S: 3569 + 904*m
Полный PQ на зависимость: m*(2420 + 209)
Дельта навёрстывания диапазона: 2584 + 264*k_total
Последовательные дельты: r*(2584 + 264*k_per_epoch)
make check
Это проверяет требуемые выходные данные, манифесты зафиксированных источников, формулы байтов для каждой строки, идентификаторы путей, дайджесты терминалов, покрытие записей зависимостей, настроенные представления, сериализацию состояния для каждого представления и доступность каталога. Оно записывает:
results/check_results.json
Статус должен быть PASS.
make freeze
Это записывает:
audit/implementation_manifest.json
Манифест фиксирует информацию о платформе, метаданные зафиксированных источников, метаданные сборки корпуса и SHA-256 хеши всех сгенерированных файлов результатов.
После того как корпус уже собран, выполните:
make verify-fast
Это пропускает этапы резервного копирования, загрузки и сборки корпуса и повторно запускает тесты, восстановление, оценку, проверки и фиксацию манифеста на основе текущего локального корпуса.
Включённые сгенерированные выходные данные сообщают:
контексты путей/представлений: 44 912
различные физические родословные CA: 16 858
записи типизированных зависимостей: 72 020
глобальные m50 / m95 / mmax: 6 / 16 / 18
LR+ тёплая подсказка профиля: 296 / 776 / 872 байт
SPB: 3 842 / 5 932 / 6 350 байт
Профиль S: 8 993 / 18 033 / 19 841 байт
полный PQ на зависимость: 15 774 / 42 064 / 47 322 байт
сохранённое состояние: 16 150 580 байт
подписанная контрольная точка: 16 160 724 байт
Попредставленческие сводки находятся в results/per_view_summary.csv.
Реализация использует финальные имена LR+ для исходных файлов, скриптов, целей, конфигурации и отчётов. Криптографические выходные данные не редактируются вручную, кроме стабильных текстовых метаданных. Шестнадцатеричные отпечатки сертификатов, ссылки на записи и дайджесты могут естественным образом содержать произвольные подстроки; это данные, а не терминология процесса.