20个版本 (破坏性更新)
0.19.2 | 2024年7月20日 |
---|---|
0.18.1 | 2024年6月6日 |
0.18.0 | 2024年1月2日 |
0.17.0 | 2023年10月1日 |
0.4.0 |
|
#164 in 加密学
每月 1,535 次下载
用于 3 个crate (2直接)
55KB
1K SLoC
为Rust提供的GCP/AWS KMS和Ring AEAD的KMS/AEAD信封加密
特性
- 使用自动生成或提供的加密数据密钥进行信封加密;
- 提供基于Ring的AEAD加密的公开和简单实现,无需使用KMS;
- 可选GCP和AWS的基于KMS的安全随机生成器,而不是使用Ring;
可用的KMS提供者
- Google Cloud Platform KMS
- Amazon Web Services KMS
快速入门
Cargo.toml
[dependencies]
kms-aead = { version = "0.19", features=["..."] }
有关版本的信息,请参阅下面的安全考虑事项。
可用的功能
gcp-kms-encryption
用于支持Google KMS信封加密aws-kms-encryption
用于支持Amazon KMS信封加密ring-aead-encryption
仅使用API进行Ring AEAD加密,不使用任何KMS信封加密
示例
let kms_ref = kms_aead::providers::AwsKmsKeyRef::new(aws_account_id, aws_key_id);
let encryption: KmsAeadRingEnvelopeEncryption<AwsKmsProvider> =
kms_aead::KmsAeadRingEnvelopeEncryption::new(providers::AwsKmsProvider::new(&kms_ref).await?)
.await?;
let secret_value = SecretValue::from("test-secret");
let test_aad = "test-aad".to_string();
let cipher_text = encryption.encrypt_value(&test_aad, &secret_value).await?;
let secret_value: SecretValue = encryption
.decrypt_value(&test_aad, &cipher_text)
.await?;
所有示例均可在示例目录中找到。
GCP/AWS安全随机生成器
要使用GCP/AWS KMS API进行安全随机生成,您应使用选项启用它。
对于AWS
providers::AwsKmsProvider::with_options(
&kms_ref,
AwsKmsProviderOptions::new().with_use_kms_random_gen(true),
).await?
对于GCP
providers::GcpKmsProvider::with_options(
&kms_ref,
GcpKmsProviderOptions::new().with_use_kms_random_gen(true),
).await?
安全考虑和风险
OSS
开源代码是通过软件开发者自愿合作创建的。原始作者许可代码,以便任何人都可以查看、修改和分发新版本。您应使用与用于商业产品的相同程序和工具来管理所有OSS。始终培训您的员工了解网络安全最佳实践,以帮助他们安全地使用和管理软件产品。您不应仅依赖于个人,特别是阅读敏感信息的此类项目。
版本
请勿使用广泛的版本依赖关系管理,以避免在没有审计更改的情况下自动包含依赖项的新版本。
安全实现细节和建议
该库默认使用96位随机数和ChaCha20-Poly1305算法。
随机数生成方式(取决于选项)
- 由加密伪随机数生成器生成的随机96位缓冲区;
- (默认)由时间(UNIX纪元的最后48位)+ 由加密伪随机数生成器生成的随机48位缓冲区混合而成;
这是如何配置 GCP KMS 的非重复性和算法的示例。
let encryption = kms_aead::KmsAeadRingEnvelopeEncryption::with_algorithm_options(
kms_aead::providers::GcpKmsProvider::new(&kms_ref).await?,
&ring::aead::CHACHA20_POLY1305,
KmsAeadRingEnvelopeEncryptionOptions::new().with_encryption_options(
kms_aead::ring_encryption::RingAeadEncryptionOptions::new().with_nonce_kind(
kms_aead::ring_encryption::RingAeadEncryptionNonceKind::Random
)
)
)
.await?;
许可证
Apache 软件许可协议 (ASL)
作者
阿卜杜拉·阿卜杜拉赫曼诺夫
依赖项
约 5-41MB
约 597K SLoC