7个版本 (2个稳定版)
1.0.2 | 2024年7月8日 |
---|---|
1.0.0 | 2023年12月29日 |
0.11.0 | 2023年9月25日 |
0.10.1 | 2023年4月18日 |
0.1.0 | 2021年11月21日 |
#121 in 密码学
135KB
3K SLoC
正确完成文件加密
关于
Kestrel是一个静态数据文件加密程序,允许您使用公钥加密文件。
功能和优势
- 使用公钥或密码加密文件。
- 强大的安全性和隐私保证。使用X25519、ChaCha20-Poly1305和Noise协议。保证发送者身份验证。
- 安全默认设置,无需配置。
- 支持任何大小的文件。
- 密钥是简单的字符串,易于管理和复制粘贴。
- 私钥始终加密。
- 单个二进制文件,易于在任何地方运行。
- 支持Linux、macOS、Windows。
限制
- 不处理签名。您不能使用此程序签名文件。然而,发送者身份验证是保证的。
- 不解决密钥分发问题。您必须通过其他方式获取已知良好的公钥。
安全属性
- 发送者身份验证:当您成功解密文件时,您可以确信它来自您认识的人,并且它没有被以任何方式篡改。
- 元数据保护:加密文件不包含关于发送者或接收者的任何信息。
- 可否认性:与使用数字签名进行身份验证不同,Kestrel提供发送者身份验证而没有不可否认性。您不会被密码学绑定到您发送的消息。如果收件人试图揭露一条消息,您能够否认您发送了那条消息。
- 部分前向安全性:攻击者必须破坏接收者的私钥才能解密文件。其他人私钥的泄露不会影响他们之前发送给您的文件。
Kestrel结合了Noise协议和分块文件加密方案。有关更多详细信息,请参阅安全文档。
与其他应用程序相比的优势
GPG
GPG是一个功能复杂、用途广泛的工具,具有许多特性和不足。一般来说,Kestrel提供更好的默认安全保证,无需配置。特别是,默认情况下,GPG不提供发送者身份验证或元数据保护。可以通过包含签名来添加发送者身份验证,但这会消除否认性。相比之下,Kestrel在保留否认性的同时提供发送者身份验证并保护元数据。
age
age是一个较新的工具,具有强大的默认设置,并且比GPG简单得多。然而,age不提供发送者身份验证。成功解密文件可能来自任何人,包括用恶意副本替换文件的攻击者。Kestrel通过显示文件的准确发送者来解决这个问题。
安装
已在Linux、macOS、Windows上进行测试
从官方网站下载
或从GitHub发布版获取
如果您有cargo,也可以使用以下命令安装cargo install --locked kestrel-cli
使用示例
生成新的私钥
$ kestrel key gen -o keyring.txt
Key name: alice
New password:
Confirm password:
$ cat keyring.txt
[Key]
Name = alice
PublicKey = D7ZZstGYF6okKKEV2rwoUza/tK3iUa8IMY+l5tuirmzzkEog
PrivateKey = ZWdrMPEp09tKN3rAutCDQTshrNqoh0MLPnEERRCm5KFxvXcTo+s/Sf2ze0fKebVsQilImvLzfIHRcJuX8kGetyAQL1VchvzHR28vFhdKeq+NY2KT
加密文件
$ kestrel encrypt example.txt --to alice --from alice -o example.txt.ktl -k keyring.txt
解密文件
$ kestrel decrypt example.txt.ktl -t alice -o example.txt -k keyring.txt
使用密码加密文件
$ kestrel pass enc example.txt -o example.txt.ktl
设置环境变量KESTREL_KEYRING
以使用默认密钥环文件。
用法
USAGE:
kestrel encrypt [FILE] -t NAME -f NAME [-o FILE] [-k KEYRING]
kestrel decrypt [FILE] -t NAME [-o FILE] [-k KEYRING]
kestrel key generate [-o FILE]
kestrel key change-pass PRIVATE-KEY
kestrel key extract-pub PRIVATE-KEY
kestrel password encrypt|decrypt [FILE] [-o FILE]
Aliases enc, dec, pass, and gen can be used as encrypt, decrypt,
password, and generate respectively.
Option -k is required unless KESTREL_KEYRING env var is set.
OPTIONS:
-t, --to NAME Recipient key name. Decrypt requires a private key.
-f, --from NAME Sender key name. Must be a private key.
-o, --output FILE Output file name.
-k, --keyring KEYRING Location of a keyring file.
-h, --help Print help information.
-v, --version Print version information.
--env-pass Read password from KESTREL_PASSWORD env var
文档
查看文档
文档的源代码可以在kestrel-doc存储库中找到。
贡献
欢迎补丁。请发送反馈和关于您可能遇到的问题的bug报告。
许可
BSD 3条款
除非您明确说明,否则您故意提交以包含在本项目中的任何贡献都应按BSD-3-Clause许可,不附加任何其他条款或条件。
[!警告]据我所知,Kestrel是安全的。然而,此软件尚未经过正式的安全审计。自担风险游泳。
依赖关系
~3.5–4.5MB
~84K SLoC