Skip to content

ARS4EVER/QSP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

280 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QSP Logo

QSP

基于PQC的抗量子秘密文件共享与传输系统

GitHub License GitHub release Tech Report


探索本项目的文档 »

报告Bug · 提出新特性

目录

  1. 项目简介
  2. 快速开始
  3. 环境准备
  4. 安装与启动
  5. 系统具体使用流程
  6. 附录:配置参数说明

项目简介

QSP是一个基于格密码学的综合性安全系统,专注于提供抗量子计算攻击的加密通信、身份认证和秘密文件共享与传输功能。本系统利用格密码的抗量子特性,结合P2P网络、可靠UDP和Shamir秘密共享,项目由暨南大学杨昊文、熊逸航完成。

功能特性

  1. 当前的加密通信方式大多采用传统的非对称加密算法,比如RSA,ECC等,这些算法在量子计算下存在被破解的风险,本系统严格采用 NIST 最新的 ML-KEM-512 与 ML-DSA-44 标准构建了 1.5-RTT 的安全握手协议实现后量子时代的加密通信,并借此实现了多方密钥安全协商。
  2. 传统的云存储服务高度依赖中心化服务器,极易遭遇单点故障,本系统通过引入 Shamir 秘密共享 (t, n) 门限算法结合本地 AES-256-GCM 加密,将机密资产打散并安全分发至 P2P 网络,实现了去中心化的秘密文件存储的安全性。
  3. 为解决经典的Shamir秘密共享在处理大文件时,数据量过大导致传输效率低的问题,本系统引入基于伽罗瓦域 GF(256) 的查表法进行深度优化,将乘除法时间复杂度降至 O(1),用空间换时间,成功提高了大文件的传输与重构效率,
  4. 为解决复杂 NAT 网络节点直连困难、普通 UDP 难以保障弱网下大文件可靠传输以及易受重放攻击等难点,本系统通过采用基于 STUN 的 UDP 打洞技术,带有 SACK 与拥塞控制机制的 RUDP 协议,并引入高熵挑战-应答机制,在保证极低延迟的同时实现了可靠传输。

项目成员

姓名/昵称 GitHub ID 贡献内容 联系方式
熊逸航 ARS4EVER 代码编写、测试维护、漏洞修复 [email protected]
杨昊文 amonadam 项目架构、代码编写、测试维护 [email protected]

贡献者

amonadam
amonadam
ARS4EVER
ARS4EVER
Wheeler14H
Wheeler14H
StarMike-code
StarMike-code
Martin8edg
Martin8edg
nicolosshit
nicolosshit
AlphaSheeran
AlphaSheeran
IsAlPhA77
isalpha
kan-ner
kan-ner
csj-TJ
Cao Shaojie
Jiaye0618
Shuo Liu
Jiky-York
Jiky-York

整体框架

framework


项目结构

QSP-main/
├── GUI/
│   └── main_window.py        # 现代化 GUI 界面
├── data/
│   ├── keys/                  # 身份密钥 (AES-256-GCM 加密存储)
│   │   ├── node_identity.dat  # 加密的节点身份文件
│   │   ├── .vault_salt        # 密钥派生盐值
│   │   └── .vault_verifier    # 密码验证器
│   ├── shares/                # 资产份额和清单
│   │   ├── {文件哈希}_share_X.dat
│   │   └── .qsp_identity.pem  # 节点身份证书
│   └── restored/              # 恢复的资产
│       └── recovered_{文件名}
├── image/                    # 图像资源
│   └── logo.jpg              # 项目 Logo
├── src/
│   ├── app/                  # 应用层 (Phase 10)
│   │   ├── app_protocol.py     # 应用层消息协议
│   │   ├── app_router.py       # 应用层消息路由
│   │   ├── backup_manager.py   # 资产备份管理器
│   │   ├── recovery_manager.py # 资产恢复管理器
│   │   ├── manifest_key_manager.py #清单管理器
│   │   ├── ui_bridge.py        # UI 桥接器
│   │   └── vault_crypto.py     # 本地金库加密引擎
│   ├── core/                  # 核心协议层
│   │   ├── challenge_auth.py   # 挑战认证协议
│   │   ├── messages.py         # 协议消息定义
│   │   ├── recovery_host.py    # 恢复主机逻辑
│   │   └── recovery_participant.py # 恢复参与者逻辑
│   ├── crypto_lattice/        # 格密码模块 (Phase 1)
│   │   ├── wrapper.py         # 统一适配器 (ML-DSA + ML-KEM)
│   │   ├── keygen.py          # 密钥生成
│   │   ├── signer.py          # 标准签名器 (DilithiumSigner)
│   │   └── encryptor.py       # 密钥封装 (KyberKEM)
│   ├── network/              # 网络通信模块 (Phase 2)
│   │   ├── secure_channel.py   # 安全通道
│   │   ├── secure_link.py      # 安全链接 (含心跳)
│   │   ├── p2p_manager.py     # P2P 管理
│   │   ├── rudp.py            # 可靠 UDP
│   │   ├── protocol.py        # 通信协议
│   │   └── congestion.py      # 拥塞控制
│   ├── secret_sharing/       # 秘密共享模块
│   │   ├── splitter.py         # Shamir 分割器
│   │   ├── reconstructor.py   # Shamir 重构器
│   │   └── gf256.py           # GF(256) 有限域运算
│   ├── utils/                # 工具函数
│   │   ├── data_handler.py     # 数据处理工具
│   │   └── logger.py          # 日志工具
│   └── config.py             # 全局配置
├── tests/                    # 测试代码目录
├── main.py                   # 主程序入口
├── requirements.txt          # 依赖包列表
└── README.md                 # 本文档

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 运行测试

