12个版本

0.0.16 2024年3月9日
0.0.15 2024年2月29日
0.0.14 2023年8月30日
0.0.8 2023年7月23日
0.0.6 2023年3月22日

#210密码学

MIT 许可证

115KB
2.5K SLoC

dee: Rust的drand CLI

Documentation License crates.io

检索公共随机数,并将您的文件加密到未来。《dee》提供了一个drand客户端,并支持时间锁加密。

目录

功能

  • 检索drand随机数
  • 本地管理多个信标
  • 时间锁加密和解密
  • 链式和非链式随机数
  • 在G1和G2上签名验证
  • 可自定义的输出格式
  • 跨平台(Linux、Windows、macOS)
  • 与Go和JS实现互操作
  • wasm32兼容库

下一步

  • P2P随机数检索
  • 离线时间锁解密

安装

环境 CLI命令
Cargo (Rust 1.74+) cargo安装dee --githttps://github.com/thibmeu/drand-rs

在Linux、Windows或macOS上,您可以使用预构建的二进制文件

使用方法

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

dee [OPTIONS] <COMMAND>

管理远程信标

添加quicknet远程信标,并显示其详细信息。

dee remote add quicknet https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
quicknet
dee remote show --long quicknet
URL       : https://drand.cloudflare.com/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
Public Key: 83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a
Period    : 3s
Genesis   : 2023-08-23 15:09:27.0 +00:00:00
Chain Hash: 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
Group Hash: f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e
Scheme ID : bls-unchained-g1-rfc9380
Beacon ID : quicknet

检索公共随机数

从quicknet检索第1000轮。

dee rand -u quicknet --long 1000
Round     : 1000
Relative  : 100:09:43 ago
Absolute  : 2023-08-23 15:59:24
Randomness: fe290beca10872ef2fb164d2aa4442de4566183ec51c56ff3cd603d930e54fdd
Signature : b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39

时间锁加密

使用quicknet公钥将“Hello dee!”字符串加密到30秒后的未来。如果您在解密前等待30秒,则消息将使用新的quicknet签名解密。

echo 'Hello dee!' | dee crypt -u quicknet -r 30s > data.dee
dee crypt --decrypt data.dee
Hello dee!

常用远程

ID 远程 时间锁加密
quicknet-cloudflare https://drand.cloudflare.com/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
quicknet-pl https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
mainnet-cloudflare https://drand.cloudflare.com
mainnet-pl https://api.drand.sh

dee 不包含默认远程信标。您应该选择适合您需求的信标。

更多信标来源可在drand网站上找到。

安全考虑

此软件尚未经过审计。请自行决定使用。考虑到这一点,dee的安全性依赖于以下

常见问题解答

默认配置路径

dee配置文件位于以下位置

操作系统 路径
Linux /home/alice/.config/dee/default.toml
Windows C:\Users\Alice\AppData\Roaming\dee\config\default.toml
macOS /Users/Alice/Library/Application Support/rs.dee/default.toml

其他实现

drand API规范在drand.love/docs/specification。drand基于Ewa Syta, Philipp Jovanovic, Eleftherios Kokoris Kogias, Nicolas Gailly, Linus Gasser, Ismail Khoffi, Michael J. Fischer和Bryan Ford的《可扩展的抗偏斜分布式随机性》Scalable Bias-Resistant Distributed Randomness。可互操作的Go实现可在drand/drand找到。

时锁加密在Nicolas Gailly, Kelsey Melissaris和Yolan Romailler的tlock: Practical Timelock Encryption from Threshold BLS中发布。可互操作的Go实现可在drand/tlock找到。

Rust库

dee专注于构建命令行界面(CLI)。它依赖于Rust库来使用drand或执行时锁加密。

如果您想在drand和/或时锁加密之上实现自己的Rust应用程序,可以使用以下库

  • drand_core:drand客户端
  • tlock:原始tlock实现,允许消息长度最多16字节
  • tlock_age:混合加密,age密码短语使用tlock加密

许可证

本项目采用MIT许可协议。

贡献

除非您明确声明,否则您提交的任何有意包含在本作品中的贡献都应按照上述MIT许可协议进行许可,不附加任何额外条款或条件。

依赖关系

~20–35MB
~494K SLoC