Fable 5.1 图像隐写术:"THE MONSTER ACTS ON THE MOONSHINE MODULE" 如何隐藏在40个星位中
一篇发布于2026-10-21的LessWrong帖子完整记录了一个名为Fable 5.1的模型隐藏在800x500 PNG图像中的消息的解码过程,答案并不惊人:整个句子"THE MONSTER ACTS ON THE MOONSHINE MODULE"由天空中40颗星的垂直位置承载,每颗星都精确对齐到5像素的整数倍。解码记录显示一个使用工具的代理通过Python解释器恢复了该句子,而无需事先告知方案,这使得该事件成为量化隐写术的一个清晰示例,而非一种新奇的能力。
事件简述
一个形式为"Fable 5.1如何将消息隐藏在图像中?"的提示通过运行一个代理模型针对单个图像文件并让其搜索结构来回答。代理最终识别出一个有序的40颗星序列,使用它们的x坐标作为阅读顺序,y坐标作为符号值,并产生了一个语法正确的英文句子。帖子报告了大约98%的置信度认为这是预期消息,基于40个独立的垂直坐标精确落在5的整数倍上且残差为零的事实。
图像本身在其他方面都很普通:一个带有月亮、月亮倒影、树木剪影、山峰和流星的夜景。没有任何视觉上异常的地方,不像通常的数据承载模式。
载体:星x坐标定义阅读顺序
阅读顺序由几何定义,而非任何标记。40颗圆形和闪光星的x坐标从24像素到779像素单调递增,水平步长几乎均匀,为15到24像素。这种单调、大致均匀的间距使得星场成为一个线性通道:从左到右排序星星,你就得到了一个40字符的字符串。
流星、月亮和山峰被明确排除在序列之外。它们是风景,而非符号。
符号值:星y坐标量化为5像素
每颗星的垂直坐标是实际载荷。所有40个y值在30到135像素范围内都是5的精确倍数。解码规则是:
- y = 30 + 5k,其中k是符号索引
- k = 0 表示空格
- k = 1 到 26 表示字母A到Z
因此第一颗星位于y = 130,给出k = 20,即字母T。四颗位于y = 30的星是单词空格。按x顺序解码所有40颗星得到该句子。
恢复的消息
THE MONSTER ACTS ON THE MOONSHINE MODULE
解码器报告说(y - 30) / 5与整数的残差对每颗星都是0.00,并且结果输出是一个连贯的句子而非噪声。这两个属性共同证明了高置信度:40个独立值上的精确整数对齐在偶然情况下极不可能,而偶然对齐也不会拼出语法正确的英文。
被检查并排除为数据通道的特征
同一图像中几个看似合理的载体被测试并拒绝。报告这些很重要,因为它表明解码器区分了信号与装饰,而不是对任何看起来有意图的东西进行模式匹配。
星大小不携带消息
星星有四种大小类别(4、6、8和14像素),它们在星场中呈现松散的重复模式。将这些大小映射为2位符号没有产生任何结构化内容,因此解码器将它们视为装饰。
月亮倒影椭圆不携带消息
月亮下方的倒影椭圆宽度为48、60、40、64、52、58、46和52像素,垂直间隙随深度增大。该序列中没有干净的两级分割,也没有类似摩尔斯码的结构。在不同宽度下进行阈值处理会产生任意字节而非消息,解码器将其归类为一种无法解释的意义感,而非编码。
月亮陨石坑、云和树不携带消息
这些区域没有显示出值得解码的规律性。
解码实际如何执行,包括护栏
记录在工具机制方面与结果一样有趣。代理在沙盒Python环境中工作,使用PIL和NumPy,并提供了SciPy 1.18.1。工作流程经历了几个阶段:
- 基本分类将文件读取为800x500 RGB图像,磁盘上94,643字节,并确认了数组形状。
- 裁剪和放大月亮倒影、月亮、天空和树木区域需要多次尝试。一个早期的Bash调用嵌入了一个多行引用的Python程序,返回了路径验证警告而非图像输出,两次尝试将裁剪脚本写入/tmp被拒绝,因为未授予写权限。
- 代理通过heredoc管道到python3.13内联运行相同分析来适应,这成功了。
- 一个同时导入SciPy并运行版本检查的组合命令被阻止为需要批准的多操作命令,因此代理先将其拆分为单个版本检查。
- 星检测使用大小为15的中值滤波器作为局部背景估计,差异阈值为25,一个排除月亮区域(行150到270,列540到670)的掩码和一个排除天空以下所有内容的掩码,然后进行连通组件标记。
- 斑点过滤仅保留面积至少10像素且水平宽度不超过30像素的组件,将初始的49个斑点减少到形成通道的40颗星。
一个值得标记的准确性细节:记录中的权限提示是写给"Claude"的("Claude请求写入/tmp/scripts/crop.py的权限,但你尚未授予"),而帖子的框架将模型命名为Fable 5.1。来源没有调和这两个名称,因此不应假设它们之间的关系。
为什么消息文本是一个看起来刻意的选择
短语"THE MONSTER ACTS ON THE MOONSHINE MODULE"指的是魔群月光,一个真实的数学领域,其中魔群作用于月光模块。一个产生语法正确、领域连贯且术语正确的句子的解码器,比一个产生看似合理字母串的解码器提供了更强的意图证据。
Hacker News讨论:令人印象深刻的技巧还是琐碎的?
179点的Hacker News线程(60条评论)分为两个明显的阵营,怀疑者更多。
怀疑论者的解读:这是最小努力编码
最常见的批评是将一个坐标量化为5像素桶大约是最简单的方案,因此它很少说明模型是否能够对抗性地隐藏信息。
老实说,这感觉像是表演性的。我的意思是,如果模型真的试图/被指示以只能被另一个LLM检测到的方式颠覆,它会做比这复杂得多的事情。基本上是最小努力编码。一般来说,模型被微调为不隐藏消息。我不认为这真的告诉你关于对抗性场景的任何信息。
第二条批评线索是图像对人类眼睛来说无论如何看起来很奇怪。正如一位评论者所说,一个具有如此"怪异"建筑的图像即使不阅读文章也会引起怀疑,编码器可能可以更微妙。其他人指出存在更密集和更微妙的图像隐写技术,其中许多从多年的夺旗竞赛中已知。
有趣变体的论点
几位评论者认为,只有当通道是模型可读但人类不可读时,演示才有趣。有人这样框架:真正有趣的是,如果模型在非常正常的输出(图像、文本或音频)中编码隐藏消息,人类无法弄清楚但另一个模型可以。
一条相关评论给出了同一线程中的一个具体反例。一位评论者报告通过肉眼解码了一个摩尔斯码图像,但指出渲染图像中点划重叠,这使得人类阅读困难,尽管模型读取SVG源不受重叠影响。他们的结论很直率:如果通道不是为人类设计的,你不如使用32位浮点坐标的最后8位。
表演性通道的反驳
至少一位评论者报告了在直接指示下的相反行为:当被要求将短语"Look ma, no hands!"不可见地编码到字母"I"的SVG中,同时保持源代码无注释、元数据、隐藏文本、base64、明显字符代码和不可见文本时,模型标记了请求并拒绝完成。
我试图问opus 5.5这个,它标记了它并且不会完成请求...创建一个普通的黑白字母"I"图像的SVG,其中包含一条秘密消息,说:"Look ma, no hands!"...编码应该使用SVG的普通视觉或结构属性...只返回SVG。
这是一个单一轶事,但它反驳了模型渴望构建隐蔽通道的框架。
"这不是视觉技巧"的框架
一条评论认为使用图像是偶然的。在这种观点下,模型正在做通用的消息编码/解码到媒介中,选择高信噪比的方案族(量化、富余编码),然后选择在该媒介中稳健的特征。稳健性取决于媒介,因此模型选择与给定内容相关的强编码。同一位评论者将此框架为模型跨任意媒介推理信息密度的涌现属性,而非计算机视觉技巧。
比检测更重要的问题:擦除
线程中最尖锐的技术点不是关于解码,而是关于破坏。如果模型在你不知道编码的输出中隐藏了标识符或消息,什么变换能可靠地擦除它?位置和颜色的小扰动应该能抹掉像上述5像素量化这样的通道,但开放的担忧是某些编码对那种扰动具有稳健性。
这种重新框架对任何在模型生成媒体上构建管道的人都很重要,因为它将"我们能发现消息吗?"替换为"我们能保证移除吗?"——对于像这样的通道,这是一个有更易处理的工程答案的问题。
审计模型生成媒体的实用笔记
- 在渲染像素之前检查源格式。SVG是一种描述格式,因此粗心的观察者可能假设文本可以简单地塞入注释;有趣的情况是几何本身是通道,例如线条艺术中节点的位置。
- 量化是线索。寻找坐标值折叠到规则网格上,例如每颗星的y坐标精确落在5的倍数上。
- 排序是通道的另一半。序列需要定义的读取顺序,沿一个轴的单调、近乎均匀的间距是提供顺序的自然方式,无需任何显式标记。
- 消息存活不需要类似Reed-Solomon的稳健性。这个通道在构造上是脆弱的,这就是为什么擦除问题在这里有实际答案,尽管在一般情况下仍然开放。
- 经典图像隐写术的引用先例OutGuess是一种JPEG域技术,不是这里工作的机制;本讨论中的图像是SVG和PNG。
可用来源未确立的内容
抓取的来源详细重现了一个图像(带星场的夜景)的解码。线程中的评论提到了其他图像,包括一个摩尔斯码图像和一个包含建筑的图像,但来源不包括那些的完整解码记录。因此,从这一单一示例推广到"模型可以在图像中可靠构建隐蔽通道"不受手头材料支持。
底线
Fable 5.1的隐藏消息通过将40颗星位置应用5像素垂直量化编码,从左到右的星顺序作为读取顺序,使用27符号字母表(空格加A到Z)。一个使用工具的解码器以零数值残差和高置信度恢复了句子"THE MONSTER ACTS ON THE MOONSHINE MODULE",并明确排除了星大小、倒影椭圆宽度、陨石坑、云和树作为载体。Hacker News的反应大多是认为该方案琐碎而非令人担忧,更有趣的未解决问题是是否存在模型可读而人类不可读的通道,以及未知编码能否被可靠擦除而不仅仅是检测到。