アップデート一覧に戻る
New releaseSep 3, 2026

rscrypto v0.9.0

Rust暗号技術、必須依存ゼロ:ハッシュ、チェックサム、MAC、KDF、パスワードハッシュ、AEAD、署名、RSA、鍵交換、ML-KEM、ML-DSA。SIMDおよびASMバックエンドを備えたポータブルなRustリファレンス実装。

共有

rscrypto

Crates.io Docs.rs MSRV 1.100.0 License: MIT OR Apache-2.0

rscrypto は、暗号プリミティブ、ハッシュ、パスワードハッシュ、およびチェックサムを提供する Rust ライブラリです。 単一のフィーチャーモデルですべてを制御します。 ポータブル Rust が参照実装です。 SIMD およびアセンブリバックエンドにより、対応ターゲット上で高速化されます。 本番ビルドは C、FFI、OpenSSL、またはシステムライブラリに依存しません。

rscrypto はプリミティブのみを提供します。 TLS スタック、PKI ツールキット、キーストア、またはプロトコル実装ではありません。

インストール

rscrypto には Rust 1.100 が必要です。 Rust 1.100 が安定版になるまでは、1.100 ベータまたはそれ以降の nightly を使用してください。 アクセラレーションされた POWER、IBM Z、および RISC-V ビルドには nightly コンパイラが必要です。 portable-only ビルドは宣言された MSRV をサポートします。 Toolchain を参照してください。

SHA-2 のみの最小 no_std ビルド:

[dependencies]
rscrypto = { version = "0.11", default-features = false, features = ["sha2"] }

すべてのプリミティブ、オペレーティングシステムの乱数付き:

[dependencies]
rscrypto = { version = "0.11", features = ["full", "getrandom"] }

デフォルトのフィーチャーは std です。 default-features = false を設定して削除します。 getrandom は、ソルト、鍵、ノンス、または RSA 鍵生成エントロピーをオペレーティングシステムから取得する API にのみ有効にしてください。 フィーチャーガイドでは、フィーチャーの選択方法を説明しています。 Cargo.toml が正確なフィーチャーグラフを定義しています。

クイックスタート

use rscrypto::Sha256;

let one_shot = Sha256::digest(b"hello world");

let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");

assert_eq!(hasher.finalize(), one_shot);

ハッシュ型はワンショットおよびストリーミングでの使用をサポートします。 examples/README.md には、AEAD、署名、RSA、P-256 および P-384 ECDH、X25519、ML-KEM、パスワードハッシュ、およびバックエンドイントロスペクションの実行可能な例があります。

プリミティブとフィーチャー

ファミリープリミティブフィーチャー
チェックサムCRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMechecksums またはリーフフィーチャー
暗号ハッシュSHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOFcrypto-hashes またはリーフフィーチャー
高速ハッシュXXH3-64/128, RapidHash V3-64fast-hashes またはリーフフィーチャー
MAC と KDFHMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2macs、kdfs、またはリーフフィーチャー
パスワードハッシュArgon2d/i/id, scrypt, 境界付き PHC パスワードレコードpassword-hashing またはリーフフィーチャー
署名と RSAECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, SLH-DSA (全 12 FIPS 205 セット、pure および HashSLH-DSA), RSA 署名、検証、暗号化、および鍵生成signatures またはリーフフィーチャー
鍵交換と KEMP-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024key-exchange またはリーフフィーチャー
AEADAES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128aead またはリーフフィーチャー

