#后量子密码学 #数字签名 #安全 #数据访问 #量子 # Dilithium

kt2

KeyTree2 (KT2) 是一个用于Atlas数据访问层的第二代、抗量子密码库。

3个稳定版本

1.1.1 2023年10月12日
1.1.0 2023年10月11日
1.0.0 2023年9月6日

#1492 in 密码学

每月24次下载

GPL-3.0 许可证

150KB
2K SLoC

KT2

KeyTree2 (KT2) 是一个用于Atlas数据访问层的第二代、抗量子密码库。它实际上是多个密码学原语的有效封装

  • 对称加密:来自 ring 的 AES-256-GCM
  • 签名:来自 CRYSTALS(我们将 SHAKE256 的轮数减少到 12)的修改版 Dilithium3,来自 crystals-dilithium
  • 哈希:来自 blake3 的 BLAKE3
  • 密钥封装:来自 CRYSTALS 的 Kyber768,来自 safe_pqc_kyber

自行承担风险
该库尚未经过公认的权威机构的正式安全审计。因此,代码中可能存在未知的安全漏洞、弱点或潜在的缺陷。用户在使用或实现此代码时请注意。


构建

cargo build --release

如何使用

use d3::Keypair;

let keypair = Keypair::generate(Some(&seed));
let sk = keypair.secret;
// pk is also available as keypair.public
let signature = keypair.sign(&msg);
// public key can now be separately derived from the secret key
let pk = PublicKey::from_sk(&sk);
let is_verified = pk.verify(&msg, &signature);

测试

cargo test

基准测试

基准测试使用 criterion.rs 运行

cargo bench

在Apple M1 Max上运行

基准测试 时间
密钥对生成 93.799 µs
签名 125.73 µs
签名验证 82.825 µs

文档

cargo doc --open

贡献者协议

通过向此存储库贡献,您同意您的贡献将根据 GPLv3 许可证 许可。

依赖关系

~11MB
~308K SLoC