nethical6/conversation-steganography
GitHub: nethical6/conversation-steganography
一个利用本地 AI 模型将加密信息伪装成自然对话文本的隐私通讯隐写工具。
Stars: 889 | Forks: 53
# 对话隐写术
**在看似正常的聊天文本中隐藏秘密信息。**
对话隐写术允许两个人通过*任何*即时通讯应用(WhatsApp、Telegram、Signal、iMessage、电子邮件,甚至 Instagram 私信)进行完全私密的交谈。你的秘密信息会被加密,然后伪装成由本地 AI 模型生成的无辜且听起来自然的文本。任何阅读该聊天记录的人都无法看出里面有隐藏信息。
## 为什么选择对话隐写术?
- 各国政府正趋向于扫描私人信息
- 发送普通的加密信息是有风险的,因为这可能会因为“涉嫌可疑”而对你进行标记
- 今天还“只是 CSAM”。天知道明天会变成什么
**你的实际信息在未加密状态下绝不会离开你的设备。** 通讯平台只能看到无辜的掩护文本。
## 快速开始
### 1. 安装
```
# Clone 和 build
git clone https://github.com/nethical/conversation-stenography.git
cd conversation-stenography
go build -o conversation-stenography ./cmd/conversation-stenography
```
### 2. 首次运行 —— 设置向导
```
./conversation-stenography
```
首次运行时,对话隐写术会引导你完成所有设置:
- 让你选择 AI 模型(并根据你的系统提供建议)
- 自动下载模型
- 创建你的配置文件
这就行了。你可以开始聊天了。
### 在一台设备上测试两个用户
你不需要两台电脑或手机来验证对话隐写术是否有效。在
设置完成后,启动本地双人模拟:
```
./conversation-stenography simulate
```
出现提示时,输入你们共享的秘密短语。终端以 Alice 的身份启动:
```
Alice> Meet me outside at six.
Generating and transporting cover text...
Cover text (what the messaging app would see):
Bob decoded: Meet me outside at six.
Bob> That works for me.
```
每一轮使用两个独立的协议参与者。其中一个生成掩护
文本,另一个对其进行解码,然后提示会自动切换用户。
这会演练在不同设备之间使用的相同加密、模型编码、解码和对话
链。
模拟命令:
| 命令 | 作用 |
|---|---|
| `/switch` | 切换当前用户但不发送信息 |
| `/show` | 显示模拟的明文对话 |
| `/help` | 显示模拟帮助 |
| `/quit` | 退出;模拟状态不会被保存 |
名称和测试对话可以自定义:
```
./conversation-stenography simulate -user-a Alex -user-b Samir -conversation test-chat
```
### 3. 开始聊天
```
./conversation-stenography
```
该工具会提示你输入对话名称和你的名字,然后让你进入聊天:
```
┌─────────────────────────────────────┐
│ 🔒 Secure Chat Active │
└─────────────────────────────────────┘
Conversation: coffee-plans
You are: alex
HOW TO USE:
• Type a message and press Enter → generates cover text to copy
• /paste SENDER → paste a message you received from someone
• /help → see all commands
• /quit → save and exit
alex>
```
### 4. 发送信息
只需输入你的秘密信息:
```
alex> Hey, can we meet tomorrow at noon?
⏳ Generating cover text...
┌─── COPY THIS into your messaging app ───┐
I was thinking about trying that new place downtown.
Have you been there before? I heard they have great pasta.
└─── END — send as alex ───────────────────┘
```
复制掩护文本并将其粘贴到 WhatsApp/Telegram/Signal 中。
### 5. 接收信息
当你的朋友通过通讯应用向你发送回复时:
```
alex> /paste bob
Paste the exact message received from bob below.
Then type /end on a new line when done:
Yeah the pasta place sounds great! My friend went last week
and said the carbonara was incredible.
/end
📩 Message from bob:
Sure, noon works! See you there.
```
## 工作原理(供好奇者了解)
```
Your secret message
↓
[AES encryption]
↓
[AI model generates innocent text
that encodes the encrypted bytes
in its token choices]
↓
Normal-looking chat text → WhatsApp/Telegram/Signal → Friend's Conversation Stenography
↓ ↓
[AI model recovers [Same process
the encrypted bytes in reverse]
from token choices] ↓
↓ Your secret message
[AES decryption]
↓
Original message
```
**核心安全特性:**
- **AES-SIV 加密** —— 军用级别的身份验证加密
- **对话链** —— 每条信息在密码学上都与上一条信息相连;能够检测到任何篡改、删除或重新排序行为
- **本地 AI 模型** —— 模型完全在你的设备上运行,不会向云端发送任何内容
- **共享秘密短语** —— 使用 600,000 轮迭代的 PBKDF2 派生;绝不存储在磁盘上
## 两人设置
双方需要**完全相同**的配置:
1. **当面会合**并就以下内容达成一致:
- 一个**秘密短语**(6 个以上的随机词汇,例如 `"purple elephant dances under crimson moonlight"`)
- 一个**对话名称**(例如 `"coffee-plans"`)
- **相同的模型**(例如,双方都在设置向导中选择选项 1)
2. **每人各自运行:**
./conversation-stenography
# 输入相同的对话名称
# 输入你自己的名字
# 出现提示时输入共享的秘密短语
3. **通过任何通讯应用交换信息** —— 只需复制/粘贴掩护文本即可。
## 命令
| 命令 | 作用 |
|---|---|
| `./conversation-stenography` | 开始聊天(或首次运行设置) |
| `./conversation-stenography setup` | 重新运行设置向导 |
| `./conversation-stenography simulate` | 在一台设备上测试两个独立用户 |
| `./conversation-stenography conversations` | 列出你已保存的对话 |
| `./conversation-stenography chat -conversation NAME -me NAME` | 使用显式标志启动 |
### 聊天内命令
| 命令 | 作用 |
|---|---|
| _(直接输入)_ | 发送加密信息 |
| `/paste NAME` | 解码来自 NAME 的已接收信息 |
| `/send` | 多行信息(以 `/end` 结束) |
| `/show` | 显示对话历史记录 |
| `/status` | 显示同步信息(用于调试) |
| `/help` | 列出所有命令 |
| `/quit` | 保存并退出 |
## 支持的模型
设置向导提供以下模型:
| 模型 | 大小 | Runtime | 最适用场景 |
|---|---|---|---|
| **Llama 3.2 3B (4-bit)** | ~2 GB | MLX | Apple Silicon Macs(推荐) |
| **Llama 3.2 1B (4-bit)** | ~1 GB | MLX | Apple Silicon(轻量级) |
| **Llama 3.1 8B (4-bit)** | ~5 GB | MLX | Apple Silicon(质量最佳) |
| **GPT-2** | ~500 MB | Transformers | 任何系统 |
| **GPT-2 Medium** | ~1.5 GB | Transformers | 任何系统(质量更好) |
### 前置条件
- **Go 1.22+**(用于构建)
- **Python 3.9+**
设置向导会在必要时创建一个隔离的虚拟环境,并
安装 `mlx-lm`(适用于 Apple Silicon)或 `torch + transformers`(适用于其他系统),
以及 `huggingface-hub`。你不需要单独安装 `hf` 命令。
## 环境变量
用于自动化和脚本编写:
| 变量 | 用途 |
|---|---|
| `CONVERSATION_STENOGRAPHY_SECRET` | 共享短语(替代交互式提示) |
| `CONVERSATION_STENOGRAPHY_KEY` | Base64 密钥(遗留用法,推荐使用 `CONVERSATION_STENOGRAPHY_SECRET`) |
| `CONVERSATION_STENOGRAPHY_CONFIG` | 配置文件的路径(默认:`conversation-stenography.local.json`) |
| `CONVERSATION_STENOGRAPHY_MODEL` | 覆盖模型路径 |
| `CONVERSATION_STENOGRAPHY_PYTHON` | 覆盖 Python 路径 |
| `CONVERSATION_STENOGRAPHY_RUNTIME` | 覆盖 Runtime(`mlx` 或 `transformers`) |
Runtime 配置是特定于机器的,因此被刻意设置为不进行提交。
运行 `conversation-stenography setup` 来生成
`conversation-stenography.local.json`,或者复制
`conversation-stenography.example.json` 并根据你的环境进行调整。
切勿提交本地模型路径、解释器路径或凭证。
在迁移过程中,现有的安装可以继续使用 `decalgo.local.json`、
`~/.decalgo/conversations` 和 `DECALGO_*` 变量。新的
文件和文档使用 Conversation Stenography 名称。
## 进阶:脚本化使用
用于 Shell 自动化(例如机器人、CI、自动化中继):
```
export CONVERSATION_STENOGRAPHY_SECRET='purple elephant dances under crimson moonlight'
./conversation-stenography chat -conversation coffee-plans -me alex
```
### 多方链(进阶)
用于程序化的多方信息交换:
```
export CONVERSATION_STENOGRAPHY_KEY="$(openssl rand -base64 32)"
# Bob 发送
printf 'hi alex' | ./conversation-stenography chain-send \
-conversation friends -state bob.state -from bob > record-1.json
# Alex 接收
./conversation-stenography chain-receive \
-conversation friends -state alex.state < record-1.json
```
## 重要注意事项
- **信息必须原封不动地复制。** 不应有自动纠错,不改变格式,不使用智能引号。请逐字节地复制和粘贴掩护文本。
- **按顺序处理信息。** 双方必须按照信息在通讯应用中出现的准确顺序粘贴接收到的信息。
- **必须使用相同的模型。** 双方必须使用相同的 AI 模型、相同的版本和相同的设置。设置向导会处理这些。
- **秘密短语绝不会被存储。** 每次启动 Conversation Stenography 时,你都需要重新输入它(或者设置 `CONVERSATION_STENOGRAPHY_SECRET`)。
## 安全模型
- 信息使用 **AES-SIV**(合成初始化向量)加密,可同时提供机密性和完整性。
- 每条信息都是链式相连的 —— 每个载体都会验证发送者、对话 ID、信息索引以及之前所有信息的哈希值。
- 共享短语通过 **PBKDF2-HMAC-SHA-256**(600,000 次迭代)进行拉伸。
- AI 模型 **100% 在本地** 运行。没有 API 调用,没有云端,没有遥测。
- 对话状态使用 AES-GCM 进行静态加密。
## 从源码构建
```
git clone https://github.com/nethical6/conversation-stenography.git
cd conversation-stenography
go build -o conversation-stenography ./cmd/conversation-stenography
go test ./...
```
## 许可证
详情请参阅 [LICENSE](LICENSE)。
**你的实际信息在未加密状态下绝不会离开你的设备。** 通讯平台只能看到无辜的掩护文本。
## 快速开始
### 1. 安装
```
# Clone 和 build
git clone https://github.com/nethical/conversation-stenography.git
cd conversation-stenography
go build -o conversation-stenography ./cmd/conversation-stenography
```
### 2. 首次运行 —— 设置向导
```
./conversation-stenography
```
首次运行时,对话隐写术会引导你完成所有设置:
- 让你选择 AI 模型(并根据你的系统提供建议)
- 自动下载模型
- 创建你的配置文件
这就行了。你可以开始聊天了。
### 在一台设备上测试两个用户
你不需要两台电脑或手机来验证对话隐写术是否有效。在
设置完成后,启动本地双人模拟:
```
./conversation-stenography simulate
```
出现提示时,输入你们共享的秘密短语。终端以 Alice 的身份启动:
```
Alice> Meet me outside at six.
Generating and transporting cover text...
Cover text (what the messaging app would see):
标签:DLL 劫持, EVTX分析, Go语言, 信息隐藏, 凭据扫描, 大语言模型, 安全通信, 日志审计, 程序破解, 端到端加密, 系统调用监控, 网络安全, 逆向工具, 隐写术, 隐私保护