永远不要以相同的方式拼写一个单词两次?

信息安全 密码学 混淆 监视
2021-08-27 08:42:53

很久以前,我在阅读有关文艺复兴时期密码的文章,我记得这句话

The Codebreakers 的作者 David Kahn 引用了 Giovanni Battista Porta 的话,他在 1563 年出版了一本著名的密码学书籍 De Furtivis Literarum Notis:

“他敦促在明文中使用同义词,并指出‘如果我们避免重复同一个词,也会给解释带来困难。’ 像阿根廷人一样,他建议故意拼错明文单词:'因为抄写员被认为无知比为发现计划而付出代价要好,'他写道。

这种故意拼错单词的想法让我很感兴趣。我想知道,这是一种可能对现代大规模监视系统有效的技术吗?

例如,在标记某些指定关键字的 NSA 风格的大规模监视系统中,是否可以使用故意拼写错误的单词(例如在电子邮件或 SMS 中)来避免检测?

the bobm is hdiden isnide teh parlaimnet biuldnig

这个想法是它的工作方式有点像 CAPTCHA,使信息在计算机上变得模糊,但仍然是人类可读的。这是现实的吗?

4个回答

所描述的是针对某些类别的已知明文攻击的保护。直到 1960 年代左右,大多数密码都容易受到这些攻击(例如,对 Enigma 密码的许多攻击都是基于知道或猜测明文的一部分)。现代密码有效地对此免疫:知道 AES 加密的消息是“黎明攻击”对于找出密钥是什么没有帮助。

使用同义词、拼写错误和替代拼写无助于击败关键字监视。该系统是自动化的,添加关键字很便宜。

如果我在 Google 上搜索“parlaimnet biuldnig”,我会看到:

显示议会大楼搜索结果而不是 parlaimnet biuldnig

所以不,这样的拼写错误不足以欺骗自动化系统或充当验证码。

然而,搜索“bobm”谷歌并没有给我一个更正,所以这个技术不一定完全没用。不过,我不会太看重它。

如果您参与了阴谋,那么您无论如何都可以同意暗语,并传输:

狐狸藏在鸡舍里

这不太可能通过对恐怖分子喋喋不休的广泛而浅薄的扫描来显现。我希望。如果我错了,我猜我的门就要被撞倒了。

所以建议的措施是:

  • 不可靠:您不知道您的文字是否可以成功自动更正
  • 适用性有限:您必须与您想秘密交谈的人交谈,但您不能使用强加密甚至是商定的简单代码。
  • 从某种意义上说,您正在“用尽”人类对您的消息进行纠错的一些能力,这对沟通渠道略有伤害。一开始越“错误”,意外错误就越有可能使接收者无法理解。
  • 可能会弄巧成拙。如果犯罪分子可以预见地过度使用它,那么当局可以开始评估通信的拼写准确性,并将过度或不典型的拼写错误视为怀疑的一个因素。对于那些在与他们的一些通讯员交谈时拼写非常好的人来说,扫除并不难,但在他们与其他人交谈时显然不是。尽管如果我是当局,我希望这种扫荡的第一次尝试基本上会出现在您和大多数青少年身上;-) 无论如何,该技术可能与它试图隐藏的词一样容易识别。

有了这些限制,它可能有一些有限的用途,严格地“不妨试一试”。

这与中文中相当普遍的做法相距不远,即使用双关语或其他发音相似的词来避免审查和监视:这并不能真正起到安全措施的作用,因为当局可以在一定程度上跟上,但它有时确实有所帮助。还有一段时间,“viagra”的拼写错误(包括使用同形字或类似同形字的“1”代表“i”)在垃圾邮件发送者中风靡一时,因为自动垃圾邮件过滤器使用简单的单词匹配。据推测,它在一段时间内有所帮助。

我会想象该语句的上下文是在密码的上下文中,其中在多个位置重复的单词会在每个位置产生相同的密码文本。如果我看到:

AER TEO ZRE SGR。AER FSD ZFD DFG。YTR ASD AER DSG。

语言分析会显示“AER”很可能是“The”,如果您从那里截获足够数量的加密消息,您可以开始从使用模式中确定其他单词并创建反向映射。另请注意,这使我们能够以零碎的方式确定密码的原始消息,而无需实际“破解”加密。作者的建议通过减少语言分析可能利用的重复/模式来帮助缓解这种技术。他们可能会找出“the”的反向映射,但如果您使用“the”的其他同义词,那么它在其他位置的用法就不会那么明显了。

现代密码,如果使用不当,实际上也有同样的弱点。

如果我加密诸如“狐狸跳过桥”之类的句子。使用密码块链接(CBC),那么第一个“the”的密码将不同于第二个“the”,因为先前加密的数据“瀑布”到每个下一个块,导致相同的值几乎不会产生相同的密码。因此上述攻击一般不适用。

但是,如果我使用较弱的电子密码本(ECB)方法,那么两个“the”的意志(技术上可以,请参阅评论)具有相同的密码文本,因此容易受到类似的攻击。 作为“模式化”ECB 的示例,请查看使用 ECB 加密的此图像:

http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#mediaviewer/File:Tux_ecb.jpg

如果使用不当,通过将长消息拆分为较小的消息,可能会将 CBC 分解为较弱的 ECB。在极端情况下,考虑是否将每个单词拆分为它自己的消息,为每个单词开始和结束一个新的 CBC 处理。网络上的某个人会看到一系列消息,并注意到其中一些消息是相同的,因为它们都在加密完全相同的消息。(这假设每个消息/单词使用相同的键/IV)

另一种情况是您对多个小消息使用相同的初始化向量。消息的开头和/或如果消息小于 IV 大小,则相同的消息(或至少相同的消息的开头)将具有相同的密文。我实际上已经看到人们犯了这样的错误:将他们的消息分块以便通过网络传输,然后分别加密每个块,这会产生这种类型的密码本漏洞。

因此,Mark 主要通过确定现代密码不易受到作者建议试图防止的攻击类型来识别。之所以会出现这种情况,是因为现代密码建议不要使用 ECB(电子密码本)。

但是,如果您以某种方式使用现代加密,导致它本质上是一本密码书,那么您可以通过听取作者关于不同同义词的建议来降低风险。因此,该建议有些适用,但与修复您的加密方法以使其不是密码书方法相比,这更像是一个弱创可贴。

为了解决您的一些修订/评论:作者所指的内容(对代码书漏洞的缓解保护),以及 NSA 标记某些单词的想法,实际上是两个完全正交的概念。前者处理代码破坏和防止代码破坏的保护。后者的假设是 NSA 已经访问了消息的明文,并且没有试图破坏任何类型的加密,而是简单地识别“感兴趣的消息”。

使用 ECB,“dog”和“puppy”将具有极其不同的密码文本,因此单词之间的任何相似性都会在加密后消失。如果在 ECB 加密消息中的 20 个地方使用了“dog”,那么它的密文将出现在 20 个地方。如果您改为使用包含 20 个不同单词的俚语列表来表示 dog,那么您将拥有 20 个不同的密码文本,并且它们之间的相关性并不明显。这是我相信作者想到的概念。

另一方面,作者建议的技术“可能”可以避免被“感兴趣的消息”扫描器标记,但与原作者建议该技术的原因截然不同。在这种情况下,该技术几乎没有效果,因为如果 NSA 使用的任何东西都达到了 Google 用于其搜索引擎的复杂程度,它很容易识别出相似的词和同义词。已经有很多算法可以分析两个单词之间的“距离”以识别拼写错误,当然也有现成的同义词列表。

在您选择的搜索引擎中输入您的示例。至少谷歌在改正相关词方面没有问题,Bing 甚至都改正了。

输入:

bobm is hdiden iside teh parlaimnet biuldnig

谷歌:

炸弹藏在国会大厦内

必应:

炸弹藏在议会大楼内

计算机已经非常擅长纠正错误的人类拼写。这种混淆可能有助于 - 某些算法 - 有助于抵御已知明文攻击,但它也引入了另一个潜在问题:

如果可以解密消息,则此类“随机”错误有助于识别作者。人类真的是糟糕的“随机数发生器”。因此,如果错误不是自动引入的,或者对话的每个成员都使用相同的错误(这会进一步削弱它),给定足够的消息,这将包含比内容更多的信息。