アップデート一覧に戻る
New releaseAug 7, 2026

rscrypto v0.8.0

デフォルト依存関係ゼロのRust暗号: BLAKE3、Ed25519/X25519、ハッシュ、MAC、KDF、AEAD、チェックサムを完全なSIMD/ASMアクセラレーションで提供

共有

rscrypto

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

rscrypto は、暗号プリミティブ、暗号学的ハッシュと高速ハッシュ、パスワードハッシュ、およびチェックサムを単一のフィーチャーモデルの背後にまとめます。 ターゲットでゲートされた SIMD とアセンブリは、本番環境での C/FFI、OpenSSL、システムライブラリへの依存なしに、ポータブルな Rust バックエンドを高速化します。

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

測定されたパフォーマンス

パフォーマンスの主張は、正確に保持されたキャンペーンと同等のワークロードに限定されます。 修正された 2026 年 9 月のキャンペーンには 19,614 件の完了したケースが含まれ、 修正された ML-KEM と Argon2 の比較も含まれますが、 代替となる集約スコアカードはまだキュレーションされていません。 エントロピー、鍵の準備、出力表現、またはソルト長を混在させた古い集約結果は 歴史的記録として残り、現在のパフォーマンスの主張ではありません。

ベンチマーク概要 には、キャンペーン、ターゲット固有の結果、および残された制限が記録されています。 比較契約 は、同等の ML-KEM および Argon2 ワークロードを定義しています。

保証

セキュリティの主張はフェイルクローズドです。証拠が欠落しているか 古い場合、ゲートを弱めるのではなく主張が削除されます。

  • 正確性の証拠は、NIST、RFC、アップストリーム、および Wycheproof のベクターを、 別個の実装、プロパティ、ネガティブテスト、および Miri と組み合わせています。
  • ファズターゲットは、プリミティブ、パーサー、ステートマシン、 およびトレイトの境界を越えて本番実装を実行します。 最小化されたシードはテストとして再生され、別個のサニタイザーレーンがあります。
  • ポータブル対アクセラレーテッドの差分テストは、ネイティブターゲット上の長さ、アラインメント、 テール、状態遷移、ディスパッチ、およびフォールバック動作をカバーします。
  • 定数時間ハーネスは、ct.toml 内の正確な操作をインベントリ化し、 最適化されたリンク済みバイナリ検査、宣言された固定形状カーネルの BINSEC 証明、 および宣言されたエンドツーエンドケースの DudeCT タイミングテストを組み合わせています。
  • シークレットの所有者は Debug を編集し、ドロップ時に初期化されたストレージをクリアします。 複製ルールは型によって異なります。キー付き BLAKE2/BLAKE3 状態は Clone をサポートします。 所有権インベントリ にこれらの境界が記載されています。 検証の失敗は不透明です。失敗した AEAD オープンは未認証の平文をクリアします。

定数時間の主張は、必要なターゲット、フィーチャー、コンパイラ、プロファイル、 および操作の証拠が合格した場合にのみ存在します。 ブランチレスに見えるソースは証明として扱われません。

テスト証拠、定数時間モデル、シークレットライフサイクル、および 脅威モデル を確認してください。

残る独立したレビューのギャップは、第三者によるセキュリティ監査です。 プロジェクトは現在、その資金を調達できません。 自動化された証拠はそのレビューを代替するものではないため、rscrypto は監査済み、 FIPS 140-3 検証済み、形式的に検証済み、またはクレート全体として定数時間であるとは主張しません。

疑わしい脆弱性は、公開 Issue ではなく、SECURITY.md プロセスに基づき GitHub Private Vulnerability Reporting を通じて報告してください。

使用するものだけをインストール

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

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

OS ランダム性を有効にした完全なプリミティブスタック:

[dependencies]
rscrypto = { version = "0.10", 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);

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

プリミティブとフィーチャーのマップ

ファミリー含まれるもの有効化
チェックサム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, 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 またはリーフフィーチャー

互換性専用の WebSocket accept ダイジェストには websocket-sha1 が必要であり、 これは full およびその他のすべてのアンブレラフィーチャーから除外されています。

正確な型とメソッドについては docs.rs を使用してください。

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

ポータブルな Rust 実装がバイト単位の権威です。 コンパイル時のターゲットサポート、および std がある場合は 検出されたランタイム CPU 機能が、適格な SIMD またはアセンブリカーネルを選択します。 サポートされていないアクセラレーションはポータブルな Rust にフォールバックします。

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

プロジェクト

ガイドと例は、付随するソースを説明しています。 公開された依存関係には、一致するバージョンの API ドキュメント を使用してください。

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

ライセンス

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

カテゴリ