Designing Rust APIs around KEM, AEAD and key derivation workflows
Designing Rust APIs around KEM, AEAD and key derivation workflows (github.com)
要約
RustでKEM(鍵カプセル化メカニズム)、AEAD(認証付き暗号)、鍵導出ワークフローを中心としたAPIを設計することに焦点を当てたプロジェクト「NEXUS-Q」に関するドキュメントです。このプロジェクトは、ポスト量子暗号を含む包括的なセキュリティエンジンを提供し、Rustライブラリを基盤として、CLI、サーバー、各種言語SDKを提供しています。最新リリースv4.1.2は監査準備完了ですが、プロダクションレディネスやFIPS認証は保留中です。
全文翻訳
Designing Rust APIs around KEM, AEAD and key derivation workflows
現在のプロジェクトステータス(2026-10-28確認済み): NEXUS-Q v4.1.2 が現在のリリースです。プロダクションレディネスの主張なし、FIPS認証なし、外部監査保留中。レジストリの利用可能性とリリースプロビナンスは別途文書化されています。Goモジュールは独立したv0.xバージョンを維持しています。ネイティブML-KEM/ML-DSAバックエンドは実験的でオプトインのままです。RustCryptoがデフォルトのパスです。
v4.1.2 リリースステータス(2026-10-28): 監査準備完了リリース。プロダクションレディネスの主張なし、FIPS認証なし、外部監査保留中。 リリース証拠と制限事項は
docs/V4_RELEASE.mdに文書化されています。レジストリの利用可能性は、各エコシステムパッケージのビルドプロビナンスの証明ではありません。
クイックナビゲーション
| ここから始める | さらに探る |
|---|---|
| 概要と設計 · 暗号化 · クイックスタート | アーキテクチャ · 脅威モデル · セキュリティモデル |
| ベンチマークと測定結果 · インストール | ベンチマークアリーナと方法論 · ベンチマークインデックス · パフォーマンスレポート |
| プロジェクトステータスとバージョン · セキュリティと保証 | ロードマップ · リリースノート · セキュリティポリシー |
| ドキュメントインデックス · コントリビューティング · ライセンス | ウェブサイト · リリース · ディスカッション |
プロジェクト概要
| 項目 | 現在のプロジェクト位置 |
|---|---|
| 言語 | Rust, edition 2024 |
現在の main ツールチェーン | Rust 1.88 以降。公開されているアーティファクトが main と一致すると仮定する前に、上記のリリースプロビナンスに関する注記を参照してください。 |
| 暗号化 | 標準化された古典的およびポスト量子プリミティブ。 暗号化 および docs/CRYPTOGRAPHY.md を参照してください。 |
| デフォルトの実装パス | RustCrypto。ネイティブバックエンドは実験的でオプトインです。 |
| インターフェース | Rustライブラリ、CLI、サーバー、C ABIおよび言語SDK。エコシステムによって利用可能性とパッケージングは異なります。 |
| ライセンス | MIT または Apache-2.0 |
| 保証境界 | セキュリティCI、ファズターゲット、文書化された脅威モデル。独立した外部監査または認証は主張していません。 |
機能と成熟度マトリックス
これはクイックオリエンテーションであり、モジュールごとのドキュメントやリリースプロビナンスの代わりにはなりません。「利用可能」とは、リポジトリに実装されたパスがあることを意味し、独立した監査や認証を意味するものではありません。
| ステータス | 機能 | 資格 |
|---|---|---|
| 利用可能 | Rustコア、CLI、サーバー、ボールト/ストレージワークフロー、ポリシーチェック、監査ログ、文書化されたSDKバインディング | インストール およびそのバインディングガイドで、特定のパッケージ、ターゲット、リリースステータスを確認してください。 |
| 利用可能 | デフォルトのRustCryptoパスを介した標準化された暗号アルゴリズム。プロジェクト内のML-KEM/ML-DSA機能も含む | ライブラリレベルでのアルゴリズムサポートは、すべてのCLIコマンドまたはSDKがすべての操作を公開することを意味するものではありません。 |
| 実験的 / オプトイン | native-backend の背後にあるネイティブML-KEM/ML-DSAバックエンド | コア、CLI、サーバー、SDKではデフォルトで有効になっていません。独立した監査も受けていません。 ネイティブバックエンドの注記 を参照してください。 |
| 統合固有 | HSMモジュールおよびハードウェアプロバイダー抽象化 | 関連アダプターとデプロイメントドキュメントを確認しない限り、特定のHSM、TPM、セキュアエレメント、エンクレーブがサポートされている、またはハードウェア分離を提供すると推測しないでください。 |
| 計画中 / ターゲット依存 | ハードウェアバックド分離およびプラットフォーム固有の統合 | 実装、サポートデバイスマトリックス、CI証拠がリンクされるまで、ロードマップエントリを計画として扱ってください。 |
セキュリティモデル概要
| 質問 | 現在の文書化された位置 | 重要な制限 |
|---|---|---|
| どの敵対者が考慮されますか? | ネットワーク攻撃者およびローカル非特権攻撃者。信頼境界は 脅威モデル で詳述されています。 | 侵害されたエンドポイント、特権攻撃者、または悪意のあるビルド/リリースインフラストラクチャは仮定を無効にする可能性があります。完全な脅威モデルを参照してください。 |
| ボールトファイルが盗まれた場合どうなりますか? | ボールトデータは保存時に暗号化され、キーマテリアルはボールト/キーライフサイクルを通じて管理されます。 | パスワード強度、正しいデプロイメント、攻撃者がロック解除シークレットやプロセスメモリを取得しないことに依存します。 |
| デバイスが既に侵害されている場合はどうなりますか? | ゼロ化、ポリシーチェック、監査制御は多層防御を提供します。 | 実行中のプロセス、OS、または特権アカウントを制御する攻撃者からの保護を保証するものではありません。 |
| パスワードを紛失した場合はどうなりますか? | 設定されたボールトの文書化されたバックアップおよびリカバリ手順に従ってください。 | パスワードリセットまたはリカバリパスが暗号化シークレットを回復できると想定しないでください。検証済みのバックアップを保持し、本番使用前にリカバリをテストしてください。 |
| 外部監査または認証は完了しましたか? | 独立した外部監査またはFIPS 140-3 / Common Criteria認証は主張されていません。 | 自動テスト、ファジング、CI、ベンチマーク、パッケージ公開は、独立したレビューの代わりにはなりません。 |
| すべての依存関係アドバイザリは解決されていますか? | 依存関係スキャンはセキュリティワークフローの一部です。 | rsa の RUSTSEC-2023-0071 は、監査設定 および deny.toml で文書化された例外として残っています。現在のCIおよびアドバイザリステータスを確認してください。 |
モジュールとSDK
リポジトリは、暗号コアをインターフェース、オプションサービス、言語バインディングから分離しています。これらの名前はリポジトリコンポーネントを説明するものであり、すべてのパッケージが同一の成熟度、プラットフォームサポート、またはリリースプロビナンスを持つことを主張するものではありません。必要なパッケージとターゲットを確認するには、インストールテーブルと各バインディング固有のドキュメントを使用してください。
| エリア | 主要コンポーネント | 目的 / 境界 |
|---|---|---|
| コアとプリミティブ | nexusq-core, nexusq-kernels, nexusq-ml-kem, nexusq-ml-dsa | コアセキュリティロジックとアルゴリズム中心のクレート |
| アプリケーションインターフェース | nexusq, nexusq-cli, nexusq-server | 集約Rust API、コマンドラインインターフェース、認証済みHTTPサービス |
| ネイティブ統合 | nexusq-c, nexusq-cpp, nexusq-py | C/C++統合およびPython拡張/バインディング |
| オプションサービス | nexusq-admin, nexusq-enrollment, nexusq-ha, nexusq-hsm, nexusq-ocsp, nexusq-pki-cluster, nexusq-tsa, nexusq-x509 | 管理、登録、高可用性、ハードウェア統合、PKI関連モジュール。運用範囲については個別のドキュメントを参照してください。 |
| 言語バインディング | bindings/ | Dart、.NET、Go、Java、Kotlin、PHP、Ruby、Swift、TypeScript/Node.js |
| パフォーマンス証拠 | arena/, BENCHMARKS.md, docs/performance/ | ベンチマークアダプター、方法論、測定レポート、および過去のエンジニアリング上の決定 |
リポジトリには、アーキテクチャフロー、プロジェクト概要、ベンチマーク比較のビジュアルアセットが既に含まれています。ベンチマークビジュアルは文書化された測定値に基づいています。グラフィックを単独のパフォーマンス保証として扱うのではなく、関連するテーブルと実行固有の注記を参照してください。
[画像: 5 Rust crates, 5 SDK languages, 8 Arena implementations, 57 measurements]
[画像: Overview]
Overview
NEXUS-Qは、以下の保護を目的としたポスト量子暗号セキュリティエンジンです。
| 🔒 Data | 🗝️ Keys | 🪪 Identities |
|---|---|---|
| ファイルとストリームの認証付き暗号化。 | フルライフサイクル管理:生成、ローテーション、失効、破棄。 | デジタル署名と検証可能なクレデンシャル。 |
アプリケーションおよびサーバー向けの暗号化/セキュリティエンジンとして意図されています。リポジトリは、将来のTPM、HSM、セキュアエレメント、エンクレーブ、RISC-V統合のためのハードウェアプロバイダー抽象化ポイントも定義しています。デフォルトのソフトウェアバックエンド自体はハードウェア分離を提供しません。
[画像: How it works]
[画像: Unlock the vault, manage keys, encrypt or sign, enforce policy, audit everything]
すべての操作は同じビルディングブロックを通過します:パスワードで暗号化されたボールト(フォーマットF-01、アトミック書き込み)をアンロックし、キーはフルライフサイクルを通じて管理され、データはエンベロープ暗号化(フォーマットF-02)で保護され、デフォルト拒否ポリシーエンジンがアクションをゲートし、セキュリティ関連イベントはHMAC認証付き監査ログに記録され、ロールバックアンカリングが行われます。
[画像: Design principles]
- 暗号化を発明しない。 標準化されたアルゴリズムと保守されている暗号ライブラリのみを使用。依存関係の監査ステータスは明示的に文書化されています。
- ライブラリファースト。 コアはRustライブラリであり、CLI、SDK、サーバーはそれらをラップするレイヤーです。
- ハードウェアに依存しない境界。 ハードウェアプロバイダーインターフェースはソフトウェアバックエンドから分離されています。具体的なハードウェア分離は、プロバイダーが実装されテストされた場合にのみ主張されます。
- ゼロ化。 不要になった秘密情報はメモリから消去されます。
- 監査可能性。 監査可能なセキュリティ状態の変更と暗号アクションは、改ざん防止、HMAC認証付きログに記録されます。
- ゼロからのセキュリティ。 コードの前に脅威モデルと暗号化ルール。
[画像: Repository layout]
| コンポーネント | 内容 |
|---|---|
crates/nexusq-core | ライブラリ。すべての暗号化、ボールト、キー管理、ID、ポリシー、ストレージ、ハードウェア抽象化がここにあります。 |
crates/nexusq-cli | nexusq バイナリ。ライブラリの薄いラッパー。暗号化は含まれません。 |
crates/nexusq-server | nexusq-server バイナリと認証済みHTTPサービス。 |
crates/nexusq-c · crates/nexusq-py | C SDKとPythonバインディング。 |
bindings/ | Go、PHP、Rubyバインディング。 |
arena/ | PQCベンチマークアリーナ:ピン留めされた外部実装と正規化されたJSONL出力。 |
fuzz/ · artifact-archive/ | ファズターゲットとアーカイブされたV1/V2/V3証拠(SHA-256マニフェスト付き)。 |
docs/ · deploy/ · examples/ | ドキュメント、リリースパッケージング、Cサンプル。 |
現在の main ビルド要件: Rust 1.88 以降(edition 2024、現在の Cargo.toml MSRVに一致)および Git。公開されているパッケージは異なるソースプロビナンスとMSRVを持つ場合があります。古いツールチェーンをターゲットにする場合は、特定のパッケージメタデータをチェックしてください。追加のSDKツールチェーンは、特定のバインディング(C/C++、Python、Go、Ruby)をビルドする場合にのみ必要です。
ターゲットプラットフォーム: Linux (x86_64, aarch64); Android / Termux (aarch64); RISC-V (riscv64gc-unknown-linux-gnu)、ビルド検証済み; macOS および Windows のリリースビルドは V2 CI/リリースゲートによって検証されます。
[画像: Cryptography]
Cryptography
| ファミリ | 目的 | 実装 |
|---|---|---|
| ランダムネス | キー、ノンス、ソルトの乱数性 | OS CSPRNG、ヘルスチェックとミキシングを備えたTRNGサポート |
| ハッシュ | ダイジェストとコミットメント | SHA-2, SHA-3 |
| KDF | パスワードとキーマテリアルからキーへ | Argon2id, HKDF |
| AEAD | 対称認証付き暗号化 | AES-256-GCM, ChaCha20-Poly1305 |
| KEM | ポスト量子鍵カプセル化 | ML-KEM-768 および ML-KEM-1024、X25519とのハイブリッド |
| 署名 | 真正性 | Ed25519, ML-DSA-65, SLH-DSA-SHAKE-128f |
参照ドキュメントは docs/CRYPTOGRAPHY.md です。計画中のアルゴリズムは、実装およびテストされるまで利用可能として記述してはなりません。
[画像: Status]
Status
完了:
- 基盤ドキュメント、脅威モデル、暗号化ルール。
- 暗号コア:ML-KEM-768 (X25519とのハイブリッド)、AES-256-GCM、ChaCha20-Poly1305、Ed25519、SHA-2、SHA-3、Argon2id、HKDF。
- フルライフサイクルを持つキー管理。
- 暗号化ボールト(フォーマットF-01)とアトミック書き込み。
- エンベロープ暗号化(フォーマットF-02)。
- 署名、検証、ローテーション、失効、署名付きクレデンシャルを持つID。
- ソフトウェア、TPM、HSM、セキュアエレメント、RISC-Vのためのハードウェア抽象化トレイト。
- ヘルスチェックとミキシングを備えたTRNGサポート。
- RISC-Vへのクロスコンパイル検証済み。
- ストレージ:HMAC認証付き監査ログ(ロールバックアンカリング付き)、バックアップバンドル、ストレージDB。
- デフォルト拒否ポリシーエンジン。
- ボールト、キー、データ、署名、ID、クレデンシャル、監査コマンドをカバーするCLI。
[画像: Benchmarks]
Benchmarks
以下のベンチマークテーブルは、記録された測定値、過去の比較、および既知の注意点を意図的に保持しています。これらは実際のプロジェクトベンチマーク結果であり、例示的な数値ではありません。各データセットには独自のコンテキストがあります。ローカル診断、ホストランナーのリリースゲート、過去のアリーナ実行は、単一の管理された実験であるかのように比較されるべきではありません。
再現性とより完全なコンテキストのために、PQCベンチマークアリーナのドキュメント、ベンチマークインデックス、V4リリースノート、およびリンクされた実行ごとのCIアーティファクト/レポートから始めてください。ハードウェア、CPUガバナー、ランナー環境、サンプル数、ウォームアップ、比較バージョン、集計方法は重要です。レイテンシ比は操作固有であり、複合スコアはありません。低いレイテンシが良い結果であり、ベンチマークの合格はエンドツーエンドのアプリケーションパフォーマンスまたはセキュリティ認証の主張ではありません。
NEXUS-Qは普遍的なパフォーマンスリーダーとして提示されていません。2026-10-21のローカルx86-64ベンチマークでは、オプトインネイティブバックエンドは、一致するAWS-LC RNGを使用して、各操作で最も適した比較対象と比較されました。9つの操作のうち6つが中央値とp95の両方で比較対象を上回り、残りの3つは同等に近い結果でした:ML-DSA-65署名(中央値の1.063倍 / p95の1.115倍)、ML-KEM-1024キー生成(1.021倍 / 1.020倍)、およびML-KEM-768キー生成(1.015倍 / 1.013倍)。これは、CPUガバナーがpowersaveに設定されたIntel Core i3-N305からのローカル診断証拠であり、ホストランナーのリリースベンチマークや普遍的なパフォーマンスの主張ではありません。プロジェクトオーナーはこの結果をIssue #23 を完了するために十分とみなし、残りの差はdocs/performance/ISSUE_23_FINAL_GATE_AUDIT_2026-10-21.md に文書化されています。デフォルトのnexusq-coreビルド、CLI、SDKは引き続き本番呼び出しパスにRustCryptoを使用しています。ネイティブパスはオプトインおよび実験的です。低いレイテンシが良い結果です。
[画像: NEXUS-Q v4.1.0 (opt-in native backend) versus AWS-LC on nine ML-KEM and ML-DSA operations]
v4.1.0安定ライン、2026-10-19:マージされたv4.1.0コードでグリーンリリースCIから取得した、オプトインネイティブバックエンドとAWS-LCの公式1.5倍中央値およびp95本番パスゲート。各実装で3回の交互ラウンド、プールされた中央値と最も近いランクのp95、各操作あたり3,000サンプルをAMD EPYC 7763 CIランナーで実行。同じリリースからの完全なPQCベンチマークアリーナ実行(241の正規化された測定値、8つの比較対象とV1/V1+zeroize/V3コントロール)はCIアーティファクトとして保持されています。複合スコアなしで報告。
| 操作 | NEXUS-Q | AWS-LC | NEXUS-Q / AWS-LC |
|---|---|---|---|
| ML-KEM-768 keygen | 12.90 µs | 12.33 µs | 1.05× |
| ML-KEM-768 encaps | 12.94 µs | 12.75 µs | 1.01× |
| ML-KEM-768 decaps | 15.38 µs | 15.43 µs | 1.00× |
| ML-KEM-1024 keygen | 18.34 µs | 17.85 µs | 1.03× |
| ML-KEM-1024 encaps | 18.66 µs | 18.56 µs | 1.01× |
| ML-KEM-1024 decaps | 22.01 µs | 22.19 µs | 0.99× |
| ML-DSA-65 keygen | 35.79 µs | 40.00 µs | 0.89× |
| ML-DSA-65 sign | 83.22 µs | 96.57 µs | 0.86× |
| ML-DSA-65 verify | 33.54 µs | 34.31 µs | 0.98× |
v1.0 Arena baseline (historical)
v1ベースラインは、測定されたML-KEMおよびML-DSA操作において、最も高速な成熟した実装よりも遅かったです。そのギャップを埋めることがV4ラインの主要なエンジニアリングターゲットでした。
最終v1.0アリーナ実行、2026-10-05:同じx86_64 Linux CI環境で8つの実装からの57の正規化された測定値、各操作あたり20イテレーションと3回のウォームアップ。複合スコアなしで報告。比較対象:AWS-LC、Botan、CIRCL、liboqs、OpenSSL、PQ Code Package、およびRustCrypto KEM。生の測定値はCIアーティファクトとして保持されています。
| 操作 | NEXUS-Q v1 | 最良の比較対象 | NEXUS-Q v1 / 最良 |
|---|---|---|---|
| ML-KEM-768 keygen | 33.94 µs | AWS-LC, 11.44 µs | 2.97× |
| ML-KEM-768 encaps | 27.97 µs | AWS-LC, 12.11 µs | 2.31× |
| ML-KEM-768 decaps | 34.62 µs | AWS-LC, 15.07 µs | 2.30× |
| ML-KEM-1024 keygen | 53.89 µs | liboqs, 22.60 µs | 2.38× |
| ML-KEM-1024 encaps | 46.05 µs | liboqs, 22.71 µs | 2.03× |
| ML-KEM-1024 decaps | 52.14 µs | liboqs, 25.61 µs | 2.04× |
| ML-DSA-65 keygen | 168.69 µs | AWS-LC, 44.21 µs | 3.82× |
| ML-DSA-65 sign | 600.73 µs | AWS-LC, 134.75 µs | 4.46× |
| ML-DSA-65 verify | 101.20 µs | CIRCL, 22.92 µs | 4.42× |
V1 vs V2 (同じランナーでのアリーナ比較)
最終ベンチマーク記録は、V1に対するパフォーマンスの向上を主張していません。修正されたアリーナ実行では、V2/V1の幾何平均が0.885および1.0647513576となり、パフォーマンスは検証済みのリグレッションまたは改善ではなく、未解決の調査項目となっています。最新の同じランナーでの比較では、9つのNEXUS-Q操作全体でV2はV1と比較して+0.22%から+52.37%のレイテンシが測定されました。ML-DSA-65署名が主要な外れ値(+52.37%)です。
| 操作 | V1 | V2 | V2/V1 | 差分 |
|---|---|---|---|---|
| ML-KEM-768 keygen | 49.819 µs | 51.185 µs | 1.0274 | +2.74% |
| ML-KEM-768 encaps | 45.081 µs | 46.063 µs | 1.0218 | +2.18% |
| ML-KEM-768 decaps | 54.537 µs | 55.997 µs | 1.0268 | +2.68% |
| ML-KEM-1024 keygen | 81.264 µs | 82.191 µs | 1.0114 | +1.14% |
| ML-KEM-1024 encaps | 72.041 µs | 73.221 µs | 1.0164 | +1.64% |
| ML-KEM-1024 decaps | 83.992 µs | 84.859 µs | 1.0103 | +1.03% |
| ML-DSA-65 keygen | 283.730 µs | 284.344 µs | 1.0022 | +0.22% |
| ML-DSA-65 sign | 620.367 µs | 945.226 µs | 1.5237 | +52.37% |
| ML-DSA-65 verify | 181.798 µs | 181.479 µs | 0.9982 | -0.18% |
これらは、保持されているアリーナJSONLアーティファクトからの同じランナーでの参照測定値です。以前の修正された実行では0.885 V2/V1が測定され、実行ごとの大きなばらつきを示しています。したがって、V3は単一実行のリグレッションを仮定するのではなく、プロファイリングとベンチマークばらつきの調査から始まります。docs/V2_PERFORMANCE_RESULTS.md を参照してください。パフォーマンス調査は意図的にV3に延期されており、V2はベンチマーク結果を製造するために変更されていません。
V1 vs V3 (ペア調査)
ペア化されたV1/V3調査では、記録されたホストランナー実験において、6つの測定されたML-KEM操作全体で中央値が+2.70%から+6.33%増加しました。従来のML-DSA検証は+6.40%、キー生成は+6.82%、署名中央値は-0.76%でした。これらは単一CIランナーと10回のペアラウンドからの観測であり、普遍的なパフォーマンスの主張ではありません。BENCHMARKS.md および フォレンジックレポート を参照してください。
ML-DSAのみのゼロ化コントロールは、SHA3/SHAKEゼロ化がML-KEMレイテンシデルタの原因であることを証明しません。Issue #41は、明示的なプロジェクトの決定によりクローズされました。V1は速度を優先し、V3はセキュリティ強化を維持し、観測されたパフォーマンスコストを受け入れます。
V4.1.0安定ライン(アリーナ実行と本番パスゲート)
v4.1.0安定ラインリリースは、フルPQCベンチマークアリーナおよび公式1.5倍中央値およびp95本番パスゲートとともにmainで検証されました。両方ともリリースコードでグリーンです(ピン留めされたRust 1.85.1リリースツールチェーンのコンパイル修正PR #57 が着陸しました)。
アリーナ実行(2026-10-19、コミット 70152eb): 同じubuntu-24.04 x86_64 CI環境で241の正規化された測定値、各操作あたり20イテレーションと3回のウォームアップ。比較対象:AWS-LC (ec05f25)、Botan 3.13.0、OpenSSL 3.5.9、CIRCL 1.6.4、RustCrypto KEMs、liboqs 0.16.0、PQ Code Package、および保持されているV1 / V1+zeroize / V3コントロール。生のJSONL測定値は、アリーナ実行のCIアーティファクト として保持されています。複合スコアなしで報告。
本番パスゲート(ネイティブバックエンド vs AWS-LC、各実装で3回の交互ラウンド、プールされた中央値と最も近いランクのp95、各操作あたり3,000サンプル): 9つのすべての操作が、マージされたリリースコードで変更されていない1.5倍中央値およびp95ゲートをパスしました(ゲート実行)。
| 操作 | NEXUS-Q中央値 | NEXUS-Q p95 | AWS-LC中央値 | 中央値比 | p95比 | ゲート |
|---|---|---|---|---|---|---|
| ML-KEM-768 keygen | 12.90 µs | 13.38 µs | 12.33 µs | 1.046 | 1.041 | pass |
| ML-KEM-768 encaps | 12.94 µs | 13.00 µs | 12.75 µs | 1.015 | 1.013 | pass |
| ML-KEM-768 decaps | 15.38 µs | 15.44 µs | 15.43 µs | 0.997 | 0.994 | pass |
| ML-KEM-1024 keygen | 18.34 µs | 18.86 µs | 17.85 µs | 1.028 | 1.025 | pass |
| ML-KEM-1024 encaps | 18.66 µs | 18.76 µs | 18.56 µs | 1.005 | 0.985 | pass |
| ML-KEM-1024 decaps | 22.01 µs | 22.10 µs | 22.19 µs | 0.992 | 0.977 | pass |
| ML-DSA-65 keygen | 35.79 µs | 36.62 µs | 40.00 µs | 0.895 | 0.885 | pass |
| ML-DSA-65 sign | 83.22 µs | 235.40 µs | 96.57 µs | 0.862 | 0.846 | pass |
| ML-DSA-65 verify | 33.54 µs | 34.01 µs | 34.31 µs | 0.978 | 0.976 | pass |
これらはAMD EPYC 7763ホストランナーでの単一ランナーCI測定値であり、普遍的なパフォーマンスの主張ではありません。ネイティブバックエンドは実験的でオプトインのままです。デフォルトのnexusq-coreビルド、CLI、SDKは引き続き本番呼び出しパスにRustCryptoを使用しています。docs/performance/NATIVE_BACKEND_FEATURE.md および docs/V4_RELEASE.md を参照してください。
[画像: Versions]
| ライン | リファレンス | 現在の意味 | ステータス |
|---|---|---|---|
| V4.1.2 | 現在の公開リリース | 監査準備完了リリース。プロダクションレディネスの主張なし、FIPS認証なし、外部監査保留中。 | 現在のリリース |
| V4.1.1 (historical) | v4.1.1 | 過去のリリース。レジストリの利用可能性とプロビナンスには既知の制限があります。 | 過去のリリース;独立した外部監査は未完了 |
| V4.1 | v4.1.0 · main | 前の安定ラインリリース:オプトインネイティブバックエンド本番パス配線 | 過去のリリース;独立した外部監査は保留中(フェーズ21) |
| V4 | v4-engineering-2026-10-16 · nexusqv4 | 実験的なネイティブバックエンドとパフォーマンス作業 | エンジニアリングスナップショット(リリース前) |
| V3 | v3-engineering-2026-10-09 · nexusqv3 | ハード化された実装とベンチマーク証拠 | エンジニアリングリリース |
| V2 | v2.0.0 · nexusqv2 | セキュリティ/正確性エンジニアリングライン | フリーズ済み |
| V1 | v1.0.0 | 元のフリーズ済みベースライン | 過去のエンジニアリングベースライン |
V3エンジニアリングリリースとV4スナップショット
V3は、ハード化された実装、再現可能なPQCベンチマークアリーナ、依存関係/プロファイル診断、修正されたベンチマークサンプリング、およびアーカイブされた証拠を統合します。そのGitHubリリースはエンジニアリングリリースであり、独立した監査、認証、またはレジストリ公開の主張ではありません。V1/V2/V3アーティファクトとチェックサムはartifact-archive/README.md にインデックスされています。
V4は現在v4-engineering-2026-10-16エンジニアリングタグで表され、mainに統合されています。ネイティブバックエンドとそのベンチマークハーネスが存在し、公式の1.5倍中央値およびp95ゲートはレビュー済みのCI証拠でパスしました。PR #55 は、明示的にオプトインされるnative-backendフィーチャーの背後でバックエンドをnexusq-coreに配線します。デフォルトビルドとすべてのSDKは引き続きRustCryptoを使用し、フィーチャーはどこでもデフォルトで有効になっておらず、本番パスベンチマークは変更されていない1.5倍中央値およびp95ゲートをパスしました。これは実験的なままであり、独立した監査は受けていません。フェーズ21の外部監査はまだ進行中です。以前のIssue #48トラッキングアイテムはクローズされました。そのチェックリストは、docs/performance/ の下にある過去のエンジニアリング証拠として保持されています。
V2.0.0およびV1.0ステータス
v2エンジニアリングラインは、バージョン2.0.0でnexusqv2にフリーズされています。V2はv1のセキュリティモデルを維持しつつ、完了したパフォーマンス、正確性/相互運用性、セキュリティ/ファジング、バックエンド戦略、およびリリースゲートを追加します。GitHub V2.0.0エンジニアリングリリースは過去のものであり、crates.io、PyPI、およびその他のSDKレジストリは個別の公開操作のままです。docs/V2_ROADMAP.md、docs/V2_RELEASE.md、およびdocs/V2_BENCHMARK_BASELINE.md を参照してください。
v1.0エンジニアリングベースラインは完了しており、意図的にフリーズされています。最終CI/アリーナ証拠は、正確性、セキュリティゲート、デプロイメント、ドキュメント、およびPQCパフォーマンスのための再現可能な参照ポイントを確立しました。v1ベースラインはパフォーマンスリーダーとして提示されておらず、サポートされていない本番認証または独立監査の主張も行われていません。外部レジストリ/パッケージ公開は意図的に延期されています。BENCHMARKS.md および docs/ROADMAP.md を参照してください。
[画像: Quick start]
Quick start
リポジトリのルートから、Rust 1.88+がインストールされている状態で:
# ワークスペースをビルド
cargo build --workspace --release
# ボールトを作成して検査
./target/release/nexusq vault create ./example.nqv
./target/release/nexusq vault status ./example.nqv
./target/release/nexusq health
# 署名キーを生成(パスワードを直接入力するよりも --password-file を推奨)
./target/release/nexusq key generate ./example.nqv --algorithm ed25519 --purpose sign --password-file ./password.txt
# データの暗号化と復号
./target/release/nexusq data encrypt ./example.nqv --key-id <key-id> ./secret.txt
./target/release/nexusq data decrypt ./example.nqv ./secret.txt.nqx ./secret.out
password.txt は秘密情報として扱ってください。権限を制限し、決してコミットしないでください。開発中は、cargo build および cargo test は通常通り機能し、CLIバイナリは target/debug/nexusq にあります。RISC-V用にビルドするには、docs/CROSS_COMPILE.md を参照してください。上記の署名キーの例は明示的にEd25519(ポスト量子ではない古典的アルゴリズム)を使用しています。CLIでサポートされているアルゴリズムについては、docs/user/CLI.md を参照してください。ライブラリレベルのML-KEM/ML-DSA操作すべてが同じCLIワークフローで公開されているとは限りません。コマンドはオリエンテーション用です。まずパスワードファイルと入力ファイルを作成し、キー生成時に表示される実際のキーIDを<key-id>に置き換えてください。
リリースデプロイメント:
cargo build --workspace --release
./deploy/package-release.sh
生成されたアーカイブには、CLI、サーバー、非秘密設定例、デプロイメントドキュメント、およびSHA-256マニフェストが含まれています。本番トークン、ボールト、秘密キー、またはログは含まれていません。サーバーのインストールと操作については、docs/DEPLOYMENT.md および docs/SERVER.md を参照してください。
Installation
NEXUS-Q v4.1.2 は現在の監査準備完了リリースです。以下のテーブルは、インストールターゲットと最新の公開パッケージバージョンを示しています。Goモジュールと実験的なネイティブバックエンドは独立したバージョンラインを維持しています。v4.1.1でリストされている補助的なRustクレートは、その安定した公開バージョンで引き続き利用可能です。このリリースはドキュメント変更のみを含み、新しいクレートバージョンを必要としなかったため、v4.1.2として再公開されませんでした。これは意図的なものであり、利用可能性のエラーではありません。レジストリの利用可能性は、すべてのエコシステムに対するビルドプロビナンスを証明するものではありません。以前のv4.1.1プロビナンスの注意点は過去のものとして文書化されています。
| チャネル / パッケージ | インストール |
|---|---|
| Rustライブラリ(オールインワン) | cargo add nexusq@4.1.2 — crates.io |
| Rustコアライブラリ | cargo add nexusq-core@4.1.2 — crates.io |
| Rustカーネル | cargo add nexusq-kernels@4.1.2 — crates.io |
| Rust ML-KEM | cargo add nexusq-ml-kem@4.1.2 — crates.io |
| Rust ML-DSA | cargo add nexusq-ml-dsa@4.1.2 — crates.io |
| Rustネイティブバックエンド(実験的、オプトイン) | cargo add nexusq-native-backend@0.1.0 — crates.io; デフォルトでは有効になっていません |
| Rust C SDK | cargo add nexusq-c@4.1.2 — crates.io |
| Rust Pythonバインディングクレート | cargo add nexusq-py@4.1.2 — crates.io |
| Rust CLI | cargo install nexusq-cli --version 4.1.2 — crates.io |
| Rustサーバー | cargo install nexusq-server --version 4.1.2 — crates.io |
| Rust管理モジュール | cargo add nexusq-admin@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust PKIクラスターモジュール | cargo add nexusq-pki-cluster@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust HSM統合 | cargo add nexusq-hsm@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust登録モジュール | cargo add nexusq-enrollment@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust HAモジュール | cargo add nexusq-ha@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust OCSPモジュール | cargo add nexusq-ocsp@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust TSAモジュール | cargo add nexusq-tsa@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Rust X.509モジュール | cargo add nexusq-x509@4.1.1 — crates.io v4.1.1 (最新公開バージョン;このドキュメントのみのリリースには新しいパッケージは必要ありませんでした)。 |
| Python | pip install nexusq==4.1.2 — PyPI; ソース配布のみ、プラットフォームホイールなし |
| TypeScript / Node.js | npm install nexusq@4.1.2 — npm |
| Java | Maven io.github.lecodev-26:nexusq:4.1.2 — POM、JAR、ソース、JavadocsはMaven Centralで検証済み — アーティファクト · Sonatypeページ |
| Kotlin | Maven io.github.lecodev-26:nexusq-kotlin:4.1.2 — POM、JAR、ソース、JavadocsはMaven Centralで検証済み — アーティファクト · Sonatypeページ |
| C# / .NET | dotnet add package Nexusq --version 4.1.2 — NuGetバージョンインデックスとダウンロード可能な.nupkgは検証済み(ネイティブランタイムアセットを含む) — NuGet |
| Swift / SwiftPM | .package(url: "https://github.com/lecodev-26/nexus-q.git", from: "4.1.2"), product Nexusq — 現在のリリースタグ v4.1.2。v4.1.1タグ/プロビナンスの問題は過去のものであり、docs/V4_RELEASE.md に文書化されています。 |
| Dart / Flutter | dart pub add nexusq:^4.1.2 — pub.dev |
| Go | go get github.com/lecodev-26/nexus-q/bindings/go/nexusq@v0.1.0 — 独立したGoモジュールバージョンv0.1.0;ネイティブランタイムピン4.1.2は公開リリースとSHA-256チェックサムで検証済み — pkg.go.dev |
| PHP | composer require lecodev-26/nexusq:4.1.2 — Packagist v4.1.2エンドポイント検証済み — Packagist |
| Ruby | gem install nexusq -v 4.1.2 — RubyGems v4.1.2エンドポイント検証済み — RubyGems |
Maven座標
以下の座標が公開されており、直接使用できます:
<dependency>
<groupId>io.github.lecodev-26</groupId>
<artifactId>nexusq</artifactId>
<version>4.1.2</version>
</dependency>
// Gradle Kotlin DSL
implementation("io.github.lecodev-26:nexusq:4.1.2")
implementation("io.github.lecodev-26:nexusq-kotlin:4.1.2")
ネイティブランタイムに関する注記
- Go、PHP、Ruby、TypeScript、Java (JNA)、Kotlin (JNA)、Dartバインディングは、C SDK (
libnexusq) の薄いFFIラッパーです。言語固有のセットアップ手順をbindings/およびdocs/NATIVE_RUNTIME_PACKAGING.mdで確認してください。プラットフォームサポートと自動ランタイムダウンロードの動作は、SDKによって異なります。 - Pythonパッケージは、
crates/nexusq-py(PyO3) からビルドされたネイティブ拡張モジュールです。PyPI 4.1.2のアップロードには、現在プラットフォームホイールではなくsdistが含まれています。 - C#/.NETバインディングはP/Invokeを使用し、SwiftバインディングはSwift Package Managerシステムライブラリターゲットを介してC SDKをリンクします。ネイティブライブラリが関連するバインディングドキュメントに記載されているように利用可能であることを確認してください。
- C SDKはCおよびC++から直接利用可能です。ソースから
cargo build -p nexusq-c --releaseでビルドするか、C SDKパッケージを使用してください。 - GitHubリリースアーカイブには、CLI/サーバーとネイティブランタイムアセットが含まれています。これはC SDK開発ヘッダーをインストールする代わりにはなりません。
- レジストリの利用可能性は配布チャネルであり、セキュリティ検証の主張ではありません。セキュリティと保証のセクションを参照してください。
[画像: Documentation]
Documentation
ユーザー向けドキュメントはdocs/user/README.mdから始まり、タスク指向のはじめにガイド、インストール手順、CLIガイド、SDKガイド、およびトラブルシューティングガイドがあります。技術およびリファレンスドキュメントはdocs/にあります:
| ドキュメント | 内容 |
|---|---|
| ARCHITECTURE | システム設計 |
| THREAT_MODEL | 保護対象 |
| CRYPTOGRAPHY | アルゴリズムとルール |
| KEY_MANAGEMENT | キーライフサイクル |
| SECURITY_MODEL | セキュリティ保証 |
| STORAGE | 永続化フォーマット |
| API | 公開インターフェース |
| POLICY | アクセス制御エンジン |
| SECURE_BOOT | 安全で測定されたブート |
| CROSS_COMPILE | クロスコンパイルガイド |
| ROADMAP | フェーズ計画 |
| adr/ | アーキテクチャ決定記録 |
| ci-pipeline.md | CIフェーズ、検証、ワークフローの意図 |
| performance/ | ベンチマーク方法論、ネイティブバックエンドの注記、過去の決定事項 |
| security/ | セキュリティ設計評価とフォローアップ決定事項 |
[画像: Security and assurance]
Security and assurance
V1~V4はエンジニアリングバージョンライン/スナップショットであり、本番レディネスの証明ではありません。GitHubリリースは、独立したセキュリティ監査、認証、FIPS検証、または本番レディネスを意味するものではありません。これはレジストリ公開にも当てはまります。レジストリ公開は配布チャネルであり、検証の主張ではありません。V4ネイティブバックエンドは実験的でオプトインのままです。nexusq-coreにnative-backendフィーチャーの背後で配線されていますが、コア、CLI、サーバー、またはSDKではデフォルトで有効になっていません。パフォーマンスゲートの結果は、ベンチマークされたバックエンドに適用され、エンドツーエンドのアプリケーションパフォーマンスの主張として読み取られるべきではありません。検証ステートメントに依存する前に、現在のmain CIを確認してください。
| ✅ 主張され、証拠があるもの | ❌ 主張されていないもの |
|---|---|
| 標準化されたアルゴリズム(保守されているライブラリ経由) | 独立した外部監査 |
| 不要になった秘密情報のゼロ化 | FIPS検証またはCommon Criteria認証 |
| 改ざん防止、HMAC認証付き監査ログ | 形式検証 |
| デフォルト拒否ポリシーエンジン | 本番レディネス |
| セキュリティCI、SDK CI、ベンチマークCI、ファズターゲット | 監査または本番レディネスの推奨としてのレジストリ公開 |
| 公開された脅威モデルとセキュリティモデル | デフォルトのソフトウェアバックエンドからのハードウェア分離 |
疑わしい脆弱性は、GitHub Security Advisories を通じてプライベートに報告してください。SECURITY.md を参照してください。
Contributing
イシュー、再現可能なバグレポート、ドキュメント改善、および的を絞ったプルリクエストを歓迎します。変更を送信する前に:
-
変更に関連するアーキテクチャ、脅威モデル、暗号化ルール、およびセキュリティポリシーを読んでください。
-
暗号化プリミティブは確立されたライブラリに委任してください。自作の暗号化を導入したり、シリアル化されたフォーマットをサイレントに変更したりしないでください。
-
動作変更と並行して、テストとドキュメントを追加または更新してください。パフォーマンス作業については、再現可能な測定値を含め、ベンチマーク条件と生の証拠を保持してください。
-
送信前に、関連するローカルチェックを実行してください。Rustの変更に対する有用なベースラインは次のとおりです:
cargo fmt --all -- --check cargo test --workspace cargo build --workspace --release変更したクレートおよびSDKに適用されるチェックを実行してください。CIは、サポートされている完全なマトリックスの権威あるチェックであり続けます。
-
プルリクエストでは、セキュリティに影響する変更と互換性に関する影響を明確に記述してください。秘密情報、秘密キー、ボールトの内容、本番認証情報、または機密ログを絶対に含めないでください。
疑わしい脆弱性は、公開されたイシューで悪用可能な詳細を公開するのではなく、SECURITY.md のプロセスを使用してプライベートに報告してください。
[画像: License]
License
MITライセンス または Apache License 2.0 のいずれかを選択できるデュアルライセンス。これはRustエコシステムの慣例(Rust、Tokio、Serdeと同じ選択)に従っています。