编码机

怎么安全地传小纸条

发布时间:2023/1/31 2:54:43   

说起密码,我们马上会想到詹姆斯·邦德或者《柏林谍影》。但是,几乎所有人都会在日常生活中用密码进行一些完全正常、合法的活动,比如使用网上银行的密码。我们和银行之间的通信是加密的,信息被编写成密码,因此犯罪分子无法读取,也不能接触到我们的钱——至少不那么容易。在英语字母表里有26个字母,实际的密码也经会常用到26。例如,德国人在第二次世界大战时使用的恩尼格玛密码机,这种机器采用的转子有26个档位,档位和字母相对应。所以,这个数为密码学提供了一个合理的切入点。不过,26在密码领域中并没有特殊的数学性质,类似的原理也可以用于其他数。

凯撒密码

1

密码的历史至少可以上溯到公元前年左右的古埃及。尤利乌斯·凯撒在秘密信函里也使用过一种简单的密码,被用于传递军事机密。凯撒的传记作者苏埃托尼乌斯写道:“如果他有什么秘密要说,就会把它写成密码。他会更改字母表上的字母顺序,令人无法看出它是哪个单词。如果有人想破译它们并得到本意,就必须把字母表上的第4个字母给换掉,那么A对应的就是D,其他字母也类似。”

在凯撒生活的那个时代,字母表里没有字母J、U和W。但我们仍使用现代字母表来解释,因为我们更熟悉它。凯撒的思路是,先按常规顺序把字母表写下来,然后在它下面写一个移位的字母表,有可能如下所示:

现在,你可以把每个常规字母表上的字母对应到移位字母表上相同位置的字母,从而加密消息。也就是说,A变成E,B变成G,以此类推。就像这样:

想要破译消息,你只需看一下字母表之间的反向对应关系:

为了制作一种将字母绕在环上的实用机械装置,我们把字母放置在一个圆环或圆筒上(图1)。

图1:绕在环上的实用装置

凯撒密码过于简单,因此并不安全,后面会解释其中的原因。但它包含了一些对所有密码(编码系统)都通用的基本概念(图2)。

明文:原始信息。密文:原始信息加密后的版本。加密算法:用来把明文转换成密文的方法。解密算法:用来把密文转换成明文的方法。密钥:加密和解密文本所需的秘密信息。

在凯撒密码里,密钥就是字母表移位的步数。加密算法是“用密钥将字母表移位”。解密算法是“用密钥将字母表反向移位”,也就是减去相同方向的移位步数。

图2:密码系统的一般特征

在这个密码系统里,加密密钥和解密密钥之间关系密切——一个是另一个的负数,也就是说,它们的移位步数相同,只不过方向相反。在这种情况下,知道了加密密钥实际上就知道了解密密钥。这类系统被称为对称密钥密码。

凯撒显然使用了更复杂的密码——幸好他是这么做的。

1.1

数学公式化

利用模运算,我们可以通过数学表示凯撒密码。在这里,模数等于26,即字母表上字母的个数。计算和平时一样,但需要加上一条:任何26的倍数都可以替换成0。这正是我们需要的,让移位的字母表“绕一圈”后从头开始。现在,用数字0~25代表字母A~Z,即A=0、B=1、C=2,以此类推,直至Z=25。把A(位置0)移动到F(位置5)的加密过程就是数学规则

n→n+5mod26

请注意,U(位置20)成了20+5=25mod26,它代表Z,而V(位置21)成了

21+5=26=0mod26

它代表A。这说明了数学公式是如何确保字母表正确地绕圈的。

解密过程也有类似的规则:

n→n-5mod26

因为n+5-5=nmod26,所以解密把加密还原了。更一般地,当密钥为k时,意味着“向右移动k步”,于是加密过程的规则成了

n→n+kmod26

而解密的规则是

n→n-kmod26

把密码转换成数学语言的优点在于,我们可以用一种精确的方式来描述密码,并分析它们的性质,同时还不必考虑字母本身。一切都是用数字表示的。我们也可以考虑其他符号,如小写字母a、b、c……,以及标点符号,还有数字。只要把26换成某个更大的数,然后一次性确定如何分配这些数就行了。

1.2

破解凯撒密码

凯撒密码非常不安全。如前所述,它只有26种可能性,因此你可以穷尽所有可能,直到某个解密消息看起来有含义。还有一种名叫替换码的变体也很脆弱,虽然这种编码会打乱字母表,而不只是移动。这样一来,就产生了26!种编码,这个数非常大。然而,利用简单方法就可以破解所有这类编码。对某种给定的语言来说,某些字母会比另一些更常见(图3)。

图3:在典型的英语文本里,字母出现的频率

在英语里,最常见的字母是E,它大约占全部出现频率的13%;接下来是T,大约是9%;再往下是A,大约是8%,等等。如果你截取了一段很长的密文,并猜测它是通过打乱字母表的方法生成的,那么就能计算所有字母的频率。由于文本各式各样,因此它们或许并不能和理论值精确地吻合。但是,比方说,如果在密文里的字母Q出现得比其他字母更频繁,那么你可以试着用E代替Q。如果接下来最常见的字母是M,那么试试看用T代替M结果会怎样,以此类推。当然,你还可以微调它们的顺序。即便如此,你需要尝试的可能性也会少很多。

例如,假设部分密文如下:

XJMNQXJMABW

你发现在整个密文里,频率最高的3个字母依次分别是Q、M和J。用E代替Q、T代替M、A代替J,并把其他地方留白后得到:

-AT-E-AT--

不难猜测这条消息实际上是

MATHEMATICS

如果有更多密文,你很快就会发现它的含义,因为你已经可以猜测X解码为M、N解码为H、A解码为I、B解码为C,而W解码为S。如果另一段密文是

WBAQRBQHABMALR

那么你可以试着把它解密成

SCIE-CE-ICTI-

进而猜它应该是

SCIENCEFICTION

出现两次的N更加有助于确认你的猜测。现在,你知道N、F和O分别是由什么字母加密的了。整个过程很快,甚至通过人工处理也能快速破解编码。编码方式有成千上万种。破解编码的过程就是在不知道算法或密钥的情况下,找到如何解密消息的方法。这一过程依赖于编码本身。在现实中,一些编码方法破解起来非常困难,因为密码学家们在拥有足够的信息进而尝试破解编码之前,密钥会保持不断变化。第二次世界大战期间,人们使用“单次密本”来实现这一点:从根本上说,它需要一本有许多复杂密钥的记事本,每个密钥只用于一条短消息,随后便马上被销毁。这类方法的最大问题是,间谍们必须带着密码本到处跑——如今某些电子小配件也有相同的功能,而密码本可能会在他们的私人物品中被发现。

恩妮格玛密码机

2

在第二次世界大战期间,德军使用的恩尼格玛密码机是最著名的密码系统之一。在英国布莱切利庄园工作的数学家和电子工程师们破解了恩尼格玛的编码,而这些人中最出名的就是计算机科学先驱——艾伦·图灵。他们得到了一台可以使用的恩尼格玛密码机,为完成破解任务带来了极大的帮助。它是由一组波兰密码学家在年提供的,当时,这些波兰专家已在破译恩尼格玛编码方面取得了重大进展。德国人还有一些别的编码也被破解过,其中包括更复杂的洛伦兹密码,但破解这个编码时并没有用到实体设备。当时,在拉尔夫·特斯特的领导下,一个密码分析小组从设备发送的消息里推测出了洛伦兹密码的可能结构。接着,威廉·图特灵光一闪,向破解编码走出了第一步:他推测出与设备运行方式有关的重要信息。此后,这项工作的进展大大加速。实际上,破解这种编码用到了一台电子设备,它就是由托马斯·弗劳尔斯领导的团队设计和建造的“巨人”计算机(Colossus)。事实上,“巨人”计算机是为某项特定任务而设计的早期电子计算机之一。

恩尼格玛密码机包括一个用于输入明文的键盘和一系列转子,每个转子都有26个档位,档位和字母表上的字母相对应(图4)。早期的密码机有3个转子,后来被扩展成一组5个德国海军甚至用到了8个,但使用者每天只选用其中的3个。转子的作用是,在每输入一个新字母时,打乱明文字母的方式就会改变。确切的方法很复杂,详见:



转载请注明:http://www.aideyishus.com/lkgx/3105.html

------分隔线----------------------------