第2章数据加密.ppt

上传人:本田雅阁 文档编号:2523642 上传时间:2019-04-05 格式:PPT 页数:110 大小:1.68MB
返回 下载 相关 举报
第2章数据加密.ppt_第1页
第1页 / 共110页
第2章数据加密.ppt_第2页
第2页 / 共110页
第2章数据加密.ppt_第3页
第3页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章数据加密.ppt》由会员分享,可在线阅读,更多相关《第2章数据加密.ppt(110页珍藏版)》请在三一文库上搜索。

1、第 2 章 数 据 加 密,2.1 数据加密概述 2.2 对称密码体制 2.3 非对称密码体制 2.4 密钥的管理 2.5 散列函数与数字签名 2.6 本章小结,通过本章的学习,读者应该掌握以下内容: (1)了解数据加密在网络安全中的重要作用; (2)掌握对称密码体制的DES和AES算法; (3)掌握非对称密码体制的RSA和椭圆曲线加密算法; (4)熟悉密钥的管理。,2.1 数字加密概述,一个加密系统采用的基本工作方式称为密码体制,密码体制的基本要素是密码算法和密钥,其中密码算法是一些公式、法则或程序,而密钥是密码算法中的可变参数。密码算法分为加密和解密算法,前者是将明文变换成密文,后者是将密

