古典密码介绍 虽然用近代密码学的观点来看,许多古典密码是很不安全的,或者说是极易破译的。但是我们不能忘记古典密码在历史上发挥的巨大作用。 另外,编制古典密码的基本方法对于编制近代密码仍然有效。 C. D. Shannon(1945): 采用混淆、扩散和乘积的方法来设计密码 混淆:使密文和明文、密钥之间的关系复杂化 “混淆”可以隐藏明文、密文和密钥之间的任何关系。好的“混乱”可使复杂甚至强有力的密码分析工具不得奏效。最容易的方法是“代替(Substitution)”法。
扩散:将每一位明文和密钥的影响扩大到尽可能多的密文位中。 “扩散”是一种将明文冗余度分散到密文中的方法,即将单个明文或密钥位的影响尽可能扩大到更多的密文中去,不仅将统计关系隐藏起来,也使密码分析者寻求明文冗余矿度增加了难度。最简单的“扩散”方法是“置换(Permutation)”法。 乘积和迭代 多种加密方法混合使用 对一个加密函数多次迭代 古典密码编码方法: 1、置换密码 把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密文。 明文:明晨5点发动反攻。 MING CHEN WU DIAN FA DONG FAN GONG 密文:GNOGN AFGNO DAFNA IDUWN EHCGN IM 把明文按某一顺序排成一个矩阵, 然后按另一顺序选出矩阵中的字母以形成密文,最后截成固定长度的字母组作为密文。 例如: 明文:MING CHEN WU DIAN FA DONG FAN GONG 矩阵:MINGCH 选出顺序:按列 ENWUDI ANFADO 改变矩阵大小和取出序列 NGFANG 可得到不同的密码 ONG 密文:MEANO INNGN NWFFG GUAA CDDN HIOG
2、代替密码 先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其本身改变了。这样编成的密码称为代替密码。 ①单表代替密码 ②多表代替密码 ③多名代替密码 把明文按某一顺序排成一个矩阵, 然后按另一顺序选出矩阵中的字母以形成密文,最后截成固定长度的字母组作为密文。 例如: 明文:MING CHEN WU DIAN FA DONG FAN GONG 矩阵:MINGCH 选出顺序:按列 ENWUDI ANFADO 改变矩阵大小和取出序列 NGFANG 可得到不同的密码 ONG 密文:MEANO INNGN NWFFG GUAA CDDN HIOG (1)单表代替密码 ①、加法密码 A和B是有 n个字母的字母表。 定义一个由A到B的映射:f:A→B f(ai )= bi=aj j=i+k mod n 加法密码是用明文字母在字母表中后面第 k个字母来代替。 K=3 时是著名的凯撒密码。 恺撒密码——历史上第一个密码技术 “恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(高卢战记)。 明文:attack gaul 密文:DWWDFN KDXO
②、乘法密码 A和B是有n个字母的字母表。 定义一个由A到B的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。 注意:只有(n,k)=1,才能正确解密。
③密钥词组代替密码: 随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。 然后按列取出字母构成密文字母表。
举例: 密钥: HONG YE 矩阵: HONGYE 选出顺序:按列 ABCDFI JKLMPQ 改变密钥、矩阵大小 RSTUVW 和取出序列,得到不同的 XZ 密文字母表。 密文字母表 : B={ HAJRXOBKSZNCLTGDMUYFPVEIQW } (2)、多表代替密码 单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。构造多个密文字母表,在密钥的控制下用相应密文字母表中的一个字母来代替明文字母表中的一个字母。一个明文字母有多种代替。
Vigenere密码:著名的多表代替密码 Vigenre密码的代替规则是用明文字母在Vigenre方阵中的列和密钥字母在Vigenre方阵中的行的交点处的字母来代替该明文字母。例如,设明文字母为P,密钥字母为Y,则用字母N来代替明文字母P。 明文:MING CHEN WU DIAN FA DONG FAN GONG 密钥:XING CHUI PING YE KUO YUE YONG DA JIANG LIU 密文:JQAME OYVLC QOYRP URMHK DOAMR NP 解密就是利用Vigenre方阵进行反代替。 3、代数密码 ① Vernam密码 明文、密文、密钥都表示为二进制位: 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加,所以称为代数密码。 ④对合运算:f=f-1,模 2加运算是对合运算。 密码算法是对和运算,则加密算法=解密算法,工程实现工作量减半。 ⑤ Vernam密码经不起已知明文攻击。 ⑥ 如果密钥序列有重复,则Vernam密码是不安全的。 ⑦一种极端情况:一次一密 • 密钥是随机序列。 • 密钥至少和明文一样长。 • 一个密钥只用一次。 ⑧一次一密是绝对不可破译的,但它是不实用的。 ⑨ 一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。 |