Skip to main content

Crate self_crypto_key

Crate self_crypto_key 

Source
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
结果类型别名