密码学/古典密码学
密码学有着悠久而丰富多彩的历史,从公元前一世纪的凯撒加密到20世纪。
古典密码学主要基于两个原则:置换和替换。
首先让我们看看置换,它指的是改变消息中字母的位置,比如简单的反向书写
Plaintext: THE PANEL IN THE WALL MOVES Encrypted: EHT LENAP NI EHT LLAW SEVOM
或者像更复杂的置换一样
THEPAN ELINTH EWALLM OVESAA
然后取列
TEEO HLWV EIAE PNLS ATLA NHMA
(额外的字母被称为填充符) 置换的理念不是随机化它,而是将其转换为不可识别的形式,并且可以使用可逆算法(算法只是一个过程,可逆的,以便你的通信者可以阅读信息)。
我们将在后面的章节中更详细地讨论置换密码,密码学/置换密码。
第二个最重要的原则是替换。也就是说,用一个符号替换明文中的字母(或单词,甚至句子)。俚语有时甚至可以成为一种密码(用符号替换你的明文),你是否曾经想知道为什么你的父母不明白你?然而,俚语不是你想要用来长期保存秘密的东西。在二战期间,有纳瓦霍族密码员在各部队之间传递信息。据我所知(请有人验证这一点),纳瓦霍语是一种非常独有的、几乎不为人知且未被书写的语言。所以日本人无法破译它。
即使这是一个非常松散的替换示例,只要有效就行。
最基本的一种加密方法是使用凯撒密码。它仅仅是将字母表移位几个字符,然后匹配字母。
替换密码的经典示例是移位字母表密码
Alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ Cipher: BCDEFGHIJKLMNOPQRSTUVWXYZA Cipher2: CDEFGHIJKLMNOPQRSTUVWXYZAB etc...
示例:(使用密码 2)
Plaintext: THE PANEL IN THE WALL MOVES Encrypted: VJG RCPGN KP VJG YCNN OQXGU
如果你第一次看到这个,它可能看起来是一个相当安全的密码,但实际上并非如此。事实上,它本身非常不安全。在1500-1600年代,它是最安全的(主要是由于许多人都是文盲),但一位名叫(老什么来着)的18世纪的人发现了一种方法来破解(找出隐藏的信息)他发现的所有这种类型的密码,他发现了频率分析。
我们将在后面的章节中更详细地讨论替换密码,密码学/替换密码。
在移位字母表密码或任何简单的随机密码中,密码中的同一个字母会替换消息中的所有同一个字母(例如,'A' 替换明文中的所有 'D',等等)。弱点在于英语使用某些字母的频率高于其他任何字母。'E' 是最常见的,等等。这里有一个练习,统计这篇文章中每个字母的出现次数。你会发现,在上句话中,有 2 个 'H',7 个 'E',3 个 'R',3 个 'S',等等。'E' 毫无疑问是最常见的字母;以下是其他频率 [频率表|http://rinkworks.com/words/letterfreq.shtml]。基本上,你尝试用不同的符号替换字母(最常见的用 'E',等等)。
Encrypted: VJG TCKP KP URCKP
首先寻找只有有限的单词选择的短语,例如 'KP',它可能是 at、in、to、or、by 等。让我们选择 in。用 'I' 替换 'K',用 'N' 替换 'P'。
Encrypted: VJG TCIN IN URCIN
接下来选择 VJG,它最有可能的是 the(由于 'the' 在正常句子中的高频率,检查前面几个句子)。
Encrypted: THE TCIN IN URCIN
一般来说,在长消息中更容易找到,明文是 'THE RAIN IN SPAIN'
我们将在本书后面的部分“第三部分:密码分析”中讨论许多不同的方法来“攻击”、“破解”和“解决”加密的消息,其中包括关于 密码学/频率分析 的更详细的部分。
更安全的加密是置换替换密码。
以上面消息的加密形式为例
Encrypted:VJG RCPGN KP VJG YCNN OQXGU
现在对它进行螺旋置换
VJGRC NNOQP CAAXG YUNGN GJVPK
消息从右上角开始,螺旋形到中心(同样,AA 是填充符)。现在取列
VNCYG JNAUJ GOANV RQXGP CPGNK
现在它更能抵抗频率分析,看看我们之前所做的事情,开始识别模式会产生
TNCYE HNAUH EOANT RQXEN CNENK
对破解密码的人来说是个问题。
绝大多数古典密码是“单字母的”——它们一次加密明文中的一个字母,并且每个明文字母被加密成一个相应的密文字母。
多字母系统是指密文单元的长度超过一个字符的系统。多字母系统的主要类型包括:[1]
- 双字母系统:每个明文字母对应 2 个密文字母
- 双数字系统:每个明文字母对应 2 个密文数字
- 三字母系统:每个明文字母对应 3 个密文字母
- 三数字系统:每个明文字母对应 3 个密文数字
- 单数-双数系统,也称为跨越棋盘系统:一些明文字母对应 1 个密文数字,其余明文字母对应 2 个密文数字。
- 双字母变体系统和双数字变体系统:多个密文值解码为同一个明文字母(同音替换密码)
- 音节方格系统:2 个密文字母或 2 个密文数字解码为一个完整的音节或一个明文字符。[2]
- ↑ Field Manual 34-40-2 "第 5 章:单字母多字母替换系统".
- ↑ "音节密码".