#加密密钥 #测试 #密钥管理 #子库 #加密 #创建 #secret-keeper

secret-keeper-test_util

用于测试秘密守护者和子库的工具

3个版本

0.3.5 2020年7月11日
0.3.4 2020年7月8日
0.3.0 2020年6月30日

#2390 in 加密学


2 个库中使用

Apache-2.0 OR MIT

7KB
80

Secret-Keeper

使用强加密和密钥管理进行信封加密。SecretKeeper使用密钥加密密钥(KEK)加密数据加密密钥(DEK),返回一个WrappedKey。这个库(及其子库)实现了多个SecretKeeper,以及三个内容加密加密器

  • XCha20Cha20-Poly1305与AEAD
  • AES-GCM(256位)
  • 以及一个结合LZ4和XChaCha20-Poly1305的压缩加密器

这个库中的API旨在提供良好的安全实践,同时最大限度地减少无意中导致安全降低的开发者错误的机会。一个这样的原则是,加密密钥总是以加密的形式存储。

一些SecretKeeper实现已经开发出来。如果你创建了一个新的,请发送链接给我,我会从这里链接到它。

  • Env 从环境变量中存储的口令短语生成密钥,使用PBKDF2+HMAC+SHA256+SALT。 EnvKeeper

  • Prompt 在终端提示用户输入口令短语。使用PBKDF2+HMAC+SHA256+SALT从口令短语生成KEK。需要secret-keeper-prompt库。 PromptKeeper

  • Hashivault 使用Vault的Transit引擎,HashivaultKeeper可以创建使用各种加密算法的密钥(密钥加密密钥),包括aes-gcm-256ed25519和几个其他算法。使用Vault和由Vault管理的KEK加密或解密DEK。 Hashivault

  • CloudKMS CloudKmsKeeper使用Google CloudKMS服务中的密钥。 CloudKms

  • 1Password(仅限linux/mac)。1Password包含在示例目录中,以展示如何使用EnvKeeper和shell脚本与外部程序一起使用;不需要额外的rust代码。使用免费的1password op cli tool,

实现说明

使用的加密算法由其他包实现,特别是RustCrypto,一个纯Rust实现。

LZ4压缩是一个由lz_fear实现的纯Rust版本。

在用文件读取填充未初始化的缓冲区之前,有一个'unsafe'的使用。如果禁用了fileio特性(使用--no-default-features --features=slim编译),则secret-keeper crate不会直接使用unsafe代码。

这个库的概念基于谷歌云secret-keeper库。

状态

这是一个新的crate,应该被视为alpha质量。

计划有额外的SecretKeeper实现。如果您创建了任何,请让我知道,我会从这里链接到它。

核心secret-keeper库编译成wasm没有错误,但我还没有在浏览器中测试过。

构建和测试

这个crate包含核心库的子crate、可选的secret keeper实现和一个命令行加密程序(examples/encrypt-rs)。您可以使用cargo build构建一切。

examples/encrypt-rs文件夹包含一些shell脚本,用于测试各种secret keepers与encrypt cli程序。可以使用cargo install encrypt-rs独立安装二进制文件。

测试hashivault

要运行hashivault测试,您需要一个安装的hashiorp vault实例。

为了在Docker容器中设置和初始化一个vault实例以供开发和测试,运行以下三个命令

examples/hashivault/scripts/create-vault-docker.sh
examples/hashivault/scripts/make-app-token.sh
source examples/hashivault/secret.env

最后一个命令设置了VAULT_TOKEN环境变量,这是运行hashivault keeper测试和其他vault cli命令所必需的。文件examples/hashivault/README.md包含有关这些脚本的更多信息。

测试cloudkms

有关测试cloudkms keeper的说明,请参阅keepers/cloudkms/README.md。

依赖关系

~4MB
~57K SLoC