Expand description
§Self Crypto Key
一个用于在二进制文件中存储和自修改加密密钥的 Rust 库。
§特性
- 分散存储: 密钥被分割成随机数量(4-8个)的片段,分散存储在不同的 ELF sections 中
- 代码段绑定: 每个片段使用程序 .text 代码段的 SHA256 哈希值加密
- 多层混淆: 应用位反转、字节置换和异或等多层混淆技术
- 无长度限制: 支持任意长度的密钥(受限于编译时分配的总容量)
- Bytes支持: 同时支持字符串和二进制数据
- 自修改: 程序可以在运行时修改自身二进制中的密钥数据
§安全说明
此库提供的是提高破解难度的方案,而非绝对安全。在开源环境下, 拥有完整二进制和源代码的攻击者理论上可以提取密钥。
对于高安全需求,建议考虑:
- 硬件安全模块 (TPM, SGX)
- 服务器端验证
- 用户密码派生
§使用示例
use self_crypto_key::{init_key_storage, KeyStore};
// 在程序开头初始化密钥存储
init_key_storage!();
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建密钥存储实例
let mut store = KeyStore::new()?;
// 更新密钥(字符串)
store.update("my-secret-key")?;
// 读取密钥
let key = store.read()?;
println!("密钥: {}", key);
// 使用bytes
store.update_bytes(b"binary-data")?;
let bytes = store.read_bytes()?;
Ok(())
}Macros§
- init_
key_ storage - 用于在编译时初始化密钥存储空间的宏
Structs§
- KeyStore
- 密钥存储管理器
Enums§
- Error
- 库的错误类型
Type Aliases§
- Result
- 结果类型别名