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 在 密码学
115KB
2.5K SLoC
dee: Rust的drand CLI
检索公共随机数,并将您的文件加密到未来。《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的安全性依赖于以下
- tlock: 从门限BLS到实用的时锁加密,作者Nicolas Gailly, Kelsey Melissaris和Yolan Romailler,及其在thibmeu/tlock-rs中的实现
- 基于身份的加密,作者Dan Boneh和Matthew Franklin,及其在thibmeu/tlock-rs中的实现
- 《熵之联盟》以保持诚信
- age加密协议,及其在str4d/rage中的实现
常见问题解答
默认配置路径
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