3 个版本
0.1.2 | 2023 年 8 月 28 日 |
---|---|
0.1.1 | 2023 年 8 月 28 日 |
0.1.0 | 2023 年 8 月 28 日 |
1356 在 密码学 中
44KB
1K SLoC
age-plugin-hpke: age 的 HPKE 插件
age-plugin-hpke 是 age 的插件。它提供了用于消费 Hybrid Public Key Encrypted (HPKE) 文件的 age 身份和接收者。
HPKE 在 RFC 9180 中定义,age-plugin 由 C2SP 定义。
目录表
特性
- HPKE 接收者和身份
- 基于 Kyber 的后量子 HPKE Draft00
- age 的插件 CLI
- age 的插件库
- 跨平台(Linux、Windows、macOS)
接下来是什么
- 就 age 格式达成一致
安装
环境 | CLI 命令 |
---|---|
Cargo (Rust 1.67+) | cargoinstall --githttps://github.com/thibmeu/age-plugin-hpke |
阅读 age 安装说明 以安装 age。
使用
您可以使用 --help
选项获取有关命令及其选项的更多信息。
age-plugin-hpke [OPTIONS]
生成接收者和身份
使用 Kyber768 创建一个身份。
age-plugin-hpke --generate --kem x25519-kyber768-draft00 --aead cha-cha20-poly1305 --associated-data "[email protected]" > my_id.key
为了方便起见,您还可以创建一个相关的接收者
cat my_id.key | grep 'recipient' | sed 's/.*\(age1.*\)/\1/' > my_id.key.pub
接收者和身份的大小将根据 KEM 而变化。在后量子中,密钥很大。
HPKE 加密
使用您的新密钥加密 Hello age-plugin-hpke!
字符串。
echo 'Hello age-plugin-hpke!' | age -a -R my_id.key.pub > data.age
age --decrypt -i my_id.key data.age
Hello age-plugin-hpke!
安全考虑
此软件尚未经过审计。请自行决定使用。考虑到这一点,age-plugin-hpke 的安全依赖于以下
- HPKE RFC 9180 由 R. Barnes, K. Bhargavan, B. Lipp, C. Wood 定义,并在 rozbb/rust-hpke 中实现,
- age 加密协议及其在 str4d/rage 中的实现,
常见问题解答
age 格式
Stanza
hpke<ASSOCIATED_DATA> <KEM> <AEAD>
Stanza 中的所有数据都使用 base64 编码,没有填充。
接收者
age1hpke1<KEM_ALG><AEAD_ALG><KDF_ALG><PUBLIC_KEY><ASSOCIATED_DATA>
身份
AGE-PLUGIN-HPKE-<KEM_ALG><AEAD_ALG><KDF_ALG><PRIVATE_KEY><ASSOCIATED_DATA>
为什么 age 需要 HPKE
为什么不呢?在撰写本文时,年龄信息在多个平台上可用,具有一种允许灵活性的文件格式,以及一些不错的工具来集成。
IETF 格式结合 COSE 中的 HPKE 可能会提供一条备选路径。
作为库的使用
CLI 中使用的底层原语通过库暴露。这包括 age 标注、接收者和身份,以及从头生成身份的工具。
cargo add age-plugin-hpke
许可证
本项目采用 MIT 许可证。
贡献
除非您明确声明,否则您有意提交以供包含在作品中的任何贡献都应按上述 MIT 许可证进行许可,不附加任何额外的条款或条件。
依赖项
19-29MB
~391K SLoC