prajchavan/SecureChat
GitHub: prajchavan/SecureChat
具备 AI 驱动图像隐写术检测能力的实时聊天应用,自动扫描每张分享图片中隐藏的恶意载荷与隐蔽数据。
Stars: 0 | Forks: 0
# 🔒 SecureChat — AI 驱动的安全通讯应用
&& cd Cap_pro
# 复制 environment 文件
cp .env.example .env
# 构建并启动所有服务
docker-compose up --build
# 访问应用
# Frontend: http://localhost:3000
# Backend API: http://localhost:5000
# ML Service: http://localhost:8000
```
### 开发模式(不使用 Docker)
```
# Terminal 1: 启动 MongoDB & Redis (必需)
docker-compose up mongodb redis
# Terminal 2: Backend
cd backend && npm install && npm run dev
# Terminal 3: Worker
cd backend && npm run worker:dev
# Terminal 4: ML Service
cd ml-service && pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# Terminal 5: Frontend
cd frontend && npm install && npm run dev
```
## 🧠 ML 模型
### 架构
**受 SRNet 启发的 CNN**,结合了 SRM(Spatial Rich Model)滤波器预处理:
| 层级 | 详情 |
|-------|---------|
| SRM 滤波器 | 3 个固定的高通滤波器(9 个输出通道) |
| Conv 初始层 | 9 → 32 个通道 |
| ResBlock 1-5 | 32 → 64 → 128 → 256 → 512 个通道 |
| 全局池化 | AdaptiveAvgPool2d |
| FC Head | 512 → 256 → 1 (sigmoid) |
### 混合评分
| 组件 | 权重 | 方法 |
|-----------|--------|--------|
| CNN 预测 | 50% | 深度学习推理 |
| 统计分析 | 30% | DCT, RS, SPA, 熵 |
| LSB 检测 | 20% | 卡方检验,模式分析 |
**阈值:** < 0.3 = 安全,0.3–0.7 = 可疑,> 0.7 = 不安全
### 数据集
| 数据集 | 大小 | 链接 |
|---------|------|------|
| ALASKA2 | 7.5 万张图片 | [Kaggle](https://www.kaggle.com/c/alaska2-image-steganalysis) |
| BOSSbase | 1 万张图片 | [CVUT](http://agents.fel.cvut.cz/boss/) |
| 自定义 LSB | 动态生成 | 内置生成器 |
### 训练
```
cd ml-service
# 生成自定义 LSB stego 图像
python training/dataset.py \
--cover-dir data/cover \
--output-dir data/stego \
--num-images 500
# 训练模型
python training/train.py \
--cover-dir data/cover \
--stego-dir data/stego \
--epochs 50 \
--batch-size 32 \
--output-dir models
```
## 🔐 安全特性
- **JWT 身份验证**,使用 bcrypt 进行密码哈希处理
- **速率限制**(涵盖通用、身份验证、上传 endpoint)
- **文件类型验证**(白名单:JPEG, PNG, GIF, WebP, BMP)
- **文件大小限制**(每次上传最大 10MB)
- **非 root 权限的 Docker 容器**
- **Helmet.js** 安全标头
- 使用 express-validator 进行**输入清理**
- **禁止直接暴露文件** — 图片仅通过应用层进行服务
- **沙盒化扫描** — ML 服务在隔离的容器中运行
## 🐳 部署
### AWS / GCP / Azure
1. **构建镜像** 并推送到容器镜像仓库(ECR, GCR, ACR)
2. **部署** 使用 ECS/Fargate、GKE 或 AKS
3. **外部服务**:使用托管的 MongoDB Atlas 和 ElastiCache/Memorystore 来托管 Redis
4. **负载均衡器**:在 Backend 和 Frontend 前端部署 ALB/云端负载均衡器
5. **SSL**:使用 ACM/Let's Encrypt 实现 HTTPS
### 环境变量
| 变量 | 服务 | 描述 |
|----------|---------|-------------|
| `JWT_SECRET` | Backend | JWT 签名密钥(在生产环境中务必修改!) |
| `MONGODB_URI` | Backend/Worker | MongoDB 连接字符串 |
| `REDIS_HOST` | Backend/Worker | Redis 主机名 |
| `ML_SERVICE_URL` | Worker | ML 服务 URL |
| `MODEL_PATH` | ML Service | 训练好的模型权重路径 |
### 扩展建议
- **Backend**:在负载均衡器后进行水平扩展(为 WebSocket 配置粘性会话)
- **Worker**:根据队列深度进行扩展
- **ML Service**:使用 GPU 实例加快推理速度,根据队列深度进行扩展
- **MongoDB**:使用副本集保障高可用性
- **Redis**:生产环境使用 Redis Cluster
## 📂 项目结构
```
Cap_pro/
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── components/ # Sidebar, ChatWindow, MessageBubble, ImagePreview, ScanResultBadge
│ │ ├── contexts/ # AuthContext, SocketContext
│ │ ├── pages/ # LoginPage, RegisterPage, ChatPage
│ │ └── services/ # api.js (Axios + JWT)
│ ├── Dockerfile # Multi-stage build + Nginx
│ └── vite.config.js
├── backend/ # Node.js + Express + Socket.io
│ ├── src/
│ │ ├── config/ # db.js, redis.js
│ │ ├── middleware/ # auth.js, rateLimiter.js, upload.js
│ │ ├── models/ # User, Message, ScanResult
│ │ ├── routes/ # auth, messages, upload
│ │ ├── services/ # queue.js, socketManager.js
│ │ ├── worker.js # Queue worker
│ │ └── server.js # Express entry point
│ └── Dockerfile
├── ml-service/ # Python + FastAPI + PyTorch
│ ├── app/
│ │ ├── main.py # FastAPI endpoints
│ │ ├── scanner.py # Pipeline orchestrator
│ │ ├── lsb_detector.py # Rule-based LSB detection
│ │ ├── statistical_analyzer.py # DCT, RS, SPA analysis
│ │ ├── cnn_model.py # SRNet-inspired CNN
│ │ ├── inference.py # Model loading + hybrid scoring
│ │ ├── preprocessing.py # Image validation + transforms
│ │ └── schemas.py # Pydantic models
│ ├── training/
│ │ ├── train.py # Training pipeline
│ │ ├── dataset.py # Dataset loader + LSB generator
│ │ └── evaluate.py # Metrics + evaluation
│ └── Dockerfile
├── docker-compose.yml # All 6 services
├── .env.example
└── README.md
```
## 🔮 未来增强功能
- 支持多用户房间的**群聊**
- 基于 Signal Protocol 的**端到端加密**(E2EE)
- 通过 WebRTC 实现**语音/视频通话**
- 集成 ClamAV 进行**恶意软件扫描**
- **高级模型**:使用预训练的 EfficientNet/ResNet 进行隐写分析
- 结合用户反馈环路的**模型重训练 pipeline**
- **推送通知**(PWA / Firebase)
- **消息搜索**和媒体库
- 带有扫描分析功能的**管理仪表板**
- 使用 S3/GCS 文件存储实现**可扩展的图片上传**
- 使用 Helm charts 进行 **Kubernetes 部署**
- 使用 GitHub Actions 的 **CI/CD pipeline**
- 基于 Redis 滑动窗口的**单用户速率限制**
- **多语言支持** (i18n)
## 📄 许可证
MIT 许可证 — 详情请参阅 LICENSE 文件。
**具备 AI 驱动的隐写术检测和图像威胁分析的实时聊天系统**
[](https://nodejs.org/)
[](https://reactjs.org/)
[](https://fastapi.tiangolo.com/)
[](https://pytorch.org/)
[](https://docker.com/)
## 📋 概述
SecureChat 是一个生产级、WhatsApp 风格的聊天应用,每张分享的图片都会自动进行以下扫描:
- **隐写术 (Steganography)** — 隐藏在像素值中的隐蔽数据
- **恶意内容** — 可疑的模式和异常
- **隐藏的 Payload** — 嵌入的文件、可执行文件或编码文本
该系统使用**混合 ML + 启发式 pipeline**,结合了 CNN 推理、统计隐写分析和基于规则的 LSB 检测。
## 🏗️ 架构
```
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ Backend │────▶│ Redis │
│ React+Vite │◀────│ Node.js │◀────│ Queue │
│ (Nginx) │ │ Express │ └──────┬───────┘
└─────────────┘ │ Socket.io │ │
└──────────────┘ │
│ ┌──────────────┐
┌──────────────┐ │ Worker │
│ MongoDB │◀──────│ (Node.js) │
└──────────────┘ └──────┬───────┘
│
┌──────────────┐
│ ML Service │
│ FastAPI │
│ PyTorch │
└──────────────┘
```
### 数据流
1. **用户上传图片** → Frontend 发送至 Backend REST API
2. **Backend** 保存文件,创建 Message(状态:`scanning`),并将任务发布到 Redis
3. **Worker** 获取任务,将图片发送至 ML Service
4. **ML Service** 运行流程:验证 → LSB 检测 → 统计分析 → CNN 推理 → 混合评分
5. **Worker** 存储 ScanResult,更新 Message,并发送 WebSocket 事件
6. **Frontend** 向接收方展示带有风险徽章的扫描结果浮层
## 🚀 快速开始
### 前置条件
- Docker & Docker Compose
- Git
### 使用 Docker 运行
```
# Clone 仓库
git clone 标签:Apex, AV绕过, DNS 反向解析, FastAPI, MITM代理, React, Syscalls, Web安全, 凭据扫描, 图像隐写分析, 威胁情报, 实时聊天, 开发者工具, 搜索引擎查询, 机器学习, 蓝队分析, 请求拦截