From c352eef2bac90287d8a97ab2f9d8a791e298bdfc Mon Sep 17 00:00:00 2001 From: dvs Date: Thu, 27 Aug 2026 10:44:26 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 976 ++++++++++++++---------------------------------------- 1 file changed, 251 insertions(+), 725 deletions(-) diff --git a/README.md b/README.md index e263d3a..d0d03f1 100644 --- a/README.md +++ b/README.md @@ -1,1008 +1,534 @@ -\# 🔐 ChaosCrypt - 混沌加密系统(v2.0) +# 🔐 ChaosCrypt - 混沌加密系统(v2.0) +**一个完全自主设计的、抗量子、抗数学攻击的对称加密系统** +*不依赖 NIST、不依赖椭圆曲线、不依赖质数分解——只依赖随机性本身* -> \*\*一个完全自主设计的、抗量子、抗数学攻击的对称加密系统\*\* +**v2.0 新增 💬 ChaosCryptChat:基于混沌加密的端到端加密聊天系统(文本/图片/文件/语音)** -> \*不依赖 NIST、不依赖椭圆曲线、不依赖质数分解——只依赖随机性本身\* +--- -> \*\*v2.0 新增 💬 ChaosCryptChat:基于混沌加密的端到端加密聊天系统(文本/图片/文件/语音)\*\* +## 📖 目录 +1. [项目简介](#项目简介) +2. [设计哲学](#设计哲学) +3. [核心特性](#核心特性) +4. [加密流程详解](#加密流程详解) +5. [安全性分析](#安全性分析) +6. [为什么这玩意儿真的安全?(不服来辩版)](#为什么这玩意儿真的安全不服来辩版) +7. [快速开始](#快速开始) +8. [使用指南](#使用指南) +9. [API 参考](#api-参考) +10. [常见问题](#常见问题) +11. [💬 ChaosCryptChat 混沌加密聊天](#-chaoscryptchat-混沌加密聊天) +12. [项目结构](#项目结构) +13. [免责声明](#免责声明) +--- -\--- - - - -\## 📖 目录 - - - -1\. \[项目简介](#项目简介) - -2\. \[设计哲学](#设计哲学) - -3\. \[核心特性](#核心特性) - -4\. \[加密流程详解](#加密流程详解) - -5\. \[安全性分析](#安全性分析) - -6\. \[为什么这玩意儿真的安全?(不服来辩版)](#为什么这玩意儿真的安全不服来辩版) - -7\. \[快速开始](#快速开始) - -8\. \[使用指南](#使用指南) - -9\. \[API 参考](#api-参考) - -10\. \[常见问题](#常见问题) - -11\. \[💬 ChaosCryptChat 混沌加密聊天](#-chaoscryptchat-混沌加密聊天) - -12\. \[项目结构](#项目结构) - -13\. \[免责声明](#免责声明) - - - -\--- - - - -\## 项目简介 - - - -\*\*ChaosCrypt\*\* 是一个完全自主设计的对称加密系统。它不依赖任何第三方加密库(仅使用 `base64` 做数据编码),全部加密逻辑均为原创。 - - - -\*\*核心思想\*\*:用\*\*随机性\*\*替代\*\*数学结构\*\*,用\*\*多层乱序\*\*替代\*\*代数方程\*\*,用\*\*超大密钥空间\*\*彻底扼杀暴力破解。 +## 项目简介 +**ChaosCrypt** 是一个完全自主设计的对称加密系统。它不依赖任何第三方加密库(仅使用 `base64` 做数据编码),全部加密逻辑均为原创。 +**核心思想**:用**随机性**替代**数学结构**,用**多层乱序**替代**代数方程**,用**超大密钥空间**彻底扼杀暴力破解。 > 这不是对现有加密算法的改进,而是对"安全"这个概念的重新定义。 -\*\*v2.0 新增\*\*:在混沌加密内核之上构建了 \*\*ChaosCryptChat\*\* 端到端加密聊天系统,让混沌加密真正走进实时通信场景。 +**v2.0 新增**:在混沌加密内核之上构建了 **ChaosCryptChat** 端到端加密聊天系统,让混沌加密真正走进实时通信场景。 +--- +## 设计哲学 -\--- - - - -\## 设计哲学 - - - -当今加密世界有一个默认共识:\*\*"只有 NIST 认证的、数学优美的、学术界验证过的算法才算安全"\*\*。 - - +当今加密世界有一个默认共识:**"只有 NIST 认证的、数学优美的、学术界验证过的算法才算安全"**。 ChaosCrypt 对此表示: +> **"你们说的都对,但我不信。"** +- **Dual_EC_DRBG** 事件还历历在目——NIST 标准,NSA 后门,全世界被蒙在鼓里好几年。 +- **RSA** 数学优美吧?标准吧?**Shor 一来直接秒死。** +- **AES** 结构清晰吧?S-Box 有理有据吧?**Grover 直接给你开根号加速。** -> \*\*"你们说的都对,但我不信。"\*\* +**ChaosCrypt 选择另一条路:** +> **不要数学结构,不要可解释性,不要任何人给你背书。** +> **你唯一能做的只有暴力枚举——而枚举空间大到宇宙都装不下。** +--- -\- \*\*Dual\_EC\_DRBG\*\* 事件还历历在目——NIST 标准,NSA 后门,全世界被蒙在鼓里好几年。 - -\- \*\*RSA\*\* 数学优美吧?标准吧?\*\*Shor 一来直接秒死。\*\* - -\- \*\*AES\*\* 结构清晰吧?S‑Box 有理有据吧?\*\*Grover 直接给你开根号加速。\*\* - - - -\*\*ChaosCrypt 选择另一条路:\*\* - - - -> \*\*不要数学结构,不要可解释性,不要任何人给你背书。\*\* - -> \*\*你唯一能做的只有暴力枚举——而枚举空间大到宇宙都装不下。\*\* - - - -\--- - - - -\## 核心特性 - - +## 核心特性 | 特性 | 说明 | - |------|------| +| 🔑 **双因素保护** | 系统密钥文件 (`.key`) + 用户密码 | +| 🧩 **完全随机密钥** | 替换表、翻转模式、长密钥、短密钥全部随机生成 | +| 📁 **密钥持久化** | 密钥文件经过混淆存储(Base64 + 反转 + 移位),防止直接读取 | +| 🔁 **可重用 OTP** | 密钥长度 ≥ 明文长度,消除周期规律,实现 OTP 级别的安全性 | +| 🛡️ **抗量子攻击** | 无数学结构,Shor/Grover 均无法加速暴力破解 | +| 🚫 **无第三方依赖** | 不依赖 OpenSSL、Crypto 等任何加密库 | +| 📦 **即开即用** | 交互式菜单,支持多密钥文件切换 | +| 🐍 **纯 Python** | 仅需 Python 3.6+,零额外依赖 | +| 💬 **加密聊天(v2.0)** | ChaosCryptChat 端到端加密聊天:文本/图片/文件/语音,P2P + 中央服务器双模式 | -| 🔑 \*\*双因素保护\*\* | 系统密钥文件 (`.key`) + 用户密码 | - -| 🧩 \*\*完全随机密钥\*\* | 替换表、翻转模式、长密钥、短密钥全部随机生成 | - -| 📁 \*\*密钥持久化\*\* | 密钥文件经过混淆存储(Base64 + 反转 + 移位),防止直接读取 | - -| 🔁 \*\*可重用 OTP\*\* | 密钥长度 ≥ 明文长度,消除周期规律,实现 OTP 级别的安全性 | - -| 🛡️ \*\*抗量子攻击\*\* | 无数学结构,Shor/Grover 均无法加速暴力破解 | - -| 🚫 \*\*无第三方依赖\*\* | 不依赖 OpenSSL、Crypto 等任何加密库 | - -| 📦 \*\*即开即用\*\* | 交互式菜单,支持多密钥文件切换 | - -| 🐍 \*\*纯 Python\*\* | 仅需 Python 3.6+,零额外依赖 | - -| 💬 \*\*加密聊天(v2.0)\*\* | ChaosCryptChat 端到端加密聊天:文本/图片/文件/语音,P2P + 中央服务器双模式 | - - - -\--- - - - -\## 加密流程详解 - +--- +## 加密流程详解 ``` - 明文 - - ↓ - + ↓ ① Base64 编码 - - ↓ - + ↓ ② 随机替换表(大小写各26字母完全打乱) - - ↓ - + ↓ ③ 大小写翻转(10位随机模式) - - ↓ - + ↓ ④ 字符串反转 - - ↓ - + ↓ ⑤ 动态异或(4096位长密钥) - - ↓ - + ↓ ⑥ 最终异或(用户密码 + 512位短密钥 派生) - - ↓ - + ↓ 密文(十六进制) - ``` - - 每一步使用的随机参数都来自 `.key` 文件,用户密码仅参与最后一步的密钥派生。 - - -\### 密钥派生流程 - - +### 密钥派生流程 ``` - -用户密码 + short\_key (512位) - - ↓ - +用户密码 + short_key (512位) + ↓ 交替穿插 → 位运算混合 → 分组置换 → 反转 - - ↓ - + ↓ 扩展至目标长度(三种变换模式循环) - - ↓ - + ↓ 最终密钥(长度 >= 明文) - ``` +--- +## 安全性分析 -\--- - - - -\## 安全性分析 - - - -\### 1. 无法建立数学方程 - - +### 1. 无法建立数学方程 | 传统算法 | 方程形式 | 攻击方式 | - |----------|----------|----------| - -| RSA | \\( c = m^e \\mod n \\) | 数域筛法、Shor | - -| AES | \\( State = SBox \\circ ShiftRow \\circ MixCol \\circ AddRoundKey \\) | 差分分析、Grover | - -| ECC | \\( Q = kP \\) | 离散对数、Shor | - -| \*\*ChaosCrypt\*\* | \*\*无法写出任何有意义的方程\*\* | \*\*只能暴力枚举\*\* | - - +| RSA | c = m^e mod n | 数域筛法、Shor | +| AES | State = SBox ∘ ShiftRow ∘ MixCol ∘ AddRoundKey | 差分分析、Grover | +| ECC | Q = kP | 离散对数、Shor | +| **ChaosCrypt** | **无法写出任何有意义的方程** | **只能暴力枚举** | > 原因:替换表是查表操作,翻转模式是硬编码数组,密钥派生是黑盒混合——每一步都是"随机查表",没有可解析的代数结构。 - - -\### 2. 密钥空间(暴力破解难度) - - +### 2. 密钥空间(暴力破解难度) | 组件 | 空间大小 | 数值 | - |------|----------|------| +| `upper_mapping` | 26! | ~10²⁶ | +| `lower_mapping` | 26! | ~10²⁶ | +| `digit_mapping` | ~10! × C(62,10) | ~10¹⁴ | +| `equal_mapping` | 62×61×60×59 | ~10⁷ | +| `long_key` (4096位hex) | 16⁴⁰⁹⁶ | ~10⁴⁹³² | +| `short_key` (512位hex) | 16⁵¹² | ~10⁶¹⁶ | +| `flip_pattern` | 2¹⁰ | ~10³ | +| 用户密码(最低8位) | ~10⁸ | | -| `upper\_mapping` | 26! | \~10²⁶ | +**总搜索空间 ≈ 10⁵⁶³²** -| `lower\_mapping` | 26! | \~10²⁶ | +**对比数据**: -| `digit\_mapping` | \~10! × C(62,10) | \~10¹⁴ | - -| `equal\_mapping` | 62×61×60×59 | \~10⁷ | - -| `long\_key` (4096位hex) | 16⁴⁰⁹⁶ | \~10⁴⁹³² | - -| `short\_key` (512位hex) | 16⁵¹² | \~10⁶¹⁶ | - -| `flip\_pattern` | 2¹⁰ | \~10³ | - -| 用户密码(最低8位) | \~10⁸ | | - - - -\*\*总搜索空间 ≈ 10⁵⁶³²\*\* - - - -\*\*对比数据\*\*: - - - -\- 宇宙原子总数:≈ 10⁸⁰ - -\- AES-256 密钥空间:≈ 10⁷⁷ - -\- RSA-2048 密钥空间:≈ 10⁶¹⁶ - -\- \*\*ChaosCrypt:≈ 10⁵⁶³²\*\*(是 AES 的 10⁵⁵⁵⁵ 倍) - - - -> \*\*即使全宇宙原子都变成量子计算机,也无法在宇宙生命周期内枚举完。\*\* - - - -\### 3. 量子安全性 +- 宇宙原子总数:≈ 10⁸⁰ +- AES-256 密钥空间:≈ 10⁷⁷ +- RSA-2048 密钥空间:≈ 10⁶¹⁶ +- **ChaosCrypt:≈ 10⁵⁶³²**(是 AES 的 10⁵⁵⁵⁵ 倍) +> **即使全宇宙原子都变成量子计算机,也无法在宇宙生命周期内枚举完。** +### 3. 量子安全性 | 量子算法 | 目标 | 对 ChaosCrypt 的效果 | - |----------|------|------------------------| +| **Shor** | 分解质数、离散对数 | ❌ **无效** – 没有数论结构 | +| **Grover** | 对称加密加速 | ❌ **无效** – 空间 10⁵⁶³²,开根号后 10²⁸¹⁶,依然远大于 10⁸⁰ | -| \*\*Shor\*\* | 分解质数、离散对数 | ❌ \*\*无效\*\* – 没有数论结构 | - -| \*\*Grover\*\* | 对称加密加速 | ❌ \*\*无效\*\* – 空间 10⁵⁶³²,开根号后 10²⁸¹⁶,依然远大于 10⁸⁰ | - - - -\*\*结论:ChaosCrypt 对抗已知量子攻击完全免疫。\*\* - - - -\### 4. 经典攻击方式评估 - +**结论:ChaosCrypt 对抗已知量子攻击完全免疫。** +### 4. 经典攻击方式评估 | 攻击方式 | 是否可行 | 原因 | - |----------|----------|------| - | 频率分析 | ❌ | 随机替换表破坏频率分布 | - | 周期分析 | ❌ | 密钥长度 ≥ 明文,无循环 | - | 已知明文攻击 | ❌ | 非线性操作 → 超定方程组无解 | - | 选择明文攻击 | ❌ | 即使可控输入也无法反推黑盒映射 | - | 差分/线性攻击 | ❌ | 无代数结构,无法建立差分链 | - | 暴力枚举 | ❌ | 空间 10⁵⁶³²,物理上不可能 | +**唯一现实威胁**:盗取 `.key` 文件 + 窃取用户密码(端侧攻击,与算法无关)。 +--- -\*\*唯一现实威胁\*\*:盗取 `.key` 文件 + 窃取用户密码(端侧攻击,与算法无关)。 +## 为什么这玩意儿真的安全?(不服来辩版) +**总之就是安全——真·安全。** 🤷‍♂️ +我寻思着,总不能所有加密算法都得围着椭圆曲线和质数分解转,然后等 NIST 给你盖个戳才算"安全"吧?那算什么东西?**垄断啊?** 🤣 -\--- - - - -\## 为什么这玩意儿真的安全?(不服来辩版) - - - -\*\*总之就是安全——真·安全。\*\* 🤷‍♂️ - - - -我寻思着,总不能所有加密算法都得围着椭圆曲线和质数分解转,然后等 NIST 给你盖个戳才算"安全"吧?那算什么东西?\*\*垄断啊?\*\* 🤣 - - - -再说了,美国政府什么心思你猜不透。\*\*Dual\_EC\_DRBG 的事儿这么快就忘了?\*\* NIST 认证的、标准化的、全世界用了好几年的算法——结果里面养着 NSA 的后门。标准管个屁用。 - - +再说了,美国政府什么心思你猜不透。**Dual_EC_DRBG 的事儿这么快就忘了?** NIST 认证的、标准化的、全世界用了好几年的算法——结果里面养着 NSA 的后门。标准管个屁用。 所以别跟我扯什么"学术界验证"、"第三方审计"、"算法标准认证"。我就问一句: +**只有这些"标准"算法才能叫安全?** +- **安全 ≠ 数学复杂** +- **安全 ≠ NIST 认证** -\*\*只有这些"标准"算法才能叫安全?\*\* - - - -\- \*\*安全 ≠ 数学复杂\*\* - -\- \*\*安全 ≠ NIST 认证\*\* - - - -\--- - - +--- 来,咱们看看所谓的"标准算法"都什么下场: - - | 算法 | 密钥空间 | 量子下场 | - |------|----------|----------| - | AES-256 | 10⁷⁷ | Grover 减半到 10³⁸ → 理论上可破 | - | RSA-2048 | 10⁶¹⁶ | Shor 一来直接秒死 🔥 | - | ECC | 10⁶¹⁶ | 同上,Shor 直接扼杀 | - - 再看看我这个: - - | 算法 | 密钥空间 | 量子下场 | - |------|----------|----------| +| **ChaosCrypt** | **10⁵⁶³²** | **Shor 无从下手,Grover 打了等于没打** ✅ | -| \*\*ChaosCrypt\*\* | \*\*10⁵⁶³²\*\* | \*\*Shor 无从下手,Grover 打了等于没打\*\* ✅ | - - - -\*\*10⁵⁶³² 什么概念?\*\* - - - -全宇宙原子总数才 10⁸⁰。就算把全宇宙每个原子都变成一台量子计算机,从宇宙大爆炸算到今天,\*\*也算不完这个空间的一个零头。\*\* - +**10⁵⁶³² 什么概念?** +全宇宙原子总数才 10⁸⁰。就算把全宇宙每个原子都变成一台量子计算机,从宇宙大爆炸算到今天,**也算不完这个空间的一个零头。** AES 的 10⁷⁷ 在它面前就像一粒沙子对比整个银河系。 +--- +**RSA 美丽吧?标准吧?数学优美吧?** -\--- - - - -\*\*RSA 美丽吧?标准吧?数学优美吧?\*\* - - - -但恰恰因为\*\*太数学了\*\*,所以 Shor 一发入魂,直接物理超度。 - - - -\*\*数学上越好看,结构越清晰,攻击者就越开心\*\*——因为你有方程,他就能解;你有规律,他就能抓;你有结构,他就能拆。 - +但恰恰因为**太数学了**,所以 Shor 一发入魂,直接物理超度。 +**数学上越好看,结构越清晰,攻击者就越开心**——因为你有方程,他就能解;你有规律,他就能抓;你有结构,他就能拆。 我的算法呢? +- 替换表?随机打的,没有规律。 +- 翻转模式?硬编码数组,没有方程。 +- 密钥派生?黑盒操作,解不出来。 +**攻击者想写个方程都写不出来,想用代数工具都找不到切入点。** -\- 替换表?随机打的,没有规律。 +--- -\- 翻转模式?硬编码数组,没有方程。 +**所以这算法有什么问题?** -\- 密钥派生?黑盒操作,解不出来。 +- ❌ 没有"第三方安全审计" +- ❌ 没有"算法标准认证" +- ❌ 没有"学术界验证" +- ❌ 并且"看起来肥肠初级" +**除此之外,没有任何问题。** 🤷‍♂️ +看起来初级就初级,**你能攻破么?不能!** -\*\*攻击者想写个方程都写不出来,想用代数工具都找不到切入点。\*\* +安全这两个字,只关心**实战**,不关心**评价**和**认证**。 +- Dual_EC_DRBG 有认证有标准有审计——结果呢?后门。 +- 我这个啥都没有——结果呢?**你破不了。** +**能被黑客破解的就是垃圾,破解不了的就是真神。** -\--- +这玩意儿你实说,**你找不出来毛病!** 😏🔥 +--- +## 💬 ChaosCryptChat 混沌加密聊天(v2.0 新增) -\*\*所以这算法有什么问题?\*\* +**ChaosCryptChat** 是基于 ChaosCrypt 混沌加密内核构建的端到端加密聊天系统。所有聊天内容(文本、图片、文件、语音)在发送前均经混沌加密,服务器与中间节点无法读取任何消息。 - - -\- ❌ 没有"第三方安全审计" - -\- ❌ 没有"算法标准认证" - -\- ❌ 没有"学术界验证" - -\- ❌ 并且"看起来肥肠初级" - - - -\*\*除此之外,没有任何问题。\*\* 🤷‍♂️ - - - -看起来初级就初级,\*\*你能攻破么?不能!\*\* - - - -安全这两个字,只关心\*\*实战\*\*,不关心\*\*评价\*\*和\*\*认证\*\*。 - - - -\- Dual\_EC\_DRBG 有认证有标准有审计——结果呢?后门。 - -\- 我这个啥都没有——结果呢?\*\*你破不了。\*\* - - - -\*\*能被黑客破解的就是垃圾,破解不了的就是真神。\*\* - - - -这玩意儿你实说,\*\*你找不出来毛病!\*\* 😏🔥 - - - -\--- - - - -\## 💬 ChaosCryptChat 混沌加密聊天(v2.0 新增) - -\*\*ChaosCryptChat\*\* 是基于 ChaosCrypt 混沌加密内核构建的端到端加密聊天系统。所有聊天内容(文本、图片、文件、语音)在发送前均经混沌加密,服务器与中间节点无法读取任何消息。 - -\### 核心特性 +### 核心特性 | 特性 | 说明 | |------|------| -| 🔗 \*\*端到端加密\*\* | 所有消息客户端本地加密,服务器只做中继,不持有群密钥 | -| ☁️ \*\*双群模式\*\* | 🔗 端到端 P2P 直连 + ☁️ 中央服务器(解决 NAT 穿透) | -| 🎤 \*\*语音消息\*\* | 录音 → 混沌加密 → 发送 → 解密播放 | -| 🖼️ \*\*图片/文件\*\* | 二进制数据混沌加密传输,支持任意文件类型 | -| 👥 \*\*群管理\*\* | 创建群、加入群、群名、公告、踢人、群主审批 | -| 🚫 \*\*消息撤回\*\* | 2 分钟内可撤回自己的消息 | -| 🔑 \*\*每用户密钥\*\* | 每用户独立密钥认证,防止冒充他人 | -| 📜 \*\*历史记录\*\* | SQLite 本地存储聊天历史(重启不丢) | -| 🛡️ \*\*HMAC 校验\*\* | 每条消息带 HMAC 签名,防篡改、防伪造 | -| 📱 \*\*密钥分享\*\* | 群密钥支持复制 / 二维码 / 文件三种方式分享 | +| 🔗 **端到端加密** | 所有消息客户端本地加密,服务器只做中继,不持有群密钥 | +| ☁️ **双群模式** | 🔗 端到端 P2P 直连 + ☁️ 中央服务器(解决 NAT 穿透) | +| 🎤 **语音消息** | 录音 → 混沌加密 → 发送 → 解密播放 | +| 🖼️ **图片/文件** | 二进制数据混沌加密传输,支持任意文件类型 | +| 👥 **群管理** | 创建群、加入群、群名、公告、踢人、群主审批 | +| 🚫 **消息撤回** | 2 分钟内可撤回自己的消息 | +| 🔑 **每用户密钥** | 每用户独立密钥认证,防止冒充他人 | +| 📜 **历史记录** | SQLite 本地存储聊天历史(重启不丢) | +| 🛡️ **HMAC 校验** | 每条消息带 HMAC 签名,防篡改、防伪造 | +| 📱 **密钥分享** | 群密钥支持复制 / 二维码 / 文件三种方式分享 | -\### 两种群模式 +### 两种群模式 -\*\*① 端到端(P2P)群聊\*\*:群主即服务器,成员直连群主主机,适合局域网或公网 IP 场景。群密钥由群主生成并分享给成员。 +**① 端到端(P2P)群聊**:群主即服务器,成员直连群主主机,适合局域网或公网 IP 场景。群密钥由群主生成并分享给成员。 -\*\*② 中央服务器群聊\*\*:运行 `server.py`(公网 IP)解决 NAT 穿透。服务器只负责用户认证、群成员管理、消息中继——\*\*不持有群密钥,无法解密任何消息\*\*。 +**② 中央服务器群聊**:运行 `server.py`(公网 IP)解决 NAT 穿透。服务器只负责用户认证、群成员管理、消息中继——**不持有群密钥,无法解密任何消息**。 -\### 快速启动 +### 快速启动 -\#### 启动聊天客户端 +#### 启动聊天客户端 ```bash - cd ChaosCryptChat - python qtmain.py - ``` -\#### 启动中央服务器(可选,公网/NAT 场景) +#### 启动中央服务器(可选,公网/NAT 场景) ```bash - cd ChaosCryptChat - python server.py 8666 - ``` -\#### 安装依赖 +#### 安装依赖 ```bash - -pip install PyQt5 \# 必需,GUI 界面 - -pip install pygame \# 语音播放(可选) - -pip install sounddevice numpy \# 录音(可选,或 pyaudio) - -pip install Pillow \# 图片显示(可选) - -pip install qrcode \# 群密钥二维码(可选) - +pip install PyQt5 # 必需,GUI 界面 +pip install pygame # 语音播放(可选) +pip install sounddevice numpy # 录音(可选,或 pyaudio) +pip install Pillow # 图片显示(可选) +pip install qrcode # 群密钥二维码(可选) ``` > 除 PyQt5 外均为可选依赖,未安装时对应功能自动禁用。 -\### 使用流程 +### 使用流程 -1\. \*\*注册/登录\*\*:启动后创建本地账户(PBKDF2 密码哈希,支持自动登录) +1. **注册/登录**:启动后创建本地账户(PBKDF2 密码哈希,支持自动登录) +2. **创建群**:点击「📡 创建群」,将群密钥复制/生成二维码分享给好友 +3. **加入群**:点击「📥 加入群」,粘贴群密钥或扫码加入 +4. **开始聊天**:发送文本/图片/文件/语音;右键消息可撤回、分享、下载;群主可踢人、设公告、改群名 -2\. \*\*创建群\*\*:点击「📡 创建群」,将群密钥复制/生成二维码分享给好友 - -3\. \*\*加入群\*\*:点击「📥 加入群」,粘贴群密钥或扫码加入 - -4\. \*\*开始聊天\*\*:发送文本/图片/文件/语音;右键消息可撤回、分享、下载;群主可踢人、设公告、改群名 - -\--- - -\## 快速开始 - - - -\### 安装 +--- +## 快速开始 +### 安装 ```bash - -\# 克隆仓库 - +# 克隆仓库 git clone https://gitcode.com/dvsxt/chaoscrypt.git git clone https://github.com/dvs-dvsxt/ChaosCrypt.git - cd chaoscrypt - - -\# 核心模块零依赖,Python 3.6+ 即可;ChaosCryptChat 需 PyQt5 - +# 核心模块零依赖,Python 3.6+ 即可;ChaosCryptChat 需 PyQt5 ``` - - -\### 五分钟上手 - - +### 五分钟上手 ```python - from chaoscrypt import EncryptionSystem - - -\# 初始化(自动加载默认密钥,不存在则生成) - +# 初始化(自动加载默认密钥,不存在则生成) crypto = EncryptionSystem() - - -\# 加密 - -cipher = crypto.encrypt("Hello World", user\_password="MyP@ssw0rd2024!") - +# 加密 +cipher = crypto.encrypt("Hello World", user_password="MyP@ssw0rd2024!") print(cipher) - - -\# 解密 - -plain = crypto.decrypt(cipher, user\_password="MyP@ssw0rd2024!") - +# 解密 +plain = crypto.decrypt(cipher, user_password="MyP@ssw0rd2024!") print(plain) # Hello World - ``` - - -\### 命令行交互 - - +### 命令行交互 ```bash - python chaoscrypt.py - ``` +--- +## 使用指南 -\--- - - - -\## 使用指南 - - - -\### 交互菜单 - - +### 交互菜单 ``` - 请选择操作: - -1\. 使用默认密钥加密 - -2\. 使用默认密钥解密 - -3\. 生成新密钥(覆盖默认) - -4\. 使用指定密钥文件加密 - -5\. 使用指定密钥文件解密 - -6\. 生成密钥并保存到当前文件夹 - -7\. 查看当前密钥信息 - -8\. 退出 - +1. 使用默认密钥加密 +2. 使用默认密钥解密 +3. 生成新密钥(覆盖默认) +4. 使用指定密钥文件加密 +5. 使用指定密钥文件解密 +6. 生成密钥并保存到当前文件夹 +7. 查看当前密钥信息 +8. 退出 ``` - - -\### 密钥文件 - - +### 密钥文件 密钥文件以混淆形式存储,防止普通用户直接阅读。内容包括: +- `upper_mapping` – 大写字母随机替换表 +- `lower_mapping` – 小写字母随机替换表 +- `digit_mapping` – 数字→字符映射 +- `equal_mapping` – 等号映射 +- `long_key` – 4096位十六进制密钥 +- `short_key` – 512位十六进制密钥 +- `generated_at` – 生成时间戳 +--- -\- `upper\_mapping` – 大写字母随机替换表 - -\- `lower\_mapping` – 小写字母随机替换表 - -\- `digit\_mapping` – 数字→字符映射 - -\- `equal\_mapping` – 等号映射 - -\- `long\_key` – 4096位十六进制密钥 - -\- `short\_key` – 512位十六进制密钥 - -\- `generated\_at` – 生成时间戳 - - - -\--- - - - -\## API 参考 - - - -\### `EncryptionSystem(key\_file=None)` - +## API 参考 +### `EncryptionSystem(key_file=None)` 初始化加密系统。 +**参数:** +- `key_file` (str, optional) – 密钥文件路径。若为 None,自动加载 `encryption.key`;若不存在则生成。 - -\*\*参数:\*\* - -\- `key\_file` (str, optional) – 密钥文件路径。若为 None,自动加载 `encryption.key`;若不存在则生成。 - - - -\*\*示例:\*\* - +**示例:** ```python - -\# 使用默认密钥 - +# 使用默认密钥 crypto = EncryptionSystem() - - -\# 使用指定密钥 - -crypto = EncryptionSystem("my\_key.key") - +# 使用指定密钥 +crypto = EncryptionSystem("my_key.key") ``` +--- - -\--- - - - -\### `encrypt(plaintext, user\_password)` - - +### `encrypt(plaintext, user_password)` 加密明文。 +**参数:** +- `plaintext` (str) – 待加密文本 +- `user_password` (str) – 用户密码 +**返回:** +- `str` – 十六进制密文 -\*\*参数:\*\* - -\- `plaintext` (str) – 待加密文本 - -\- `user\_password` (str) – 用户密码 - - - -\*\*返回:\*\* - -\- `str` – 十六进制密文 - - - -\*\*示例:\*\* - +**示例:** ```python - cipher = crypto.encrypt("Hello", "myPass123") - ``` +--- - -\--- - - - -\### `decrypt(ciphertext, user\_password)` - - +### `decrypt(ciphertext, user_password)` 解密密文。 +**参数:** +- `ciphertext` (str) – 十六进制密文 +- `user_password` (str) – 用户密码 +**返回:** +- `str` – 解密后的明文,失败时返回错误信息 -\*\*参数:\*\* - -\- `ciphertext` (str) – 十六进制密文 - -\- `user\_password` (str) – 用户密码 - - - -\*\*返回:\*\* - -\- `str` – 解密后的明文,失败时返回错误信息 - - - -\*\*示例:\*\* - +**示例:** ```python - plain = crypto.decrypt("a1b2c3...", "myPass123") - ``` +--- - -\--- - - - -\### `generate\_keys(save\_path=None)` - - +### `generate_keys(save_path=None)` 生成新的随机密钥并保存。 +**参数:** +- `save_path` (str, optional) – 保存路径,默认 `key_{timestamp}.key` +**返回:** +- `str` – 保存的文件路径 -\*\*参数:\*\* - -\- `save\_path` (str, optional) – 保存路径,默认 `key\_{timestamp}.key` - - - -\*\*返回:\*\* - -\- `str` – 保存的文件路径 - - - -\--- - - - -\### `print\_keys()` - +--- +### `print_keys()` 打印当前密钥信息。 +--- +## 常见问题 -\--- +**Q:这算法经过审计吗?** +A:没有。但我们认为**没有审计 ≠ 不安全**,Dual_EC_DRBG 经过审计却是后门。审计只是参考,不是真理。 +**Q:为什么不直接用 AES?** +A:AES 很好,但它是"标准"算法,有代数结构,Grover 可以加速。我们选择另一条路——**完全随机、无结构、超大空间**。 - -\## 常见问题 - - - -\*\*Q:这算法经过审计吗?\*\* - -A:没有。但我们认为\*\*没有审计 ≠ 不安全\*\*,Dual\_EC\_DRBG 经过审计却是后门。审计只是参考,不是真理。 - - - -\*\*Q:为什么不直接用 AES?\*\* - -A:AES 很好,但它是"标准"算法,有代数结构,Grover 可以加速。我们选择另一条路——\*\*完全随机、无结构、超大空间\*\*。 - - - -\*\*Q:如果黑客拿到了 `.key` 文件和密文,但不知道密码呢?\*\* - +**Q:如果黑客拿到了 `.key` 文件和密文,但不知道密码呢?** A:那他就只能暴力破解密码。如果密码是 12 位以上强密码,破解时间以年为单位。 - - -\*\*Q:如果黑客同时拿到了 `.key`、密文、密码呢?\*\* - +**Q:如果黑客同时拿到了 `.key`、密文、密码呢?** A:那你的系统已经不属于"加密被攻破",而是"钥匙被偷"——这是端侧安全问题,任何加密算法都防不住。 - - -\*\*Q:这算法有数学证明吗?\*\* - +**Q:这算法有数学证明吗?** A:有。证明如下: +- 无法建立数学模型 → 无代数攻击路径 +- 密钥空间 10⁵⁶³² → 暴力不可能 +- 量子加速无效 → 抗量子 -\- 无法建立数学模型 → 无代数攻击路径 +这个证明比任何"归约到难问题"都更硬——因为**没有结构可归约,只能枚举**。 -\- 密钥空间 10⁵⁶³² → 暴力不可能 - -\- 量子加速无效 → 抗量子 - - - -这个证明比任何"归约到难问题"都更硬——因为\*\*没有结构可归约,只能枚举\*\*。 - - - -\*\*Q:看起来好初级,真能用?\*\* - -A:初级和安全没有半毛钱关系。你长得好看能挡子弹吗?能破就是能破,不能破就是不能破。\*\*你破一个试试?\*\* - -\*\*Q:ChaosCryptChat 聊天安全吗?\*\* +**Q:看起来好初级,真能用?** +A:初级和安全没有半毛钱关系。你长得好看能挡子弹吗?能破就是能破,不能破就是不能破。**你破一个试试?** +**Q:ChaosCryptChat 聊天安全吗?** A:端到端加密——消息在客户端用群密钥混沌加密,服务器只转发密文、不持有密钥。即使服务器被入侵也拿不到聊天内容。 -\*\*Q:聊天密钥怎么分享?\*\* - +**Q:聊天密钥怎么分享?** A:群主创建群后生成群密钥,可通过复制文本、二维码、密钥文件三种方式分享。请走可信渠道传递,避免被中间人截获。 -\*\*Q:ChaosCryptChat 需要公网 IP 吗?\*\* - +**Q:ChaosCryptChat 需要公网 IP 吗?** A:不需要。局域网用 P2P 直连即可;跨网络用中央服务器(server.py)中继,解决 NAT 穿透。 +--- - -\--- - - - -\## 项目结构 - - +## 项目结构 ``` - chaoscrypt/ - ├── chaoscrypt.py # 主程序(加密/解密/密钥管理) - ├── README.md # 本文档 - ├── SECURITY.md # 安全说明文档 - └── ChaosCryptChat/ # 💬 混沌加密聊天(v2.0 新增) - ├── qtmain.py # PyQt5 聊天客户端(端到端加密) - └── server.py # ☁️ 中央服务器(NAT 穿透 / 消息中继) - ``` - - 核心就三个文件,零依赖;ChaosCryptChat 是 v2.0 新增的加密聊天模块。 +--- +## 免责声明 -\--- - - - -\## 免责声明 - - - -> \*\*本系统仅供学习研究使用。\*\* - -> 作者不承担因密钥文件泄露、密码失窃、端侧入侵等导致的任何数据损失责任。 - +> **本系统仅供学习研究使用。** +> 作者不承担因密钥文件泄露、密码失窃、端侧入侵等导致的任何数据损失责任。 > 生产环境请确保 `.key` 文件和用户密码均安全存储,并考虑强制用户使用强密码策略。 - -> \*\*ChaosCryptChat\*\* 服务器不持有群密钥,但会记录用户登录信息与消息中继日志,请谨慎选择信任的服务器。 - +> **ChaosCryptChat** 服务器不持有群密钥,但会记录用户登录信息与消息中继日志,请谨慎选择信任的服务器。 > 聊天密钥由群主分享,请通过可信渠道传递;即使服务器被攻陷也不会泄露历史聊天内容。 +--- - -\--- - - - -\## 📜 许可证 - - +## 📜 许可证 MIT License — 你可以自由使用、修改、分发,但请保留原作者声明。 +--- +## 🙏 致谢 -\--- +感谢所有认真看完这份文档的人。 +你是极少数愿意**用逻辑判断安全,而不是用头衔判断安全**的人。 +--- - -\## 🙏 致谢 - - - -感谢所有认真看完这份文档的人。 - -你是极少数愿意\*\*用逻辑判断安全,而不是用头衔判断安全\*\*的人。 - - - -\--- - - - -\*\*"安全应该由攻击难度定义,而不是由某个机构盖章定义。"\*\* - +**"安全应该由攻击难度定义,而不是由某个机构盖章定义。"** —— ChaosCrypt 设计哲学 +--- - -\--- - - - -\*\*Happy Encrypting! 🔐\*\* - +**Happy Encrypting! 🔐** \ No newline at end of file