Skip to content

amonadam/QSP1

Repository files navigation

抗量子资产托管系统

项目简介

抗量子资产托管系统是一个结合了后量子密码学(格密码)、秘密共享和图像隐写技术的综合性安全系统。该系统利用格密码的抗量子特性、秘密共享的门限恢复特性和图像隐写的隐蔽性,实现了高安全性、高可靠性的资产托管方案。

核心功能

  1. 身份铸造:基于 Module-LWE 问题生成抗量子密钥对,确保身份的安全性和唯一性
  2. 资产锁定:将秘密图像通过 CRT 分割为多个份额,使用格密码加密份额数据,锚定权益到公钥持有者,并通过隐写技术分发
  3. 授权恢复:通过签名授权机制,实现 t 个用户协作恢复资产,确保资产的安全性和可控性
  4. 分布式模式:支持离线签名和签名文件导入,实现跨设备的安全授权流程
  5. 碎片加解密:实现用户收到碎片后的提取和解密功能,确保数据的安全性

项目结构

QSP/
├── GUI/             # 用户界面模块
├── data/            # 数据目录
│   ├── keys/        # 密钥文件
│   └── shares/      # 份额文件
├── dataset/         # 测试数据集
├── dist/            # 打包分发目录
├── src/             # 核心源代码
│   ├── crypto_lattice/   # 格密码模块
│   ├── dealer/           # 资产锁定模块
│   ├── image_stego/      # 图像隐写模块
│   ├── secret_sharing/   # 秘密共享模块
│   └── utils/            # 工具函数
├── text/            # 测试代码目录
├── venv/            # 虚拟环境
├── main.py          # 主程序入口
├── lock_asset.py    # 资产锁定工具
├── unlock_asset.py  # 资产恢复工具
└── requirements.txt # 依赖包列表

核心模块详解

1. 格密码模块 (src/crypto_lattice/)

  • keygen.py:实现密钥生成功能,基于 Module-LWE 问题
  • signer.py:实现签名生成和验证功能,包含 LatticeSigner 类
  • ntt.py:实现多项式乘法,使用 Schoolbook 算法确保正确性
  • utils.py:提供格密码相关的数学工具函数

2. 资产锁定模块 (src/dealer/)

  • locker.py:实现资产锁定和分发功能,包含 AssetLocker 类
    • 支持 CRT 分割秘密图像为 n 个份额
    • 使用格密码加密份额数据,确保只有对应私钥持有者能解密
    • 实现自检验证功能,确保数据嵌入的正确性
    • 生成用户专属文件夹,严格分发含密图像
    • 生成资产清单,记录份额的所有权和指纹

3. 图像隐写模块 (src/image_stego/)

  • dct_embed.py:实现 DCT 域信息嵌入,包含溢出预处理和中频系数锁定
  • dct_extract.py:实现 DCT 域信息提取,与嵌入过程对应
  • img_process.py:提供图像预处理和后处理功能
  • orchestrator.py:协调嵌入和提取流程

4. 秘密共享模块 (src/secret_sharing/)

  • splitter.py:实现秘密分割功能,基于 CRT 算法
  • reconstructor.py:实现秘密重构功能,基于 CRT 算法,包含 ImageCRTReconstructor 类
  • scrambler.py:实现秘密信息的混淆和去混淆
  • math_utils.py:提供数学工具函数

关键技术点

1. 零信任架构

  • 身份验证:基于格密码的数字签名,确保身份的真实性和不可伪造性
  • 授权机制:基于门限签名的授权机制,确保只有授权用户才能恢复资产
  • 会话隔离:每个恢复会话生成唯一的会话 ID,防止重放攻击

2. 资产锚定

  • 权益绑定:将每个资产份额的所有权绑定到特定公钥的持有者
  • 指纹计算:计算每个份额的哈希值,确保数据的完整性
  • 资产清单:生成公开的资产清单,记录份额的所有权和指纹

3. 抗量子安全

  • 格密码算法:使用基于 Module-LWE 问题的格密码算法,抗量子计算攻击
  • 显式承诺:在签名中包含显式承诺,解决噪声进位导致的验证失败问题
  • 松弛验证:允许签名验证过程中存在一定误差范围,提高验证成功率

