第二章传统加密技术密码技术能够有效地解决网络安全中的信息机密性、完整性、真实性和不可否认性问题。2.1基本知识密码的历史极其久远,其起源可以追溯到远古时代。相传在古罗马的一次战役中,兵困城内的部队因多日无法与城外的大部队联络,不久便陷入弹尽粮绝、走投无路的困境。尽管城外的部队不断地发动猛烈的营救战役,但终因缺乏里应外合的配合而屡屡受挫。就在这万般无奈、近乎坐以待毙之际,一个想法实然浮现在一个官兵的脑海里。为何不利用稠密的头发作掩护呢?于是,一个被剃得光溜溜的士兵头上写上了里应外合的作战方案,几天后,打扮成农民模样的他顺利地闯出了重重包围(因为敌人没有发现他头发中的秘密),而后他们取得了战争的全面胜利。二战时期的一些资料也表明,密码对于军事的重要性。德国、日本之所以在二战中惨遭失败,其中一个重要的原因是其密码体制被英、美所破译。中国电视剧《长征》中也提到了共产党破解国民党密码本的一些细节。由此可见,自古以来,密码技术被广泛应用于军事、机要或间谍等工作中。然而,直至二次世界大战结束,密码技术对于公众而言始终处于一种未知的黑暗当中,让人在感到神秘之余,又有几分畏惧。1918年,WilliamF.Friedman发表论文“TheIndexofCoincidenceandItsApplicationsinCryptgraphy)(“重合指数及其在密码学中的应用”)。1949年,ClaudeShannon(香农)的论文“TheCommunicationTheoryofSecrecySystems)(“保密系统的通信理论”)奠定了密码学的理论基础。1967年,DavidKahn(戴维.卡恩)收集整理了第一次世界大战和第二次世界大战的大量史料,创作出版了“TheCodebreakers“(破译者),为密码技术公开化、大众化拉开了序幕。20世纪70年代是密码学发展的重要时期,有两件重大事件发生。其一,1976年11月23日,DES(DataEncryptionStandard)算法被确认为联邦标准算法。1998年正式退役。其二,1976年11月,Diffie与Hellman发表了一篇题为“Newdirectionsincryptography”(密码学新方向)的论文,开辟了公开密钥学的新领域,成为现代密码学的一个里程碑。1978年,R.L.Rivest,A.Shamir和L.Adleman实现了RSA公钥密码体制,它成为公钥密码的杰出代表和事实标准。1984年,Bennett.CharlesH.,Brassard.Gille提出了基于量子理论的(现称为BB84协议),从此量子密码理论宣告诞生。量子密码不同于以前的密码技术,是一种可以发现窃听行为、安全性基于量子定律的密码技术,可以抗击具有无限计算能力的攻击,有人甚至认为,在量子计算机诞生之后,量子密码技术可能成为惟一的真正安全的密码技术。1985年,N.Kobliz和V.Miller把椭圆曲线理论应用到公钥密码技术中。密码技术的另一个重要方向——流密码(也称序列密码)理论也取得了重要的进展。1989年有人把混沌理论引入流密码及保密通信理论中,为序列密码理论开辟了一条新的途径。2000年10月,由比利时密码学家JonDaemen,VincentRijmen提交的Rijndael算法被确定为AES算法,接替了DES算法。2.1.1加密与解密如图2-1:信源:消息的发送者信宿:消息的接收者明文:原始的消息密文:经过变换(称为加密)的消息。信道:用来传输消息的通道。密钥:通信过程中,信源为了和信宿通信,首先要选择的适当加密参数。加密:C=Ek1(m)解密:m=Dk2(C)=Dk2(Ek1(m))加密算法:对明文进行加密时采用的一组规则。解密算法:对密文进行解密时采用的一组规则。2.1.2密码编码与密码分析“攻”与“守”犹如“矛”与“盾”,是密码研究中密不可分的两个方面。密码分析是攻击者为了窃取机密信息所做的事情,也是密码体制设计者的工作。设计者的目的是为了分析体制的弱点,以期提高体制的安全强度。密码分析大体分为二类:穷举法,密码分析学加密密钥K1加密算法E解密算法D明文M明文M密文C(不安全信道)图2-1加密和解密过程解密密钥K2穷举法:就是对可能的密钥或明文的穷举。穷举密钥时,用可能密钥解密密文,直到得到有意义的明文,确定出正确的密钥和明文。穷举明文,就是将可能的明文加密,将所得密文与截取的密文对比,从而确定正确的明文。这一方法主要用于公钥体制和数字签名。阻止穷举的方法有:增加密钥的长度,在明文、密文中增加随机冗余信息等等。密码分析学:这种攻击依赖于算法的性质和明文的一般特征或某些明密文对。这种形式的攻击企图利用算法的特征来推导出特别的明文或使用的密钥。如果这种攻击能成功地推导出密钥,那么影响将是灾难性的:将会危及所有未来和过去使用该密钥加密消息的安全。理论上,除了一文一密的密码体制外,没有绝对安全的密码体制。所以,称一个密码体制是安全的,一般是指密码体制在计算上是安全的,即:密码分析者为了破译密码,穷尽其时间和存储资源仍不可得,或破译所耗费的成本已超出了因破译密码而获得的收益。根据密码分析者对明、密文掌握的程度,攻击主要可分为五种:攻击类型密码分析者已知的信息惟密文攻击加密算法要解密的密文已知明文攻击加密算法要解密的密文用(与待解的密文)同一密钥加密的一个或多个明密文对选择明文攻击加密算法要解密的密文分析者任意选择的明文,及对应的密文(与待解的密文使用同一密钥加密)选择密文攻击加密算法要解密的密文分析者有目的选择的一些密文,以及对应的明文(与待解的密文使用同一密钥解密)选择文本攻击加密算法要解密的密文分析者任意选择的明文,及对应的密文(与待解的密文使用同一密钥加密)分析者有目的选择的一些密文,及对应的明文(与待解的密文使用同一密钥解密)。2.2隐写术隐写术是将秘密消息隐藏在其他消息中。中国历史上最常用的隐写方式,就是纸上一篇文字,一旦纸浸水后,将显示出真正的内容。现在,人们可以在图像中隐藏秘密消息,即用消息比特来替代图像的每个字节中最不重要的比特。因为大多数图像标准所规定的顔色等级比人类眼睛能够觉察到的要多得多,所以图像并没有多大改变,但是,秘密消息却能够在接收端剥离出来。用这种方法可在1024*1024灰色度的图片中存储64K字节的消息。又如:在一整段文本中用每个单词的第一个字母连起来就可以拼出隐藏的消息。隐写术的主要缺点是:它要用大量的开销来隐藏相对少量的信息比特;且一旦该系统被发现,就会变得毫无价值。2.3古典密码学密码研究已有数千年的历史,虽然许多古典密码已经经受不住现代手段的攻击,但是它们在密码发展史上具有不可磨灭的贡献,许多古典密码思想至今仍被广泛运用。2.3.1置换与替代1.置换密码置换法是通过变动明文块内部的字符排列次序来达到加密信息的目的。例如明文number2,我们可以通过对它内部包含的字符、符号或数字重新排列次序使它变为密文,这个过程叫做置换。如:把第2个字符“u”移到第1个位置,把第7个字符“2”移到第2个位置,把第3个字符“m”移到第6个位置…见下图所示,就可以把明文number2置换为密文u2brnme.密钥即为置换和逆置换。置换为:[2,7,4,6,1,3,5],逆置换为:[5,1,6,3,7,4,2]课堂练习:明文为Iamveryglad.置换为[2,5,6,10,4,1,9,3,11,8,7],其密文是什么?逆置换是什么?答:密文为AERAVILMDGY,逆置换是[6,1,8,5,2,3,11,10,7,4,9]number2u2brnme置换法加密示例一种更复杂的方案是把消息一行一行地写成矩形块,然后按列读出,但是把列的次序打乱。列的次序就是算法的密钥。如:明文为:AttackPostponeDuntiltWoamxyz将明文按行的形式放置。密钥为:4312567密钥为:4312567明文为:ATTACKPOSTPONEDUNTILTWOAMXYZ按列的方式读出,即为密文:密文为:TTNAAPTMTSUOAODWCOIXKNLYPETZ密文恢复为明文的过程如下:密钥的逆置换为:3421567密文按矩阵展开为:TATACKPTPSOONENTUDILTAMOWXYZ明文为:ATTACKPOSTPONEDUNTILTWOAMXYZ2.替代密码替代密码就是明文中每一个字符被替换成密文中的另外一个字符,接收者对密文进行逆替换以恢复明文。(1)Caesar替换法有记载表明,在古罗马就已经使用对称密码技术。据说有一位名叫JuliusCaesar的国王在作战时曾使用过一种密码技术(如今把这种密码技术称为“凯撒密码”技术)。该密码技术的思路是这样的:将26个英文字母(小写、斜体)a,b,c,…依次排列,z后面再接排a,b,c,…取移位间隔为3,将每个字母(明字符)由与它间隔为3的字母来替代(密字符),由此构成了一张明字符和密字符的对照表,称为密码表。例如,密码表如表2-1所示(密码符用大写、正体表示)。例如,取明文块M=network,相应的密文块C=QHWZRUN。因为k的取值可以在1至25之间变化,所以总共可以得到25个不同的密码表。例如,如果取k=5,那么明文M=network加密后就变为密文C=SJYBTWP。可见,同样的明文,如果k的取值不同,那么就会得到不同的密文。这个k就是这种密码技术的密钥。因为k的取值最多只有25种,所以这种密码技术在计算技术如此发达的今天已明字符abcdefghIjklmnopqrstuvwxyz密字符DEFGHIJKLMNOPQRSTUVWXYZABC表2-1k=3密码表经不再安全。但从这种技术中我们可以了解它的加密思想,从而可以古为今用。(2)Playfair密码Playfair密码是英国科学家ChaelesWheatstone于1845年发明的,但是用了他的朋友BarronPlayfai的名字。Playfair算法基于一个5*5的字母矩阵,该矩阵通过一个密钥构造。例如,密钥为Playfair,相应的矩阵如图2-2所示。PLAYFI/JRBCDEGHKMNOQSTUVWXZ其矩阵的构造如下:首先,从左到右、从上到下填入该密钥的字母,并去除重复的字母(两个A只取一个);其次,按照字母表顺序将其余字母填入矩阵的剩余空间。字母I和J被算作一个字母,可以根据使用者的意愿在形成密文时确定用I或J。Playfair算法根据下列规则一次对明文的两个字母进行加密,这两个字母构成一对:(1)一对明文字母如果是重复的则在这对明文字母之间插入一个填充字符,如x。因些,单词session将被分割成:sesxsion.(2)如果分割后的明文字母对在矩阵的同一行中都出现,那么分别用矩阵中其右侧的字母代替,行的最后一个字母由行的第一个字母代替。例如,on被加密成QO,而st被加密成TN。(3)如果分割后的明文字母对在矩阵的同一列中都出现,则分别用矩阵中其下方的字母代替,列的最后一个字母由列的第一个字母代替。例如,en被加密成NU,而aw被加密成BA。(4)否则,明文对中的每一个字母将由与其同行,且与另一个字母同列的字母代替。比如,se被加密成NK,而cu被加密成IX(或JX)。Playfair密码与单字母替代密码相比有明显的优势:其一,双字母有26*26=676种组合方式,识别各种双字母组合比单字母困难得多;其二,各种字母组的相对频率范围也更为广泛,使频率分析更加困难。因此,Playfair曾被认为是不可破译的,英国陆军在第一次世界大战中采用了它,二战中它仍被美国陆军和其他同盟国大量使用。课堂练习:密钥为monarchy,把明文balloon通过Playfair加密算法后得到的密文是什么?解密过程如何?答案:MONARCHYBDEFGI/JKLPQSTUVWXY先把明文变成balxloon这样四个字母对。密文为IBSUPMNA思考题:1.古典密码学主要采用哪两种技术?2.密码学包含哪两个部分?课后作业:1.用“凯撒密码”技