
Referenzimplementierung der LR+ Post-Quanten-Authentifizierung im WebPKI-CA-Kontext, mit Korpus-Pipeline, Rekonstruktion, Evaluierung und Herkunftsmanifesten für reproduzierbare Forschung.
Dieses Paket enthält die finalisierte LR+-Referenzimplementierung, Produktions-Rekonstruktions-Wrapper, Tests und generierte Evaluierungsausgaben für kontextgeschlossene Post-Quanten-Authentifizierung über den WebPKI-CA-Kontext.
Das Paket ist bewusst als Einreichungsartefakt und nicht als Forschungstagebuch-Schnappschuss geschrieben: Zielnamen, Dateinamen, Modulnamen und Berichte verwenden stabile Implementierungsterminologie.
src/lrplus/ LR+-Referenzmodule
scripts/ Korpus-Download, Build, Rekonstruktion, Evaluierung und Prüfungen
config/ festgelegte Rekonstruktions- und Download-Konfiguration
results/ generierte Produktionsausgaben, die im Paper verwendet werden
audit/ Herkunftsbericht und Ausgabe-Hash-Manifest
backups/ Manifest für die Sicherung des Eingabekorpus vor dem Rebuild
data/ccadb_full/ CCADB-Download-Manifest und Datei-Hashes
working_corpus/ Korpus-Rebuild-Manifest für das kompakte Bündel
tests/ Protokoll- und Artefakt-Konsistenztests
Das kompakte Bündel enthält Manifeste und generierte Ergebnisse. Eine vollständig frische Regenerierung erfordert Internetzugang und Zugriff auf die bestehende WebPKI-Korpus-Pipeline, die und bereitstellt.
scripts/normalize_ccadb.pyscripts/build_graph.pyVerwenden Sie Python 3.9 oder neuer. Ein typisches Setup ist:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
Der ML-DSA-44-Adapter verwendet pqcrypto==0.4.0. Wenn dieses Backend nicht verfügbar ist, wird der echte ML-DSA-Test übersprungen, während die übrigen Referenztests weiterhin ausgeführt werden. Für das Produktions-Verifikations-Gate installieren Sie alle Abhängigkeiten aus pyproject.toml.
Der CCADB-Wrapper delegiert Normalisierung und Graph-Konstruktion an die bestehende WebPKI-Korpus-Pipeline. Setzen Sie eine der folgenden Optionen, bevor Sie einen vollständigen Build ausführen:
export WEBPKI_PIPELINE_ROOT=/path/to/existing_webpki_pipeline
oder übergeben Sie den Pfad über Make:
make verify PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Die Pipeline-Wurzel muss enthalten:
scripts/normalize_ccadb.py
scripts/build_graph.py
Der einzelne Befehl ist:
make verify PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Er führt die folgenden Phasen in dieser Reihenfolge aus.
make backup-corpus
Dies kopiert die aktuellen working_corpus/{raw,normalized,graph,outputs_scc_repaired}-Unterverzeichnisse, sofern vorhanden, in backups/input_corpus_<timestamp>/ und schreibt manifest.json, file_inventory.csv und SHA256SUMS.
make download-ccadb
Dies verwendet config/ccadb_download.yaml und schreibt:
data/ccadb_full/download_manifest.json
data/ccadb_full/SHA256SUMS
Das Manifest erfasst das ausgewählte crtsh/ccadb_data-Tag, den Commit, den V5-Zertifikatsdatensatz-Hash, den jährlichen PEM-Dateibereich und den Root-Trust-Eingabe-Hash.
make build-corpus PIPELINE_ROOT=/path/to/existing_webpki_pipeline
Der Wrapper bereitet die heruntergeladenen CCADB-Dateien unter working_corpus/raw/ vor und ruft dann den Normalisierer und Graph-Builder der bestehenden Pipeline auf. Er schreibt:
working_corpus/rebuild_manifest.json
working_corpus/normalized/certificates.parquet
working_corpus/normalized/records.parquet
working_corpus/outputs_scc_repaired/graph.json
make test
Die Testsuite umfasst kanonische Identifikatoren, Warm-Wire-Parsing, aktuelle Terminal-Bindung, typisierte Stream-Kanonisierung, Aushandlung, Bereichs-Nachhol-Deltas, authentifizierte Zustandsserialisierung, Rekonstruktionsausgabe-Schema und ML-DSA-Integration, wenn das Backend installiert ist.
make reconstruct
Dies liest config/reconstruction.yaml und erzeugt eine Zeile pro ausgewähltem Pfad/Ansicht-Kontext:
results/path_view_trace.csv
results/typed_dependency_records.csv
results/view_root_sets.csv
results/reconstruction_gate.json
Jede Pfadzeile erfasst die Ansicht, konkrete Zertifikats-IDs, die ausgewählte Abstammungslinie, die Pfad-ID, typisierte Abhängigkeitsreferenzen, Abhängigkeitstypen, Warm-Bytes, Basislinien-Bytes und Terminal-Bindungs-Digests.
make evaluate
Dies berechnet:
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
Die Byte-Abrechnungsformeln sind:
LR+ Warm-Profil-Hinweis: 8 + 48*m
SPB: 2588 + 209*m
Profil S: 3569 + 904*m
Vollständige PQ pro Abhängigkeit: m*(2420 + 209)
Bereichs-Nachhol-Delta: 2584 + 264*k_total
Aufeinanderfolgende Deltas: r*(2584 + 264*k_pro_epoche)
make check
Dies verifiziert erforderliche Ausgaben, festgelegte Quell-Manifeste, Byte-Formeln pro Zeile, Pfad-IDs, Terminal-Digests, Abhängigkeitsdatensatz-Abdeckung, konfigurierte Ansichten, Zustandsserialisierung pro Ansicht und Katalogverfügbarkeit. Es schreibt:
results/check_results.json
Der Status muss PASS sein.
make freeze
Dies schreibt:
audit/implementation_manifest.json
Das Manifest erfasst Plattforminformationen, festgelegte Quell-Metadaten, Korpus-Build-Metadaten und SHA-256-Hashes aller generierten Ergebnisdateien.
Nachdem der Korpus bereits aufgebaut wurde, führen Sie aus:
make verify-fast
Dies überspringt die Sicherungs-, Download- und Korpus-Build-Phasen und führt Tests, Rekonstruktion, Evaluierung, Prüfungen und Manifest-Einfrieren aus dem aktuellen lokalen Korpus erneut aus.
Die gebündelten generierten Ausgaben berichten:
Pfad/Ansicht-Kontexte: 44.912
unterschiedliche physische CA-Abstammungslinien: 16.858
typisierte Abhängigkeitsdatensätze: 72.020
globales m50 / m95 / mmax: 6 / 16 / 18
LR+ Warm-Profil-Hinweis: 296 / 776 / 872 Bytes
SPB: 3.842 / 5.932 / 6.350 Bytes
Profil S: 8.993 / 18.033 / 19.841 Bytes
vollständige PQ pro Abhängigkeit: 15.774 / 42.064 / 47.322 Bytes
beibehaltener Zustand: 16.150.580 Bytes
signierter Checkpoint: 16.160.724 Bytes
Pro-Ansicht-Zusammenfassungen finden Sie in results/per_view_summary.csv.
Die Implementierung verwendet finalisierte LR+-Namen für Quelldateien, Skripte, Ziele, Konfiguration und Berichte. Kryptografische Ausgaben werden nicht manuell über stabile textuelle Metadaten hinaus bearbeitet. Hexadezimale Zertifikats-Fingerabdrücke, Datensatzreferenzen und Digests können natürlich beliebige Teilzeichenfolgen enthalten; diese sind Daten, keine Prozessterminologie.