#age #hpke #encryption #public-key #cli

bin+lib age-plugin-hpke

age 客户端的 HPKE 插件

3 个版本

0.1.2 2023 年 8 月 28 日
0.1.1 2023 年 8 月 28 日
0.1.0 2023 年 8 月 28 日

1356密码学


用于 age-plugin-simplepq

MIT 许可证

44KB
1K SLoC

age-plugin-hpke: age 的 HPKE 插件

Documentation License crates.io

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 的安全依赖于以下

常见问题解答

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