5个版本
0.1.4 | 2024年6月25日 |
---|---|
0.1.3 | 2024年6月19日 |
0.1.2 | 2024年6月19日 |
0.1.1 | 2024年6月19日 |
0.1.0 | 2024年6月19日 |
#943 in 加密学
每月24次下载
195KB
3K SLoC
enc_rust
关于
模块-格标准ML-KEM和(很快)ML-DSA的纯Rust实现,也称为PQC方案Crystals Kyber和Dilithium。
此软件包包含一个库(enc_rust
),以及(很快:TM:)一个二进制包装器。该库目前包含ML-KEM(Kyber)的实现,并将未来也支持ML-DSA(Dilithium)。
为什么选择enc_rust?
enc_rust旨在为任何需要量子安全加密的问题提供安全、高效和易于使用的解决方案。
- 无安全隐患
no_std
兼容- 易于使用
enc_rust目前只支持ML-KEM作为唯一的机制,但将提供
- ML-KEM与x25519混合
- ML-DSA
- ML-DSA与Ed25519混合
如何使用
安装
cargo添加enc_rust
或者
cargo添加 --githttps://github.com/supinie/enc_rust
.
示例
use enc_rust::kem::*;
fn alice(pk: PublicKey) -> (Ciphertext, [u8; 32]) {
let (ciphertext, shared_secret) = pk.encapsulate(None, None).unwrap();
(ciphertext, shared_secret)
}
fn bob(sk: PrivateKey, ciphertext: &[u8]) -> [u8; 32] {
let shared_secret = sk.decapsulate(ciphertext).unwrap();
shared_secret
}
fn main() {
let (pk, sk) = generate_keypair_768(None).unwrap();
let (ciphertext, alice_secret) = alice(pk);
let bob_secret = bob(sk, ciphertext.as_bytes());
assert_eq!(alice_secret, bob_secret);
}
免责声明
此库和二进制包装器按原样提供,不提供任何保证。请在生产应用程序中使用此库时谨慎行事,我们不承担与使用此代码相关的任何安全问题的责任。
Kyber算法作者
- Roberto Avanzi,ARM Limited(DE)
- Joppe Bos,NXP Semiconductors(BE)
- Léo Ducas,CWI Amsterdam(NL)
- Eike Kiltz,Ruhr University Bochum(DE)
- Tancrède Lepoint,SRI International(US)
- Vadim Lyubashevsky,IBM Research Zurich(CH)
- John M. Schanck,University of Waterloo(CA)
- Peter Schwabe,MPI-SP(DE)& Radboud University(NL)
- Gregor Seiler,IBM Research Zurich(CH)
- Damien Stehle,ENS Lyon(FR)
依赖关系
~2.4–3.5MB
~54K SLoC