
rscrypto は、純粋なRust製の暗号プリミティブ、暗号学的ハッシュと高速ハッシュ、パスワードハッシュ、チェックサムを単一のフィーチャーモデルで提供します。
本番用のC/FFI、OpenSSL、システムライブラリへの依存はありません。リーフフィーチャーは対象を絞ったビルドをサポートし、アンブレラフィーチャーはより大きなサーフェスを構成します。
1つのプリミティブには1つのリーフフィーチャーを、プリミティブのサブセットにはグループを、クレート全体のサーフェスには full を使用してください。ポータブルなRustバックエンドは常に存在します。SIMDとASMは単なるアクセラレータです。
公開ベンチマークスナップショット: Linuxランナー全体で最速の外部競合実装と比較して幾何平均 1.59x、4,052 / 6,750 勝、6,101 / 6,750 勝または引き分け。
macOS Apple Siliconでのローカル実測: 最速の外部競合実装に対する幾何平均 1.37x、382 / 774 勝、708 / 774 勝または引き分け。
生の実行結果、方法論、既知の敗北は benchmark_results/OVERVIEW.md にあります。
チャート: ベンチマークスコアカード。1.00x を超える値は、rscrypto が最速の一致する外部実装よりも高速であることを意味します。
no_std、WASM、サーバー、CLI、組込み、監査制約付きビルドはすべて同じリーフフィーチャーモデルを使用します。rscrypto はプリミティブクレートです。TLSスタック、PKIツールキット、鍵ストア、プロトコル実装ではありません。FIPS 140-3検証、第三者監査、形式検証、クレート全体の定数時間動作を主張するものではありません。
最小限の no_std SHA-2ビルド:
[dependencies]
rscrypto = { version = "0.7.8", default-features = false, features = ["sha2"] }
OS乱数を有効にしたフルプリミティブスタック:
[dependencies]
rscrypto = { version = "0.7.8", features = ["full", "getrandom"] }
no_std ビルドでは default-features = false を使用してください。オペレーティングシステムからソルト、鍵、ナンス、RSA鍵生成エントロピーを生成するAPIが必要な場合にのみ getrandom を有効にしてください。
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut h = Sha256::new();
h.update(b"hello ");
h.update(b"world");
assert_eq!(h.finalize(), one_shot);
一般的なAPIの形状は、都合がよければワンショット、必要に応じてストリーミングです。
完全な型マップが必要な場合は docs/types.md を、最小のフィーチャーセットが必要な場合は docs/features.md を使用してください。
フラグは用途に応じて階層化されています:
sha2、blake3、aes-gcm、ed25519、x25519、ml-kem、crc32 など。hashes、checksums、macs、kdfs、password-hashing、aead、signatures、key-exchange。フィーチャー全一覧: docs/features.md。
公開型一覧: docs/types.md。
rscrypto は、秘密を扱う操作についてのみ、リリースに紐づいたスコープ付きの定数時間の主張を行います。クレート内のすべての関数についてではありません。
ct.toml は候補となるプリミティブ/構成セットを記録するものであり、それ自体が公開された主張を生み出すものではありません。主張が存在するのは、対応する署名付きGitHubリリースに、その正確なバージョン、コミット、ターゲット、プロファイル、フィーチャーセットに関するすべての必須ゲートを通過した、証明付きの rscrypto-X.Y.Z-ct-evidence.tar.gz バンドルが含まれている場合のみです。
秘密を保持する固定サイズのオーナー型は PartialEq または Eq を実装しません。それらの ct_eq メソッドは不透明な CtDecision を返します。呼び出し側は、分岐可能なビットを得るために declassify() でそれを明示的に消費する必要があります。検証APIはその境界を内部に保ち、単一の不透明な Result を返します。これはRust API境界での誤用耐性であり、下流のマシンコードに関する証明ではありません。
ct.toml に記載されている主な秘密保持面の候補は、MAC/タグ検証、AEAD認証失敗の形状、X25519スカラー乗算、Ed25519署名と秘密公開鍵の導出、ECDSA P-256/P-384ブラインド署名、ML-KEM-512/768/1024の鍵生成、カプセル化、デカプセル化の秘密面、RSA秘密鍵による署名/復号リーフ、および選択されたパスワード検証比較です。
公開されたパース処理、リスト外の鍵生成、OS乱数、生ハッシュ、チェックサム、非暗号学的ハッシュ、ベンチマークパス、公開鍵検証の計算は、包括的な定数時間の主張の対象ではありません。正確な主張と検証モデルについては docs/constant-time.md を、レビュー境界については docs/compliance.md を参照してください。v0.6.4 までのリリースにはこのバンドルが含まれていないため、リリースに紐づいた定数時間の主張はありません。
rscrypto はポータブルなRustパスをバイト単位の基準(オーソリティ)として維持します。ISAカーネルは、ターゲットと実行時CPUがそれらをサポートする場合にのみ選択されます。
完全なプラットフォームマトリックス: docs/platforms.md。
rscrypto は、対応するリリースが必要なエビデンスバンドルを公開する場合にのみ、スコープ付き定数時間の主張を行います。すべてのAPIやビルドについてではありません。docs/secret-ownership.md に記載されている固定サイズの秘密オーナー型は、ドロップ時に所有するバイトを上書きし、Debug をマスクします。この主張は呼び出し側のコピーには及びません。検証の失敗は不透明なエラーを使用し、失敗したAEADオープンは呼び出し側の出力バッファをクリアします。リリースアーティファクトは署名タグでゲートされ、crates.ioのTrusted Publishingを通じて公開され、GitHubビルドのprovenance(出所証明)アテステーションの対象となります。
第三者監査、FIPS 140-3認証、クレート全体の形式証明は主張されていません。脆弱性は公開issueではなく、GitHub Private Vulnerability Reporting または SECURITY.md を通じて報告してください。
examples/、docs/features.md、docs/types.mdSECURITY.md、THREAT_MODEL.md、docs/constant-time.md、docs/compliance.mddocs/test-vector-coverage.md、docs/platforms.md、Rust 1.91.0。
rust-toolchain.toml で固定されたnightlyは、Miri、ファジング、特殊アーキテクチャのチェックに使用されます。
Apache-2.0 または MIT のデュアルライセンスです。お好きな方を選択できます。
| タスク | フィーチャー | はじめに |
|---|
| AEADシール/オープン | chacha20poly1305,getrandom | examples/aead_seal_open.rs |
| Ed25519およびECDSA署名 | ed25519,ecdsa-p256,getrandom | examples/signatures.rs |
| RSA-PSS検証 | rsa | examples/rsa_pss_verify.rs |
| ML-KEM共有秘密 | ml-kem,getrandom | examples/mlkem_encapsulation.rs |
| Argon2idおよびscryptパスワードハッシュ | password-hashing,getrandom | examples/password_hashing.rs |
| ニーズ | 含まれるもの | フィーチャーパス |
|---|
| 暗号学的ハッシュ | SHA-2、SHA-3、SHAKE、cSHAKE128/256、BLAKE2、BLAKE3、Ascon-Hash/XOF/CXOF | hashes またはリーフフィーチャー |
| MACとKDF | HMAC-SHA-2/SHA-3、KMAC128/256、スタンドアロンPoly1305、HKDF-SHA-2、PBKDF2-HMAC-SHA-2 | auth またはリーフフィーチャー |
| パスワードハッシュ | Raw Argon2d/i/id および scrypt KDF。生成された境界付きPHCパスワードレコード | auth、argon2、scrypt、phc-strings |
| 公開鍵プリミティブ | ECDSA P-256/P-384署名/検証、Ed25519署名、RSA署名/検証/OAEP/RSAES-PKCS1-v1_5/鍵生成、X25519鍵交換、ML-KEM-512/768/1024 KEM | auth、signatures、key-exchange、ecdsa、ecdsa-p256、ecdsa-p384、ed25519、rsa、x25519、ml-kem |
| AEAD暗号化 | AES-128/256-GCM、AES-128/256-GCM-SIV、ChaCha20-Poly1305、XChaCha20-Poly1305、AEGIS-256、Ascon-AEAD128 | aead またはリーフフィーチャー |
| チェックサム | CRC-16、CRC-24、CRC-32、CRC-32C、CRC-64/XZ、CRC-64/NVMe | checksums またはリーフフィーチャー |
| 高速ハッシュ | XXH3-64/128、RapidHash V3-64 | xxh3、rapidhash |
stdallocgetrandomparallelserdeportable-onlyserde-secretsserde| ターゲットファミリ | アクセラレーション例 |
|---|
| x86 / x86_64 | SSE4.2, AVX2, AVX-512, AES-NI, SHA-NI, VAES, VPCLMULQDQ |
| Arm / AArch64 / Apple Silicon | NEON, AES, PMULL, SHA2, SHA3, SVE2-PMULL |
| IBM Z | CPACF, MSA, VGFM, z/Vector ML-KEM算術 |
| POWER / ppc64le | POWER8/9/10のベクターおよび暗号拡張 |
| RISC-V | RVV, Zbc, Zvkned, Zvbc |
| WASM | 利用可能な場合はSIMD128、それ以外はどこでもポータブルフォールバック |
docs/migration/CONTRIBUTING.mdCHANGELOG.md、docs/release.md