DanialDarroudy/Hybrid-Crypto-Core
GitHub: DanialDarroudy/Hybrid-Crypto-Core
一个纯 Python 零依赖的混合密码学教学项目,从零实现了 RSA、Feistel 密码、认证 DH 密钥交换和模拟 CA,用于演示现代密码学核心概念。
Stars: 0 | Forks: 1
# 安全密码学系统
**网络与数据安全课程项目**
## 📌 概述
本项目是一个简化的安全通信系统,旨在演示现代密码学的核心概念,包括:
- ✅ RSA 公钥密码学
- ✅ 带有证书授权中心 (CA) 的公钥基础设施 (PKI)
- ✅ 认证的 Diffie-Hellman 密钥交换(MITM 防护)
- ✅ 数字签名
- ✅ 自主设计的 Feistel 分组密码
- ✅ ISO/IEC 风格的填充
该系统模拟了在受信任的**证书授权中心 (CA)** 监督下,两个用户(**用户 A** 和 **用户 B**)之间的安全通信。
根据项目要求,所有密码学组件均为手动实现,未使用任何外部密码学库。
## 🏗 系统架构
本项目组织为多个模块化组件:
```
core/ → Cryptographic primitives (RSA, DH, hashing, signatures)
models/ → User, CA, Certificate, DH message structures
symmetric/ → Feistel cipher, padding, binary converters
ui/ → Command-line interface
main.py → Program entry point
```
### 主要实体
- **CA(证书授权中心)**
- 生成 RSA 密钥对
- 为用户签发数字证书
- 验证证书
- **用户 A 和 用户 B**
- 生成 RSA 密钥对
- 从 CA 接收证书
- 执行认证的 Diffie-Hellman 密钥交换
- 使用共享主密钥加密和解密消息
## 🔐 安全工作流
### 1️⃣ 系统初始化
- CA 生成 RSA 密钥
- 用户 A 和 B 生成 RSA 密钥
- CA 签发数字证书
- 用户使用 CA 的公钥验证各自的证书
### 2️⃣ 认证的 Diffie-Hellman
- 用户生成 DH 私有/公开值
- 每个公开值均经过数字签名
- 验证证书和签名
- 计算共享密钥
- 派生出 16 位 `master_key`
✅ 这可以防止中间人 (MITM) 攻击。
### 3️⃣ 对称加密(Feistel 密码)
自定义的 16 位分组密码使用了以下组件实现:
- 4 轮 Feistel 结构
- 与轮密钥进行 XOR 运算
- 4×4 S-Box
- 8 位 P-Box 置换
- ISO/IEC 风格的填充
消息处理流程:
1. 转换为二进制
2. 进行填充
3. 拆分为 16 位的数据块
4. 使用派生出的主密钥进行加密
解密过程则反向执行上述步骤。
## 🧠 教学目标
本项目演示了:
- RSA 密钥生成的工作原理(素数选择、φ(n)、模逆元)
- 数字签名的创建与验证方式
- 证书如何将身份与公钥绑定
- 为什么仅靠 Diffie-Hellman 容易受到 MITM 攻击
- 身份验证如何防止主动攻击
- 分组密码的内部运作方式(Feistel 结构)
- 密码学中的按位运算
## ▶️ 如何运行
```
python main.py
```
请按照交互式菜单进行操作:
1. 初始化系统
2. 建立共享密钥
3. 加密消息(A → B)
4. 解密消息(B)
5. 显示系统状态
6. 退出
## ⚠️ 重要提示
- 本项目仅用于**教学目的**。
- 特意使用了较小的素数范围和简化的哈希算法。
- 本系统**不适合实际应用场景**。
- 未使用任何外部的密码学库。
## 📚 使用的技术
- Python 3
- 仅使用纯内置函数
- 按位算术运算(`^`, `>>`, `&`)
- 模幂运算(`pow(base, exp, mod)`)
## ✅ 项目状态
✔ 功能完备
✔ 认证密钥交换
✔ 加密和解密成功
✔ 已实现 MITM 防护
标签:CVE, Diffie-Hellman, Python, RSA, 密码学, 手动系统调用, 教学项目, 数字签名, 无后门