二战期间破解纳瓦霍语有多难?

信息安全 加密 密码学
2021-09-04 11:17:32

众所周知,在二战期间,美国雇佣了美洲原住民,即纳瓦霍人,来“加密”他们的无线电通信。我前段时间(我不记得在哪里)读到他们的语言非常有效,并且在部署时被认为非常安全。确实如此,因为日本人从未破解过它。

另一方面,我正在阅读维基百科上的这个页面,上面写着

此外,还有更多的纳瓦霍人担任太平洋军队的密码员。他们制作的密码虽然​​在密码学上非常简单,但从未被日本人破解。

这让我想知道:他们的代码真的“密码学”非常简单吗?如果是这样,为什么日本人不破解它?

我的意思是我猜这种密码学方法一定有一些弱点,否则我们只会发明一种新语言(这相当容易,尽管有点复杂),而不是为 RSA、AES 等而烦恼。

你能对此有所了解吗?

2个回答

好问题。

我是美洲原住民,这对我们来说是众所周知的。我也有汉语和方言的经验。我会解释为什么我稍后会提到中文部分。

这是一个非常好的例子security through obscurity它一直有效,直到弄清楚为止。然而,与说英语的人相比,说纳瓦霍语的人太少了,以至于当时很难找到以母语为母语的人来学习。他们怎么会知道这是纳瓦霍语?这对他们来说听起来很陌生

虽然代码可能很简单,但很难找到人你这些代码。二战期间,美国的日本人被围捕并安置在拘留营中。任何同情他们的人都可能受到同样的惩罚。找到纳瓦霍叛徒的机会极低。


为什么加密比语言和方言更强?

关于加密,Thomas Pornin 等其他人可以比我更好地解释这一点,但我会尝试向您展示相似之处:

  1. 加密就像一种语言。这有点像将一个单词(或字符)转换为另一组高度不同的字符。使用适当的加密,A -> Z除非Z -> A您拥有key. 使用语言,您可以比较其他语言中具有相似含义的单词,并进行相应的翻译。有了语言,你key就是了解这些语言。

    使用适当的加密,您无法做到这一点。您无法将正确加密的文本放入解密例程并返回结果。不是没有钥匙。您需要密钥来解密它。使用哈希,您永远无法取回消息,只能验证它是否真实,但这些消息很容易受到碰撞攻击。

    这里有些例子:

    Pretend this is Encryption. The "key" to decrypting the 
    hidden message is to understand both languages. There is
    a second hidden message which requires deeper understanding.  
    
    [English]        [Chinese]
    Hello       ->   你好
    Alpaca      ->   草泥马
    

    在哈希(单向)的情况下,它可以像这样运行:

    [English]
    Bring potter to Naria. The Death Star is ready for our war against the Time Lords.
    
    [bcrypt]
    $2a$04$38oxoVSWS9A97nkHYvxyD.FoLh7wxnHFTI2bOvg8XKZ/hA29BPEgS
    

    使用哈希,您必须根据消息验证内容以查看它们是否匹配。这不是真正的加密方法,因为您无法返回原始消息。您最终也可能导致碰撞。

    在 AES 256 位(双向)的情况下:

    [English with key]
    Find Potter and bring him to Narnia. The Death Star is ready for our war against the Time Lords.
    
    [AES 256 encryption result]
    Uz+07JfiUU8MwjJVCCefLpH8hFlP2mrjMbO4ArP7IbYVbpDFulUNf6GKDYw9fELI0oeni1sdD81E191BownSDPHvAnQ6TJTB63lYEodUj+ZxXVEvSetL+ZwXEgI9zS/R
    

    你打算怎么破解这些?实际上,就像语言一样。不同之处在于破解真正的加密要困难得多。首先,映射语言和创建翻译器比映射加密数据库要容易得多。

    • 使用单向哈希,您必须匹配每个加密字符的每个字母组合,以“破解”它,但这不会将消息返回给您:它只会验证哈希是否匹配消息。对于许多散列算法,冲突在一段时间后成为一个问题。

    • 使用双向加密,只要您有密钥,您就可以取回原始消息。有点像语言。更大的密钥很可能会阻止暴力攻击,就像当前的技术一样,破解它们需要比宇宙的估计寿命更长的时间。对于语言,“关键”是理解两种语言。

    这就是为什么纳瓦霍人的“代码”是密码学的,相比之下“非常简单”。时代默默无闻的安全性使得它很难破解,但今天用现在的机器很容易破解。

  2. 使用晦涩的方言或语言可以添加额外的“加密”层(请注意,引号表示它不是真正的加密),但同样,this is security through obscurity不应单独依赖 , 。在加密的情况下,这些算法已经被受过良好教育的研究人员长时间测试为安全的另一方面,语言更容易学习。

    几乎任何白痴都可以学习一门语言。我是活生生的证据。受过良好教育的密码学家和数学家无法破解许多强大的加密形式。一般的外行有什么希望?


语言和方言的有用性

关于中提到的晦涩的方言#2,你今天仍然可以看到这样的事情。事实上,这并不是日本人因默默无闻而被安全部门控制的唯一例子

例如,中国军方依靠另一层“加密”(注意引号)——这真的只是security through obscurity——用他们的方言上次对华战争,日本因为不懂执行,没能“破解”温州话,被用来对付他们。

旁注:Phonemica等组织已做出相当大的努力来消除晦涩难懂的汉语方言。

今天依赖方言和语言的部分问题是黑客无处不在,所以很有可能有人会找到你的教学手册。计算机处于可以在很短的时间内自动消除语言或方言的好时机。另一方面,真正的加密几乎是牢不可破的。

一旦有人很快学会了你的语言或方言,你通过默默无闻的安全感就会很快消失。这已经使用了数千年,但在现代,它不会那么有效。


默默无闻的安全性完全无效吗?

尽管我已经说过了,但这确实增加了另一层在技术上难以破解的混淆。即使您的加密消息被破坏,您的攻击者仍然需要花费大量时间将其映射出来。虽然与适当的加密相比,它是孩子的​​游戏,但通过默默无闻的安全性确实有它的用途,但你不应该再完全依赖它。

除了@Mark Buffalo 的出色回应,还有另一个方面——

对于某些通信来说,延迟对手对数据的访问而不是拒绝它就足够了Code Talking 的“隐蔽安全”特性足以实现这一有限目标。

密码说话者,如太平洋战区的纳瓦霍人,以及最近波斯尼亚的韦尔奇燧发枪手,已被用于战术角色,其中传输的信息仅在很短的时间窗口内有价值。引用(小说书籍)Cryptonomicon,其中 Daniel Waterhouse 和 Rod cCmndhd 正在谈论将 Qwghlmians 用作 Code Talkers:

“不,你把中声门和额声门混淆了,”罗德说。

“老实说,”沃特豪斯说,“你能通过嘈杂的收音机区分它们吗?”

“不,”罗德说。“在广播中,我们坚持基本原则:‘进去把那个碉堡拿出来,否则我会杀了你。’ 还有那种东西。”

在第二次世界大战中破解密码学的成功涉及战争开始时数月或数周的工作。即使在战争结束时,破解一天密码的钥匙也可能要到几小时或几天过去后才会发生。当你预测像中途岛袭击这样的事情时,需要几个月的时间来计划和协调大量参与者,这很好(实际上,在当时,这仍然是一个惊人的壮举)。但是,即使在 Code Talkers 上使用了等效技术,传输的信息在“解密”时也将毫无用处——被告知移动到 XYZ 山的单位会在拦截之前很久就到达并宣布自己被翻译了。