在普通的文本中隐藏信息

Tue 23 September 2025

在普通的文本中隐藏信息的能力本身就非常有用,您可以传输机密信息在队友之间、或者简单地绕避关键字审查。精妙的是无论文本被复制粘贴到哪里,秘密消息都能携带。隐藏的字符在 nano 等文本编辑器中都不会暴露。

你可以使用经典的间谍伎俩,在公共空间发布一篇文章、或某种类型的文本文档。例如,你可以在 Craigslist 广告中隐藏一条秘密信息,然后让一个单独的接收者或一群合作者定期检查当地的 Craigslist 广告,寻找特定的关键词。他们会知道如何检查其中是否存在隐藏的秘密信息。

使用零宽度字符,您可以将秘密信息隐藏在纯文本内部,从而更安全地传递秘密消息;绕避关键字审查。甚至可以弄清楚谁在网上泄漏文件。一定程度上这对吹哨人不利。 Unicode 是文本的标准化编码格式,特别是UTF-8,大多数Web浏览器都使用 Unicode。因为 Unicode 需要支持世界上几乎所有书面语言,所以存在一些违反直觉的字符,例如零宽度不连接符和零宽空格。例如前者在波斯语中使用,因为需要显示正确的印刷体形式。 

于是您可以使用零宽度字符在任何未对零宽度字符做过滤的网页内插入不可见的隐形文本。 这个思路是选择两个任意的零宽度字符并将它们指定为1和0,然后将任何消息拆分为单个字符,然后以零宽度字符(分别为1和0)将其编码为二进制形式,从而将其隐藏在纯文本中。 最佳实践是在单词之间的空格中添加零宽度二进制码。否则,拼写检查倾向于认为该单词拼写错误。

必须首先强调这点:如果您想要保证自己的信息安全,仅仅将信息编码成零宽度二进制码是不足以加密的。任何人只要有合适的程序,就可以轻松破译您的秘密信息。 您真正应该使用的是对称或非对称加密方案。如果只有一个目标人是预期的接收者,那么像PGP这样的非对称加密方案将最有效。但如果信息接收者是一群人,可能要使用对称加密。

也就是说,与其使用PGP加密零宽度的消息,不如在PGP加密的邮件中使用零宽度字符作为额外的验证层。 你可以使用两种方式来做到这点。 第一种方式是一封普通的邮件正文,而实际的信息隐藏在零宽度中。 另一种方式是,在第一句中隐藏特定的代码字,然后让响应者在他们的第一句中使用该代码字或一个响应代码字。 显然第二种策略更好。因为如果有人确实掌握了与您接头的人的PGP密钥,那么他们极有可能会想要寻找零宽度字符,当对方没有使用正确的代码字回应时,您就可以立即预知到危险。

稍微古老一点的用例是传统的金丝雀陷阱。如果您曾经读过任何神秘小说,那肯定能对这种陷阱的工作方式很熟悉。这是一种侦测情报泄露的方法,就是故意将不同版本的机密情报泄露给嫌疑人,然后观察信息的走向以判断泄密者究竟是谁。根据版本,您会知道哪个人泄漏了信息。 这是一种很经典的手段。众所周知,国会助理通过在提供给其他办公室和游说者的文件中故意使用拼写错误的单词或其他小的语法错误来泄露数据。 但是这样做的问题是,如果有人能掌握两个不同的版本,他们马上就会知道你要干什么了。这种情况下零宽度字符就可以派上用场了。 通过使用零宽度字符,一般人即使掌握了两个不同版本的文档或文本,也不太可能注意到那里面藏着什么;当然,如果有人通过截图或用打印机复印以泄漏信息,同样会被抓住。对于吹哨人来说,这是非常危险的 —— EXIF数据会直接指向你的设备,以及许多打印机采用的微点,这些微点可以唯一地识别打印的东西。 最后,零宽度字符可以用来改变 URL。不幸的是由于ICANN的规定,你不能注册一个零宽度字符的域名。不过,在本地网络的IDN欺骗中,它是相当有用的 —— IDN欺骗是钓鱼式攻击的手法之一。它利用国际化域名可以以 Unicode 字符命名网址的特性,通过同形异义字实现诱骗点击。

它也可以只用来破坏一个URL。下面是 GitHub URL 的例子。

https://github.com/holdTheDoorHoid https://github.com/hold​TheDoorHoid

Category: 待整理