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 驗證持開放態度。

Sources