#secret #quantum #encryption #security #api #store-key

bin+lib locky

密钥管理服务 SDK。Locky 在云端存储和检索加密密钥

1 个不稳定版本

0.0.1 2024年2月10日

#18#secrets

MIT 许可证

22KB
399

🧩 Locky Rust SDK

Locky 是一个基于云的密钥管理系统,专注于防止“现在收割、以后解密”的量子攻击。

标准化:利用 NIST 批准的量子后密码学参数和算法(FIPS-203)
快速:密钥检索时间少于 50 毫秒
安全:根密钥被“分割”。如果整个数据中心的数据遭到破坏,则不会泄露任何密钥
可靠:即使在灾难性的数据中心损失情况下,也不会中断服务
灵活:Locky 可以用于存储 AES、ChaCha20、Ascon 以及大多数其他数据加密算法的密钥

Rust 文档

Locky 网站

Locky 文档


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