# 运行所有核心测试
python -m unittest discover tests -v

# 运行特定模块测试
python -m unittest tests.test_wrapper tests.test_keygen_phase2 tests.test_signer_phase2 tests.test_encryptor_phase2 tests.test_config_phase2 tests.test_secure_channel_phase2 tests.test_holepunch_phase5 tests.test_p2p_multiplexing tests.test_rudp_sack tests.test_congestion_phase4 tests.test_secure_link_phase6 tests.test_keepalive_phase8 tests.test_vault_encryption_phase10 tests.test_large_file_streaming tests.test_recovery_streaming_phase7 tests.test_app_protocol tests.test_app_protocol_phase2 tests.test_app_router tests.test_c10_two_way_auth tests.test_c4_c9_security tests.test_c8_challenge_auth tests.test_c8_clock_sync_replay tests.test_c8_phases3_4 tests.test_c9_typo_detection tests.test_ui_sync_phase5 tests.test_integration_final -v

3. 运行系统

python main.py

环境准备

系统要求

  • 操作系统:Windows / macOS / Linux
  • Python 版本:3.9 或更高
  • 网络:需要互联网连接(用于 P2P 通信)

检查 Python 版本

打开终端/命令提示符,运行:

python --version

确保显示 Python 3.9+。


安装与启动

第一步:安装依赖

在项目目录下运行:

pip install -r requirements.txt

如果遇到 pip 启动器错误(如 "Fatal error in launcher"),使用:

python -m pip install -r requirements.txt

第二步:启动应用

运行主程序:

python main.py

第三步:设置本地金库密码

启动后,会弹出一个对话框,要求输入本地金库主密码

  • 这个密码用于加密本地存储的敏感数据
  • 请牢记此密码!(如果忘记,本地数据将无法恢复)
  • 如果不输入,系统会使用默认密码(不推荐)

系统具体使用流程

framework

⚠️ 提示
若有项目功能方面或运行问题,请查阅 Function description.md
--- 注意!本项目并不是要设置成星型P2P网络结构,只需要发起者连接其余节点即可 ---

附录:配置参数说明

如需调整高级参数,可编辑 src/config.py

参数类 参数 说明 默认值
ThresholdParams n_participants 默认总节点数 5
ThresholdParams t 默认恢复门限 3
NetworkParams MTU 网络最大传输单元 1400
NetworkParams HANDSHAKE_TIMEOUT 握手超时(秒) 5.0
NetworkParams RTO_INITIAL 重传超时初始值(秒) 0.2

欢迎任何形式的贡献!

  1. 提交 Bug 报告 - 发现问题请提交 Issue
  2. 提交功能建议 - 有好的想法欢迎讨论
  3. 提交代码 - 修复 Bug 或添加新功能
  4. 改进文档 - 帮助完善使用文档
  5. 推广宣传 - 分享给更多人使用

欢迎提出改进意见

About

基于PQC的抗量子秘密文件共享与传输系统

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages