#age #encryption #cross-platform #networking #cli #tlock

bin+lib age-plugin-tlock

tlock 插件用于 age 客户端

1 个不稳定版本

0.1.1 2024年3月28日

#1823密码学

MIT 许可证

51KB
641

age-plugin-tlock: tlock 插件用于 age 客户端

Documentation License crates.io

age-plugin-tlock 是用于 age 客户端(如 agerage)的插件,它允许文件被加密成由 drand 网络表示的 age 身份。

代码仍然是实验性的。目前只能从源代码安装。

目录

功能

  • 在线和离线解密
  • age 插件
  • 兼容 age 插件 API
  • 跨平台(Linux、Windows、macOS)
  • 与其他 tlock 实现(Go、JS、Rust)互操作

接下来是什么

  • 包发布
  • 关于 age 格式的共识
  • 更广泛的测试套件

安装

环境 CLI 命令
Cargo(Rust 1.74+) cargoinstall --githttps://github.com/thibmeu/tlock-rs age-plugin-tlock

阅读 age 安装说明 以安装 age。

用法

您可以使用 --help 选项获取有关命令及其选项的更多信息。

age-plugin-tlock [OPTIONS]

生成接收者和身份

接收者或身份都不是秘密。身份的秘密只在于其在某个时间点后的有用性。

为 fastnet 创建一个身份。

age-plugin-tlock --generate --remote https://api.drand.sh/dbd506d6ef76e5f386f41c651dcb808c5bcbd75471cc4eafa3f4df7ad4e4c493 > fastnet.key

为了方便起见,您还可以创建一个关联的接收者

cat fastnet.key | grep 'recipient' | sed 's/.*\(age1.*\)/\1/' > fastnet.key.pub

定时锁加密

使用 fastnet 公钥加密 Hello age-plugin-tlock! 字符串,将其设置为 30 秒后到期。如果您在解密前等待 30 秒,则消息将使用新的 fastnet 签名解密。

echo "Hello age-plugin-tlock" | ROUND="30s" age -a -R fastnet.key.pub > data.age
age --decrypt -i fastnet.key data.age
Hello age-plugin-tlock

安全考虑

本软件未经审计。请自行决定使用。鉴于这一点,dee 安全性依赖于以下内容

常见问题解答

age 格式是什么

要使用 age 工具,age-plugin-tlock 需要接收者和身份双方都提供所有信息。在加密时,它需要一个接收者。在解密时,它需要一个完成 stanza 信息的身份。

此格式是专门定义的,未来可能会发生变化。它遵循两个设计约束。第一个是身份文件需要可传输。第二个是离线优先。

Stanza

tlock <ROUND> <HASH>
  • <ROUND> 是 drand 信标轮数,
  • <HASH> 是 drand 链的哈希值,十六进制编码,

以纯文本编码。

示例

tlock 4641203 dbd506d6ef76e5f386f41c651dcb808c5bcbd75471cc4eafa3f4df7ad4e4c493

接收者

age1tlock1<HASH><PUBLIC_KEY><GENESIS><PERIOD>
  • <HASH> 是 drand 链的哈希值,
  • <PUBLIC_KEY> 是 drand 链的公钥,
  • <GENESIS> 是 drand 链的创世时间(以秒为单位),
  • <PERIOD> 是 drand 链轮次之间的时间间隔(以秒为单位),

编码为 bech32 文本格式。

示例

age1tlock1yrda2pkkaamwtuux7swx28wtszx9hj7h23cucn40506d77k5unzfxc9qhp32w5nlaca8xx7tty5q4d4t6ck4czmw5q7ufh0kvyhaljwsruqux92z2sthryp5wh43a3npt7xsmu9ckmww8pvpr4kulr97lwr4ne0xz63al5z5ey5fgpmxmxjmnku3uwmf0ewhp2t4rq0qqlu8ljj7lng8rlmrqvpvft27

<HASH> 是必需的,用于填充 stanza,没有其他内容。 <PUBLIC_KEY> 是 tlock 加密所需的。 <GENESIS><PERIOD> 用于解析信标轮次信息。轮次在加密时提供。这是在能够多次重用相同的身份(每个 drand 链一个)和拥有更精确的接收者之间的一种权衡,后者将限于轮次和公钥信息。

身份

AGE-PLUGIN-TLOCK-<TYPE><IDENTITY>
  • <TYPE>RAW 的 0 或为 HTTP 的 1。它提供了在实现和威胁模型之间升级身份的灵活性,
  • <IDENTITY> 是对应于轮次的信标签名的字节(对于 RAW),如果是 HTTP,则是一个远程 HTTP URL,

编码为 bech32 文本格式。

示例

AGE-PLUGIN-TLOCK-1Q9TXSAR5WPEN5TE0V9CXJTNYWFSKUEPWWD5Z7ERZVS6NQDNYXEJKVDEKV56KVVECXENRGVTRXC6NZERRVGURQWRRX43XXCNYXU6NGDE3VD3NGETPVESNXE35V3NRWCTYX3JNGCE58YEJ74QEJUM

其他实现

在撰写本文时,没有其他将 tlock 作为 age 插件实现的例子。接收者和身份已根据作者认为合理的方式进行专门定义。

许可证

此项目受 MIT 许可协议保护。

贡献

除非您明确声明,否则您有意提交的任何贡献,旨在包含在本作品中,应按上述方式获得 MIT 许可,不附加任何其他条款或条件。

依赖项

~20–32MB
~501K SLoC