《第3章网络信息密码技术.ppt》由会员分享,可在线阅读,更多相关《第3章网络信息密码技术.ppt(53页珍藏版)》请在三一办公上搜索。
1、网络信息安全,第3章 网络信息密码技术,本章首先介绍了密码技术的基本概念和类型,重点阐述了对称密码体系的DES,AES,序列的加密算法、工作模式以及解密算法。然后对非对称密码体系的RSA算法做了重点论述,并介绍了Diffie-Hellman,Elgamal和Merkle-Hellman三种公钥体制,最后提出了密码的生成、发送、更新、验证、存储密钥的管理机制。,第3章 网络信息密码技术,3.1 密码技术简介,密码学是一门古老而深奥的学科,其历史可以追溯到几千年前,长期被军事、外交等部门来传递重要信息。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学
2、科。随着计算机网络和计算机通信技术的发展,计算机密码学得到了前所未有的重视并迅速地发展和普及起来。在国外,它已成为计算机安全主要的研究方向,也是计算机安全课程教学中的主要内容。,3.1.1 密码技术基本概念,密码学(Cryptology)一词为希腊字根“隐藏”(kryptos)及“信息”(logos)的组合,是研究编制密码和破译密码的科学。其中研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为密码编码学(Cryptography);应用于破译密码以获取通信情报的,称为密码分析学(Cryptanalysis),总称密码学。两者相互对立,而又相互促进。,密码技术通过信息的变换或编码,将机
3、密的敏感消息变换成难以读懂的乱码型文字,以此达到两个目的:其一,使未授权者不可能由其截获的乱码中得到任何有意义的信息;其二,使未授权者不可能伪造任何乱码型的信息。消息的发送者称为信源;消息的授权目的地称为信宿。采用密码方法隐蔽和保护机要消息,使未授权者不能提取信息。被隐蔽的原始消息称为明文M,通过密码可将明文变换成另一种隐蔽形式,称为密文C。,由明文到密文的变换过程C=Ek(M)称为加密;由合法接收者从密文恢复出明文的过程M=Dk(C)=Dk(Ek(M)称为解密;非法接收者试图从密文分析出明文的过程称为破译。对明文进行加密时采用的一组规则称为加密算法;对密文解密时采用的一组规则称为解密算法。加
4、密算法和解密算法是一组仅有合法用户知道的秘密信息,是在密钥的控制下进行的,加密和解密过程中使用的密钥分别称为加密密钥和解密密钥。密码的传递过程可以通过一个简单的密码通信模型来表达(如图3.1所示)。,虽然这是一个简单的加密通信模型,但已涉及到密码体制的五个组成部分:明文的集合M,称为明文空间;密文的集合C,称为密文空间;密钥的集合K,称为密钥空间;由加密密钥控制的加密交换算法E:Ek:M-C。由解密密钥控制的解密交换算法D:Dk:C-M,Dk(Ek(M)=M。我们将五元组(M,C,K,E,D)称为一个密码体制(Cryptosystem),在此体制中要求加密算法对所有密钥反应迅速并实时有效,体制
5、的安全性不能依赖于算法的保密,只能依赖于密钥的保密。,一个安全的密码体制根据其应用性能对信息提供下列功能:(1)秘密性:防止非法的接收者发现明文。(2)鉴别性:确定信息来源的合法性。(3)完整性:确定信息是否被有意或无意的更改。(4)不可否认性:发送方在事后,不可否认其传送过的信息。,近代密码学不只注重信息的秘密性,更加重视信息的鉴别性、完整性及不可否认性。密码系统为维持其最高安全性,均假设给予破译者最多的信息。密码体制的安全性必须仅依赖其解密密钥,亦即在一个密码系统中除解密密钥外,其余的加/解密算法等,均应假设为破译者完全知道。,只有在此假设下,破译者若仍无法破解密码系统,此系统方有可能被称
6、为安全。破译者在密码系统中所获得的信息,依层次可有下列三种可能的破解方式。唯密文攻击法已知明文攻击法选择文攻击法选择明文攻击选择密文攻击,3.1.2 密码技术的分类,密码技术分类有多种标准,若以密钥为分类标准时,可将密码系统分为对称密码(又称为单钥密码或私钥密码)和非对称密码(又称为双钥密码或公钥密码)。在对称密码体制下,加密密钥与解密密钥是相同的(即K1=K2),密钥k在传递过程中需经过安全的密钥信道,由发方传送到收方。单钥密码的特点是加密、解密都使用同一个密钥,所以此密码体制的安全性关键就在于密钥的安全性,若其密钥泄露,则此密码系统便失去其应有的作用。,单钥密码的优点是:安全性高、加解密速
7、度快;其缺点是:巨大的网络规模,使密钥的管理成为难点;难以解决消息传送的确认问题;缺乏能够自动检测密钥是否泄露的能力。,在非对称密码下,加密密钥与解密密钥不同,无需安全信道来传送密钥,只需利用本地密钥的发生器产生解密密钥k并控制解密操作D。由于双钥密码体制的加密与解密方法不同,且只需保密解密密钥,所以双钥密码不存在密钥管理问题。但双钥密码算法一般比较复杂,加解密速度慢。,目前解决网络信息传输安全的体制方法是:在加解密时都采用单钥密码,而在密钥传送时,则采用双钥密码的混合加密体制去解决密钥管理的困难、加解密速度的问题。,若以密码算法对明文的处理方式为标准,则可将密码系统分为序列密码和分组密码系统
8、。序列密码对明文进行逐个比特处理,加密过程是把明文序列与等长的密钥序列进行逐位模2相加。解密过程则是把密文序列与等长的密钥序列进行逐位模2相加。序列密码的安全性主要依赖于密钥序列。序列密码的优点是:处理速度快,实时性好;错误传播小;适用于军事、外交等保密信道;其缺点是:明文扩散性差;需要密钥同步。,分组密码用一个固定的变换对等长明文分组进行处理,加密过程是将明文序列以固定长度进行分组,每组明文用相同的密钥和加密函数进行运算。为了减少存储量和提高运算速度,加密函数的复杂性成为系统安全的关键。加密函数重复地使用代替和置换两种基本的加密变换。分组密码的优点是:明文信息具有良好的扩散性;不需要密钥同步
9、;较强的适用性,其缺点是:加密速度慢;错误易扩散和传播。,3.2 对称密码体系,3.2.1 数据加密标准、加密算法和工作模式IBM公司在1974年提出了一个算法叫LUCIFER,NBS后来将该算法提交给国家安全代理机构,它们重新审阅并对算法做了一些修改,提出了一个版本,就是最初的数据加密标准(DES:Data Encryption Standard)算法。I975年,NBS公开了DES,即可以自由地使用它,并于1977年将它作为政府数据加密标准。,DES算法属于分组加密法,即对一定大小的明文或密文进行加密或解密工作。在DES加密系统中,其每次加密或解密的分组大小均为64位,所以DES无需考虑密
10、文扩充问题。无论明文或密文,一般的数据大小通常都大于64位,此时只要将明文或密文中的每64位当成一个分组进行分割,再对每一分组做加密或解密即可。,2.加密算法,当切割后的最后一个分组小干64位时,便在此分组之后附加0位,直到此分组大小为64位。DES所用的加密或解密密钥也是64位,但因其中有8位是用来做奇偶校验,所以64位中真正起到密钥作用的只有56位。DES加密与解密所用的算法除了子密钥的顺序不同外,其他的部分则相同的。,(1)电子密码本(ECB)使用分组密码方式是将一长串明文分解成为适当的分组,对每一分组用加密E()函数分别加密,即电子密码本(ECB)操作方式。明文P被分解为P=p1,p2
11、,p3pl,其对应的密文是C=C1,C2,C3Cl,Ci=E(Pj)是明文Pj使用密钥K加密的结果。ECB操作模式固有的缺点在明文很长的情况下变得更明显了,当攻击者长时间地一直观察发送者和接收者之间的通信时,如果攻击者想方设法获得了一些所观察到的明文及相应的密文,攻击者就可开始建立电子密码本,译出发送者和接收者后续的通信。攻击者不必去计算密钥K,只要查看其电子密码本上的密文信息,并用对应的明文破解信息。,3.工作模式,(2)密码分组链(CBC)减少EBC模式存在的问题的一种方法是使用链接。链接是一种反馈机制,一块分组的加密依赖于其前面分组的加密。加密过程是:Cj=Ek(Pj XOR Cj-1)
12、解密过程是:Pj=Dk(Cj)XOR Cj-1)Cn是某个选定的初始值,Dk()是解密函数。则在CBC模式中,明文和前一分组的密文异或后,再将其结果进行加密。,(3)密码反馈(CFB)CBC模式的问题是,即使明文错一位或在计算/存储以前的密文分组中有一点错误,都可能导致密文组的计算错误,将影响所有后续的密文组。前两种方法都有一共同缺点是,在完整的8字节的数据分组未到来之前,加密/解密是不能开始的。密码反馈模式是一种流操作模式,一组8位信息并不需要等待全部的数据分组到达后才能加密。,3.2.2 高级加密标准、加密算法和解密算法,1997年,国家标准和技术委员会NIST(前身为国家标准局NBS)寻
13、找DES的替代品。条件是:新的加密算法必须允许128,192,256位密钥长度,它不仅能够在128位输入分组上工作,而且还能够在各种不同的硬件上工作,速度和密码强度同样也要被重视。1998年,加密委员会对15种候选算法进行评定,最后选择出5种。最后,Rijndael被选作为取代DES的新加密标准,这就是高级加密标准(AES)。余下4种候选算法很有可能在未来的加密体制中得到广泛的应用。,首先将Rijndael算法密钥长度限制为128位,算法过程由10轮循环组成,每一轮循环都有一个来自于初始密钥的循环密钥。每一轮循环输入的是128位,产生的输出也是128位。每一循环由4个基本步骤组成,称之为层(l
14、ayer):(1)字节转换(The ByteSub Transformation):是一个非线性层,目的是防止微分和线性密码体制的攻击。(2)移动行变换(The ShiftRow Transformation):这一步是线性组合,可以导致多轮循环各个位间的扩散。(3)混合列变换(The MixColumn Transformation):与行变换目的是相同的。(4)加循环密钥(AddRoundKey):循环密钥同上层结果进行异或运算。,2.加密算法,3.解密算法解密的每一步骤是加密过程中字节转换(ByteSub)、移动行(ShiftRaw)、混合列(MixColumn)和加循环密钥(AddRo
15、undKey)的相反过程。(1)字节转换的逆是另一种查找表,称之为逆字节转换(InvByteSub)。(2)其逆过程是用循环右移代替循环左移,得到逆移动行(InvShiftRow)。(3)混合列的逆的存在,因为混合列中所用的4X4矩阵是可逆的,即逆混合列(InvMixCoIumn)。(4)加循环密钥就是它自身的反序。,3.2.3 序列密码,序列加密算法(Stream Cipher),即明文的位串(Bit Stream)与伪随机数产生器(Pseudo Random Number Generator)产生的伪随机序列经过适当运算得到密文。可以认为序列加密算法为1个位的分组加密算法(Block Ci
16、pher)。主要缺点在于若一个伪随机序列发生错误便会使整个密文发生错误,致使解密过程无法还原回明文。但也可视为优点,即相同的明文位串可有不同的密文位串。由此可知,序列加密算法是一种记忆性组件(Memory Device),即前后的伪随机序列可互相影响。其加密系统的简单结构如图3.3所示。,图3.3 序列加密算法结构,序列加密算法的安全性在于随机数产生器产生的密钥位串的顺序是否够“混乱”,及产生位串周期是否够“长”。对于作为加密系统随机数产生器的要求是非常苛刻的,最佳的随机数产生器是让破译者无法找出伪随机序列的前后相关性,但好的随机数产生器并不容易产生。,3.2.4 分组密码,传统的密码体制中,
17、明文中所改变一个字母对应在密文中也改变了一个字母,密文中给定的一个字母恰好都来自于明文中的同一个字母,这通过频率分析就非常容易发现密钥。使用字母的分组体制,对应了密钥的长度,利用频率分析要困难些,但仍然是可能的,毕竟每组中的各个字母没有相互作用。分组密码避免了这些问题,因为它同时加密几个字母或数字的分组。改变明文分组的一个字符,就可能改变与之相对应的密文分组潜在的所有字符。,现代密码体制的很多方法都属于分组密码的范畴。例如:DES方法是基于64比特的分组,AES使用128比特的分组,RSA使用几百比特长的分组,取决于模数的使用,所有这些分组的长度都足够长,能有效地防止类似频率分析这样的攻击。使
18、用分组密码的标准方法就是一次性地、独立地把明文中的一块分组转换成密文的一块分组,这叫做电子电报密码本(ECB)模式,但是使用后续明文分组的加密分组,从密文的分组中再使用反馈机制,这就导致了密文分组的连锁(CBC)模式和密文反馈操作(CFB)模式。,3.3 非对称密码体系,3.3.1 RSA算法 RSA体制是1978年由美国麻省理工学院Rivest,Shamir和Adleman三位教授首先提出的一种基于因子分解的指数函数的单向陷门函数,也是迄今为止理论上最为成熟完善的一种公钥密码体制。最初由Diffie和Hellman在他们论文中所提出的这种公开密钥密码体制(Public Key Cryptoa
19、system),并没有在实际中应用。,2.密钥生成(1)用户任意选择两个大素数p及q,并求出其乘积N=p*q。(2)任选一整数e,使得e与N互素,即GCD(e,(N)=1为加密密钥,并求出e在阶T中的乘法逆元d,即e*d=1 mod T。根据欧拉定理,指数函数在模N中所有元素阶的最小公倍数T=ln(p-1,q-1),即T等于p-1与q-1的最小公倍数,一般均使用T=(p-1)(q-1)=(N)。,(3)将(e,N)公布为公开密钥,并将d秘密保存为私有秘密密钥。p与q可以毁去,以增加其安全性。例 若p13而q=31,而e=7,d是多少?公钥是多少?私钥是多少?解:N=p*q=403 T=(p-1
20、)*(q-1)=360 因为 e*d=1 mod T,所以 7*d=1 mod 360 则 d=103公钥是(e,N)=(7,403)私钥是(d,N)=(103,403),加密方法:将明文看成是一个比特串,将其划分成一个个数据块M,且有0Mn;对每个数据块M,计算CMe(mod n),C即为M的密文;解密方法:对每个密文块C,计算MCd(mod n),M即为要求的明文,根据前面的例子,加密123字符串。根据CMe(mod n),公钥(7,403)对1进行加密C=1237 MOD 403=371根据MCd(mod n),私钥(103,403)进行解密M=371103 MOD 403=123,要想
21、从公开密钥n和e算出未知的d,只有分解大整数n的因子,但大数分解是一个十分困难的问题。Rivest,Shamir和Adleman用已知最好的算法去估计分解n的时间与n的位数之间的关系,即使用运算速度为100万次/秒的计算机分解500 bit的n,得出分解操作数是1.3x1039,分解时间是4.2 x 1025年。由此可认为RSA保密性能良好。但由于RSA涉及到高次幂运算,特别是在加密大量数据时,一般用硬件来代替实现速度较慢的软件来实现RSA。,3.3.2 其他公钥密码体系,1.Diffie-Hellman公钥体制 Diffie-Hellman公钥分配密码体制是斯坦福大学的W.Diffie与M.
22、E.Hellman于1976年设计的:令P是大素数,且P-1有大素数因子,选g为模P的一个原根。使用过程是:A欲与B通信,首先用明文形式与B接通,然后A任选正整数xA=p-2作为密钥,计算gxA发送给B,B将gxB发送给A。A和B分别得到gxAB,A和B拥有共同的密钥。这种公钥分配体制的安全性是基于有限域上的离散对数问题的困难性,所以具有很高的安全性。,2.Elgamal公钥体制 Elgamal是一种基于离散对数的公钥密码体制。由于Elgamal公钥密码体制的密文不仅依赖于待加密的明文,还依赖于随机数k,所以用户选择的随机参数不同,便能够使加密相同的明文,得到出不同的密文。由于这种称为概率加密
23、体制是非确定性的,所以在确定性加密算法中,破译者对某些关键信息感兴趣,则可事先将这些信息加密后存储起来,一旦以后截获密文,就可以直接在存储的密文中查找,从而得到相应明文。概率加密体制弥补了其不足,提高了安全性。为了抵抗已知明文攻击,P至少需要150位,而且P-1必需至少有一个大素数因子。,3.Merkle-Hellman公钥体制 大多数公钥密码体制都会涉及到高次幂运算,不仅加密速度慢,而且会占用大量的存储空间。1978年Merkle和Hellman提出第一个(Knapsack)背包体制,背包体制的特性是其加解密的速度非常快(可高达700kb/s以上),因此引起许多研究学者兴趣。不过背包系统的安
24、全度始终为人所怀疑,因为其易解背包的结构似乎可提供某些信息给破译者,所有KPKC均为线性保密系统。因此,MH KPKC从未被实际考虑应用过。,3.4 密码管理,3.4.1 密钥生成算法的安全性依赖于密钥,若你使用一个弱的密钥生成方法,那么你的整个体制是弱的。有56比特的密钥的DES正常情况下任何一个56比特的数据串都能成为密钥,所以共有256种可能的密钥。现实中仅允许ASCII码的密钥,并强制每一字节的最高位为零,将小写字母转换成大写的这个程序忽略每个字节的最低位。这样就导致该程序只能产生240个可能的密钥。这些密钥生成程序使DES的攻击难度比正常情况低了万倍。,特定的穷举攻击硬件和并行工具,
25、每秒做测试一百万次的工作,将能破译小写字母和小写字母与数字的8字节的密钥,7字节的字母数字符号密钥,6字节长的印刷字符和ASCII字符密钥,5字节长的8比特ASCII字符密钥。人们选择密钥时,通常选择一个弱密钥,即喜欢选择最更容易记忆的密码。最安全的密码体制也帮不了那些习惯用名字作为密钥或者把密钥写下来的人,一个聪明的穷举攻击并不按照数字顺序去试所有可能的密钥,它们首先尝试最可能的密钥。这就是所谓的“字典攻击”,当字典攻击被用做破译密钥文件而不是单个密钥时就显得更加有力。,3.4.2 非线性密钥空间 所谓的非线性密钥空间,即假定能将选择的算法加入到一个防窜改模块中,要求有特殊保密形式的密钥,则
26、其他的密钥便都会引起模块使用非常弱的算法来加解密。便可使那些不知道这个特殊形式的人不可能偶然碰到正确的密钥。所有密钥的强壮程度并不相等。非线性密钥空间可按照密钥本身和用该密钥加密的某一固定字符串来实现。模块用这个密钥对字符串进行解密;若它收到该固定的字符串,便能正常地解密,否则用另一个非常弱的算法来进行解密。若该算法有一个128比特的密钥和一个64比特的字符块,即总密钥长度为192比特,则共有有效密钥2128个,且随机选择好密钥的概率为1/264。,3.4.3 发送密钥 当采用对称加密算法进行保密通信时需要同一密钥。发送者使用随机密钥发生器生成一个密钥,必须安全地送给接收者。发送者须通过安全信
27、道将密钥副本交给接收者,否则就会出问题。系统使用被公认安全的备用信道,发送者可以通过一个可靠的信道把密钥传送给接收者,或者同接收者一起建立另一个希望无人窃听的通信信道。发送者可通过他们加密的通信信道把对称密钥送给接收者。如果信道能够保证加密,那么在同一个信道上明文发送加密密钥就导致在该信道上的窃听者都能破解全部通信。,其解决方法是将密钥分成许多不同的部分,然后用不同的信道发送。即使截获者能收集到密钥,但由于不够完整,截获者仍不知密钥,所以此方法可用于除个别特殊情况外的任何场合。发送者用密钥拆分技术将密钥加密密钥传送给接收者,当同时拥有该密钥,发送者就可先对数据密钥进行加密,然后在同一信道上把它
28、传送给接收者。用密钥对大量的数据加密密钥其速度会非常慢,所以要求无需经常改动密钥。当密钥加密密钥遭到损害,则使用它本身密钥加密的所有信息便会受到破坏,所以必须对其密钥进行安全的存储。,3.4.4 验证密钥 当接收者收到密钥时,需要判断是发送者传送或是其他人伪装发送者传送。如果发送者通过可靠的信道传送密钥,接收者必须相信信道;如果密钥由密钥加密,接收者必须相信只有发送者才拥有的加密密钥;如果发送者运用数字签名协议来给密钥签名,那么当接收者验证签名时就必须相信公开密钥数据库;如果某个密钥分配中心(KDC)在发送者的公钥上签名,接收者必须相信KDC的公开密钥副本不曾被更改。,密钥在传输中会发生错误,
29、则大量的密文无法解密,所以密钥都必须含有检错和纠错位来进行传输。密钥在传输中的错误就很容易地被检查出来,若需要密钥还可被重传。密钥在解密过程中可以附加一个验证分组来进行错误检测:加密前给明文加一已知的报头,在接收端接收者解密报头,并验证其正确性。对每个密钥的校验和预计算,即可确定之后所截取到的任何信息密钥。校验和的特性不包含随机的数据,至少在每一校验和中没有随机数据。,3.4.5 更新密钥 若要定期改变加密数据链路的密钥,可采用从旧密钥中产生新密钥的方法,即密钥更新。更新密钥使用单向函数,若发送者和接收者共同使用同一密钥,并用同一个单向函数进行操作,他们就会得到相同的结果。那么就可以从结果中得
30、到他们所需要的数据来产生新密钥。密钥更新需要记住新密钥只是与旧密钥同样安全。若攻击者能够得到旧密钥,则可以完成密钥更新功能;若攻击者得不到旧密钥,并试图对加密的数据流进行唯密文攻击的话,则密钥更新对发送者和接收者是很好的保护数据方法。,3.4.6 存储密钥 单用户的密钥存储是最简单的的密钥存储问题,发送者加密文件以备以后用,因为只涉及一人,且只有一人对密钥负责。可采用类似于密钥加密密钥的方法对难以记忆的密钥进行加密保存。例如,一个RSA私钥可用DES密钥加密后存在磁盘上,要恢复密钥时,用户只需把DES密钥输入到解密程序中即可。如果密钥是确定性地产生的(使用密码上安全的伪随机序列发生器),每次需
31、要时从一个容易记住的口令产生出密钥会更加简单。理想的情况是密钥永远也不会以未加密的形式暴露在加密设施以外。,算法仅当在密钥保密的情况下才能保证安全,若发送者的密钥丢失、被盗、或以其他方式泄露,则所有的保密性都失去了。如果对称密码体制泄露了密钥,发送者必须更换密钥;如果是一个私钥,则其公钥或许暴露在其网络上。私钥泄露的消息通过网络迅速蔓延是最致命的,任何公钥数据库必须立即声明一个特定私钥被泄露,以免怀疑有人用该泄露的密钥加密消息。,3.4.7 密钥有效期 加密密钥不能无限期使用,应当在一定期限内自动失效。因为:密钥使用时间越长,它泄露的机会就越大;若密钥已泄露,那么密钥使用越久,损失就越大;密钥
32、使用越久,人们花费精力破译它的动力机会就越多;对用同一密钥加密的多个密文进行密码分析一般比较容易。对任何密码应用,必须有一个策略能够检测密钥的有效期,不同密钥应有不同有效期。密钥应当有相对较短的有效期,这主要依赖数据的价值和给定时间里加密数据的数量。,密钥加密密钥无需频繁更换,因为它们只是偶尔地用做密钥交换。这只给密钥破译者提供很少的密文分析,且相应的明文也没有特殊的形式。但如果密钥加密密钥泄露,因为通信密钥都经其加密,则其潜在损失将是巨大的。用来加密保存数据文件的加密密钥不能经常地变换。解决方法是每个文件用唯一的密钥加密,然后再用密钥加密密钥把所有密钥加密,但是丢失该密钥意味着丢失所有的文件
33、加密密钥。如果密钥必须定期替换,旧的密钥就必须安全地销毁。旧密钥是有价值的,即使不再使用,攻击者仍就能读到由它加密的一些旧的消息。,3.4.8 公钥密码管理 公钥密码使得密钥较易管理,网络上的每个人都只有一个公开密钥。如果发送者想传送一段信息给接收者,则必须知道接收者的公开密钥,可以从接收者、中央数据库、自己的私人数据库处获得。攻击者可以用自己的密钥代替接收者密钥引起的针对公钥算法的多种可能的攻击。该攻击是发送者想给接收者发送信息,进入公开密钥数据库获得了接收者的公开密钥。但是攻击者用他自己的密钥代替了接收者的,发送者使用攻击者的密钥加密攻击者的消息并传给接收者,自己则截到、破译并阅读该消息。再重新用接收者的密钥加密,并传给接收者。,