
LR+ポスト量子認証のWebPKI CAコンテキストにおける参照実装。再現可能な研究のためのコーパスパイプライン、再構築、評価、および来歴マニフェストを備えています。
このパッケージには、最終版LR+リファレンス実装、本番復元ラッパー、テスト、およびWebPKI CAコンテキスト上のコンテキストクローズ型耐量子認証用に生成された評価出力が含まれています。
このパッケージは、研究ログのスナップショットではなく、提出用アーティファクトとして意図的に記述されています。ターゲット名、ファイル名、モジュール名、レポートは安定した実装用語を使用しています。
src/lrplus/ LR+リファレンスモジュール
scripts/ コーパスダウンロード、ビルド、復元、評価、チェック
config/ 固定された復元およびダウンロード設定
results/ 論文で使用される生成された本番出力
audit/ 来歴レポートと出力ハッシュマニフェスト
backups/ 再ビルド前に行われた入力コーパスバックアップのマニフェスト
data/ccadb_full/ CCADBダウンロードマニフェストとファイルハッシュ
working_corpus/ コンパクトバンドル用のコーパス再ビルドマニフェスト
tests/ プロトコルおよびアーティファクト整合性テスト
コンパクトバンドルにはマニフェストと生成された結果が含まれています。完全に新規の再生成には、インターネットアクセスと、scripts/normalize_ccadb.pyおよびscripts/build_graph.pyを提供する既存のWebPKIコーパスパイプラインへのアクセスが必要です。
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を読み取り、選択されたパス/ビューコンテキストごとに1行を出力します:
results/path_view_trace.csv
results/typed_dependency_records.csv
results/view_root_sets.csv
results/reconstruction_gate.json
各パス行は、ビュー、具体的な証明書ID、選択された系統、パスID、型付き依存関係参照、依存関係タイプ、ウォームバイト、ベースラインバイト、およびターミナルバインディングダイジェストを記録します。
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+ warm profile-hint: 8 + 48*m
SPB: 2588 + 209*m
Profile S: 3569 + 904*m
Full per-dependency PQ: m*(2420 + 209)
Range catch-up delta: 2584 + 264*k_total
Consecutive deltas: r*(2584 + 264*k_per_epoch)
make check
これは、必要な出力、固定ソースマニフェスト、行ごとのバイト計算式、パスID、ターミナルダイジェスト、依存関係レコードのカバレッジ、設定されたビュー、ビューごとの状態シリアライゼーション、およびカタログの可用性を検証します。以下を書き込みます:
results/check_results.json
ステータスはPASSである必要があります。
make freeze
これは以下を書き込みます:
audit/implementation_manifest.json
マニフェストは、プラットフォーム情報、固定ソースメタデータ、コーパスビルドメタデータ、および生成されたすべての結果ファイルのSHA-256ハッシュを記録します。
コーパスがすでにビルドされた後、以下を実行します:
make verify-fast
これはバックアップ、ダウンロード、コーパスビルドのステージをスキップし、現在のローカルコーパスからテスト、復元、評価、チェック、マニフェスト固定を再実行します。
バンドルされた生成出力は以下を報告します:
path/view contexts: 44,912
distinct physical CA lineages: 16,858
typed dependency records: 72,020
global m50 / m95 / mmax: 6 / 16 / 18
LR+ warm profile-hint: 296 / 776 / 872 bytes
SPB: 3,842 / 5,932 / 6,350 bytes
Profile S: 8,993 / 18,033 / 19,841 bytes
full per-dependency PQ: 15,774 / 42,064 / 47,322 bytes
retained state: 16,150,580 bytes
signed checkpoint: 16,160,724 bytes
ビューごとのサマリーはresults/per_view_summary.csvにあります。
実装は、ソースファイル、スクリプト、ターゲット、設定、レポートに最終版LR+の名前を使用しています。暗号出力は、安定したテキストメタデータ以外は手動で編集されません。16進数の証明書フィンガープリント、レコード参照、ダイジェストには、当然ながら任意の部分文字列が含まれる場合があります。これらはデータであり、プロセス用語ではありません。