4. 图像隐写

  • DCT 变换:将图像从空间域转换到频率域,便于频域数据嵌入
  • 中频系数锁定:使用 ZigZag 扫描顺序选择中频系数,平衡隐蔽性和鲁棒性
  • 溢出预处理:在嵌入前对载体图像进行预处理,防止 DCT 逆变换后产生噪声

5. 秘密共享

  • CRT 算法:基于中国剩余定理实现秘密分割和重构
  • 门限方案:支持 (t, n) 门限恢复,只需 t 个份额即可恢复原始秘密
  • 动态模数:支持动态生成模数,提高系统的灵活性和安全性

系统要求

  • Python 3.9+
  • NumPy
  • OpenCV
  • Pillow
  • Matplotlib
  • pycryptodome

安装与运行

1. 安装依赖

pip install -r requirements.txt

2. 运行系统

python GUI/app_modern.py

3. 用户操作流程

3.1 系统启动

  1. 运行 python GUI/app_modern.py 启动系统
  2. 系统会初始化所有模块,包括格密码参数、图像隐写参数和秘密共享参数
  3. 启动完成后,会显示现代化主界面,包含三个核心功能模块:身份铸造、资产锁定和授权恢复

3.2 身份铸造流程

  1. 选择 "身份铸造" 选项卡
  2. 输入身份别名(例如:"alice")
  3. 选择密钥保存路径(默认为 "my_identities" 目录)
  4. 点击 "开始铸造身份" 按钮
  5. 系统会执行以下操作:
    • 基于 Module-LWE 问题生成抗量子密钥对
    • 将私钥保存为 {alias}.sk 文件
    • 将公钥保存为 {alias}.pk 文件
  6. 身份铸造完成后,系统会显示成功信息,并提示用户将公钥发送给 Dealer

3.3 资产锁定流程

  1. 选择 "资产锁定" 选项卡
  2. 选择秘密图像(需要托管的资产)
  3. 选择载体目录(用于生成含密图像的载体图像)
  4. 选择公钥目录(包含参与者的公钥文件)
  5. 选择输出目录(用于保存含密图像和资产清单)
  6. 设置份额数量 n(默认为 5,范围 3-10)
  7. 设置恢复门限 t(默认为 3,范围 2-5,必须小于 n)
  8. 点击 "执行锁定 (Lock)" 按钮
  9. 系统会执行以下操作:
    • CRT 分割:将秘密图像分割为 n 个份额
    • 指纹计算:计算每个份额的哈希值
    • 格密码加密:使用对应公钥加密份额数据
    • 权益锚定:生成资产清单,记录份额的所有权和指纹
    • 隐写分发:将加密后的份额嵌入载体图像生成含密图像
    • 自检验证:验证数据嵌入的正确性,确保生成有效资产
  10. 资产锁定完成后,系统会显示成功信息,并提示用户分发含密图像给对应的参与者

3.4 授权恢复流程

系统支持两种授权恢复模式:

3.4.1 模式A:本地多身份切换(适用于测试和演示)
  1. 选择 "授权与恢复 (User)" 选项卡
  2. 配置资产位置(包含含密图像和资产清单的目录)
  3. 配置私钥库(包含参与者的私钥文件)
  4. 加载资产清单(点击 "📂 加载资产清单 (Manifest)" 按钮)
  5. 切换到 "身份管理" 选项卡,选择并设置当前活跃身份
  6. 切换回 "授权与恢复 (User)" 选项卡
  7. 执行签名授权:点击归属人为当前活跃身份的碎片对应的 "✍️ 签名授权" 按钮
  8. 确认授权:在弹出的安全确认对话框中点击 "是" 确认授权
  9. 重复步骤 5-8,使用不同的身份授权其他碎片,直到收集到 t 个授权份额
  10. 启动重构:当授权份额达到门限 t 时,点击 "🚀 启动重构 (Reconstruct)" 按钮
  11. 系统会执行以下操作:
    • 扫描资产:扫描目录中的含密图像和资产清单
    • 提取份额:从含密图像中提取加密的份额数据
    • 格密码解密:使用对应私钥解密份额数据
    • 验证指纹:验证份额数据的完整性
    • 签名授权:验证份额所有者的签名
    • CRT 重构:当收集到 t 个有效份额后,重构原始秘密图像
  12. 授权恢复完成后,系统会显示成功信息,并在右侧预览区域显示重构的图像
