问答
技术

如何评价 iYouPort 文章里的使用零宽度字符规避审查?

libgen 图书馆革命
libgen  ·  2020年9月18日 天堂应该是图书馆的模样。一个阅读诗歌的人要比不读诗歌的人更难被战胜。创造是一种拯救。创造拯救了创造者本身。

原文

以下是摘要:


使用零宽度字符,您可以将秘密信息隐藏在纯文本内部,从而更安全地传递秘密消息;绕避关键字审查。甚至可以弄清楚谁在网上泄漏文件。一定程度上这对吹哨人不利。

Unicode 是文本的标准化编码格式,特别是UTF-8,大多数Web浏览器都使用 Unicode。因为 Unicode 需要支持世界上几乎所有书面语言,所以存在一些违反直觉的字符,例如零宽度不连接符零宽空格。例如前者在波斯语中使用,因为需要显示正确的印刷体形式。

于是您可以使用零宽度字符在任何未对零宽度字符做过滤的网页内插入不可见的隐形文本。

这个思路是选择两个任意的零宽度字符并将它们指定为1和0,然后将任何消息拆分为单个字符,然后以零宽度字符(分别为1和0)将其编码为二进制形式,从而将其隐藏在纯文本中。

最佳实践是在单词之间的空格中添加零宽度二进制码。否则,拼写检查倾向于认为该单词拼写错误。

您可以用它来做什么?

在普通的文本中隐藏信息的能力本身就非常有用,您可以传输机密信息在队友之间、或者简单地绕避关键字审查,比如在微信上。但使这种技术真正精妙的是,它能在重新格式化后存活下来,并且,无论文本被复制粘贴到哪里,秘密消息都能携带。隐藏的字符在 nano 等文本编辑器中都不会暴露。

这应该是秘密通信的首选方式。

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

当必须确保两个接头人之间没有直接的联系时,这是一种交换信息的有益方法

选项1:在线直接创建零宽度消息

要开始发送零宽度信息,打开 Steganographr 页面,在 "私密信息" 字段中粘贴您的(可以是加密的)信息,在 "公开信息" 字段中粘贴一个极为普通的或完全不重要的信息,然后点击 "Steganographize"。

然后,您将能够复制新生成的消息并按需进行处理。只需将其复制并粘贴,它仍将完整保留隐藏在其中的秘密消息。

当接头的人需要显示隐秘消息时,同样可以使用 Steganographr。滚动到底部,将文本粘贴到 "公开私密消息" 的字段中,然后单击 "Desteganographize"。

