
rscrypto v0.9.0
デフォルト依存関係ゼロのRust暗号: BLAKE3、Ed25519/X25519、ハッシュ、MAC、KDF、AEAD、チェックサムを完全なSIMD/ASMアクセラレーションで提供
rscrypto
rscrypto は、暗号プリミティブ、暗号学的および高速ハッシュ、パスワードハッシュ、チェックサムを単一のフィーチャーモデルの背後にまとめます。ターゲットに応じたSIMDとアセンブリが、本番用のC/FFI、OpenSSL、システムライブラリへの依存なしに、ポータブルなRustバックエンドを高速化します。
rscrypto はプリミティブクレートであり、TLSスタック、PKIツールキット、キーストア、プロトコル実装ではありません。
測定されたパフォーマンス
2026-08-18スナップショットは、8つのLinux CIランナー上で、各プラットフォーム、プリミティブ、操作、入力形状について、コミット 7eb44e9 を最速の一致する外部実装と比較しています。外部ベースラインはケースごとに選択され、競合他社間で平均化されません。比率は external / rscrypto であり、高いほど優れています。
6,144件の完全一致ケースの比較のうち、rscrypto は3,780件で5%以上高速、1,695件で5%以内、669件で低速でした。幾何平均の高速化は全体で1.62倍であり、チェックサムで6.18倍、RSAで1.65倍、AEADで1.61倍、ML-KEMで1.55倍を含みます。
チャート内のApple Siliconの結果は、別の2026-07-04ローカルスナップショットであり、Linux集計には含まれていません。
これはスイート全体でのリードであり、すべての操作が勝利するという主張ではありません。同じスナップショットは、s390x ECDSAのリグレッションと、より遅い rapidhash-stream/one-write パスを、すべての生の行とともに公開しています。完全なスコアカードについては benchmark overview を、デプロイメントワークロードに結果を適用する前に benchmarking guide を読んでください。
保証
セキュリティの主張はフェイルクローズです。証拠が欠落または古い場合、ゲートを弱めるのではなく主張が削除されます。
- 正当性の証拠は、NIST、RFC、上流、Wycheproofベクトルを、独立した実装、プロパティ、ネガティブテスト、Miriと組み合わせます。
- ファズターゲットは、プリミティブ、パーサー、ステートマシン、トレイト境界にわたって本番実装を実行します。最小化されたシードはテストとして再生され、別のサニタイザーレーンがあります。
- ポータブル対アクセラレーテッドの差分テストは、ネイティブターゲット上の長さ、アライメント、テール、状態遷移、ディスパッチ、フォールバック動作をカバーします。
- 定数時間ハーネスは、
ct.toml内の正確な操作をインベントリし、最適化されたリンク済みバイナリ検査、宣言された固定形状カーネルのBINSEC証明、宣言されたエンドツーエンドケースのDudeCTタイミングテストを組み合わせます。 - 固定サイズのシークレットオーナーは
Debugをマスクし、通常の等価性を省略し、ドロップ時に所有バイトを上書きします。検証失敗は不透明であり、失敗したAEADオープンは呼び出し元の出力バッファをクリアします。
定数時間の主張は、一致する署名付きリリースが、必要なターゲット、フィーチャー、コンパイラ、プロファイル、操作ゲートを通過する証明済みの証拠バンドルを含む場合にのみ存在します。分岐のないように見えるソースは証明として扱われません。リリースアーティファクトは署名付きタグでゲートされ、crates.io Trusted Publishingを通じて公開され、GitHubビルド来歴証明書でカバーされています。
test evidence、constant-time model、secret lifecycle、threat model、release contract を確認してください。
残る独立レビューのギャップは、第三者によるセキュリティ監査です。プロジェクトは現在それを資金提供できません。自動化された証拠はそのレビューに取って代わるものではないため、rscrypto は監査済み、FIPS 140-3検証済み、形式的検証済み、またはクレート全体として定数時間であるとは主張しません。
疑わしい脆弱性は、公開イシューではなく、SECURITY.md プロセスに基づいて GitHub Private Vulnerability Reporting を通じて報告してください。
使用するものだけをインストール
最小限の no_std SHA-2ビルド:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
OSランダム性を有効にした完全なプリミティブスタック:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
デフォルトのフィーチャーは std であり、default-features = false で削除されます。getrandom は、ソルト、キー、ノンス、またはRSA鍵生成エントロピーをオペレーティングシステムから取得するAPIのみで有効にしてください。feature guide が正確な依存関係とデプロイメント制御を管理します。
クイックスタート
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、X25519、ML-KEM、パスワードハッシュ、バックエンドイントロスペクションの実行可能なワークフローは examples/README.md にあります。
プリミティブとフィーチャーマップ
| ファミリー | 含まれるもの | 有効化 |
|---|---|---|
| チェックサム | CRC-16、CRC-24、CRC-32、CRC-32C、CRC-64/XZ、CRC-64/NVMe | checksums またはリーフフィーチャー |
| 暗号学的ハッシュ | SHA-2、SHA-3、SHAKE、cSHAKE、BLAKE2、BLAKE3、Ascon-Hash/XOF/CXOF | crypto-hashes またはリーフフィーチャー |
| 高速ハッシュ | XXH3-64/128、RapidHash V3-64 | fast-hashes またはリーフフィーチャー |
| MACとKDF | HMAC-SHA-2/SHA-3、KMAC128/256、Poly1305、HKDF-SHA-2、PBKDF2-HMAC-SHA-2 | macs、kdfs、またはリーフフィーチャー |
| パスワードハッシュ | Argon2d/i/id、scrypt、境界付きPHCパスワードレコード | password-hashing またはリーフフィーチャー |
| 署名とRSA | ECDSA P-256/P-384、Ed25519、RSA署名、検証、暗号化、鍵生成 | signatures またはリーフフィーチャー |
| 鍵交換とKEM | X25519、ML-KEM-512/768/1024 | key-exchange またはリーフフィーチャー |
| AEAD | AES-GCM、AES-GCM-SIV、AES-SIV-CMAC、ChaCha20-Poly1305、XChaCha20-Poly1305、AEGIS-256、Ascon-AEAD128 | aead またはリーフフィーチャー |
正確な型とメソッドについては docs.rs を使用してください。別のライブラリを置き換える場合は migration guide を使用してください。
プラットフォームとディスパッチ
ポータブルなRust実装がバイト単位の権威です。コンパイル時のターゲットサポートと、std を使用した場合の検出されたランタイムCPU機能が、適格なSIMDまたはアセンブリカーネルを選択します。サポートされないアクセラレーションはポータブルRustにフォールバックします。
platform guide がターゲットマトリックス、ディスパッチモデル、no_std カバレッジ、portable-only の制限を管理します。
プロジェクト
コードを変更する前に CONTRIBUTING.md を読んでください。公開された変更は CHANGELOG.md にあります。
ライセンス
Apache-2.0 または MIT のデュアルライセンスであり、お客様の選択によります。