16 个版本
0.3.9 | 2024年7月12日 |
---|---|
0.3.8 | 2023年10月1日 |
0.3.7 | 2023年1月27日 |
0.3.6 | 2022年9月18日 |
0.1.1 | 2022年7月21日 |
#332 在 加密 中
27,515 每月下载量
在 17 个crate(4 个直接) 中使用
29KB
556 行
秘密值类型
任何类型秘密的安全和可序列化(serde 和 proto)类型的简单实现
- 使用 zeroize 在内存销毁后自动清理其值;
- 防止在日志和堆栈跟踪中泄露;
- 存储为字节数组,适合二进制秘密;
- 引入了额外的带有谓词的函数,以控制暴露的边界;暴露的秘密值和清理:
exposed_in_*
。 - 安全地将 hex/base64 格式编码/解码;
与类型一起工作
use secret_vault_value::*;
// Creating from string
let secret_value: SecretValue = "test".into();
// Creating from vec
let secret_value: SecretValue = vec![4,2].into();
// Creating from BytesMut
let secret_value: SecretValue = bytes::BytesMut::from("test").into();
// Reading as string
let secret_value: &str = secret_value4.as_sensitive_str();
// Reading as bytes
let secret_value: &[u8] = secret_value.as_sensitive_bytes();
// Reading as hex string
let secret_value: Zeroizing<String> = secret_value.as_sensitive_hex_str();
// Reading as base64 string
let secret_value: Zeroizing<String> = secret_value.as_sensitive_base64_str();
// Controlling the exposed value with closures/lambdas
let your_result = secret_value.exposed_in_as_zstr(|secret_value|{
todo!()
});
// Controlling the exposed value with async closures/lambdas
let your_result = secret_value.exposed_in_as_zstr_async(|secret_value| async {
todo!()
}).await;
// Deserialize embedded string value from JSON and expose it as zeroizable structure:
#[derive(Deserialize, Zeroize)]
struct YourType {
_some_field: String
}
let your_result_json: YourType = secret_value.expose_json_value_as::<YourType>().unwrap();
快速入门
Cargo.toml
[dependencies]
secret-vault-type = { version = "0.3.<x>", features=["..."] }
请参阅以下关于版本的安全考虑。
秘密值类型可用的可选功能
serde
用于 serde 序列化支持prost
用于 protobuf 序列化支持bytes
用于字节转换支持hex
用于 hex 转换支持base64
用于 base64 转换支持
安全考虑和风险
OSS
开源代码是通过软件开发者的自愿协作创建的。原始作者许可代码,以便任何人都可以查看、修改并分发新版本。您应使用与您用于商业产品的相同程序和工具来管理所有 OSS。始终培训您的员工进行网络安全最佳实践,以帮助他们安全地使用和管理软件产品。您不应仅依赖个人,特别是像这种阅读敏感信息的项目。
版本管理
请勿使用宽泛的版本依赖管理,以避免在没有您审核更改的情况下自动包含新版本的依赖项。
归零、保护内存和加密不能提供 100% 的安全性
协议层上仍然有分配,内存中有可用的会话密钥,操作系统上的特权用户仍然有广泛访问权限等。因此,不要认为这是一个针对所有可能攻击的完全安全解决方案。没有在硬件/操作系统级别实现额外支持(例如,Intel SGX 项目),就无法缓解一些攻击。
许可证
Apache 软件许可证 (ASL)
作者
Abdulla Abdurakhmanov
依赖
~0.3–1.1MB
~24K SLoC