聊聊2024年Rust加密生態(tài)系統(tǒng)
根據(jù)一項加密庫漏洞的實證研究,加密庫中37.2%的漏洞是內(nèi)存安全問題,而只有27.2%是加密問題。
現(xiàn)在是時候不再使用C作為實現(xiàn)加密庫的實際語言了。
由于Rust的高級特性與底層控制,沒有垃圾收集器,可移植性和易于嵌入,Rust是我們?nèi)〈?dāng)今最常用的加密庫的最佳選擇。OpenSSL, BoringSSL和libsodium,它們都是用C編寫的。
2024年,Rust的加密生態(tài)系統(tǒng)相當(dāng)成熟,比以往任何時候都更令人興奮!我們現(xiàn)在至少有2個庫可以在fips認證模式下使用。
廢話不多說,讓我們來看看Rust開發(fā)人員可以安全地使用加密原語的不同選擇。
aws-lc-rs
雖然aw-lc-rs是最新的crate,但它也是最令人興奮的!
aw-lc-rs是AWS的libcrypto的包裝器,libcrypto是由AWS密碼學(xué)團隊為AWS及其客戶維護的通用加密庫。它支持大多數(shù)平臺(Linux、Windows、macOS、Android)和最常見的體系結(jié)構(gòu)(x86-64、aarch64)。
它的目標(biāo)是提供與ring相同的API(見下文),這是慣用的Rust庫并且易于使用。
它不僅提供了FIPS 140-3認證模式,還提供了后量子密鑰封裝機制(KEM)算法:Kyber512、Kyber768和Kyber1024。
ring
ring專注于通過易于使用的API,它公開了一組核心加密操作的實現(xiàn)、測試和優(yōu)化。ring公開了一個Rust API,并用Rust、C和匯編語言進行混合編寫。
ring提供了底層原語,可以在高級協(xié)議和應(yīng)用程序中使用。主要維護者以對密碼學(xué)和高質(zhì)量代碼非常認真而聞名。
ring的唯一問題是缺少一些算法,例如XChaCha20-Poly1305,并且它還沒有提供任何后量子密碼原語。
boring
boring是Cloudflare對Google的boringssl的安全包裝。這個API太像c了,用起來不舒服,所以不推薦它。
dalek-cryptography
dalek-cryptography是一個GitHub組織,重組了多個關(guān)于純rust橢圓曲線加密的包,如x25519和ed25519。
這些項目被密碼學(xué)的組織使用,比如Signal和Diem。
Rust Crypto
Rust Crypto是一個GitHub組織,在純Rust中,通過提供一個基本特征并為所有不同的算法實現(xiàn)它,重新組合了需要的所有加密原語。
不幸的是,并非所有的crate都由專業(yè)的第三方審核。
總結(jié)
crate | 審核 | fips認證 | 后量子原語 | 總下載量 |
aws-lc-rs | Yes ? | Yes ? | Yes ? | 1,777,000 |
boring | Yes ? | Yes ? | Yes ? | 1,096,000 |
ring | Yes ? | ? No | ? No | 125,140,000 |
RustCrypto | Partially ?? | ? No | Yes ? | 超過5億(不同的crate) |
dalek-cryptography | ? No | ? No | ? No | 超過40,000,000(不同的crate) |
請注意,目前只有aws-lc-rs和ring可以與rust以及大多數(shù)HTTP客戶端/服務(wù)器一起使用。