rscrypto:高效能純 Rust 密碼學原語堆疊
rscrypto 是一個單一相依的原語堆疊,專為需要高執行速度、小型二進位檔案以及嚴格部署控制的專案設計,且不依賴 C 函式庫、OpenSSL 或系統相依性。它提供完整的密碼學工具套件——包括 RSA、Ed25519、X25519、AEAD、雜湊與 KDF——使用可移植的 Rust 後端,並支援可選的 SIMD/ASM 加速。
效能基準
rscrypto 展示出相較於多架構上最快匹配的 Rust 基準顯著的效能優勢。 在 Linux CI 環境中,該函式庫達到 1.61 倍的幾何平均加速,5,832 次匹配比較中有 3,545 次勝出以及 5,210 次勝出或平手。在 Apple Silicon(MBP M1)上,則取得 1.25 倍的幾何平均加速,463 對測試中有 235 次勝出以及 450 次勝出或平手。
主要效能指標
| 項目 | Linux CI 幾何平均 | Apple Silicon 幾何平均 |
|---|---|---|
| Checksums | 5.03x | 2.76x |
| BLAKE3 (>=64 KiB) | 2.31x | 1.80x |
| AEAD | 1.57x | 1.47x |
| RSA Import + Verify | 1.32x | 1.45x |
| SHA-3 / SHAKE | 2.15x / 1.86x | 0.94x / 1.32x |
雖然整體較快,作者仍指出一些「弱點」使得函式庫在特定情況下略遜於競爭者,包括 PBKDF2-SHA256(iters=1)、X25519 Diffie-Hellman,以及某些平台上的 RSA-4096 驗證。
功能集與能力
rscrypto 將多個密碼學族群整合成一個一致的堆疊,以避免管理眾多不同 crate 的複雜性。 此函式庫針對 no_std 目標設計,適用於伺服器、CLI、嵌入式、裸金屬以及 WASM 構建。
包含的原語
- Cryptographic Hashes: SHA-2、SHA-3、SHAKE、cSHAKE256、BLAKE2、BLAKE3,以及 Ascon-Hash/XOF/CXOF。
- MACs and KDFs: HMAC-SHA-2、KMAC256、HKDF-SHA-2,以及 PBKDF2-HMAC-SHA-2。
- Password Hashing: Argon2d/i/id、scrypt,與 PHC 字串編碼/驗證。
- Public-Key Primitives: Ed25519 簽章、X25519 金鑰交換,以及完整的 RSA 支援(簽名、驗證、OAEP、RSAES-PKCS1-v1_5,與 FIPS 186-5 A.1.3 可能質數金鑰產生)。
- AEAD Encryption: AES-128/256-GCM、AES-128/256-GCM-SIV、ChaCha20-Poly1305、XChaCha20-Poly1305、AEGIS-256,與 Ascon-AEAD128。
- Checksums and Non-Crypto Hashes: CRC-16/24/32/32C/64、XXH3-64/128,與 RapidHash 64/128。
架構與可移植性
此函式庫使用可移植的 Rust 實作作為唯一真實來源,僅在需要時使用 ISA 專屬的核心作為加速器。 這確保函式庫在所有目標上皆能正常運作,同時在支援的硬體上達到最佳效能。
硬體加速支援
- 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 / POWER: CPACF、MSA、VGFM,以及 POWER8/9/10 向量擴充。
- RISC-V: RVV、Zbc、Zvkned、Zvbc。
- WASM: SIMD128 支援,並提供可移植的備援。
安全實作
rscrypto 在其 API 與建置流程中納入多項安全衛生實踐。 其中包括對 MAC、AEAD 與簽章的恆定時間驗證,以及在掉落時會清零且遮蔽 Debug 輸出的機密類型。
為確保正確性,專案採用:
- 可移植與加速後端之間的差分測試。
- 官方測試向量與 fuzz 語料庫重放。
- 在 CI 中整合 Miri 與
cargo audit。 - 不透明的驗證錯誤以防止側通道洩漏。
社群討論與批評
此函式庫受到密碼學社群對其安全聲明與開發流程的審視。 值得注意的是,Rosenpass 協議的設計者 Karolin Varner 表示對該函式庫在生產環境使用的準備度有強烈疑慮。
「我強烈建議任何人不要使用此函式庫,原因如下:缺乏第三方審查/現有審查流程……缺乏完整的恆定時間密碼學支援……作者自行堅持此 pre‑v1 代碼……尤其令人警覺,因為在 README 中找不到相關說明。」
Varner 具體質疑作者聲稱 MAC 為恆定時間卻未聲稱雜湊為恆定時間,指出因為 MAC 通常是透過雜湊實作,這構成矛盾。她亦認為報告的效能提升可能源自缺乏嚴格的恆定時間實作,而恆定時間實作通常會帶來效能懲罰。
作者回應稱該函式庫確實仍處於 pre‑v1 階段,並正尋求公開審查。他們強調可移植的 Rust 路徑是逐位元的權威,且對未來的第三方稽核與 FIPS 140‑3 驗證持開放態度。