1 个不稳定版本
0.0.1 | 2024年2月10日 |
---|
#18 在 #secrets
22KB
399 行
🧩 Locky Rust SDK
Locky 是一个基于云的密钥管理系统,专注于防止“现在收割、以后解密”的量子攻击。
标准化:利用 NIST 批准的量子后密码学参数和算法(FIPS-203)
快速:密钥检索时间少于 50 毫秒
安全:根密钥被“分割”。如果整个数据中心的数据遭到破坏,则不会泄露任何密钥
可靠:即使在灾难性的数据中心损失情况下,也不会中断服务
灵活:Locky 可以用于存储 AES、ChaCha20、Ascon 以及大多数其他数据加密算法的密钥
lib.rs
:
示例
从 Locky 检索密钥
// Connect to Locky staging environment.
let mut client = LockyClient::new(LockyEnv::Staging)
.with_creds(account_id, access_token);
// Securely get a secret from the cloud service
let key = client.get_key("test_db_key").await.unwrap();
// Use the secret to encrypt some data
let cipher = Aes256Gcm::new((&*key).into());
// Never send this key over a network. Even if the communication is encrypted,
// unless it specifially uses a post-quantum secure protocol (such as the one
// one used by Locky) it will vulnerable to harvest-now decrypt-later
// attacks.
drop(key);
创建账户
let mut client = LockyClient::new(LockyEnv::Staging);
// Make an account in our staging environment
let account_id = client.create_account("[email protected]").await.unwrap();
// the access token needs to be stored securely, but it does not need
// to be stored in a quantum-secure manner. So however you currently
// manage secrets is probably fine!
let access_token = client.get_access_token().unwrap();
创建密钥
let mut client = LockyClient::new(LockyEnv::Staging).with_creds(account_id, access_token);
// Alternately, you can use our CLI or web interface to create a key
client.create_key("test_key").await.unwrap();
关于预发布环境的说明
预发布环境每 24 小时将被删除。它是一个测试环境。安全不受保证,您创建的任何账户、密钥或数据都将丢失。请在预发布环境中不要存储任何东西,除了临时测试数据!
依赖项
~7–15MB
~184K SLoC