noy-daya/defensive-client-server-protocol-overview

GitHub: noy-daya/defensive-client-server-protocol-overview

基于C++和Python的安全客户端-服务器文件传输系统

Stars: 0 | Forks: 0

# 🛡️ 安全客户端-服务器文件传输系统 **最终项目 | 防御性编程课程 | 以色列开放大学** ![C++](https://img.shields.io/badge/C++-17-blue?logo=c%2B%2B) ![Python](https://img.shields.io/badge/Python-3.11-blue?logo=python&logoColor=white) ![CMake](https://img.shields.io/badge/CMake-Build-orange?logo=cmake) ![Boost](https://img.shields.io/badge/Boost-Library-yellow) ![Crypto++](https://img.shields.io/badge/Crypto%2B%2B-Security-black) ![TCP/IP](https://img.shields.io/badge/Network-TCP%2FIP-green) ## 📖 目录 - [概述](#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) - 成功终止 ### 完整协议执行 ![完整协议执行](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/123cd4262e052443.gif) 此记录代表客户端和服务器之间完整且成功的端到端协议生命周期,包括所有安全和验证阶段。 ## 设置与构建过程 本节演示了系统设置、依赖项准备以及客户端和服务器组件的构建过程。 ### 设置流程 - 环境准备 - 依赖项安装 - 使用CMake构建客户端 - 将运行时安装到隔离目录 ### 设置演示 ![设置过程](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/51f77eacd4052444.gif) ## 客户端运行时执行 本节演示了多个隔离客户端实例如何并发运行。 ### 关键观察 - 独立的客户端运行时 - 每个实例的独立配置 - 在多个终端中的并发执行 - 隔离的文件传输环境 ### 运行时演示 ![客户端运行时](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/39fa8c9522052445.gif) ## 技术栈 ### 客户端 - **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, 以色列开放大学, 分层架构, 加密算法, 加密通信, 协议验证, 可靠性, 多客户端支持, 客户端-服务器架构, 容错性, 并发处理, 教育项目, 数据管道, 文件传输, 系统设计, 网络安全, 软件工程, 逆向工具, 防御式编程, 隐私保护