2、文变换成明文;密钥相应地也分为加密密钥和解密密钥。,一个加密系统数学符号描述如下: S=P,C,K,E,D 其中P是明文空间,C是密文空间,K是密钥空间,E是加密算法,D是解密算法,当给定密钥kK时,加、解密算法分别记作Ek和D k,并有: C=Ek(P) P=Dk(C)=Dk(Ek(P), 或记为 Dk=Ek1且Ek=Dk1,现代密码学的一个基本原则是一切秘密应寓于密钥之中,即在设计加密系统时,总是假定密码算法是公开的,真正需要保密的是密钥。,2.1.1 保密通信模型 首先来看一个保密通信系统的基本模型,如图2.1所示:A向B发送一报文,为了不被E窃听,A对报文进行加密,然后在通信信道上进行

3、传输,B收到报文后进行解密,得到原来的报文。,图2.1 保密通信系统的模型,2.1.2 经典加密方法 1换位加密法(Transposition) (1)铁轨法(Railroad Method) 铁轨法是换位算法最基本的形式。首先,它要求明文的长度必须是4的倍数,不符合要求则在明文最后加上一些字母以符合加密的条件, 例如,明文“STRIKE WHILE THE IRON IS HOT”就不满足条件(空白不计),故在尾端加上字母“”使明文的长度变成4的倍数,接着将明文以从上到下的顺序逐列写出,表示如下: S R K W I E H I O I H T T I E H L T E R N S O E

4、,依序由左而右再由上而下地写出字母即为密文,表示如下: SRKWIEHIOIHTTITIEHLTERNSOE 为方便起见,将密文每4个字母一数,其间用空格隔开: SRKW IEHI OIHT TIRH LYRT NSOE,这就是为什么要使密文长度为4的倍数的原因了。接收方收到此密文后,因为知道加密的顺序,因此,接收方可将密文以一直线从中分为两个部分,如下所示: SRKW IEHI OIHT TIRH LYRT NSOE 然后左右两半依序轮流读出字母便可以还原成原来的明文了。 当然,在写明文时也可以写成三列或四列等。写法不同,则解法也相应不同。,(2)路游法 路游法可以说是一种铁轨法的推广。同样

5、,此法也必须将明文的长度调整为4的倍数。之后将调整过的明文依由左而右由上而下的顺序(此顺序称之为排列顺序)填入方格矩阵中。依前例,可以得到如下矩阵。,图2.2 游走路径,有了此矩阵后,便可以依照某一事先规定的路径(称为游走路径)来游走矩阵并输出所经过的字母,此即为密文。 如果以如图2.2所示的游走路径来走,则可以得到如下的密文: ETNETOEKILROHIIRTHESIHWS,图2.2 游走路径,(3)密钥法 密钥法最大的好处是就是将加密者和解密者双方所持有的加、解密信息具体化。密钥法大致来说与路游法相似,首先也是将明文填入一个矩阵(见路游法中的矩阵),接着,任意挑选一个密钥,如以“PRED

6、IC”这个英文单字为加、解密双方所协议的共同密钥,然后,将密钥写于矩阵上方,如下所示。,接着依照加密密钥字母的顺序分别依序读出其相对应的列便可得到密文,即先读出字母C对应的列,再依次读出字母DEIPR对应的列,得到密文如下: E T N E I L R O R I I HKE O TSWH I H T ES,2替换加密法(Substitution) 替换加密法与此思路完全相反,对于明文的每一个字母并不去改变它的位置,只是将它以别的字母或符号取代。,(1)旋转替换法 假设有一个由两个同心圆所组成的密码转盘,如图2.3所示。,图2.3 密码转盘图,图2.4 旋转后的密码转盘,(2)Lewis Ca

7、rrolls Vigenere代换法 首先,加解密双方必须同时握有如表2.1所示的表格,另外还必须商议出一把共同密钥,这里必须强调的是表2.1并非密钥的一部分,也就是说,即使表2.1被公开,也不会影响系统的安全性。假设通信双方均已握有表2.1,且已互相约定好一把秘密密钥“CRYPTOGRAPHY”,接着便可将明文“STRIKE WHILE THE IRON IS HOT”加密了。,首先,将密钥重复地写在明文的上方。 CR YP TO GR AP HY CR YP TO GR AP H ST RI KE WH IL ET HE IR ON IS HO T 然后以上下两个字母为指针去查表2.1,例

8、如第一个字母对为(C,S),此即表示在表2.1中查找行为C且列为S为元素,即为,此字母就是相对于明文S的密文,其他的明文字母转换成密文可依次类推,从而得到以下密文: UKPXDSCYIAIRJVGGHBOTHDA,2.1.3 现代密码体制 1对称密码体制和非对称密码体制 对称密码体制又称为秘密密钥密码体制(或单密钥密码体制隐蔽密钥密码体制),即加密密钥和解密密钥相同或一个可由另一个导出。 非对称密码体制又称为公开密钥密码体制,即加密密钥公开,解密密钥不公开,从一个推导出另一个是不可行的。,2分组密码体制和序列密码体制 这是根据密码算法对明文信息的加密方式进行分类的方法。如果密文仅与给定的密码算

9、法和密钥有关,与被处理的明文数据段在整个明文(或密文)中所处的位置无关,则称为分组密码体制。分组密码体制就是将明文分成固定长度的组,如64bit一组,用同一密钥和算法对每一组加密,输出也是固定长度的密文。 如果密文不仅与给定的密码算法和密钥有关,同时也是被处理的明文数据段在整个明文(或密文)中所处的位置的函数,则称为序列密码体制。,3确定型密码体制和概率密码体制 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式也就惟一地确定,则称为确定型密码体制。前面提到的加密方法中,多数属于这一类。 如果一个加密过程可以描述为:当明文和密钥确定后,密文的形式仍是不确定的,最后产生出来的密文通过客观

10、随机因素从一个密文集合中选出,则称为概率密码体制。 4单向函数密码体制和双向变换密码体制,2.2 对称密码体制,2.2.1 美国数据加密标准(DES) 美国数据加密标准(Data Encryption Standard,DES)是在20世纪70年代中期由美国IBM公司的一个密码算法发展而来的,1977年美国国家标准局公布DES密码算法作为美国数据加密标准。直到今日,尽管DES已经经历了20多个年头,但在已知的公开文献中,还是无法完全地、彻底地把DES给破解掉。换句话说,DES这套加密方法至今仍被公认是安全的。,1DES算法 DES属于分组加密算法。在这个加密系统中,其每次加密或解密的分组大小是

11、64位,所以DES没有密文扩充的问题。就一般数据而言,无论明文或密文,其数据大小通常都大于64位。这时只要将明文密文中每64位当成一个分组加以切割,再对每一个分组做加密或解密即可。当切割到最后一个分组小于64位时,要在此分组后附加“0”位,直到该分组大小成为64位为止。,另一方面,DES所用的加密或解密密钥(KEY)也是64位大小,但其中有8位是奇偶校验位,所以真正起密钥作用的只有56位,而DES加密与解密所用的算法除了子密钥的顺序不同之外,其他的部分则是完全相同的。 图2.5所示的是DES全部16轮(Round)的加密解密结构图,其最上方的64位输入分组数据可能是明文也可能是密文,视使用者要

12、做加密或解密而定,而加密与解密的不同之处,只在于如图2.5所示的最右边的16个子密钥的使用顺序不同,加密的子密钥顺序为K1,K2,K16,而解密的子密钥顺序正好相反,为K16,K15,K1。,表2.2 初始置换,表2.3 终结置换,2子密钥的产生 在子密钥产生过程中,输入是使用者所持有的64位初始密钥。初始密钥首先经过密钥置换A,如表2.5所示,将8个奇偶校验位去掉,留下真正的56位密钥。接着,将这56位密钥分成两个28位的分组C0和D0,再分别经过一个循环左移函数,如表2.4所示,得到C1与D1。,表2.4 循环左移函数,表2.5 密钥置换A,C1与D1连接成56位数据,再按照密钥置换B做重

13、排动作,如表2.6所示,这样就产生了子密钥K1。C1和D1,再分别经过一个循环左移函数得到C2与D2,C2与D2连结成56位数据,再按照密钥置换B做重排动作,这样就产生了子密钥K2。继续下去就依次生成了K3,K4,K16。其中需注意的是,密钥置换A的输入为64位,输出为56位;而密钥置换B的输入为56位,输出为48位。,表2.6 密钥置换B,3DES算法的f函数 f函数是整个DES加密法中最重要的部分,而其中的重点又在S-盒(Substitution Boxes)上。f函数有两个输入数据:一个为32位的中间密文R,另一部分是48位的子密钥K。32位的中间密文R先经过扩展置换E扩增到48位,如表

14、2.7所示,表2.7 扩展置换E,表2.8 压缩置换P,S-盒的替换方式是把6位输入最左与最右2个位取出来当列数,而中间的4个位则拿出来当行数。,4DES的安全性 (1)弱密钥(Weak Key) 所谓的弱密钥是指在所有可能的密钥中,有某几个特别的密钥会降低DES的安全性,所以使用者一定要避免使用这几个弱密钥。 (2)半弱密钥(Semi-weak Key) 除了上述的弱密钥之外,还有另外一种被称为半弱密钥的初始密钥。半弱密钥所产生的子密钥只有两种可能,每一种可能的子密钥刚好各出现8次。,(3)DES的互补性(Complement) 在DES的明文m,密文C与密钥K之间存在着互补的特性。如果以密

15、钥K对明文m加密得到密文C,那么以密钥 对明文 加密,亦可到 。 (4)S-盒的设计原则 S-盒为整个DES加密系统安全性的关键所在,但其设计规则与过程一直因为种种不为人知的因素所限,未被公布出来。,(5)DES的16轮(Round) 超过8轮的DES,其密文和明文的关系就已经是随机关系了。 (6)差分分析法 差分分析法基本上属于选择明文攻击法。但在某些特定的情形下,也可用于已知明文攻击。这个方法简单地讲,就是分析特殊明文配对(Plaintext Pair)的差值对于其所相对应的密文配对(Ciphertext Pair)的差值所产生的影响。,2.2.2 国际数据加密算法(IDEA) 国际数据加

16、密算法(International Data Encryption Algorithm,IDEA)是由瑞士联邦理工学院Xuejia Lai和James Massey的在1990年提出的。IDEA是最近几年提出的用来替代DES的许多算法中的一种,是一个对称分组密码算法。,1设计原理 IDEA是一种使用128位密钥以64位分组为单位加密数据的分组密码算法。与此相对照,DES使用56位密钥以64位的分组为单位进行加密。IDEA的设计目标可以归结为与密码强度和使用的方便性两方面有关,其中密码强度包括分组长度、密钥长度、混淆(Confusion)和扩散(Diffusion);使用的方便性指方便硬件和软件

17、实现。通过由超大规模集成电路(VLSI)进行的硬件实现的设计目标是取得高速度,而软件实现则有灵活和低价的优点。,2数学基础 3IDEA加密方法 IDEA加密方法包括8轮的重复运算,加上最后的输出变换运算(Transformation)。64位的明文分组在每一轮中都是被分成4份,每份16位为一单元来处理。每一轮中有6个不同的子密钥参与作用。,图2.6 IDEA加密流程,图2.7 IDEA单轮运算结构,4子密钥生成过程 从图2.6中可以看出,IDEA一次完整的加密运算需要52个子密钥。这52个16位的子密钥都是由一个128位的加密密钥产生的。将128位分成8份,每份16位,相当于Z1,Z2,Z8的

18、子密钥,Z1的16位对应于加密密钥中最高有效(Most Significant)的16位,而Z8的16位对应于加密密钥中最低有效(Least Significant)的16位。将加密密钥循环左移25位以后,用同样的方法可以得到另外的8个子密钥Z8,Z9,Z16。重复同样的步骤,每循环25位,可以得到另外的新的8个子密钥。如此,Z1,Z2,Z52可以依此陆续生成。,5IDEA解密方法 使用与加密算法同样的结构,可以将密文分组当作输入而逐步恢复明文分组解密过程。 与加密过程中惟一不同的是子密钥的生成方法。现在分析U1,U2,U52解密密钥如何从加密密钥Z1,Z2,Z52导出。,图2.8 IDEA中

19、最后的输出变换运算,2.2.3 高级加密标准(AES) AES的基本要求是该算法是对称密码体制,也即秘密密钥算法;算法应为分组密码算法,分组长度是128bit,密钥长度为128,192和256bit;比三重DES快,至少和三重DES一样安全。 “Rijndael数据加密算法”为新世纪的美国高级加密标准推荐算法。 Rijndael算法是由比利时的两个学者Joan Daemen和Vincent Rijmen提出的。该算法的原形是Square算法,它的设计策略是宽轨迹策略(Wide Trail Strategy)。,1数学基础 (1)GF(28)域 (2)加法 (3)乘法 (4)乘 x (5) x,

20、2设计基本原理 (1)该算法的设计目标有以下3点: 能抗击所有的已知攻击; 在广大范围平台上的快速和代码简洁; 设计简单。,(2)在大多数加密算法中都是采用的Feistel结构的轮变换,而Rijndael算法彻底改变了这种结构,每一轮的变换由3层组成,每一层都实现一定的功能。 线性混合层:确保多轮之上的高度扩散。 非线性层:并行使用多个S-盒,可优化最坏情况非线性特性。 密钥加层:轮密钥(子密钥)简单异或到中间级状态上。,3算法详细描述 Rijndael是一种具有可变分组长度和可变密钥长度的重复的分组密码。分组长度和密钥长度可独立选择为128,192和256bit。 (1)状态,加密密钥和轮数

21、 (2)轮变换 (3)轮密钥 (4)密钥调度,4Rijndael加密和解密算法 (1)Rijndael加密算法由以下内容组成: 初始的轮密钥加; Nr 1轮; 最后一轮。,用伪C代码表示如下: Rijndael ( State, CipherKey ) KeyExpansion ( CipherKey, ExpandedKey ) ; AddRoundKey ( State, ExpandedKey ) ; For (i=1 ; iNr ; i+ ) Round ( State, ExpandedKey + Nb*i) ; FinalRound ( State, ExpandedKey + N

22、b*Nr ) ; ,(2)Rijndael解密算法 解密算法用伪C代码表示如下: I _ Rijndael ( State, CipherKey ) I _ KeyExpansion ( CipherKey, I _ ExpandedKey ) ; AddRoundKey ( State, I _ ExpandedKey +Nb*Nr ) ; For (i= Nr - 1 ; i 0 ; i- ) Round ( State, I _ ExpandedKey + Nb*i) ; FinalRound ( State, I _ ExpandedKey ) ; ,其中I _ KeyExpansio

23、n 的伪C代码如下: I _ KeyExpansion ( CipherKey, I _ ExpandedKey ) KeyExpansion ( CipherKey, I _ ExpandedKey ) ; For ( i=1 ; i Nr ; i+ ) InvMixColumn (I _ ExpandedKey + Nb*i ); ,5Rijndael算法的安全性 Rijndael算法的安全目标达到了K-安全和封闭性。 6Rijndael算法的优点、局限性及发展,2.3 非对称密码体制,非对称密码体制又称公开密钥密码体制,是用一对密钥(一个是用户私有,一个公开)对信息进行加密解密的密码体制

24、。用户用私钥加密信息,密文只能用与加密对应的公钥才能解开。,2.3.1 非对称密码体制的原理 公开密钥算法有一个重要特性:仅仅知道密码算法和加密密钥而要确定解密密钥,在计算上是不可能的。另外,某些算法,如RSA,还具有以下特性。 两个相关密钥中任何一个都可以用作加密而让另一个用作解密。,如图2.9所示,公开密钥加密过程重要步骤如下。 (1)网络中的每个端系统都产生一对用于它将接收的报文进行加密和解密的密钥。 (2)每个系统都通过把自己的加密密钥放进一个登记本或者文件来公布它,这就是公开密钥。另一个则是私有的。 (3)如果A想给B发送一个报文,A就是B的公开密钥加密这个报文。 (4)B收到这个报

25、文后就用他的保密密钥解密报文。其他所有收到这个报文的人都无法解密,因为只有B才有B的私有密钥。,图2.9 公开密钥的加密过程,2.3.2 RSA算法 1欧拉定理 若整数a和m互素,则: a(m)1(mod m) 其中(m)是比m小但与m互素的正整数的个数。,2RSA加密算法 RSA加密算法的过程如下: (1)取两个素数p和q(保密); (2)计算n=pq(公开),(n)=(p1)(q1)(保密); (3)随机选取整数e,满足gcd(e,(n)=1(公开); (4)计算d,满足de1 (mod(n)(保密)。 利用RSA加密第一步需将明文数字化,并取长度小于log2n位的数字作明文块。 加密算法

26、: c=E(m)me(mod n) 解密算法: D(c)cd(mod n),3密钥产生过程 在使用公开密钥密码系统之前,每个参与者都必须产生一对密钥,这包括以下任务。 (1)确定两个素数p和q。 (2)选择e或者d并且计算另外一个。,4RSA安全性讨论 若n=pq被因子分解,则RSA 便被击破。 因为若p,q已知,则(n)=(p1)(q1)便可算出。解密密钥d关于e满足下式: de1(mod(n) 为了安全起见,对p和q还要求如下: (1)p和q的长度相差不大; (2)p1和q1有大素数因子; (3)(p1,q1)很小。 满足这些条件的素数称作安全素数。,2.3.3 LUC算法 1LUC公钥密

27、码体制解决的主要问题 2LUC密码体制的数学背景 3LUC公钥密码体制的算法描述 (1)LUC公钥密码体制的算法流程 (2)LUC公钥体制中的计算方法 4LUC公钥密码体制的特点及存在的问题 LUC算法的安全性主要由以下两个问题决定。 (1)给定n和e下,求d的难度。 (2)给定c,n和e下,求p的难度。,2.3.4 椭圆曲线算法 它是利用有限域上的椭圆曲线有限群代替基于离散对数问题密码体制中的有限循环群后得到的一类密码体制。 1椭圆曲线简介 椭圆曲线的研究来源于椭圆积分: 这里的E(x)是关于x的三次或四次多项式。这样的积分不能用初等函数来表达,为此引入所谓的椭圆函数。所谓椭圆曲线指的是由韦

28、尔斯特拉斯(Weierstrass)方程: y2+a1xy+a3y=x3+a2x2+a4x+a6,所确定的平面曲线。若F是一个域,F,i=1,2,6满足上述方程的数对(x,y)称为F域上的椭圆曲线E的点。其中F域可以是有理数域和复数域,还可以是有限域GF(p)。椭圆曲线通常用E表示。除了曲线上的所有点外,还需加上一个无穷远点O。,定理 若P,Q是椭圆曲线上的任意两点,PQ连线L交E于另一点R,则: (1) (2) (3) (4)在E上一定存在一点Q,使得 ,这样的Q记为P; (5)对于E上任意的点P、Q、R有:,由此定理可知:若O点看作运算 的幺元,则椭圆曲线上的点加上无穷远点对 与运算构成一

29、个Abel群。记为 。为了计算方便,记 共有m个P相加,称为倍点加法,倍点加法运算是椭圆曲线密码体制的一个重要运算。它的速度将在很大程度上影响椭圆曲线密码体制的加密速度,因此目前有许多密码学者在从事倍点加法快速运算的优化算法。 定义2.1 设P是椭圆曲线E上的任意一点,若存在最小的正整数n,使得 ,其中O是无穷远点,则称n为P的阶。,2椭圆曲线上的密码系统 3安全椭圆曲线的选取 4椭圆曲线密码体制的安全性 一个公钥密码系统的有效性需要考虑以下几个因素:计算开销、密钥长度和带宽、安全性和存储空间等方面。 (1)计算开销决定了变换公钥和私钥所需的计算量。 (2)密钥长度决定存储密钥对和系统参数需要

30、的比特数。,表2.10 ECC、RSA/DSA的系统参数和密钥对长度比较,(3)带宽是指传送一加密消息或一签名所传输的比特数。 (4)加密算法的安全性能一般通过该算法的抗攻击强度来反映。 (5)ECC的密钥尺寸和系统参数与RSA或DSA相比要小得多。,通过以上分析可见,ECC与其他公钥加密系统相比,能提供更好的加密强度、更快的执行速度和更小的密钥长度,因此ECC可用较小的开销(所需的计算量、存储量、带宽、软件和硬件实现的规模等)和时延(加密和签字速度高)实现较高的安全性。特别适合用于计算能力和集成电路空间受限(如IC卡)、带宽受限(如无线通信和某些计算机网络)和要求高速实现的情况。,2.4 密

31、钥的管理,2.4.1 密钥的管理 密钥的管理综合了密钥的设置、产生、分配、存储、进入、使用、备份、保护和销毁等一系列过程。所有的工作都围绕一个宗旨,即确保使用中的密钥是安全的。,关于密钥管理的考虑主要分成以下几个部分。 1密钥设置协议 2密钥分配 3密钥保护 4密钥产生及进入 5密钥的保存 6密钥的使用、备份和销毁,2.4.2 密钥的分配 1对称密码体制的密钥分配 对于通信方A和B来说,密钥分配可以用以下的多种方法完成。 (1)一个密钥可以由A选定,然后物理地传递给B。 (2)一个第三方可以选定密钥,然后物理地传递给A和B。 (3)如果A和B在不久以前使用过一个密钥,一方可以使用旧密钥加密新密

32、钥并传输给另一方。 (4) 如果A和B每人都有一个和三方C的加密连线,C就可以加密连线把密钥传递给A和B。,图2.11 密钥层次结构的使用,(1)一种密钥分配方案 密钥分配的概念可以用多种方式实施。一种典型的方案如图2.12所示。假定每个用户与KDC之间共享惟一的密钥。,图2.12 密钥分配方案,(2)层次式密钥控制 (3)会话密钥的使用寿命 (4)分散式密钥控制 (5)控制密钥的使用方式 数据加密密钥,用来在网络上进行一般的通信。 PIN加密密钥,用于电子资金转账和销售点应用的个人身份号码PIN。 文件加密密钥,用来加密存放在公众可存取地点的文件。,2非对称密码体制的密钥分配 从密钥分配角度

33、讲,公开密钥加密的用途实际上包括以下两个不同的方面: 公开密钥的分配; 使用公开密钥加密方法分配秘密密钥。,下面分别讨论这两个方面。 (1)公开密钥的分配 分配公开密钥的技术方案有多种。几乎所有的方案都可以归为以下几类: 公开宣布; 公开可以得到的目录; 公开密钥管理机构; 公开密钥证书。, 公开密钥的公开宣布 公开可以得到的目录 公开密钥管理机构 公开密钥证书 (2)秘密密钥的公开密钥加密分配 简单的秘密密钥分配,图2.13 用公开密钥加密来建立会话密钥的简单方法, 具有保密和鉴别能力的秘密密钥分配 一个混合方案,图2.14 秘密密钥的公开密钥分配,2.4.3 公钥的全局管理体制(PKI)

34、PKI的基本组成元素是CA,它主要完成以下几个功能: (1)为用户生成对,并通过一定的途径发给用户; (2)为用户CA签发数字证书,形成用户的公开密钥信息,并通过一定的途径分发给用户; (3)对用户证书的有效性的验证; (4)对用户的数字证书进行管理。这些处理包括有效证书的公布、撤消证书的公布(有时也称证书黑表的维护)和证书归档等。,图2.15 数字证书的签发,图2.16 用户证书的验证流程,图2.17 树型PKI,图2.18 交叉型PKI,2.5 散列函数与数字签名,2.5.1 散列函数 1引言 使用在数字签名上的散列函数必须满足下面的条件。 (1)散列函数必须对任意长度的明文产生固定长度的

35、散列函数值。 (2)对任意的明文m,散列函数值h(m)可通过软件或硬件很容易地产生。,(3)对任意的h(m)值x,要找到一个明文m与之对应,即x=h(m),在计算上是不可行的。 (4)对一个明文m1,要找到另一个不同的明文m2,而且具有相同的散列函数值h(m1)= h(m2),在计算上是不可行的。 (5)要找到任意一对不同的明文(m1,m2),而且具有相同的散列函数值h(m1)= h(m2),在计算上是不可行的。,2简单的散列函数 将明文M分成固定长度64位的明文分组(Block),m1,m2,mn,使用DES的CBC操作方法,对每一明文分组陆续加密:令h0 = 初始值,hi = Emihi1

36、及G= hn,惟一不同的是这种加密没有使用任何密钥,而G就是64位的散列函数值。后面介绍的两种常用散列函数MD5和安全散列函数(Secure Hash Fuction,SHA),在设计的概念上都十分类似上述方法,同样都将明文分成固定长度的明文分组,再对每一个明文分组做相同的处理。,2.5.2 报文摘要 报文摘要(Message Digests)是单向的散列函数,它以变长的信息为输入,把其压缩成一个定长的值输出。若输入的信息被改变了,则输出的定长值(摘要)也会相应改变。,图2.19 MD5产生明文摘要流程图,由于MD5是由MD4发展出来的更安全的散列函数,下面分析二者之间的不同。 (1)MD4只

37、有3轮的运算,而MD5多了一轮。 (2)MD4的第一轮中没有使用到常数T i ,第二轮中的每一步使用了相同的一个常数。第三轮中亦是如此,但选用另外一个固定常数。而在MD5中,每一轮中的每一步都使用不同的常数。 (3)MD4使用3种不同的逻辑,MD5多了一种逻辑运算。 (4)MD5中的每一步骤,都包括了取代A、B、C和D中一个记录单元旧值的操作。Rivest认为这样的操作可以加快“雪崩”(Avalanche)效应。,2.5.3 安全散列函数(SHA) SHA对任意长度明文的预处理和MD5的过程是一样的,即预处理完后的明文长度是512位的整数倍。SHA的输出是160位,分别存储于5个32位的记录单

38、元中。这5个记录单元的初始值分别用16进位制表示,如下所示。 A=67452301 B=EFCDAB89 C=98BADCFE D=10325476 E=C3D2E1F0,图2.20 SHA处理512位明文分组流程图,ft (B,C,D)=(BC)V(,ft (B,C,D)=B,C,ft (B,C,D)=B,C,表2.11 SHA使用的逻辑函数,表2.12 SHA使用的常数Ki,表2.13 MD5与SHA差异表,(1)安全性 (2)速度 (3)简易性,2.5.4 数字签名算法(DSA) DSA使用的参数如下。 p:512位的素数。 q:160位的素数且q | p1 g:满足g=h p1/q mod p,其中h1,p1的任意整数。 x:0xq,为秘密密钥。 y:y=g x mod p为公开密钥。 p、q、g及h为系统公布的共同参数,与公开密钥y均要公开,x为签名者的密钥。,1签名 2验证 3DSA改良方法1 签名:r=(gk mod p)mod q及s=(rkh(m))x1 mod q 验证:t=r1 mod q及r=(gt yst mod p)mod q,4DSA改良方法2 签名:r=(gk mod p)mod q及s=k(h(m)+xr)1 mod q 验证:,2.6 本 章 小 结,1数据加密概述 2对称密码体制 3非对称密码体制 4密钥的管理 5散列函数和数字签名,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1