conversation-steganography
用 LLM 生成自然对话文本,在闲聊中隐藏加密信息,实现隐蔽通信
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 LLM 生成自然对话文本,在闲聊中隐藏加密信息,实现隐蔽通信
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你和朋友的聊天记录里充满了毫无营养的日常寒暄——「今天天气真好啊」「晚上吃什么」「那家咖啡店不错」。但实际上,每一条消息的深处都藏着一段你们才知道的私密对话。这就是 Conversation Stenography 正在做的事。
传统的加密聊天工具(如 Signal、Telegram Secret Chat)有一个致命弱点:加密本身就让通信变得可疑。当你发送一串乱码般的密文时,监控者不需要破解内容,光是「你发了加密信息」这个事实就足以引起警觉。
Conversation Stenography 的核心思路是:既然 LLM 能生成流畅自然的文本,为什么不用它来做「掩护」?具体来说,它把秘密信息先 AES-GCM 加密,再通过 GPT-2 模型生成看似随意的闲聊文本,让监控者看到的只是两个人在愉快地聊天——而真正的信息就嵌在其中。

图1:加密信息经过编码后,被 GPT-2 生成的自然语言包裹,任何人都看不出异样
发送前,原始消息会先经过 DEFLATE 压缩。对于简短消息,这个步骤能节省大量空间。压缩后的数据再通过自定义短语编码(phrase encoding)进行二次处理,进一步减少比特数。如果消息很长,系统还支持分片(fragmentation)和动态字典模式,确保即使是很长的秘密也能被处理。
压缩后的数据不会直接编码,而是先经过两层加密保护:
这两层加密确保即使攻击者能提取出嵌入的比特流,也无法在没有密钥的情况下解密内容。密钥可以通过两种方式生成:直接传入 32 字节密钥,或通过双方共享的密码短语配合 PBKDF2-SHA256(60 万次迭代)派生。
这是整个项目最有趣的部分。将加密后的二进制数据编码进自然语言文本,采用了**算术编码(Arithmetic Coding)**结合 Top-N Token 采样的方式:
这种方式的优势在于:编码内容完全融入模型的自然输出,肉眼无法分辨哪个 token 是「有用」的、哪个是「填充」的。相比传统的字符级隐写(如修改空格、标点),token 级编码的隐蔽性更高。
系统还支持多人群聊场景下的链式对话模式。每个参与者的消息按序列号排序,链状态(chain hash)通过 HMAC 累加更新,确保消息顺序不可篡改。此外,系统对每个候选文本边界进行认证搜索,防御「边界检测」攻击——攻击者可能尝试删除或重排消息段落来破坏通信。
项目由 Go 主程序和 Python 推理后端组成:
ProcessModel 接口以 JSON-RPC over STDIO 的方式调用 Python 推理进程。代码结构模块化:codec.go(编码核心)、conversation_chain.go(群聊协议)、carrier_security.go(加密层)、message_compression.go(压缩层)。openai-community/gpt2。| 模块 | 职责 |
|---|---|
codec.go | AES-GCM + AES-SIV 加密信封 |
generative.go | LLM 编码器/解码器,算术编码 |
conversation_chain.go | 群聊链式认证 |
carrier_security.go | 载体载荷加密 |
message_compression.go | DEFLATE + 短语编码 |
phrase.go | PBKDF2 密钥派生 |
arithmetic.go | 浮点算术编码实现 |
process_model.go | Go-Python 进程间通信 |
作者本人也承认,这个项目存在明显的局限:
隐蔽性风险:学术界已有多种技术可以检测 LLM 生成文本中的隐写痕迹,包括困惑度(perplexity)异常分析和 token 分布统计偏差。如果监控者对特定用户进行专项分析,当前方案并不能保证完全不被发现。
效率问题:每条消息都需要本地运行 GPT-2 模型进行编码/解码。在没有 GPU 的设备上,这个过程可能比较缓慢。对于高吞吐量通信场景,当前方案并不适合。
无 Web UI:纯 CLI 工具,学习成本较高。没有现成的 Docker 部署方案,对非技术用户不够友好。
License 限制:采用 GPL-3.0 许可证,意味着任何修改和分发版本也必须开源,不适合商业集成。
Conversation Stenography 更适合以下场景:
对于普通用户,Signal 等端到端加密工具仍然是更实用、更安全的选择。
git clone https://github.com/nethical6/conversation-steganographygo mod downloadgo build./conversation-stenography setup 生成配置文件如需使用更强大的模型,可以修改配置中的 model 字段(如换成 GPT-2-medium 或 GPT-2-large),但编码质量提升的同时也会增加推理时间。