1、1多表代换密码多表代换密码是以一系列(两个以上)代换表依次对明文消息的字母进行代换的加密方法,如明文字母序列为 x=x1x2,则密文字母序列为 c=e(x)=f1(x1)f2(x2) 多表代换密码分为非周期多表代换密码和周期多表代换密码两类。在非周期多表代换密码中,对每个明文字母都采用不同的代替表进行加密,是一种在理论上唯一不可破的密码,但由于需要的密钥量和明文信息长度相同而难于广泛使用。周期多表代换密码中,代换表个数有限且能被重复应用,大大减少了密钥量,常用的有维吉尼亚密码,博福特密码,滚动密钥密码,弗纳姆密码。(1 ) 维吉尼亚密码。它的构成由明文和密钥组成。明文:每个字符惟一对应一个 0
2、25 间的数字。密钥:一个字符串,其中每个字符同明文一样对应一个数字,代表位移值,如 a 表示位移 0,b 表示位移 1,c 表示位移 2, ) 。加密过程是将明文数字串依据密钥长度分段,并逐一与密钥数字串相加(模 26) ,得到密文数字串,最后,将密文数字串转换为字母串。该密码的分析有以下两步第一步:一. 确定密钥的长度,主要方法有:Kasiski 测试法和重合指数法。Kasiski 测试法的基本原理是对于密钥长度为的 Vigenre 密码,如果利用给定的密钥表周期性地对明文字母进行加密,则当明文中有两个相同的字母组在明文序列中间隔的字母数为的倍数时,这两个明文字母组对应的密文字母组一定相同
3、;反之,如果密文中出现两个相同的字母组,则其对应的明文字母组不一定相同。重合2指数法基本思想是对于长度分别为 n 的密文串 y=y1y2yn,将其分为长度为 n/d 的 d 个子串 Yi(i=1,2,d),如果密钥长度为 d,则 Ic(Yi)0.065(1id) ,否则,因为采用不同的密钥依位加密,子串 Yi 将更为随机。对于一个完全随机的密文串,Ic(y)26(126)2=0.038。由于0.038 与 0.065 的差值足够大,所以在一般情况下,依据重合指数法能够判断出正确的密钥长度。第二步:确定密钥。通常采用重合互指数法 。对于长度分别为 n 及 n的字母串 x=x1x2xn 和y=y1
4、y2yn, “重合互指数 ”指的是 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 为密钥的代替表是密文字母表为英文字
5、母表逆序排列进行循环右移 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+tdi(ci+td)(ki-ci+td)(modq),因此,博福特密码的解密变换与加密变换相同。按博福特密码,以密钥 ki 加密相当于按下式的维吉尼亚加密: ci+td(q-1)-mi+td3(modq)若按下式加密: ci+td(
6、mi+td-ki)(modq),就得到变异的博福特密码,相应代替表示将明文字母表循环右移 ki 次而成。由于循环右移 ki 次等于循环左移(q-ki)次,即式 ci+td(mi+td-ki)(modq)等价于以(q-ki)为密钥的维吉尼亚密码。所以维吉尼亚密码和变异的博福特密码互为逆变换,若一个是加密运算,则另一个就是解密运算。(3 ) 滚动密钥密码。对于周期多表代换密码,保密性将随周期 d 的增大而增大,当 d 的长度和明文一样长时就变成了滚动密钥密码,如果其中所采用的密钥不重复就是一次一密体制。一般,密钥可取一篇报告或一本书作为密钥源,可由书名,章节号及标题来限定密钥起始位置。(4 ) 弗
7、纳姆密码。 明文,密文,密钥都表示为二进制位: 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 密码是不安全 的. 一种极端情况:一次一密 一种极端情况:一次一密 密钥是随机序列. 密钥至少和明文一样长 . 一个密钥只用一次。 一次一密是绝对不可破译的,但它是不实用的。 一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。4