noy-daya/defensive-client-server-protocol-overview
GitHub: noy-daya/defensive-client-server-protocol-overview
基于C++和Python的安全客户端-服务器文件传输系统
Stars: 0 | Forks: 0
# 🛡️ 安全客户端-服务器文件传输系统
**最终项目 | 防御性编程课程 | 以色列开放大学**






## 📖 目录
- [概述](#overview)
- [系统演示(端到端执行)](#system-demo-end-to-end-execution)
- [设置与构建过程](#setup--build-process)
- [客户端运行时执行](#client-runtime-execution)
- [技术栈](#technology-stack)
- [高级系统架构](#high-level-system-architecture)
- [架构原则](#architectural-principles)
- [安全通信模型](#secure-communication-model)
- [安全考虑](#security-considerations)
- [可靠性 & 容错](#reliability--fault-tolerance)
- [客户端架构](#client-architecture)
- [服务器架构](#server-architecture)
- [加密设计(高级)](#cryptographic-design-high-level)
- [系统功能](#system-capabilities)
- [工程挑战](#engineering-challenges)
- [关键学习](#key-learnings)
- [致谢](#credits)
## 概述
本项目实现了一个**安全、分层**的客户端-服务器系统,用于在TCP上控制文件传输。
该系统展示了以下原则:
- 安全分布式系统设计
- 分层软件架构
- 防御性编程和验证优先设计
- 加密客户端-服务器通信
- 容错网络系统
- 多客户端并发处理
该系统旨在确保在不可靠的网络和运行时条件下**正确性、隔离性和弹性**。
## 系统演示(端到端执行)
本节演示了从开始到结束的系统协议的完整成功执行。
记录显示服务器和客户端终端并行运行,并捕获了安全会话的完整生命周期。
### 观察到的流程
- 服务器初始化和监听状态
- 客户端执行(`client.exe`)
- TCP连接建立
- 安全握手和身份验证
- 加密会话设置
- 加密文件传输
- 完整性验证(CRC)
- 成功终止
### 完整协议执行

此记录代表客户端和服务器之间完整且成功的端到端协议生命周期,包括所有安全和验证阶段。
## 设置与构建过程
本节演示了系统设置、依赖项准备以及客户端和服务器组件的构建过程。
### 设置流程
- 环境准备
- 依赖项安装
- 使用CMake构建客户端
- 将运行时安装到隔离目录
### 设置演示

## 客户端运行时执行
本节演示了多个隔离客户端实例如何并发运行。
### 关键观察
- 独立的客户端运行时
- 每个实例的独立配置
- 在多个终端中的并发执行
- 隔离的文件传输环境
### 运行时演示

## 技术栈
### 客户端
- **C++17**
- Boost库
- 网络编程(TCP通信抽象)
- 序列化工具
- 二进制兼容性工具
- Crypto++
- 加密原语(RSA / AES抽象)
- CMake构建系统
- vcpkg依赖项管理
### 服务器
- **Python 3.11**
- 套接字编程(基于TCP的网络)
- `selectors`模块(事件驱动并发模型)
- SQLite(持久化存储层)
- PyCryptodome(加密操作抽象)
## 高级系统架构
```
flowchart LR
Client[C++ Client Instances] --> Network[Secure Communication Layer]
Network --> Server[Python Server]
Server --> Validation[Validation Layer]
Server --> Protocol[Protocol Processing Layer]
Server --> Storage[(Persistent Storage)]
Protocol --> Crypto[Cryptographic Processing]
Protocol --> Storage
Validation --> Protocol
```
## 架构原则
### 1. 分层设计
系统结构为独立的层:
* 通信层
* 协议控制层
* 处理/服务层
* 持久化层
* 加密层
每一层都是隔离的,并通过定义良好的接口进行通信。
### 2. 关注点分离
责任严格分离:
* 客户端仅处理执行和本地状态
* 服务器处理验证、处理和存储
* 加密与业务逻辑隔离
* 网络与协议逻辑解耦
### 3. 确定性执行模型(客户端)
客户端作为**状态驱动的确定性管道**运行:
```
flowchart TD
Start[Start] --> Init[Initialize Runtime]
Init --> Identity[Load / Create Identity]
Identity --> Connect[Establish Connection]
Connect --> Session[Secure Session Setup]
Session --> Transfer[File Transfer Phase]
Transfer --> Verify[Integrity Verification]
Verify --> End[Terminate Execution]
```
### 4. 事件驱动服务器模型
服务器基于**事件驱动并发模型**构建:
```
flowchart TD
Conn[Incoming Connection] --> Read[Read Request]
Read --> Validate[Validate Input]
Validate --> Route[Route to Service]
Route --> Process[Process Request]
Process --> Persist[(Store Data)]
Process --> Response[Send Response]
```
## 🔐 安全通信模型
系统实现了**结构化的安全握手和加密会话模型**。
### 高级安全流程
```
sequenceDiagram
participant C as Client
participant S as Server
C->>S: Connection Establishment
S->>C: Session Initialization
C->>S: Identity Exchange
S->>C: Session Key Establishment
C->>S: Encrypted File Transfer
S->>C: Acknowledgement
```
## 安全考虑
作为课程要求的一部分,系统从防御性安全的角度进行了分析。
该分析侧重于识别从协议设计假设和系统架构中衍生出的**高级风险**,包括:
- 客户端和服务器之间的信任假设
- 通信过程中元数据的暴露
- 基于会话的系统中的重放和身份风险
- 并发服务器设计中的拒绝服务面
- 静态数据保护考虑
- 客户端和服务器之间的责任边界
📄 更详细的安全分析作为学术成果的一部分单独维护。
## 可靠性 & 容错
系统设计为在故障条件下运行:
```
flowchart TD
Request[Request Sent] --> Response{Valid Response?}
Response -- Yes --> Continue[Continue Execution]
Response -- No --> Retry[Retry Mechanism]
Retry --> Limit{Retry Limit Reached?}
Limit -- No --> Request
Limit -- Yes --> Fail[Graceful Failure Handling]
```
### 支持的故障场景
* 网络中断
* 部分或损坏的传输
* 无效或格式错误的请求
* 服务器端处理错误
* 完整性不匹配
## 客户端架构
```
flowchart TD
App[Application Core]
Protocol[Protocol Controller]
Network[Networking Layer]
Crypto[Cryptographic Layer]
Serializer[Serialization Layer]
Storage[File Management Layer]
App --> Protocol
Protocol --> Network
Protocol --> Crypto
Protocol --> Serializer
Protocol --> Storage
```
### 责任
* 管理确定性执行流程
* 协调通信生命周期
* 处理本地文件操作
* 管理安全会话状态
* 委派加密操作
## 服务器架构
```
flowchart TD
Entry[Server Entry Point]
Network[Network Layer]
Router[Request Router]
Services[Service Layer]
DB[(Database Layer)]
FS[(File Storage)]
Entry --> Network
Network --> Router
Router --> Services
Services --> DB
Services --> FS
```
### 责任
* 处理并发客户端连接
* 请求解析和验证
* 业务逻辑执行
* 持久化存储管理
* 安全文件处理管道
## 加密设计(高级)
系统使用**混合加密模型**:
* 非对称加密用于安全会话初始化
* 对称加密用于文件传输效率
数据正确性的完整性验证机制
## 系统功能
* 多客户端并发执行
* 基于会话的安全通信
* 加密文件传输管道
* 持久化服务器端存储
* 客户端身份会话持久性
* 所有系统层上的严格验证
* 客户端侧的确定性执行模型
## 工程挑战
* 设计完整的分布式系统架构
* 安全处理TCP流
* 事件驱动并发模型
* 确定性客户端管道设计
* 层隔离和模块化
* 在不可靠网络下的容错性
## 关键学习
* 分布式系统设计
* 安全通信协议
* 客户端-服务器架构模式
* 服务器中的并发模型
* 防御性编程原则
## 致谢
作为**以色列开放大学防御性编程课程**的一部分开发。
标签:AES, Bash脚本, Boost, CMake, Crypto++, C++开发, Python开发, RSA, TCP/IP, 以色列开放大学, 分层架构, 加密算法, 加密通信, 协议验证, 可靠性, 多客户端支持, 客户端-服务器架构, 容错性, 并发处理, 教育项目, 数据管道, 文件传输, 系统设计, 网络安全, 软件工程, 逆向工具, 防御式编程, 隐私保护