多表代换密码是以一系列(两个以上)代换表依次对明文消息的字母进行代换的加密方法,如明文字母序列为x=x1x2„,则密文字母序列为c=e(x)=f1(x1)f2(x2)„
多表代换密码分为非周期多表代换密码和周期多表代换密码两类。在非周期多表代换密码中,对每个明文字母都采用不同的代替表进行加密,是一种在理论上唯一不可破的密码,但由于需要的密钥量和明文信息长度相同而难于广泛使用。周期多表代换密码中,代换表个数有限且能被重复应用,大大减少了密钥量,常用的有维吉尼亚密码,博福特密码,滚动密钥密码,弗纳姆密码。
(1)维吉尼亚密码。它的构成由明文和密钥组成。明文:每个
字符惟一对应一个0~25间的数字。密钥:一个字符串,其中每个字符同明文一样对应一个数字,代表位移值,如a 表示位移0,b 表示位移1,c 表示位移2,...... )。加密过程是将明文数字串依据密钥长度分段,并逐一与密钥数字串相加(模26),得到密文数字串,最后,将密文数字串转换为字母串。该密码的分析有以下两步第一步:一. 确定密钥的长度,主要方法有:Kasiski测试法和重合指数法。Kasiski测试法的基本原理是对于密钥长度为的Vigenère密码,如果利用给定的密钥表周期性地对明文字母进行加密,则当明文中有两个相同的字母组在明文序列中间隔的字母数为的倍数时,这两个明文字母组对应的密文字母组一定相同;反之,如果密文中出现两个相同的字母组,则其对应的明文字母组不一定相同。重合指数法基本思想是对于长度2
分别为n的密文串y=y1y2…yn,将其分为长度为n/d的d个子串Yi(i=1,2,…,d),如果密钥长度为d,则Ic(Yi)≈0.065(1≤i≤d) ,否则,因为采用不同的密钥依位加密,子串Yi将更为随机。对于一个完全随机的密文串,Ic(y)≈26(1*+26)2=0.038。由于0.038与0.065的差值足够大,所以在一般情况下,依据重合指数法能够判断出正确的密钥长度。第二步:确定密钥。通常采用重合互指数法。对于长度分别为n及n′的字母串x=x1x2…xn和y=y1y2…yn,“重合互指数”指的是x的一个随机元素与y的一个随机元素相同的概率,记为MIc(x,y)。而且通过采用重合互指数法,可以获得任何两个子串Yi与Yj的相对移位。
(2)博福特密码。博福特密码是一种类似于维吉尼亚密码的替
代密码,由弗朗西斯·蒲福(Francis Beaufort)发明。它最知名的应用是M-209密码机。博福特密码属于对等加密,即加密演算法与解密演算法相同。博福特密码是按mod q减法运算的一种周期代替密码。即ci+td=δi(mi+td)≡(ki-mi+td)(mod q)。所以,它和维吉尼亚密码类似,以ki为密钥的代替表是密文字母表为英文字母表逆序排列进行循环右移ki+1次形成的。例如,若ki=3(相当于字母D),则明文和密文的对应关系如下:明文:a b c d e f g h i j k l m n o p q r s t u v w x y z;密文:D C B A Z Y X W V U T S R Q P O N M L K J I H G F E。显然,博福特密码的解密变换为mi+td≡δi(ci+td)≡(ki-ci+td)(modq),因此,博福特密码的解密变换与加密变换相同。按博福特密码,以密钥ki加密相当于按下式的维吉尼亚加密:ci+td≡[(q-1)-mi+td](modq)若按下式加密:ci+td≡(mi+td-ki)(modq),就得到变异的博福特密码,相应代替表示将明文字母表循环右移ki次而成。由于循环右移ki次等于循环左移(q-ki)次,即式ci+td≡(mi+td-ki)(modq)等价于以(q-ki)为密钥的维吉尼亚密码。所以维吉尼亚密码和变异的博福特密码互为逆变换,若一个是加密运算,则另一个就是解密运算。
(3)滚动密钥密码。对于周期多表代换密码,保密性将随周期
d的增大而增大,当d的长度和明文一样长时就变成了滚动密钥密码,如果其中所采用的密钥不重复就是一次一密体制。一般,密钥可取一篇报告或一本书作为密钥源,可由书名,章节号及标题来限定密钥起始位置。
(4)弗纳姆密码。①明文,密文,密钥都表示为二进制位:
M=m1,m2,„ ,mn K =k1,k2,„ ,kn C =c1,c2,„ ,cn ② 加密 : c1= mi⊕ ki ,i=1,2,„ ,n 解密 : m1= ci⊕ ki ,i=1,2,„ ,n ③ 因为加解密算法是模2加,所以称为代数密码。因为加解密算法是模2 ④ 对合运算:f=f-1,模 2加运算是对合运算。对合运算:密码算法是对和运算,则加密算法=解密算法,工程实 现工作量减半。⑤ Vernam密码经不起已知明文攻击。⑥ 如果密钥序列有重复,则Vernam密码是不安全 如果密钥序列有重复,则 Vernam密码是不安全 的. 一种极端情况:一次一密 ⑦ 一种极端情况:一次一密 密钥是随机序列. 密钥至少和明文一样长. 一个密钥只用一次。⑧ 一次一密是绝对不可破译的,但它是不实用的。⑨ 一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。 |