署名および KEM 鍵は、ECDSA、Ed25519、RSA、ML-DSA、ML-KEM、および SLH-DSA の標準 DER (PKCS #8 および SubjectPublicKeyInfo) をインポートおよびエクスポートします。

WebSocket accept ダイジェストはプロトコル互換性のためだけに存在します。 websocket-sha1 フィーチャーが必要です。 full を含むアンブレラフィーチャーはこれを有効にしません。

正確な型とメソッドについては docs.rs を参照してください。 API 互換性ノートでは、出力型、コレクションシード、および保持されているメソッド名を説明しています。 暗号耐性ガイドでは、セキュリティの前提、移行の境界、およびより強力な暗号を選択する際に確認すべき証拠を説明しています。

プラットフォームとディスパッチ

ポータブル Rust 実装が正しい出力をバイト単位で定義します。 すべてのアクセラレーションバックエンドは同じ出力を提供しなければなりません。 コンパイル時に、ターゲットが利用可能なバックエンドを決定します。 std では、rscrypto は実行時に CPU フィーチャーを検出し、バックエンドを選択します。 アクセラレーションバックエンドが利用できない場合、ポータブル実装が実行されます。

プラットフォームガイドには、サポートされているターゲットが一覧されています。 また、ディスパッチ、no_std サポート、および portable-only の制限についても説明しています。

保証

セキュリティの主張は、その証拠が合格している間だけ存在します。 証拠が欠落しているか古い場合、その主張は取り消されます。ゲートが弱まることは決してありません。

  • 正確性: NIST、RFC、アップストリーム、および Wycheproof のテストベクター、独立した実装、プロパティテスト、ネガティブテスト、および Miri。
  • ファジング: ファズターゲットは、プリミティブ、パーサー、ステートマシン、およびトレイト境界にわたって本番コードを実行します。 最小化された入力はテストとして再生されます。 別のレーンがサニタイザー付きでそれらを実行します。
  • バックエンド: 差分テストが各アクセラレーションバックエンドをポータブル Rust と比較します。 これらは長さ、アラインメント、テール、状態遷移、ディスパッチ、およびネイティブターゲットでのフォールバックをカバーします。
  • 定数時間: ct.toml はテスト対象の正確な操作を一覧表示します。 証拠は、最適化されたリンク済みバイナリの検査、固定形状カーネルの BINSEC 証明、およびエンドツーエンド操作の DudeCT タイミングテストを組み合わせたものです。
  • シークレット: シークレットを所有する型は、Debug 出力でその内容を隠し、ドロップ時に初期化されたストレージをクリアします。 コピールールは型によって異なります。たとえば、鍵付き BLAKE2 および BLAKE3 の状態は Clone をサポートします。 シークレット所有権インベントリに各型が一覧されています。
  • 失敗: 検証の失敗は、失敗した理由を伝えません。 失敗した AEAD オープンは、認証されていない平文をクリアします。

定数時間の主張は、その証拠がカバーするターゲット、フィーチャー、コンパイラ、プロファイル、および操作にのみ適用されます。 ブランチレスに見えるソースコードは証明ではありません。

詳細については、テスト証拠、定数時間モデル、シークレットライフサイクル、および脅威モデルを参照してください。

rscrypto は第三者によるセキュリティ監査を受けていません。 プロジェクトは現在その費用を支払うことができず、自動化された証拠がそれを代替するものではありません。 rscrypto は、監査済み、FIPS 140-3 検証済み、形式的に検証済み、またはクレート全体として定数時間であるとは主張していません。

疑わしい脆弱性は GitHub Private Vulnerability Reporting を通じて報告してください。 SECURITY.md のプロセスに従ってください。 公開イシューを開かないでください。

パフォーマンス

ベンチマーク実行 #37092266645 は、2026-10-03 に 8 つのプラットフォームで v0.10.0 ソースを測定しました。 各プラットフォームには、ハッシュ、チェックサム、MAC、XOF、および scrypt の 346 の同条件比較があります。 各比較は、最速の外部クレートの中央値時間を rscrypto の中央値時間で割ったものです。 1.00x を超える比率は、rscrypto がより高速であることを意味します。

プラットフォーム高速3% 以内低速中央値比率
Intel Linux (c8i)21188471.09x
AMD Linux (c8a)2568191.13x
Intel Windows (c8i)186105551.05x
AMD Windows (c8a)26268161.09x
Graviton5 Linux (c9g)147121781.01x
POWER10 Linux206122181.07x
IBM Z Linux30119262.77x
RISC-V Linux19779701.05x

これらの結果は、クラウドおよび共有ホストでの 1 回の実行によるものです。 AEAD、署名、鍵交換、ML-KEM、ML-DSA、Argon2、または RSA のケースは含まれておらず、macOS も含まれていません。 ベンチマーク概要には、ファミリー別の結果、方法、および制限が記載されています。 比較契約は、同等の ML-KEM および Argon2 ワークロードを定義しています。 古いサマリーテーブルは異なるワークロードを混在させていました。それらは履歴記録であり、現在の主張ではありません。

プロジェクト

ガイドと例は、このリポジトリ内のソースを説明しています。 公開されたバージョンについては、対応する API ドキュメントを使用してください。

コードを変更する前に CONTRIBUTING.md をお読みください。 CHANGELOG.md には公開された変更が一覧されています。

ライセンス

Apache-2.0 または MIT のデュアルライセンスで、お好みで選択できます。

カテゴリ