桃子桃子快讯
返回首页
工具

Steganeur:用 LLM token 概率隐藏密文的 Rust 工具

开发者发布开源 Rust 工具 Steganeur,利用语言模型 token 选择通道在自然文本中嵌入秘密信息。

2026.08.22 · 周六2 分钟阅读

一位开发者在 Hacker News 上以「Show HN」形式发布了开源项目 Steganeur,这是一个用 Rust 编写的隐写工具,核心思路是利用大语言模型的 token 选择概率作为信息隐藏通道,把秘密信息编码进模型生成的「掩护文本」之中。接收方只需拿到这段文本与同一模型,即可还原出原始消息。

项目原理

Steganeur 并不依赖特殊格式或字符替换,而是把消息比特映射到语言模型在每个位置上可选的 token 上。生成出的句子读起来与正常输出无异,但其中已嵌入编码信息。开发者特别强调:在启用拒绝采样(rejection method)后,输出在统计意义上与模型的正常采样结果完全一致,而不仅仅是「看起来相似」。

四种编码方法与 GPU 兼容性问题

项目共实现了四种编码方法,但其中三种依赖一个关键前提——编码与解码时模型的 logprobs 必须逐位完全一致。

  • 在 GPU 上,浮点规约运算通常是非确定性的,同一模型两次前向推理得到的 logprobs 会出现微小漂移,足以破坏编码比特。
  • 唯一对 GPU 友好的方法是「block」法:它按 token id 而非概率值进行分桶,因此对浮点抖动不敏感,可在任意后端服务器上工作。
  • 其余三种方法则需要 CPU 推理环境。

实现与依赖

  • 语言:Rust,双协议 MIT / Apache-2.0 开源。
  • 目标后端:llama.cpp,要求服务器在返回 top_logprobs 时附带 token id 字段。
  • 部署形态:面向自托管 LLM 服务,不依赖特定云厂商。

适用场景与局限

Steganeur 主要面向安全研究、隐私通信实验以及对 LLM 推理内部状态感兴趣的开发者。由于多数方法要求 CPU 推理或确定的浮点结果,在大规模商用 GPU 集群上的实用性受限。此外,消息容量受限于模型在每个位置的候选 token 数量,传输速率有限,更适合传递短密钥、标识符等小体量信息。

截至发稿时,该帖在 Hacker News 上获得 3 个点赞、0 条评论,社区关注度较低。项目仍处于早期个人作品阶段,是否会被后续采纳或扩展,取决于隐写社区与 LLM 工程社区的反响。

信源