sought-screening505/SecureChat
GitHub: sought-screening505/SecureChat
一款采用后量子加密技术的Android端匿名安全聊天应用,提供端到端加密、Tor匿名路由、无需手机号注册的隐私保护通讯方案。
Stars: 0 | Forks: 0
🇫🇷 Français | 🇬🇧 English
# 🔐 SecureChat
### Android 端到端加密聊天应用 —— 免费、匿名、无服务器
[](https://developer.android.com/) [](https://kotlinlang.org/) [](docs/fr/CRYPTO.md) [](LICENSE) [](TERMS.md) [](PRIVACY.md)
[](https://developer.android.com/) [](https://kotlinlang.org/) [](docs/fr/CRYPTO.md) [](LICENSE) [](TERMS.md) [](PRIVACY.md)
| ``` Vos messages sont chiffrés AVANT d'être envoyés. Firebase ne voit que du bruit. Pas de numéro. Pas d'email. Juste un pseudo et une clé. ``` |
## ⚡ 简介
| ### 🔐 加密 - **PQXDH** : X25519 + **ML-KEM-1024** (后量子) - **SPQR** : 周期性 PQ 重封装(每 10 条消息) - **AES-256-GCM** / **ChaCha20-Poly1305** (自动) + 带有 PFS 和修复功能的 **Double Ratchet** - 96-bit 防中间人攻击 **Emoji 指纹** + **二维码扫描器** - 用户**独立验证** + 系统消息 - **BIP-39** 备份(24 个单词)+ 自动补全网格 - **阅后即焚照片** —— 仅可查看一次,两阶段安全删除 - 私钥存储在 **Android Keystore**(如可用则使用 StrongBox) - **SQLCipher** 加密本地数据库 - **消息填充** 固定大小 (256/1K/4K/16K) - **PBKDF2** PIN (60 万次迭代) - **虚假流量**(按会话的掩蔽流量) - **E2E 文件** 使用 AES-256-GCM 加密 - **Ed25519 签名** 防篡改每条消息 - **内置 Tor** —— SOCKS5, VPN TUN, IP 隐藏 | ### 🎨 UI/UX - **Material Design 3** —— 5 种主题的完整迁移 - **5 种主题** : Midnight · Hacker · **Phantom** · Aurora · Daylight - **流畅动画** —— 过渡、气泡、级联效果 - **内联附件图标** —— Session 风格,向上滑动动画 - **Tor 启动屏幕** —— Tor/普通模式选择,动画进度条,5 种主题 - **可滚动工具栏** + FAB 自动隐藏 - **动态气泡** 根据主题着色 - **应用锁** PIN + 生物识别 - **阅后即焚消息** (30秒 → 1个月) - **阅后即焚照片** 仅可查看一次 🔥 |
## ✨ 功能特性
🔒 安全与加密| | 功能 | 详情 | |---|---------|--------| | 🔐 | **E2E 加密** | PQXDH : X25519 + ML-KEM-1024 + AES-256-GCM / ChaCha20-Poly1305 + SPQR | | 🔄 | **Perfect Forward Secrecy** | Double Ratchet (DH + KDF 链) | | 🔏 | **Emoji 指纹 + QR** | 96-bit, 16 个 emoji + SHA-256 二维码,内置扫描器 | | ✅ | **独立验证** | 各方独立验证,系统消息 + 可点击链接 | | 🛡️ | **DeviceSecurityManager** | StrongBox 检测,MAXIMUM/STANDARD 级别 | | 🕵️ | **元数据加固** | senderUid HMAC 哈希 + messageIndex 加密 | | 🛡️ | **零知识中继** | Firebase 仅能看到密文 | | 🔑 | **Keystore 支持** | 私钥存储在 EncryptedSharedPreferences | | 🗄️ | **SQLCipher** | Room 数据库 AES-256 加密 | | 🧹 | **内存清零** | 中间密钥填充为零 | | 📏 | **消息填充** | 固定大小 (256/1K/4K/16K) 防流量分析 | | 🗑️ | **投递后删除** | 解密后从 Firebase 删除消息 | | 👻 | **虚假流量** | 周期性发送掩蔽消息(可配置) | | 📎 | **E2E 文件** | 通过 Firebase Storage 使用 AES-256-GCM 逐文件加密 | | 🔒 | **PBKDF2 PIN** | 60 万次迭代 + salt(替代 SHA-256) | | ✍️ | **Ed25519 签名** | 每条消息签名,✅/⚠️ 标记防篡改 | | 📸 | **阅后即焚照片** | 仅可查看一次(发送方 + 接收方),两阶段安全删除 | 💬 消息功能| | 功能 | 详情 | |---|---------|--------| | 📷 | **二维码** | 扫描 → 公钥 + 昵称自动填充(深度链接 v2) | | 📨 | **联系人请求** | 邀请 → 通知 → 接受/拒绝 | | 🔴 | **未读消息** | 计数徽章 + 聊天内分隔符 | | 🔄 | **实时** | 应用在后台时也能收到消息 | | 🔔 | **推送通知** | 可选,无消息内容 | | ⏱️ | **阅后即焚消息** | 10 种时长(30秒 → 1个月),Firebase 同步 | | 📎 | **E2E 文件分享** | AES-256-GCM 加密,最大 25 MB | | 👻 | **虚假流量** | 无法区分的消息以掩盖活动 | | 🗑️ | **投递后删除** | 从 Firebase 删除接收到的密文 | | 💀 | **死会话检测** | 自动检测 + 清理 + 重新邀请 | 🎨 界面| | 功能 | 详情 | |---|---------|--------| | 🌙 | **5 种主题** | Midnight · Hacker · Phantom · Aurora · Daylight | | ✨ | **动画** | 滑动/淡入淡出过渡,气泡动画,级联效果 | | 📜 | **可滚动工具栏** | 滚动时折叠,回弹显示 | | 🔽 | **FAB 自动隐藏** | 向下滚动时消失 | | 🫧 | **动态气泡** | 通过 backgroundTint 适应主题颜色 | | 🎭 | **可视化选择器** | 带预览的 MaterialCardView 网格 | | 📎 | **内联图标** | Session 风格附件(文件/照片/相机)动画 | 🔒 保护| | 功能 | 详情 | |---|---------|--------| | 🔒 | **应用锁** | 6 位 PIN + 可选生物识别 | | ⏰ | **自动锁定** | 可配置超时(5秒 → 5分钟) | | 🔑 | **BIP-39 备份** | 24 个单词用于备份身份密钥 | | ♻️ | **恢复** | 24 个单词自动补全网格 + 在新设备上恢复 | | 🗑️ | **完全删除** | 清理 Firebase(个人资料、收件箱、会话、签名密钥) | | 📵 | **匿名** | 无手机号、无邮箱、无追踪 | |
## 🏗 架构
```
┌──────────────────────────────────────────────────┐
│ UI Layer │
│ Fragments · ViewModels · Adapters │
├──────────────────────────────────────────────────┤
│ Repository Layer │
│ ChatRepository — source de vérité unique │
├────────────────┬────────────────┬────────────────┤
│ Room DB │ Crypto │ Firebase │
│ (SQLCipher) │ PQXDH + DR │ Relay + FCM │
└────────────────┴────────────────┴────────────────┘
```
## 🛠 快速开始
```
# 1. Clone
git clone https://github.com/DevBot667/SecureChat.git
cd SecureChat
# 2. 将 google-services.json 添加到 app/ 中 (参见 docs/SETUP.md)
# 3. Build
./gradlew assembleDebug
```
## 🔐 安全性
| 措施 | 状态 |
|--------|--------|
| E2E 加密 (PQXDH : X25519 + ML-KEM-1024 + AES-256-GCM / ChaCha20) | ✅ |
| 带有 PFS + 修复功能的 Double Ratchet | ✅ |
| 内存清零(中间密钥) | ✅ |
| 原子发送(ratchet + Firebase) | ✅ |
| 每个会话的互斥锁(线程安全) | ✅ |
| SQLCipher(AES-256 加密本地数据库) | ✅ |
| 元数据加固(尝试解密) | ✅ |
| 每个会话的 senderUid HMAC-SHA256 哈希 | ✅ |
| 固定大小消息填充(防流量分析) | ✅ |
| 投递后删除(Firebase 自动清理) | ✅ |
| 可配置虚假流量(掩蔽流量) | ✅ |
| E2E 文件(AES-256-GCM + Firebase Storage) | ✅ |
| PBKDF2 PIN(60 万次迭代 + salt) | ✅ |
| R8/ProGuard 混淆 + 完整日志剥离 (d/v/i/w/e/wtf) | ✅ |
| 96-bit 防 MITM Emoji 指纹 + SHA-256 二维码扫描器 | ✅ |
| 应用锁(PIN + 生物识别) | ✅ |
| 严格的 Firebase 安全规则 | ✅ |
| BIP-39 备份/恢复(24 个单词) | ✅ |
| `allowBackup=false`,零敏感日志 | ✅ |
| Material Design 3 —— 5 种主题的完整迁移 | ✅ |
| 带动画的内联附件图标(Session 风格) | ✅ |
| Android 13+ 权限 (READ_MEDIA_IMAGES/AUDIO) | ✅ |
| 预测性手势 (enableOnBackInvokedCallback) | ✅ |
| 内置 Tor 路由(SOCKS5 + VPN TUN + libtor.so) | ✅ |
| Tor 启动屏幕(选择 + 进度 + 5 种主题) | ✅ |
| 在安全设置中切换 Tor + 重连 | ✅ |
| 每个会话的虚假流量 | ✅ |
| 每条消息的 Ed25519 签名(防篡改) | ✅ |
| PQXDH : X25519 + ML-KEM-1024(后量子抗性) | ✅ |
| SPQR : 每 10 条消息进行 ML-KEM 重封装 | ✅ |
| 备选 ChaCha20-Poly1305(自动检测 AES 硬件) | ✅ |
| 延迟 PQXDH 升级(仅 rootKey,零不同步) | ✅ |
| StrongBox 硬件密钥存储(如可用) | ✅ |
| DeviceSecurityManager(探测 StrongBox + 用户配置) | ✅ |
| QR 深度链接 v2(X25519 + ML-KEM + 名称,自动填充) | ✅ |
| displayName 从 Firebase 隐藏(服务器零 PII) | ✅ |
| 用户独立指纹验证 | ✅ |
| 验证系统消息 + 可点击链接 | ✅ |
| lastDeliveredAt(重启时跳过已处理消息) | ✅ |
| 失败后删除(清理 Firebase 中失败的消息) | ✅ |
| 原子去重双监听器 | ✅ |
| 删除帐户时清理签名密钥 | ✅ |
| **V3.4.1 安全审计 —— 42+ 个漏洞已修复** | ✅ |
| Firebase 规则 : write-once (signing_keys, mlkem_keys, inbox) | ✅ |
| Firebase 规则中的 senderUid/ciphertext/iv/createdAt 验证 | ✅ |
| HKDF 内存清零 (IKM, PRK, expandInput) | ✅ |
| MnemonicManager 内存清零(encode + decode) | ✅ |
| FLAG_SECURE (MainActivity, LockScreen, RestoreFragment, dialogs) | ✅ |
| 防点击劫持保护 (filterTouchesWhenObscured) | ✅ |
| usesCleartextTraffic=false(零 HTTP 流量) | ✅ |
| 深度链接加固(白名单、限制、防注入) | ✅ |
| 剪贴板 EXTRA_IS_SENSITIVE + 30 秒自动清除 | ✅ |
| SecureFileManager(两阶段删除:随机 + 归零) | ✅ |
| FCM 负载不透明(推送通知中零元数据) | ✅ |
| Firebase Storage : 删除仅限上传者 | ✅ |
| 客户端 ML-KEM 大小 + Base64 验证 | ✅ |
| FirebaseRelay.sendMessage 输入验证(require 守卫) | ✅ |
| Cloud Function : senderUid + conversationId 正则验证 | ✅ |
## 🗺 路线图
| 版本 | 主题 | 状态 |
|---------|-------|--------|
| **V1** | 核心 —— E2、联系人、会话、推送、指纹、SQLCipher、应用锁、阅后即焚 | ✅ 完成 |
| **V2** | 加密升级 —— 完整 Double Ratchet X25519,原生 Curve25519 | ✅ 完成 |
| **V2.1** | 帐户生命周期 —— BIP-39 备份、恢复、删除、死会话 | ✅ 完成 |
| **V2.2** | UI 现代化 —— 5 种主题、动画、CoordinatorLayout、零硬编码颜色 | ✅ 完成 |
| **V3** | 安全加固 —— R8、投递后删除、填充、HMAC UID、PBKDF2、虚假流量、E2E 文件 | ✅ 完成 |
| **V3.1** | 设置重新设计 —— Signal 风格设置、6 位 PIN、隐私子屏幕、PIN 协程 | ✅ 完成 |
| **V3.2** | Ed25519 签名 —— 每条消息签名、✅/⚠️ 标记、Firebase 规则加固、密钥清理 | ✅ 完成 |
| **V3.3** | Material 3 + Tor + 附件 UX —— M3 迁移、完整 Tor 集成、Session 内联图标、Android 13+ 权限、日志加固 | ✅ 完成 |
| **V3.4** | PQXDH + 安全 —— ML-KEM-1024 后量子、深度链接 v2、QR 自动填充名称、Firebase 隐藏 displayName、DeviceSecurityManager StrongBox、独立指纹验证、系统消息、修复 PQXDH 不同步、修复双监听器、lastDeliveredAt | ✅ 完成 |
| **V3.4.1** | 阅后即焚 + UX + 安全审计 —— 阅后即焚照片、BIP-39 网格、QR 指纹、29 布局审计、忘记 PIN、**完整安全审计(42+ 修复)** : Firebase 规则 write-once、HKDF/助记符内存清零、FLAG_SECURE、深度链接加固、SecureFileManager、FCM 不透明、Storage 仅所有者删除、输入验证 | ✅ 完成 |
| **V3.5** | SPQR + ChaCha20 + 威胁模型 —— 三重 PQ Ratchet(每 10 条消息进行 ML-KEM 重封装)、备选 ChaCha20-Poly1305(自动硬件检测)、SECURITY.md 中记录的威胁模型 | ✅ 完成 |
| **V3.6** | 计划中 —— 应用伪装 + 假屏幕、双 PIN、紧急按钮、E2E 语音消息、密封发件人、回复/引用 | 🔜 |
## 🤝 贡献
1. Fork 本仓库
2. 创建您的分支 (`git checkout -b feature/my-feature`)
3. 提交更改 (`git commit -m 'Add my feature'`)
4. 推送到分支 (`git push origin feature/my-feature`)
5. 打开一个 **Pull Request**
## 📖 文档
| 文档 | 内容 |
|----------|---------|
| [**架构**](docs/fr/ARCHITECTURE.md) | 模式、分层、请求流、生命周期 |
| [**加密协议**](docs/fr/CRYPTO.md) | X25519、Double Ratchet、指纹、威胁模型 |
| [**安装**](docs/fr/SETUP.md) | 先决条件、Firebase、构建、依赖 |
| [**结构**](docs/fr/STRUCTURE.md) | 项目完整树形结构 |
| [**更新日志**](docs/fr/CHANGELOG.md) | V1 → V3.5 历史 |
| [**安全**](SECURITY.md) | 完整审计、已知限制 |
本项目采用 [GPLv3](LICENSE) 许可证。使用前请查阅 [服务条款](TERMS.md)。
仅供**教育目的**。作为理解移动端 E2E 加密的基础使用。
*"您的消息,您的密钥,您的隐私。"*
*"您的消息,您的密钥,您的隐私。"*
标签:AES-256-GCM, Android Keystore, BIP39, ChaCha20-Poly1305, Double Ratchet, E2EE, Firebase, GPLv3, Kotlin, ML-KEM-1024, P2P, PFS, Python 3.9+, Signal协议, SQLCipher, StrongBox, X25519, 前向保密, 匿名聊天, 即时通讯, 后量子密码学, 安全通讯, 安卓应用, 数据加密, 点对点, 目录枚举, 移动安全, 端到端加密, 网络安全, 网络安全, 阅后即焚, 防中间人攻击, 隐私保护, 隐私保护