usfa7med/SecureS2S
GitHub: usfa7med/SecureS2S
基于 RSA-2048 与 AES-256-GCM 混合加密架构的服务器间安全通信演示系统。
Stars: 0 | Forks: 0
# 🔐 SecureS2S
### RSA + AES-GCM 加密的服务器间通信系统






一个安全的服务器对等通信系统,实现了**混合加密架构**,使用 **RSA-2048** 进行安全的密钥交换,并使用 **AES-256-GCM** 进行经过认证的加密消息传输。
该项目演示了现代安全通信协议(如 **TLS**、**HTTPS** 和 **SSH**)如何通过结合非对称加密和对称加密来建立安全通道。
# 📑 目录
- [功能](#-features)
- [架构](#-architecture)
- [演示](#-demo)
- [安装说明](#-installation)
- [使用方法](#-usage)
- [项目结构](#-project-structure)
- [安全性分析](#-security-analysis)
- [挑战与解决方案](#-challenges--solutions)
- [未来改进](#-future-improvements)
- [使用的技术](#-technologies-used)
- [许可证](#-license)
- [免责声明](#-disclaimer)
- [联系方式](#-contact)
# 🌟 功能
## 🔑 RSA 安全密钥交换
- 生成 2048 位的 RSA 密钥对。
- 使用带有 SHA-256 的 RSA-OAEP。
- 安全地交换 AES 会话密钥。
- 防止对称密钥在网络中暴露。
## 🔒 AES-256-GCM 认证加密
- 使用 AES-256-GCM 加密所有通信。
- 提供机密性、完整性和真实性。
- 在解密过程中自动验证消息完整性。
## 🎲 随机 Nonce 生成
- 为每条加密消息生成一个新的 96 位 nonce。
- 防止 nonce 重用攻击。
- 遵循 NIST 关于 AES-GCM 的建议。
## 🔄 全双工通信
- 支持同时发送和接收。
- 使用多线程进行双向通信。
- 模拟真实世界的安全通信系统。
## 📨 自动送达回执
消息会自动生成加密的回执。
示例:
```
> Hello Server B
(Arrived)
```
这确认了消息已被远程服务器成功解密和接收。
## 📡 可通过 Wireshark 验证的加密
可以使用 Wireshark 检查网络流量。
捕获的数据包仅包含加密的二进制 payload,不包含任何明文应用数据。
示例过滤器:
```
tcp.port == 65431 || tcp.port == 65432
```
## 🛡 消息完整性保护
AES-GCM 会自动检测:
- 被修改的数据包
- 比特翻转攻击
- 消息篡改
- 无效的认证标签
## ⚡ 轻量级且极简的依赖
仅需:
- Python 标准库
- Cryptography 包
无需外部 broker 或框架。
# 🏗 架构
```
RSA KEY EXCHANGE
┌─────────────────────────────────────────────┐
│ │
│ Server A generates RSA key pair │
│ │
│ Server A ───── Public Key ─────► Server B │
│ │
│ Server B generates AES-256 key │
│ │
│ Server B ─ AES Key Encrypted with RSA ─► A │
│ │
└─────────────────────────────────────────────┘
SECURE CHANNEL ESTABLISHED
┌─────────────────────────────────────────────┐
│ │
│ AES-256-GCM Encrypted Communication │
│ │
│ Server A ◄══════════════════► Server B │
│ │
└─────────────────────────────────────────────┘
```
# 🎥 演示
## 架构截图

## 演示视频
在此处观看项目演示视频:
https://drive.google.com/drive/folders/1Nj8TFVBfTfe7szLYRo91aSQZ5-aqncpW?usp=sharing
## 📖 案例研究
[](https://usfahmed.dev/projects/secure-s2s)
一篇全面的技术文章,解释了其架构、加密工作流程、实现细节、安全性权衡以及未来的改进。
# ⚙️ 安装说明
## 克隆仓库
```
git clone https://github.com/usfa7med/SecureS2S.git
cd SecureS2S
```
## 安装依赖
```
pip install -r requirements.txt
```
# 🚀 使用方法
## 配置 IP 地址
在以下文件中:
```
server_A.py
server_B.py
```
更新:
```
REMOTE_HOST = "192.168.x.x"
```
以匹配你的网络环境。
## 启动服务器 A
```
python server_A.py
```
## 启动服务器 B
```
python server_B.py
```
## 开始通信
示例:
```
> Hello
> This message is encrypted.
> Hybrid cryptography is awesome.
```
# 📂 项目结构
```
SecureS2S/
│
├── assets/
│ └── photo.png
│
├── crypto.py
├── server_A.py
├── server_B.py
│
├── LICENSE
├── README.md
└── requirements.txt
```
# 🔍 安全性分析
| 安全属性 | 状态 |
|------------------|--------|
| 机密性 | ✅ |
| 完整性 | ✅ |
| 认证 | ✅ |
| 重放保护 | ⚠ 部分 |
| 前向保密 | ❌ |
| 完美前向保密 | ❌ |
# ⚠ 挑战与解决方案
## 问题:
直接在网络中传输 AES 密钥会导致其被拦截。
## 解决方案:
使用 RSA-OAEP 加密来安全地交换 AES 会话密钥。
## 问题:
AES-CBC 加密无法保证消息的完整性。
## 解决方案:
实现了 AES-GCM 认证加密。
## 问题:
静态 IV 的重用可能会危及加密流量的安全。
## 解决方案:
为每条加密消息生成一个新的随机 nonce。
## 问题:
由于多线程的原因,控制台输入和接收到的消息在视觉上会发生重叠。
## 解决方案:
使用锁实现了线程安全的控制台打印。
# 🔮 未来改进
- 用于完美前向保密的 ECDHE 密钥交换
- X.509 证书认证
- 数字签名
- 用于重放保护的序列号
- 自动密钥轮换
- 双向认证
- 类 TLS 的握手实现
- 多客户端支持
- 群组加密通信
- GUI 应用程序界面
# 🛠 使用的技术
## 编程语言
- Python
## 网络
- TCP Sockets
- 多线程
## 密码学
- RSA-2048
- RSA-OAEP
- AES-256-GCM
- SHA-256
## 库
- cryptography
## 安全性分析
- Wireshark
# 📄 许可证
该项目基于 MIT 许可证授权。
有关更多详细信息,请参阅 `LICENSE` 文件。
# ⚠ 免责声明
该项目仅为教育和研究目的而开发。
它无意替代 TLS 或其他生产级别的安全通信协议。
在实际部署中,应实现适当的证书管理、认证、重放保护和完美前向保密。
# 📫 联系方式
**Youssef Ahmed Abdelfatah**
个人主页:https://usfahmed.dev
GitHub:https://github.com/usfa7med
LinkedIn:https://linkedin.com/in/usfahmed
邮箱:hello@usfahmed.dev
标签:AES-GCM, Python, RSA, 密码学, 手动系统调用, 无后门, 服务器通信, 混合加密, 网络通信, 蓝队防御, 逆向工具