但是,这里的一个问题是,我们必须相信该网站不会保存这些消息或借此伤害你。幸运的是,Steganographr 开源,因此您可以简单地将其复制并托管在自己的网站上。 (此处 @thphd

尤其是,您可以编辑源码。要进行更改只需要将十六进制值更改为所需的新字符即可。

菜单
  1. thphd   2047前站长

    for fun,实际上没什么用

    要配合专门的软件才能查看的话,就没有意义了,因为VPN也是【专门的软件】,假如大家都懂得装【专门的软件】,肯定装VPN,而不会装一个Steganographr,想想都觉得蛋疼。

    edit: 我知道是网站。只是比喻,毕竟你要在手机电脑上用你肯定需要一个专门的、类似stegano的软件,不可能每次都手动复制黏贴。

  2. libgen 图书馆革命
    libgen   天堂应该是图书馆的模样。一个阅读诗歌的人要比不读诗歌的人更难被战胜。创造是一种拯救。创造拯救了创造者本身。
  3. 爱狗却养猫 饭丝
    爱狗却养猫  

    很有意思。不过该网站明文不支持中文(会出现乱码),所以可以英文藏中文信息,却不能中文藏信息。

    对于这种方法是否能常规性地规避审查,我同意thphd的说法,其好用性不如翻墙软件。不过我认为在某些特殊情况下是有用的,例如可以用来在被监视或有关键词审查的公开平台上传递私密信息。当然前提是对方已经通过某渠道知道了哪个消息是私密信息、而且知道解读方法;既然如此那为什么不直接通过那个渠道传达信息呢?所以特殊情况还要加一个限制,就是双方原先的交流渠道无法使用,这是一个backup plan。

    最后开个玩笑:pincong.‌‌​​‌​⁠‌‌​​​​⁠‌‌​‌​​⁠‌‌​‌‌‌⁠‌​‌‌‌​⁠‌‌​‌‌‌​⁠‌‌​​​​‌⁠‌‌​‌‌​‌⁠‌‌​​‌​‌⁠‌‌‌​‌‌‌‌⁠‌​‌‌‌‌​​⁠‌​​​‌‌​​⁠‌‌‌​‌​​​⁠‌​​​​‌‌‌⁠‌​‌​‌​‌​⁠‌‌‌​​‌‌‌⁠‌​​‌​‌​​⁠‌​‌‌​​​‌⁠‌‌‌​​‌​​⁠‌​‌‌‌​‌​⁠‌​‌‌‌​‌​⁠‌‌‌​​‌‌‌⁠‌​​‌‌​‌​⁠‌​​​​‌​​⁠‌‌‌​​‌‌‌⁠‌​‌‌​​‌​⁠‌​‌‌‌‌‌​⁠‌‌‌​​‌‌‌⁠‌​‌​​‌​‌⁠‌​​‌‌‌‌​⁠‌‌‌​‌​​​⁠‌​‌​​‌‌‌⁠‌​​‌​​‌​⁠‌‌‌​‌​​​⁠‌​​‌​​​​⁠‌​‌‌‌‌​‌⁠‌‌‌​​​‌‌⁠‌​​​​​​​⁠‌​​​​​‌​rocks

  4. observerIE 图书馆革命
    observerIE   加入图书馆革命,星星之火,可以燎原

    let's go‌‌‌​‌​‌⁠‌‌‌​​​​⁠‌​​​​​⁠‌‌‌​​‌​⁠‌‌​‌​​‌⁠‌‌‌​​‌‌⁠‌‌​‌​​‌⁠‌‌​‌‌‌​⁠‌‌​​‌‌‌⁠‌​​​​​⁠‌‌​​​​‌⁠‌‌‌​‌​​⁠‌​​​​​⁠‌‌​​​‌⁠‌‌‌​​​⁠‌​​​​​⁠‌‌‌​​‌‌⁠‌‌​​‌​‌⁠‌‌‌​​​​⁠‌​​​​​⁠‌‌​​‌​⁠‌‌​​​​⁠‌‌​​‌​⁠‌‌​​​​ back 我实验一下,看看这个会不会在源码中泄漏

  5. observerIE 图书馆革命
    observerIE   加入图书馆革命,星星之火,可以燎原
  6. 爱狗却养猫 饭丝
    爱狗却养猫  

    @observerIE #14672442 复制黏贴最后一行到Steganographr。有感于品葱将2047设置为敏感词。

  7. Resistance 技术宅
    Resistance   编程随想读者|会点IT技术|爱好信息安全|关注隐私保护

    这是文字版的隐写术。

  8. 沉默的广场  

    零宽度字符可以用来规避敏感词审查。举个例子,如果【支那】【台湾同胞】是敏感词无法显示,用混合了特殊字符的字串就可以正常显示(到目前有效):

    支̀那
    台[img]​[/img]湾[img]​[/img]同[img]​[/img]胞
    

    《零宽字符在规避品葱审查中的应用》

    ==================================

    上面是玩笑+吐槽。个人认为,要想推广反审查技术,易用+对用户透明很重要。换句话说,能够广泛普及的反审查技术,除了技术层面没有问题,还必须必须零学习成本,让用户感知不到隐写/加密的存在。

    举个反例,端到端加密是非常强大的反审查技术,但是GPG作为老牌加密软件,它在【对用户透明】这一点上做得很差。且不说学习GPG的高成本,即使掌握了GPG的使用,对于日常的聊天,手动复制粘贴信息,再加密/解密也显得有些偏执。这就是到目前为止GPG仍然在小众圈子里的原因。

    另一个反例是Telegram的端到端加密功能。默认情况下,Telegram不是端到端加密的,要想启用端到端加密,必须手动在界面里选择(只需要一步操作)。但是即便如此简单,也很少会有用户打开加密选项。

    很多反审查项目注重技术,但是和人交互上做得很差。因此,要想普及反审查技术,软件必须做到在默认情况下就足够安全,否则推广会比较困难。