3.4.2 模式B:分布式签名(适用于实际场景)
  1. Alice 导出授权签名文件

    • 在 Alice 的离线电脑上,打开 GUI 应用
    • 进入 "授权与恢复 (User)" 选项卡
    • 配置资产位置和私钥库
    • 加载资产清单 asset_manifest.json
    • 切换到 "身份管理" 选项卡,将 Alice 的身份设为活跃
    • 切换回 "授权与恢复 (User)" 选项卡
    • 点击 "📤 导出签名文件" 按钮
    • 在弹出的安全确认对话框中点击 "是" 确认授权
    • 选择保存位置,系统会生成签名文件(例如:alice_signature.sig
    • Alice 将生成的签名文件发送给恢复者
  2. 恢复者导入签名文件

    • 在恢复者的电脑上,打开 GUI 应用
    • 进入 "授权与恢复 (User)" 选项卡
    • 配置资产位置(包含含密图像和资产清单)
    • 加载资产清单 asset_manifest.json
    • 点击 "📥 导入签名文件" 按钮
    • 在文件选择对话框中选择收到的签名文件(例如:alice_signature.sig
    • 系统会验证签名文件的有效性
    • 验证成功后,会显示 "签名文件已导入,所有者: alice.sk"
    • 底部进度条会更新,显示已收集的授权份额数量
  3. 收集足够的签名文件

    • 重复步骤 1-2,收集至少 t 个不同用户的签名文件
    • 每个用户都需要在自己的离线电脑上导出签名文件并发送给恢复者
    • 恢复者需要导入所有收到的签名文件
  4. 启动重构

    • 当授权份额达到门限 t 时,点击 "🚀 启动重构 (Reconstruct)" 按钮
    • 系统会执行 CRT 重构算法,使用已授权的 t 个份额恢复原始秘密图像
    • 重构完成后,会弹出结果预览窗口,显示恢复的秘密图像
    • 点击 "打开文件所在位置" 按钮,可以查看保存的恢复图像

安全审计

系统实现了完整的安全审计日志,记录所有关键操作和安全检查结果,包括:

  • 密钥生成过程
  • 资产锁定过程
  • 授权恢复过程
  • 签名验证过程
  • 数据完整性检查过程

测试

系统提供了完整的测试套件,位于 text/ 目录下,包括:

  • text/test_lattice.py:测试格密码模块的功能
  • text/test_stego.py:测试图像隐写模块的功能
  • text/test_crt.py:测试秘密共享模块的功能
  • text/test_ntt.py:测试多项式运算模块的功能
  • text/test_lattice_system.py:测试格密码系统的签名验证功能

性能优化

  1. 多项式乘法:后续可考虑使用 NTT 变换优化多项式乘法性能
  2. 并行计算:签名生成和验证过程可考虑使用并行计算加速
  3. 内存优化:大型图像处理时可考虑分块处理,减少内存占用

安全性说明

  1. 参数选择:系统使用安全的格密码参数,提供高安全级别
  2. 私钥保护:私钥仅保存在本地,丢失即丧失资产所有权
  3. 数据完整性:通过哈希校验确保数据的完整性
  4. 防重放攻击:每个恢复会话生成唯一的会话 ID,防止重放攻击
  5. 门限控制:只有 t 个授权用户才能恢复资产,确保资产的安全性和可控性

未来展望

  1. 硬件加速:探索使用 GPU 加速格密码运算和图像处理
  2. 多模态资产:支持音频、视频等其他类型的资产
  3. 区块链集成:将资产清单上链,提高系统的透明度和可信度
  4. 量子安全增强:研究和集成最新的后量子密码算法

依赖包

  • numpy>=1.23.5
  • opencv-python>=4.7.0.72
  • pillow>=9.5.0
  • scipy>=1.10.1
  • pycryptodome>=3.18.0
  • matplotlib>=3.7.1

许可证

MIT License

联系方式

如有问题或建议,请联系项目维护者。


抗量子资产托管系统 - 保护资产安全,抵御量子威胁

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages