#encryption-key #encryption #vault #rest #security #access-token #key-value-store

bin+lib helvetia

一个库和 API 服务器,允许匿名存储秘密,遵循简单规则;任何用户都可以使用令牌创建秘密,并且只能使用相同的令牌来访问它

3 个不稳定版本

0.2.0 2021 年 4 月 15 日
0.1.1 2020 年 6 月 22 日
0.1.0 2020 年 6 月 21 日

1842密码学

MPL-2.0 许可证

120KB
2K SLoC

🇨🇭 Helvetia

一个库和 API 服务器,允许匿名存储秘密,遵循简单规则;任何用户都可以使用令牌创建秘密,并且只能使用相同的令牌来访问它。Helvetia 将竭尽全力确保秘密的安全,甚至包括自身。

CI Crates.io Docs.rs

概述

Helvetia 可以用作独立的 API 服务器或作为库。在前一种情况下,您可以使用其 REST API 与之交互,而在后一种情况下,您可以通过其 vault 模块与之交互。

Helvetia 的工作方式非常简单。用户首先需要创建一个秘密,它由以下部分组成

  • 名称
  • 数据,包含用户想要存储的秘密
  • [可选] 元数据,可以是与秘密相关的任何类型的数据,但可能不那么敏感。
  • 令牌,可用于完全访问秘密。
  • [可选] 元数据令牌,可用于仅检索元数据。

然后 Helvetia 将执行以下操作以确保秘密安全存储

  • 哈希秘密的名称和令牌。
  • 使用 Helvetia 的加密密钥和秘密的名称派生的单次使用密钥加密秘密。
  • 将键值对存储到底层键值存储中。

Helvetia 尚未经过安全审计,并且尚未准备好在生产环境中使用。如果您有需要此类保证的使用案例,请优先考虑使用其他服务,如 Hashicorp 的 Vault。如果您喜欢以下功能并想尝试 Helvetia,我们非常欢迎

  1. 无账户;允许每个人仅使用令牌创建秘密。
  2. 可选地通过更有限的令牌提供对秘密元数据的访问。
  3. 使用名称哈希的静态加密。
  4. 无依赖的单个二进制文件,易于部署。
  5. 允许用户使用易于记忆的名称创建秘密。
  6. 弱完美前向安全性;如果加密密钥在秘密存储后遭到泄露,则只有攻击者猜出秘密的名称才能解密秘密。
  7. 每次访问秘密时都提供数据完整性保证,因为它必须先进行解密。
  8. 使用 Rust 编写,因此我们可以避免一类问题。
  9. 即使存储后端遭到破坏,也易于通过简单地删除加密密钥来加密存储的秘密。
  10. 支持易于扩展的加密算法列表(通过 Tindercrypt)和存储后端(通过 Caves)。
  11. 允许限制上传秘密的大小。

用法

为了运行 Helvetia API 服务器,您需要创建一个加密密钥并提供一个目录来存储加密的秘密。例如,您可以这样做:

$ mkdir ~/.helvetia
$ cd ~/.helvetia
$ head -c 32 /dev/urandom > key
$ helvetia -k key --store-dir data

默认情况下,Helvetia 将在 RocksDB 数据库中存储秘密,并使用 AES-256-GCM 进行加密。要查看其他可用选项,可以执行 helvetia --help

文档

您可以在 https://docs.rs/helvetia 中阅读最新文档。以下部分可能对您感兴趣:

安装

作为一个库

在将此存储库添加到您的 Cargo.toml 时,使用 default-= false 将其添加,以确保不会将 CLI 特定依赖项添加到您的依赖项树中

helvetia = { version = "x.y.z", default-features = false }

如果您想要 RocksDB 支持,可以使用以下命令启用它:

helvetia = { version = "x.y.z", default-features = false, features = ["with-rocksdb"] }

作为一个二进制文件

您可以使用 稳定发布版 之一或 夜间构建 来运行 Helvetia。或者,您可以使用以下方法之一安装它:

  • 从 cargo

    $ cargo install helvetia
    
  • 从源代码

    $ git clone https://github.com/apyrgio/helvetia
    $ cd helvetia
    $ cargo build --release
    $ ./target/release/helvetia --help
    Helvetia: Anonymous and secure storage of secrets...
    

如果您想要启用 RocksDB 支持,可以在上述命令中添加 --features with-rocksdb 标志。

贡献

您可以阅读 CONTRIBUTING.md 指南以获取有关如何为此项目做出贡献的更多信息。

根据 MPL-2.0 许可。请阅读 NOTICE.mdLICENSE 文件以获取完整的版权和许可信息。

依赖项

~18–35MB
~654K SLoC