密码学原理-篇1:古典密码学

本文介绍了古典密码学的基本概念,包括恺撒密码、单表替换加密和多表替换密码(维吉尼亚密码)。通过案例分析了这些密码的加密与解密原理,探讨了其安全性及破解方法,如重合指数和卡西斯基实验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

密码学原理-篇1:古典密码学

关键词: 恺撒密码 单表替换密码 多表替换密码 重合指数


古典密码学之所以被称为古典,是因为区别于现代密码学,这些密码理论虽然很有价值,但是现在很少使用。因此,学习古典密码学,主要是学习前人设计密码的思路,和他们成功或失败的历史。

一、恺撒密码

在古典密码学中,一个很重要的实例就是恺撒密码

根据罗马早期纪传体作家盖乌斯·苏维托尼乌斯的记载,恺撒曾经用下述方法对重要的军事信息进行加密:

如果信件需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第4个字母置换第一个字母,即以D代A,余下的以此类推。

恺撒的加密策略很简单,就是把明文中的每个字母按照字母表顺序向后移动若干位,这个位数被称为偏移量 k k k;如果移动后超过了字母表中最后一位(对于英文字母表而言就是’Z’),就从A重新开始下一轮。

例如,在偏移量为3时,A将会替换为D,D将会被替换为G,Z会被替换为C;明文“HIT”会被转换为密文“KLW”。
k = 3 P l a i n t e x t A B C D ⋯ W X Y Z C i p h e r T e x t D E F G ⋯ Z A B C \begin{array}{c|lll} {k=3}\\ \hline {Plaintext}&{A}&{B}&{C}&{D}&{\cdots}&{W}&{X}&{Y}&{Z}\\ {CipherText}&{D}&{E}&{F}&{G}&{\cdots}&{Z}&{A}&{B}&{C}\\ \end{array} k=3PlaintextCipherTextADBECFDGWZXAYBZC
这种加密策略又被称为移位加密。以偏移量 k k k作为密钥加密明文 m m m,得到密文 E n c k ( m ) Enc_k(m) Enck(m),用公式可以表示为:
E n c k ( m ) = m + k m o d    26 Enc_k(m) = m+k\mod 26 Enck(m)=m+kmod26

而在解密时,将密文 c c c反过来向前移动偏移量 k k k即可得到明文 m m m,即以偏移量 k k k作为密钥解密密文 c c c,得到明文 D e c k ( c ) Dec_k(c) Deck(c)
D e c k ( c ) = c − k m o d    26 Dec_k(c)=c-k\mod 26 Deck(c)=ckmod26

移位密码在当时可能有些效果,但是其本质是不安全的,因为只需要花少量时间穷举偏移量就能破解出恺撒密码的明文。在设计加密算法时,为了避免发生类似的情况,需要遵守充裕密钥空间原则,即设计密钥强度较高的策略,避免被暴力破解迅速破译。

现在已经无法弄清恺撒密码在当时有多大的效果,但是有理由相信它是安全的。因为恺撒大部分敌人都是目不识丁的,而其余的则可能将这些消息当作是某个未知的外语。即使有某个敌人获取了恺撒的加密信息,根据现有的记载,当时也没有任何技术能够解决这一最基本、最简单的替换密码。现存最早的破解方法记载在公元9世纪阿拉伯的阿尔·肯迪的有关发现频率分析的著作中。

二、单表替换加密(Mono-Alphabetic Substitution)

与恺撒的移位加密相类似,单表替换加密也是逐个字母地加密明文。在加密时,将会按照某种无序的对应规则,并按照这个规则将明文每个字母替换而得到密文。
如原文是ABCDEFGHIJKLMNOPQRSTUVWXYZ,替换后为SDFGHJKLZXCVBNMQWERTYUIOPA,这二者之间没有信息关联,需双方各执一份对照表,才能完成解码。

移位加密和单表替换加密的共同点是都建立了从明文到密文的映射,而区别在于移位加密单纯地把每个字母都移动相同的偏移量,这个偏移量就是整个加密的密钥;而替换加密则将字母表打乱,以整个字母表排序作为密钥。替换加密以此建立了一个26!即403291461126605635584000000种可能的密钥空间,倘若使用暴力破解,即便每秒遍历10亿个密码,要遍历完需要将近120亿年。

替换加密可以说解决了密钥空间不足所导致的强度问题,但仍然能被较为简单地破解。无论其密钥如何,对于明文中的同一个字母,都有且仅有一个密文与其对应,也就是说原文中字母出现的排列规律将在密文中原封不动地出现。因此,可以使用原文的字母表所具有的统计学结果对替换加密进行破解。

例如,在上述的替换规则中,明文“APPLEPIE”将被替换为“SQQVHQZH",显然在这次加密中,明文具有三个相同字母的特征在密文对应位置中依然有体现。因此,对于明文的统计结果对密文仍然适用。这里列举英文中部分字母的出现概率(单位:%),可以看出在英文中,字母e的出现概率是最高的:

e 12.7 t 9.1 a 8.2 o 7.5 n 6.7 _ 6.4 d 4.3 c 2.8 w 2.4 v 1.0 k 0.8 z 0.1 \begin{array}{|cc|cc|cc|cc|} \hline {e}&{12.7}&{t}&{9.1}&{a}&{8.2}&{o}&{7.5}\\ \hline {n}&{6.7}&{\_}&{6.4}&{d}&{4.3}&{c}&{2.8}\\ \hline {w}&{2.4}&{v}&{1.0}&{k}&{0.8}&{z}&{0.1}\\ \hline \end{array} enw12.76.72.4t_v9.16.41.0adk8.24.30.8ocz7.52.80.1

此时,对于某一段单表替换加密后的密文,可以统计其中各个字母出现的次数,根据出现频度大小猜测其明文。例如对于以下密文:

