专为资源受限设备设计的抗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()仅用于演示目的。生产环境必须替换为密码学安全随机源,详见 安全配置。
表格
| 函数 | 说明 |
|---|---|
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() |
安全随机数宏,生产环境必须替换。 |
代码中默认使用的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() 实现码本更新。
更新后旧密文无法用新码本解密,必须保证双方同步更新。
本方案的理论基础详见论文预印本 《可控动态码本加密体系:从统计等价性消除到局部无解性证明》,核心论证包括:
- 代数等价与统计等价的解耦:公开旋转等价冗余,通过偏置权重破坏统计等价性。
- 固定偏置权重的信息论证明:数学推导证明
p(c_i|C_i) ≠ p(a),信息泄露量仅 0.14 比特。 - 局部无解性与乘积复杂度:单码本无法独立验证,攻击者必须联合破解,搜索空间为乘积而非加和。
- 双峰极化分布的最优性:四项统计指标一致证明该策略将攻击区分准确率降至 61.3%(接近随机)。
[📄 预印本 (arXiv)] [📘 详细技术文档 (docs/)]
- 开源授权:本项目的非商业用途代码与文档采用 Apache 2.0 许可证 开源。任何个人与组织可自由下载、使用、修改与分发,但不得用于未经授权的商业用途。
- 专利保护:本项目的核心技术框架已向国家知识产权局提交发明专利申请,申请号:
202610926538.8。专利保护范围覆盖旋转不等价基码池构建方法、固定偏置权重多码本加密架构、双峰极化权重分配机制、零同步码本自识别解密体系等核心创新点。 - 商业授权:任何将本技术用于商业产品、服务或解决方案的行为,均需提前获得书面授权。
- 代码贡献:欢迎提交bug修复、性能优化和新功能PR,请遵循现有代码风格
- 安全审计:诚邀安全社区进行独立的密码分析和攻击测试
- 文档贡献:帮助完善技术文档、示例代码和教程
- 学术合作:欢迎密码学、嵌入式安全、AI安全等领域的研究者共同完善理论证明和实验验证
- 核心理论部分(代数等价与统计等价解耦、固定偏置权重、局部无解性证明):倾向第一作者
- 工程实现与优化:按贡献大小排序
- AI对抗与扩展功能:倾向参与署名
- 具体署名与贡献分配可在合作启动前协商确定
- 微信:18337606556
- 手机:+86 18337606556
- QQ:1424993158
- 邮箱:[[email protected]]
- GitHub:https://github.com/binggan2333/cdcb-cryptosystem.git
本项目为个人独立研究成果,与任何所属机构或课题组方向无关,可接受灵活合作模式。
为确保研究成果的原创性与不可篡改性,本版本已进行如下存证:
- 核心论证定稿版本:v0.9
- 完整压缩包 SHA256 校验码:
DC7AD469884A6CBE550740DD85D580C57F37461FF6D3DF2E083090A259515185 - 区块链存证哈希:
0xe15f394f0f39c94fa793c83d10d8e99ab08654f5ce16c31246243557fef81314 - 存证平台:以太坊 点击查看交易记录
- 存证时间:2026年5月25日
任何人可通过上述校验码与存证信息,验证所获取文件的完整性与原始性。
- v0.9 (2026-05-24):首次公开发布,包含核心加密解密功能、随机偏置权重和双峰极化分布