Skip to content

binggan2333/cdcb-cryptosystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CDCB - Controllable Dynamic Codebook Cryptosystem

专为资源受限设备设计的抗AI统计攻击轻量级加密体系 轻量级、可证明安全的动态码本加密体系,为资源受限设备提供最低 161 比特理论安全强度的统计不可区分性保护。

目录

项目背景

传统动态码本加密面临"统计等价性"困境:时分轮替或均匀随机选用码本,仍会保留可被攻击者利用的频率特征。
本方案通过 旋转不等价码固定偏置权重(单边权重) 技术,彻底打破码本间的统计关联,将密文信息泄露量降至 0.14 比特,并在 8 位 MCU 上提供 161 比特安全强度。

本项目起源于我在处理课题组横向项目时的一个思考:密钥提示模块是否会泄露使用者的行为特征。早期设计的简单方案被AI安全分析工具判定为存在统计泄露风险,由此引发了我对多码本加密体系统计安全性的深入研究。

考虑到我本科毕业于信息与计算科学专业(数学类),之后主要从事人工智能方向的研究(工程类),缺乏系统性的密码学训练,故将完整的代码实现、数学推理过程和实验数据全部开源,真诚寻求信息安全领域专业人士的指导与批评。本项目为个人独立研究成果,与所在课题组研究方向无关。

核心特性

  • 统计不可区分:固定偏置权重使所有明文密文收敛至两个频率层级,攻击者无法对齐码本。
  • 局部无解:单码本解密无法验证,迫使攻击者联合破解所有码本,复杂度为乘积关系。
  • 轻量级:仅需循环移位、查表和洗牌操作,在 8 位 MCU 上极低资源占用。
  • 单边权重:加密方独立决定权重,解密方无需同步,通过基码自动识别码本。
  • 动态可更新:更换盐值即可生成全新码本,基码池无需重建。

快速开始

int main() {
    // 1. 初始化盐值(使用默认随机源)
    CDCB_salt_init(NULL, 0);
    // 2. 生成动态码本
    CDCB_codebook_init();
    // 3. 配置偏置权重(随机模式)
    CDCB_bias_init(NULL, 0);

    // 4. 加密一个字节
    uint8_t msg[] = {0xAB, 0xCD, 0x12, 0x34};
    uint16_t enc[8];
    for (int i = 0; i < 4; i++) {
        CDCB_encrypt_byte(msg[i], &enc[i*2]);
    }

    // 5. 解密
    uint8_t dec[4];
    bool ok = true;
    for (int i = 0; i < 4; i++) {
        if (!CDCB_decrypt_byte(&enc[i*2], &dec[i])) ok = false;
    }
    // ok == true, dec 与 msg 相同
    return 0;
}

⚠️ 生产环境警告:代码中默认使用的rand()仅用于演示目的。生产环境必须替换为密码学安全随机源,详见 安全配置

API 文档

初始化

表格

函数 说明
CDCB_salt_init(external_salts, count) 初始化 4 个独立盐值。可传入外部盐值,或自动生成。
CDCB_codebook_init() 生成 / 更新动态码本及反向码本。
CDCB_bias_init(buf, len) 配置固定偏置权重。len=0 为随机模式,len>0 为双峰极化模式。
CDCB_safe_kid_init() 初始化基码偏移量(单边标签场景使用)。

加解密

表格

函数 说明
CDCB_encrypt_nibble(plain_4bit) 加密 4 位明文,返回 16 位密文标记。
CDCB_decrypt_nibble(cipher, &plain_4bit, &group) 解密 4 位密文,返回明文和所属码本索引。
CDCB_encrypt_byte(plain_byte, cipher[2]) 加密一个字节,输出两个 16 位密文标记。
CDCB_decrypt_byte(cipher[2], &plain_byte) 解密一个字节。

辅助函数

表格

函数 说明
CDCB_kid_rotate(code, n) 16 位左旋 n 位。
CDCB_kid_to_base(kid, &offset) 从密文提取基码和相对偏移。
CDCB_update_salts(new_salts) 更新盐值并重建码本。
CDCB_update_salts_from_seed(seed) 基于协商种子更新盐值。

配置宏

表格

默认值 说明
CDCB_SAFE_KID_BITS 16 旋转周期 / 码长。
CDCB_SAFE_POOL_SIZE 64 私有基码池大小。
CDCB_SAFE_CODEBOOKS 4 同时启用的码本数量。
CDCB_SAFE_PRODUCTION 未定义 定义后禁用演示随机源,需提供 CDCB_SAFE_RANDOM()
CDCB_SAFE_RANDOM() rand() 安全随机数宏,生产环境必须替换。

