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



