LIVITCSWPIYVEWHEVSRIQMXLEYVEOIEWHRXEXIPFEMVEWHKVS
TYLXZIXLIKIIXPIJVSZEYPERRGERIMWQLMGLMXQERIWGPSRIH
MXQEREKIETXMJTPRGEVEKEITREWHEXXLEXXMZITWAWSQWXSWE
XTVEPMRXRSJGSTVRIEYVIEXCVMUIMWERGMIWXMJMGCSMWXSJO
MIQXLIVIQIVIXQSVSTWHKPEGARCSXRWIEVSWIIBXVIZMXFSJX
LIKEGAEWHEPSWYSWIWIEVXLISXLIVXLIRGEPIRQIVIIBGIIHM
WYPFLEVHEWHYPSRRFQMXLEPPXLIECCIEVEWGISJKTVWMRLIHY
SPHXLIQIMYLXSJXLIMWRIGXQEROIVFVIZEVAEKPIEWHXEAMWY
EPPXLMWYRMWXSGSWRMHIVEXMSWMGSTPHLEVHPFKPEZINTCMXI
VJSVLMRSCMWMSWVIRCIGXMWYMX

上图中出现频度最高的是‘I’,因此猜测其是在英文中概率最高的’e’。此外,发现有多组连续的"XLI",由于我们猜测密文中的’I’是明文中的’e‘,因此可以推测出密文"XLI"所对应的明文是"the"。随着推理的深入,解密出的明文的数量在逐渐增多,解密难度也在逐渐下降,直到最后完成该密文的解密。

CiphertextPlaintext
Ie
XLIthe
Ea
Rtatestate
atthattMZeatthattime
remarAremark

将替换的结果带回,最终破译完成的结果为:

Hereupon Legrand arose, with a grave and stately air,
and brought me the beetle from a glass case in which it
was enclosed. It was a beautiful scarabaeus, and, at that
time, unknown to naturalists – of course a great prize in
a scientific point of view. There were two round black
spots near one extremity of the back, and a long one near
the other. The scales were exceedingly hard and glossy,
with all the appearance of burnished gold. The weight of
the insect was very remarkable, and, taking all things
into consideration, I could hardly blame Jupiter for his
opinion respecting it.

《金甲虫》-- [美]埃德加·爱伦·坡

三、四种攻击模型

根据上述解密方法,不仅能破译出某密文的明文,还能列出对照表,得到该密文所采用的密钥。像这种只知道某一段密文来破解出明文和密钥的攻击,被称为Ciphertext-Only Attack(COA)。这是四种攻击模型中最单纯的一种,也是对新手而言最困难的一种。其余的三种分别为:

Known-Plaintext Attack(KPA)
在这种模型下攻击者可以得知某密文和其对应的明文;
Chosen-Plaintext Attack(CPA)
攻击者有能力得知任意一段明文的密文;
Chosen-Ciphertext Attack(CCA)
攻击者有能力得知任意一段密文的明文。

在这几种攻击模型中,COA和KPA模型由于攻击者只能被动地获得信息,因此被称为Passive Attack;而CPA和CCA中攻击者均可以主动地模拟密文或明文的输入,得到相应的解/加密结果,这种攻击被称为Active Attack。相比之下,Active Attack更加棘手,不过无论哪种模式,攻击者都无法预先得知密钥。本文之前提到的平移加密和单表替换加密,都可以被COA破解。

四、多表替换密码(Poly-alphabetic Shift Cipher,Vigenère Cipher)、卡西斯基实验(Kasiski’s Method)和重合指数(Index of Coincidence)

恺撒密码简单却不太安全,为了更好地为信息加密,古人发明了新的加密算法:维吉尼亚密码(Vigenère Cipher)。其特点就是不再单纯地打乱字母表来加密了,而是选用某一段字符串作为其密钥,并将密钥重复若干次直到长度与明文相同。

例如,用密钥“HAND”加密明文"ATTACKNOW",就要将密钥重复并得到密钥排列"HANDHANDH"。密钥排列得到的一串字母,每个字母都代表以该字母作为密钥将该位置的明文字母进行移位加密,从而得到密文。

p l a i n t e x t A T T A C K N O W k e y H A N D H A N D H c i p h e r t e x t H T G D J K A R D \begin{array}{||c|c|c|c|c|c|c|c|c|} \hline {plaintext}&{A}&{T}&{T}&{A}&{C}&{K}&{N}&{O}&{W}\\ \hline {key}&{H}&{A}&{N}&{D}&{H}&{A}&{N}&{D}&{H}\\ \hline {ciphertext}&{H}&{T}&{G}&{D}&{J}&{K}&{A}&{R}&{D}\\ \hline \end{array} plaintextkeyciphertextAHHTATTNGADDCHJKAKNNAODRWHD

明文第一位(A)对应密钥排列的第一位(H),而T在字母表中排第10位(A是第1位),就将明文的第一位字母(A)向字母表排序的后面移动9位,由于A在字母表中排第1位,移动完是第10位H,因此得到密文第一位字母(H);

明文的第二位(T)对应密钥排列的第二位(A),而A在字母表中排第1位,就将明文的第二位字母(T)向字母表排序的后面移动0位,由于T是第20位,于是得到密文的第二位字母(T);

明文的第三位(T)对应密钥排列的第三位(N),而N在字母表中排第14位,就将明文的第二位字母(T)向字母表排序的后面移动13位,由于T是第20位,20向后13位是第33位,而字母表中最后一位字母Z是第26位,因此得到新的循环中的字母表第7位,于是得到密文的第二位字母(G);

相较于逻辑推演生成密码,维吉尼亚密码还可以使用表格法生成密码。

表格法、卡西斯基实验重合指数部分请参考简书

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值