Files
ChaosCrypt/README.md
T

901 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\# 🔐 ChaosCrypt - 混沌加密系统
> \*\*一个完全自主设计的、抗量子、抗数学攻击的对称加密系统\*\*
> \*不依赖 NIST、不依赖椭圆曲线、不依赖质数分解——只依赖随机性本身\*
\---
\## 📖 目录
1\. \[项目简介](#项目简介)
2\. \[设计哲学](#设计哲学)
3\. \[核心特性](#核心特性)
4\. \[加密流程详解](#加密流程详解)
5\. \[安全性分析](#安全性分析)
6\. \[为什么这玩意儿真的安全?(不服来辩版)](#为什么这玩意儿真的安全不服来辩版)
7\. \[快速开始](#快速开始)
8\. \[使用指南](#使用指南)
9\. \[API 参考](#api-参考)
10\. \[常见问题](#常见问题)
11\. \[项目结构](#项目结构)
12\. \[免责声明](#免责声明)
\---
\## 项目简介
\*\*ChaosCrypt\*\* 是一个完全自主设计的对称加密系统。它不依赖任何第三方加密库(仅使用 `base64` 做数据编码),全部加密逻辑均为原创。
\*\*核心思想\*\*:用\*\*随机性\*\*替代\*\*数学结构\*\*,用\*\*多层乱序\*\*替代\*\*代数方程\*\*,用\*\*超大密钥空间\*\*彻底扼杀暴力破解。
> 这不是对现有加密算法的改进,而是对"安全"这个概念的重新定义。
\---
\## 设计哲学
当今加密世界有一个默认共识:\*\*"只有 NIST 认证的、数学优美的、学术界验证过的算法才算安全"\*\*。
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+,零额外依赖 |
\---
\## 加密流程详解
```
明文
  ↓
① Base64 编码
  ↓
② 随机替换表(大小写各26字母完全打乱)
  ↓
③ 大小写翻转(10位随机模式)
  ↓
④ 字符串反转
  ↓
⑤ 动态异或(4096位长密钥)
  ↓
⑥ 最终异或(用户密码 + 512位短密钥 派生)
  ↓
密文(十六进制)
```
每一步使用的随机参数都来自 `.key` 文件,用户密码仅参与最后一步的密钥派生。
\### 密钥派生流程
```
用户密码 + short\_key (512位)
  ↓
交替穿插 → 位运算混合 → 分组置换 → 反转
  ↓
扩展至目标长度(三种变换模式循环)
  ↓
最终密钥(长度 >= 明文)
```
\---
\## 安全性分析
\### 1. 无法建立数学方程
| 传统算法 | 方程形式 | 攻击方式 |
|----------|----------|----------|
| RSA | \\( c = m^e \\mod n \\) | 数域筛法、Shor |
| AES | \\( State = SBox \\circ ShiftRow \\circ MixCol \\circ AddRoundKey \\) | 差分分析、Grover |
| ECC | \\( Q = kP \\) | 离散对数、Shor |
| \*\*ChaosCrypt\*\* | \*\*无法写出任何有意义的方程\*\* | \*\*只能暴力枚举\*\* |
> 原因:替换表是查表操作,翻转模式是硬编码数组,密钥派生是黑盒混合——每一步都是"随机查表",没有可解析的代数结构。
\### 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⁸ | |
\*\*总搜索空间 ≈ 10⁵⁶³²\*\*
\*\*对比数据\*\*:
\- 宇宙原子总数:≈ 10⁸⁰
\- AES-256 密钥空间:≈ 10⁷⁷
\- RSA-2048 密钥空间:≈ 10⁶¹⁶
\- \*\*ChaosCrypt:≈ 10⁵⁶³²\*\*(是 AES 的 10⁵⁵⁵⁵ 倍)
> \*\*即使全宇宙原子都变成量子计算机,也无法在宇宙生命周期内枚举完。\*\*
\### 3. 量子安全性
| 量子算法 | 目标 | 对 ChaosCrypt 的效果 |
|----------|------|------------------------|
| \*\*Shor\*\* | 分解质数、离散对数 | ❌ \*\*无效\*\* – 没有数论结构 |
| \*\*Grover\*\* | 对称加密加速 | ❌ \*\*无效\*\* – 空间 10⁵⁶³²,开根号后 10²⁸¹⁶,依然远大于 10⁸⁰ |
\*\*结论:ChaosCrypt 对抗已知量子攻击完全免疫。\*\*
\### 4. 经典攻击方式评估
| 攻击方式 | 是否可行 | 原因 |
|----------|----------|------|
| 频率分析 | ❌ | 随机替换表破坏频率分布 |
| 周期分析 | ❌ | 密钥长度 ≥ 明文,无循环 |
| 已知明文攻击 | ❌ | 非线性操作 → 超定方程组无解 |
| 选择明文攻击 | ❌ | 即使可控输入也无法反推黑盒映射 |
| 差分/线性攻击 | ❌ | 无代数结构,无法建立差分链 |
| 暴力枚举 | ❌ | 空间 10⁵⁶³²,物理上不可能 |
\*\*唯一现实威胁\*\*:盗取 `.key` 文件 + 窃取用户密码(端侧攻击,与算法无关)。
\---
\## 为什么这玩意儿真的安全?(不服来辩版)
\*\*总之就是安全——真·安全。\*\* 🤷‍♂️
我寻思着,总不能所有加密算法都得围着椭圆曲线和质数分解转,然后等 NIST 给你盖个戳才算"安全"吧?那算什么东西?\*\*垄断啊?\*\* 🤣
再说了,美国政府什么心思你猜不透。\*\*Dual\_EC\_DRBG 的事儿这么快就忘了?\*\* NIST 认证的、标准化的、全世界用了好几年的算法——结果里面养着 NSA 的后门。标准管个屁用。
所以别跟我扯什么"学术界验证"、"第三方审计"、"算法标准认证"。我就问一句:
\*\*只有这些"标准"算法才能叫安全?\*\*
\- \*\*安全 ≠ 数学复杂\*\*
\- \*\*安全 ≠ NIST 认证\*\*
\---
来,咱们看看所谓的"标准算法"都什么下场:
| 算法 | 密钥空间 | 量子下场 |
|------|----------|----------|
| AES-256 | 10⁷⁷ | Grover 减半到 10³⁸ → 理论上可破 |
| RSA-2048 | 10⁶¹⁶ | Shor 一来直接秒死 🔥 |
| ECC | 10⁶¹⁶ | 同上,Shor 直接扼杀 |
再看看我这个:
| 算法 | 密钥空间 | 量子下场 |
|------|----------|----------|
| \*\*ChaosCrypt\*\* | \*\*10⁵⁶³²\*\* | \*\*Shor 无从下手,Grover 打了等于没打\*\* ✅ |
\*\*10⁵⁶³² 什么概念?\*\*
全宇宙原子总数才 10⁸⁰。就算把全宇宙每个原子都变成一台量子计算机,从宇宙大爆炸算到今天,\*\*也算不完这个空间的一个零头。\*\*
AES 的 10⁷⁷ 在它面前就像一粒沙子对比整个银河系。
\---
\*\*RSA 美丽吧?标准吧?数学优美吧?\*\*
但恰恰因为\*\*太数学了\*\*,所以 Shor 一发入魂,直接物理超度。
\*\*数学上越好看,结构越清晰,攻击者就越开心\*\*——因为你有方程,他就能解;你有规律,他就能抓;你有结构,他就能拆。
我的算法呢?
\- 替换表?随机打的,没有规律。
\- 翻转模式?硬编码数组,没有方程。
\- 密钥派生?黑盒操作,解不出来。
\*\*攻击者想写个方程都写不出来,想用代数工具都找不到切入点。\*\*
\---
\*\*所以这算法有什么问题?\*\*
\- ❌ 没有"第三方安全审计"
\- ❌ 没有"算法标准认证"
\- ❌ 没有"学术界验证"
\- ❌ 并且"看起来肥肠初级"
\*\*除此之外,没有任何问题。\*\* 🤷‍♂️
看起来初级就初级,\*\*你能攻破么?不能!\*\*
安全这两个字,只关心\*\*实战\*\*,不关心\*\*评价\*\*和\*\*认证\*\*。
\- Dual\_EC\_DRBG 有认证有标准有审计——结果呢?后门。
\- 我这个啥都没有——结果呢?\*\*你破不了。\*\*
\*\*能被黑客破解的就是垃圾,破解不了的就是真神。\*\*
这玩意儿你实说,\*\*你找不出来毛病!\*\* 😏🔥
\---
\## 快速开始
\### 安装
```bash
\# 克隆仓库
git clone https://gitcode.com/dvsxt/chaoscrypt.git
cd chaoscrypt
\# 无需安装依赖,Python 3.6+ 即可
```
\### 五分钟上手
```python
from chaoscrypt import EncryptionSystem
\# 初始化(自动加载默认密钥,不存在则生成)
crypto = EncryptionSystem()
\# 加密
cipher = crypto.encrypt("Hello World", user\_password="MyP@ssw0rd2024!")
print(cipher)
\# 解密
plain = crypto.decrypt(cipher, user\_password="MyP@ssw0rd2024!")
print(plain) # Hello World
```
\### 命令行交互
```bash
python chaoscrypt.py
```
\---
\## 使用指南
\### 交互菜单
```
请选择操作:
1\. 使用默认密钥加密
2\. 使用默认密钥解密
3\. 生成新密钥(覆盖默认)
4\. 使用指定密钥文件加密
5\. 使用指定密钥文件解密
6\. 生成密钥并保存到当前文件夹
7\. 查看当前密钥信息
8\. 退出
```
\### 密钥文件
密钥文件以混淆形式存储,防止普通用户直接阅读。内容包括:
\- `upper\_mapping` – 大写字母随机替换表
\- `lower\_mapping` – 小写字母随机替换表
\- `digit\_mapping` – 数字→字符映射
\- `equal\_mapping` – 等号映射
\- `long\_key` – 4096位十六进制密钥
\- `short\_key` – 512位十六进制密钥
\- `generated\_at` – 生成时间戳
\---
\## API 参考
\### `EncryptionSystem(key\_file=None)`
初始化加密系统。
\*\*参数:\*\*
\- `key\_file` (str, optional) – 密钥文件路径。若为 None,自动加载 `encryption.key`;若不存在则生成。
\*\*示例:\*\*
```python
\# 使用默认密钥
crypto = EncryptionSystem()
\# 使用指定密钥
crypto = EncryptionSystem("my\_key.key")
```
\---
\### `encrypt(plaintext, user\_password)`
加密明文。
\*\*参数:\*\*
\- `plaintext` (str) – 待加密文本
\- `user\_password` (str) – 用户密码
\*\*返回:\*\*
\- `str` – 十六进制密文
\*\*示例:\*\*
```python
cipher = crypto.encrypt("Hello", "myPass123")
```
\---
\### `decrypt(ciphertext, user\_password)`
解密密文。
\*\*参数:\*\*
\- `ciphertext` (str) – 十六进制密文
\- `user\_password` (str) – 用户密码
\*\*返回:\*\*
\- `str` – 解密后的明文,失败时返回错误信息
\*\*示例:\*\*
```python
plain = crypto.decrypt("a1b2c3...", "myPass123")
```
\---
\### `generate\_keys(save\_path=None)`
生成新的随机密钥并保存。
\*\*参数:\*\*
\- `save\_path` (str, optional) – 保存路径,默认 `key\_{timestamp}.key`
\*\*返回:\*\*
\- `str` – 保存的文件路径
\---
\### `print\_keys()`
打印当前密钥信息。
\---
\## 常见问题
\*\*Q:这算法经过审计吗?\*\*
A:没有。但我们认为\*\*没有审计 ≠ 不安全\*\*,Dual\_EC\_DRBG 经过审计却是后门。审计只是参考,不是真理。
\*\*Q:为什么不直接用 AES?\*\*
A:AES 很好,但它是"标准"算法,有代数结构,Grover 可以加速。我们选择另一条路——\*\*完全随机、无结构、超大空间\*\*。
\*\*Q:如果黑客拿到了 `.key` 文件和密文,但不知道密码呢?\*\*
A:那他就只能暴力破解密码。如果密码是 12 位以上强密码,破解时间以年为单位。
\*\*Q:如果黑客同时拿到了 `.key`、密文、密码呢?\*\*
A:那你的系统已经不属于"加密被攻破",而是"钥匙被偷"——这是端侧安全问题,任何加密算法都防不住。
\*\*Q:这算法有数学证明吗?\*\*
A:有。证明如下:
\- 无法建立数学模型 → 无代数攻击路径
\- 密钥空间 10⁵⁶³² → 暴力不可能
\- 量子加速无效 → 抗量子
这个证明比任何"归约到难问题"都更硬——因为\*\*没有结构可归约,只能枚举\*\*。
\*\*Q:看起来好初级,真能用?\*\*
A:初级和安全没有半毛钱关系。你长得好看能挡子弹吗?能破就是能破,不能破就是不能破。\*\*你破一个试试?\*\*
\---
\## 项目结构
```
chaoscrypt/
├── chaoscrypt.py # 主程序(加密/解密/密钥管理)
├── README.md # 本文档
└── SECURITY.md # 安全说明文档
```
就这么三个文件,不藏任何东西,不依赖任何库。
\---
\## 免责声明
> \*\*本系统仅供学习研究使用。\*\*
> 作者不承担因密钥文件泄露、密码失窃、端侧入侵等导致的任何数据损失责任。
> 生产环境请确保 `.key` 文件和用户密码均安全存储,并考虑强制用户使用强密码策略。
\---
\## 📜 许可证
MIT License — 你可以自由使用、修改、分发,但请保留原作者声明。
\---
\## 🙏 致谢
感谢所有认真看完这份文档的人。
你是极少数愿意\*\*用逻辑判断安全,而不是用头衔判断安全\*\*的人。
\---
\*\*"安全应该由攻击难度定义,而不是由某个机构盖章定义。"\*\*
—— ChaosCrypt 设计哲学
\---
\*\*Happy Encrypting! 🔐\*\*