
Implémentation de référence de l'authentification post-quantique LR+ dans le contexte d'une autorité de certification WebPKI, avec pipeline de corpus, reconstruction, évaluation et manifestes de provenance pour une recherche reproductible.
Ce paquet contient l'implémentation de référence finalisée LR+, les wrappers de reconstruction de production, les tests et les sorties d'évaluation générées pour l'authentification post-quantique à contexte fermé sur le contexte d'AC WebPKI.
Le paquet est volontairement écrit comme un artefact de soumission plutôt que comme un instantané de journal de recherche : les noms de cibles, les noms de fichiers, les noms de modules et les rapports utilisent une terminologie d'implémentation stable.
src/lrplus/ Modules de référence LR+
scripts/ Téléchargement du corpus, construction, reconstruction, évaluation et vérifications
config/ Configuration épinglée de reconstruction et de téléchargement
results/ Sorties de production générées utilisées par l'article
audit/ Rapport de provenance et manifeste de hachage des sorties
backups/ Manifeste pour la sauvegarde du corpus d'entrée effectuée avant reconstruction
data/ccadb_full/ Manifeste de téléchargement CCADB et hachages de fichiers
working_corpus/ Manifeste de reconstruction du corpus pour le bundle compact
tests/ Tests de protocole et de cohérence des artefacts
Le bundle compact contient les manifestes et les résultats générés. Une régénération entièrement nouvelle nécessite un accès Internet et un accès au pipeline de corpus WebPKI existant qui fournit scripts/normalize_ccadb.py et scripts/build_graph.py.
Utilisez Python 3.9 ou plus récent. Une configuration typique est :
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
L'adaptateur ML-DSA-44 utilise pqcrypto==0.4.0. Si ce backend n'est pas disponible, le test ML-DSA réel est ignoré tandis que le reste des tests de référence s'exécute toujours. Pour la passerelle de vérification de production, installez toutes les dépendances depuis pyproject.toml.
Le wrapper CCADB délègue la normalisation et la construction du graphe au pipeline de corpus WebPKI existant. Définissez l'une des variables suivantes avant d'exécuter une construction complète :
export WEBPKI_PIPELINE_ROOT=/chemin/vers/pipeline_webpki_existant
ou transmettez le chemin via Make :
make verify PIPELINE_ROOT=/chemin/vers/pipeline_webpki_existant
La racine du pipeline doit contenir :
scripts/normalize_ccadb.py
scripts/build_graph.py
La commande unique est :
make verify PIPELINE_ROOT=/chemin/vers/pipeline_webpki_existant
Elle exécute les étapes suivantes dans l'ordre.
make backup-corpus
Cela copie les sous-répertoires actuels working_corpus/{raw,normalized,graph,outputs_scc_repaired}, lorsqu'ils sont présents, dans backups/input_corpus_<horodatage>/ et écrit manifest.json, file_inventory.csv et SHA256SUMS.
make download-ccadb
Cela utilise config/ccadb_download.yaml et écrit :
data/ccadb_full/download_manifest.json
data/ccadb_full/SHA256SUMS
Le manifeste enregistre la balise crtsh/ccadb_data sélectionnée, le commit, le hachage d'enregistrement de certificat V5, la plage de fichiers PEM annuels et le hachage d'entrée de confiance racine.
make build-corpus PIPELINE_ROOT=/chemin/vers/pipeline_webpki_existant
Le wrapper prépare les fichiers CCADB téléchargés sous working_corpus/raw/ puis invoque le normaliseur et le constructeur de graphe du pipeline existant. Il écrit :
working_corpus/rebuild_manifest.json
working_corpus/normalized/certificates.parquet
working_corpus/normalized/records.parquet
working_corpus/outputs_scc_repaired/graph.json
make test
La suite de tests couvre les identifiants canoniques, l'analyse des fils à chaud, la liaison de terminal courant, la canonicalisation des flux typés, la négociation, les deltas de rattrapage de plage, la sérialisation d'état authentifié, le schéma des sorties de reconstruction et l'intégration ML-DSA lorsque le backend est installé.
make reconstruct
Cela lit config/reconstruction.yaml et émet une ligne par contexte de chemin/vue sélectionné :
results/path_view_trace.csv
results/typed_dependency_records.csv
results/view_root_sets.csv
results/reconstruction_gate.json
Chaque ligne de chemin enregistre la vue, les identifiants de certificats concrets, la lignée sélectionnée, l'identifiant de chemin, les références de dépendances typées, les types de dépendances, les octets à chaud, les octets de référence et les condensés de liaison de terminal.
make evaluate
Cela calcule :
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
Les formules de comptabilité d'octets sont :
Indice de profil à chaud LR+ : 8 + 48*m
SPB : 2588 + 209*m
Profil S : 3569 + 904*m
PQ complet par dépendance : m*(2420 + 209)
Delta de rattrapage de plage : 2584 + 264*k_total
Deltas consécutifs : r*(2584 + 264*k_par_époque)
make check
Cela vérifie les sorties requises, les manifestes de sources épinglées, les formules d'octets par ligne, les identifiants de chemins, les condensés de terminal, la couverture des enregistrements de dépendances, les vues configurées, la sérialisation d'état par vue et la disponibilité du catalogue. Cela écrit :
results/check_results.json
Le statut doit être PASS.
make freeze
Cela écrit :
audit/implementation_manifest.json
Le manifeste enregistre les informations de plateforme, les métadonnées de sources épinglées, les métadonnées de construction du corpus et les hachages SHA-256 de tous les fichiers de résultats générés.
Après que le corpus a déjà été construit, exécutez :
make verify-fast
Cela ignore les étapes de sauvegarde, de téléchargement et de construction du corpus et relance les tests, la reconstruction, l'évaluation, les vérifications et le gel du manifeste à partir du corpus local actuel.
Les sorties générées groupées rapportent :
contextes chemin/vue : 44 912
lignées d'AC physiques distinctes : 16 858
enregistrements de dépendances typées : 72 020
m50 / m95 / mmax globaux : 6 / 16 / 18
Indice de profil à chaud LR+ : 296 / 776 / 872 octets
SPB : 3 842 / 5 932 / 6 350 octets
Profil S : 8 993 / 18 033 / 19 841 octets
PQ complet par dépendance : 15 774 / 42 064 / 47 322 octets
état conservé : 16 150 580 octets
point de contrôle signé : 16 160 724 octets
Les résumés par vue se trouvent dans results/per_view_summary.csv.
L'implémentation utilise les noms LR+ finalisés pour les fichiers sources, les scripts, les cibles, la configuration et les rapports. Les sorties cryptographiques ne sont pas modifiées manuellement au-delà des métadonnées textuelles stables. Les empreintes hexadécimales de certificats, les références d'enregistrements et les condensés peuvent naturellement contenir des sous-chaînes arbitraires ; ce sont des données, pas une terminologie de processus.