安全配置

1. 替换安全随机源(必须)

代码中默认使用的rand()函数不具备密码学安全性,生产环境必须替换为平台对应的安全随机数接口:

// Linux/macOS 平台
#define CDCB_SAFE_RANDOM() ({ \
    uint8_t r; \
    if (getentropy(&r, sizeof(r)) != 0) abort(); \
    r; \
})

// ESP32 平台
#define CDCB_SAFE_RANDOM() esp_random()

// STM32 HAL 平台
#define CDCB_SAFE_RANDOM() ({ \
    uint32_t r; \
    HAL_RNG_GenerateRandomNumber(&hrng, &r); \
    (uint8_t)r; \
})

盐值管理

对称通信双方必须使用完全相同的 4 个 64 位盐值。

建议通过预共享密钥、安全协商或基于公共事件派生。

偏置权重配置

  • 随机模式:适用于无先验频率知识,每个明文生成随机但固定且非均匀的权重。
  • 双峰极化模式:根据已知明文字符频率,主动塑造 “高频层” 和 “低频层” 两种分布,进一步降低信息泄露。

码本更新

周期性调用 CDCB_update_salts_from_seed() 实现码本更新。

更新后旧密文无法用新码本解密,必须保证双方同步更新。

理论背景

本方案的理论基础详见论文预印本 《可控动态码本加密体系:从统计等价性消除到局部无解性证明》,核心论证包括:

  1. 代数等价与统计等价的解耦:公开旋转等价冗余,通过偏置权重破坏统计等价性。
  2. 固定偏置权重的信息论证明:数学推导证明 p(c_i|C_i) ≠ p(a),信息泄露量仅 0.14 比特。
  3. 局部无解性与乘积复杂度:单码本无法独立验证,攻击者必须联合破解,搜索空间为乘积而非加和。
  4. 双峰极化分布的最优性:四项统计指标一致证明该策略将攻击区分准确率降至 61.3%(接近随机)。

[📄 预印本 (arXiv)] [📘 详细技术文档 (docs/)]

知识产权声明

  • 开源授权:本项目的非商业用途代码与文档采用 Apache 2.0 许可证 开源。任何个人与组织可自由下载、使用、修改与分发,但不得用于未经授权的商业用途。
  • 专利保护:本项目的核心技术框架已向国家知识产权局提交发明专利申请,申请号:202610926538.8。专利保护范围覆盖旋转不等价基码池构建方法、固定偏置权重多码本加密架构、双峰极化权重分配机制、零同步码本自识别解密体系等核心创新点。
  • 商业授权:任何将本技术用于商业产品、服务或解决方案的行为,均需提前获得书面授权。

贡献与联系

贡献方式

  • 代码贡献:欢迎提交bug修复、性能优化和新功能PR,请遵循现有代码风格
  • 安全审计:诚邀安全社区进行独立的密码分析和攻击测试
  • 文档贡献:帮助完善技术文档、示例代码和教程
  • 学术合作:欢迎密码学、嵌入式安全、AI安全等领域的研究者共同完善理论证明和实验验证

署名原则

  • 核心理论部分(代数等价与统计等价解耦、固定偏置权重、局部无解性证明):倾向第一作者
  • 工程实现与优化:按贡献大小排序
  • AI对抗与扩展功能:倾向参与署名
  • 具体署名与贡献分配可在合作启动前协商确定

联系方式

本项目为个人独立研究成果,与任何所属机构或课题组方向无关,可接受灵活合作模式。

版本与存证信息

为确保研究成果的原创性与不可篡改性,本版本已进行如下存证:

  • 核心论证定稿版本:v0.9
  • 完整压缩包 SHA256 校验码DC7AD469884A6CBE550740DD85D580C57F37461FF6D3DF2E083090A259515185
  • 区块链存证哈希0xe15f394f0f39c94fa793c83d10d8e99ab08654f5ce16c31246243557fef81314
  • 存证平台:以太坊 点击查看交易记录
  • 存证时间:2026年5月25日

任何人可通过上述校验码与存证信息,验证所获取文件的完整性与原始性。

版本历史

  • v0.9 (2026-05-24):首次公开发布,包含核心加密解密功能、随机偏置权重和双峰极化分布

About

Controllable Dynamic Codebook Cryptosystem - Lightweight encryption resistant to AI statistical attacks

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages