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, 密码学, 手动系统调用, 教学项目, 数字签名, 无后门