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 密码学

BSD-3-Clause

135KB
3K SLoC

Kestrel Logo

正确完成文件加密

关于

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