轻松入门:古典密码学的艺术之旅


最近专业课在上密码学,密码学是一门非常有魅力的课程,所以有了这篇文章。

轻松入门:古典密码学的艺术之旅 😊

密码(Cryptology)是一种用来混淆的技术,它将正常的、可识别的信息转变为无法识别的信息。

一种学科的发展从简单到复杂,越来越完善,这是符合事物发展规律的,密码学也正是这样。而不得不说密码学真是一门深奥的学科啊(内心OS:真的要把数学要学好才能深刻理解!),而古典密码学是密码学中最简单的内容,也是最有趣的部分。(毕竟用我们现在的知识和技术水平看以前的密码学那确实是吊打古人几百年)。

一:密码学的三个发展阶段

密码学发展有三个阶段:古典密码学 、近代密码学和现代密码学。

密码学分类(按照发展阶段来分) 英文 使用阶段 难易程度
古典密码学 Classic cryptography 从古代到1840年,长达上千年。
近代密码学 一般指1840-1949年,通过机械或电动设备实现的加密方式。(二战里面很多都是近代密码) 中等
现代密码学 Modern cryptography 1949-至今
1949年香农发表《保密系统的通信理论》(Communication Theory of Secrecy System),标志着现代密码学的开端。

古典密码学和现代密码学 两者的主要差别在于计算机的使用,一般来说,古典密码学是基于字符的,而现代密码学是基于二进制位

现代密码学则起源于20世纪末出现的大量相关理论,这些理论使得现代密码学成为了一种可以系统而严格地学习的科学;而古典密码不可以,它只能作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧。通过了解古典密码加密方法的工作原理和特点,也可以帮助我们更好地理解现代密码学的原理和应用。

image-20240228221625791

二:古典密码学

1:背景与重要性

军队历来是使用密码最频繁的地方,军队中保护己方秘密并洞悉敌方秘密是克敌制胜的重要条件。所以很多很多我们现在能够看到的历史遗留的古典密码都是与军队政治相关。

比如虎符(虎符分为两半,一半放在朝廷,另一半由在外的将帅保管。朝廷派来的使者,需携虎符验合,才可调兵遣将。虎符一般由铜、银等金属制成,背面刻有铭文,以示级别、身份、调用军队的对象和范围等。),这就是古代的身份验证了。

image-20240228221823207

比如军队通信(军队分开行动后,如相互之间不能通信,就要打败仗;如果能通信但不保密,则也要被敌人暗算。)的隐写术(用含有某种化学物质的液体来书写,收信者用特殊方法使文字显现出来,如矾书),我们现代的隐写术也有异曲同工之处,之后的文章中也会提到。

image-20240228222859308

比如国外的斯巴达棒需要借助具体的媒介进行解密后传递消息。斯巴达棒由一条皮带和一根木棍组成。 在展开时,皮带只是一串随机字符,但如果缠绕在一定大小的木棒上,字母会对齐成单词。斯巴达棒的加密原理属于密码学中的“置换法”加密,因为它通过改变文本中字母的阅读顺序来达到加密的目的。

image-20240228222929169

还有很多很多其他的。。

2:古典密码主要的两种加密方式:代换和置换

古典密码学主要是指以字符 “代换”(Substitution)和“置换”(Permutation)的主要加密方式。(也有把这两个加密方式混合一起使用的密码,现代密码中也有体现,古代人的智慧依然在闪烁)

代换密码(又叫替换密码)的原理是使用替代法进行加密。构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组。例如,明文字母a、b、c、d,用D、E、F、G做对应替换后形成密文。其分为单表代换密码和多表代换密码。

置换密码(又叫移位密码、换位密码)是一种通过变换矩阵大小选出的顺序组合,而密钥仅仅是便于记忆。因此,置换密码比较简单,经不起穷举攻击(穷举攻击无视顺序),但值得注意的是,如果把它与其他密码技术混合应用,也是可以得到相对安全且高效的密码。

古典密码 具体密码
代换密码/替换密码 凯撒密码、摩斯密码、培根密码、培根密码、维吉尼亚密码、栅栏密码、仿射密码等
置换密码/移位密码/换位密码 斯巴达棒、棋盘密码、列置换密码、周期置换密码等

2.1:置换密码

通过打乱明文(通常是字符或字符组)中的各字符所处的相对位置而实现加密。

2.1.1:斯巴达棒(Scytale)

斯巴达棒又称为密码棒,它由一条皮带(带状物)和一根木棍(圆柱体)组成。将写有明文信息的皮带缠绕到木棍外侧后观察木棍,即可得到字母被重新排列的密文。

实践:

将明文信息 WE ARE DISCOVERED(意为:我们被发现了)用斯巴达棒密码进行加密,设置木棍(圆柱体)一周能容纳五个字母。

明文信息:
WE ARE DISCOVERED
——————————————
WEARE
DISCO
VERED
——————————————
WDV EIE ASR RCE EOD
密文为:WDVEIEASRRCEEOD
2.1.2:栅栏密码(Rail Fence Cipher)

栅栏密码又称篱笆密码。明文向斜下方写入假想的栅栏和连续的“轨道”上,触底时向斜上方继续书写,如此反复。最后按行读取,形成密文。

实践:

将明文信息 WE ARE DISCOVERED FLEE AT ONCE(意为:我们被发现了,立即撤退)用栅栏密码进行加密,设置使用三条“轨道”加密。

明文信息:
WE ARE DISCOVERED FLEE AT ONCE
——————————————-------------------------------------
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
——————————————-------------------------------------
WECRL TEERD SOEEF EAOCA IVDEN
密文为:
WECRLTEERDSOEEFEAOCAIVDEN

2.2:代换密码

代换密码不改变明文中各字符的位置,但会改变字符本身。代换密码按照(同一个字母在加密时是否完全是被同一固定的字母代换)可分为单表代换密码和多表代换密码。

2.2.1 棋盘密码(Polybius )

棋盘密码是利用波利比奥斯方阵(Polybius Square)进行加密的密码方法。5行5列的方阵用来排列26个字母(其中I和J在同一格),这样就可以用某个字母对应的行列数表示它,达到加密目的。

棋盘密码是一种查表加密法,采用矩阵排列方法进行加密:棋盘密码通常有两个密码表,大写字母和小写字母分别都有一个密码表。

PS:其实行列密文均可自己设计,棋盘序列也可自行设计。(DIY出来还有电脑棋盘密码、ADFGX棋盘密码、ADFGVX棋盘密码等等,反正很多变形,但是万变不离其宗。)

下面的两个密码表,棋盘序列都是ABCDEFGHIJKLMNOPQRSTUVWXYZ。

小写字母的密码表

本表中:i和j视为同一个字,使字母数量符合 5 × 5 格。

1 2 3 4 5
1 a b c d e
2 f g h i,j k
3 l m n o p
4 q r s t u
5 v w x y z

大写字母的密码表

本表中:i和j视为同一个字,使字母数量符合 5 × 5 格。

1 2 3 4 5
1 A B C D E
2 F G H I,J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

实践

将明文信息“WE ARE DISCOVERED”(意为:我们被发现了),根据上述的波利比奥斯(Polybius)棋盘密码表进行加密:

明文:
WE ARE DISCOVERED

密文:
5215 114215 14244313345115421514
2.2.2:培根密码(Bacon‘s Cipher)

image-20240228230350620

培根密码:将明文中的每个字母转换成一组五个英文字母,即可得到密文。它有个特点是密文只存在字母A和B。

培根通常有两种不同的转换规则,一种为即I与J、U与V使用相同的编码,一种为I与J、U与V都使用不同编码。

培根密码密码表:(这个是使用相同编码的加密表)

a   AAAAA   g     AABBA   n    ABBAA   t     BAABA
b AAAAB h AABBB o ABBAB u-v BAABB
c AAABA i-j ABAAA p ABBBA w BABAA
d AAABB k ABAAB q ABBBB x BABAB
e AABAA l ABABA r BAAAA y BABBA
f AABAB m ABABB s BAAAB z BABBB

例子

将明文信息“WE ARE DISCOVERED”(意为:我们被发现了),根据上述的培根密码表进行加密:

明文:
WE ARE DISCOVERED

密文:
BABAAAABAA AAAAABAAAAAABAA AAABBABAAABAAABAAABAABBABBAABBAABAABAAAAAABAAAAABB
2.2.3:摩斯密码(Morse Cipher)

摩斯密码(又叫做摩尔斯密码)是一种时通时断的信号代码,这种信号代码通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。

摩尔斯电码的数字有长码和短码,通常用长码,于中文电码中组成汉字则使用短码。

(PS:在港澳市民的身份证上中文电码还在使用)

密码表如下:

image-20240228232103320

image-20240228232203354

image-20240228232149146

实践:

将明文信息“WE ARE DISCOVERED”(意为:我们被发现了),根据上述的摩斯密码表进行加密:

明文:
WE ARE DISCOVERED

密文:
.--/./.-/.-././-../../.../-.-./---/...-/./.-././-..
2.2.4:凯撒密码(Caesar Cipher)

凯撒密码的加密方式是明文中的所有字母都在字母表上向后(或向前)按照一个固定数目(密钥n)进行偏移后被替换成密文。

当偏移量是左移3的时候:

明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC

image-20240228233325082

实践:

将明文信息“WE ARE DISCOVERED”(意为:我们被发现了),根据上述的凯撒密码密文字母表进行加密:

明文:
WE ARE DISCOVERED

密文:
ZH DUH GLVFRYHUHG
2.2.5:维吉尼亚密码(Vigenère Cipher)

维吉尼亚密码是使用一系列偏移量不同的凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

为了生成密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。(密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。)

维吉尼亚密码表如下图:

image-20240228234307313

实践:

将明文信息“WE ARE DISCOVERED”(意为:我们被发现了),根据上述的维吉尼亚密码表(选择的关键词为:dongpo)进行加密:

明文:
WE ARE DISCOVERED

选择关键词dongpo并重复达到明文相同长度而得到密钥,密钥为:
dongpodongpodon

密文:
ZS NXT RLGPUKSUSQ

还有很多其他的古典加密方式没写到这篇文章里面,但是相信上面的内容如果都理解完了,无论你以后遇到的是哪种密码究竟是置换还是代换类型的随便能判断清楚了。

image-20240228235035799

古典密码的不足之处

古典密码学中,设计者主要考虑消息的保密性,使得只有相关密钥的人才可以解密密文获得消息的内容,对于消息的完整性和不可否认性则并没有进行太多的考虑。(由现代理念来看,信息安全的基本要素缺了2个,现在自然是不可再用了,都不安全了嘛)

信息安全5大基本要素 英文
机密性 Confidentiality
完整性 Integrity
可用性 Availability
认证性 Authentication
不可否认性 Non-repudiation

所以其实古典密码的诞生之初就存在不足之处,导致其可被破译。留着之后的文章中继续说。

image-20240228221505813

参考链接

https://www.oscca.gov.cn/sca/zxfw/2017-04/24/content_1011709.shtml 密码发展史之古典密码 by中国密码学会

https://mp.weixin.qq.com/s/0TCVvjCyFF6bBq8XlXZBwg 密码学的前世今生 by 成电本科生人文科普

https://zh.wikipedia.org/wiki/%E5%8F%A4%E5%85%B8%E5%AF%86%E7%A2%BC 古典密码 by 维基百科

https://zh.wikipedia.org/wiki/%E7%BD%AE%E6%8D%A2%E5%BC%8F%E5%AF%86%E7%A0%81 置换密码 by 维基百科

https://www.qqxiuzi.cn/bianma/qipanmima.php 棋盘密码加密解密


文章作者: highgerms
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 highgerms !
  目录