信息加密技术与应用.pptx
第2章信息加密技术与应用信息加密技术与应用信息加密技术信息加密技术信息加密技术是电子商务安全交易的核心,信息加密技术是电子商务安全交易的核心,可实现电子商务交易的保密性、完整性,可实现电子商务交易的保密性、完整性,不可否认性等。不可否认性等。密码学是应用数学和计算机科学相结合的密码学是应用数学和计算机科学相结合的一个交叉学科。数学理论在密码编码学和一个交叉学科。数学理论在密码编码学和密码分析学中发挥着重要的作用,在密码密码分析学中发挥着重要的作用,在密码学中用到的数学知识主要包括:数论、群学中用到的数学知识主要包括:数论、群论、组合逻辑、复杂性理论、遍历理论和论、组合逻辑、复杂性理论、遍历理论和信息论等。信息论等。密码技术的基本知识密码技术的基本知识密码学的几个基本概念密码学的几个基本概念 明文、密文、加密、解密、加密算法、解密算法、明文、密文、加密、解密、加密算法、解密算法、加密密钥和解密密钥。加密密钥和解密密钥。一个密码系统(密码体制)通常由五个部分组成:一个密码系统(密码体制)通常由五个部分组成:明文空间明文空间M M,全体明文的集合,全体明文的集合 密文空间密文空间C C,全体密文的集合,全体密文的集合 密钥空间,全体密钥的集合密钥空间,全体密钥的集合K K(K K e e,K K d d)加密算法加密算法E E,C CE(M,KE(M,Ke e)解密算法解密算法D,M=D(C,KD,M=D(C,Kd d),D),D是是E E的逆变换的逆变换加解密加解密过过程示意程示意图图明文明文密文加密算法解密算法密钥密钥密码分析者密码分析者密码分析者密码分析者窃听窃听窃听窃听密码学的发展历史密码学的发展历史密码学的发展大致分为三个阶段:古代密密码学的发展大致分为三个阶段:古代密码、古典密码和近现代密码学。码、古典密码和近现代密码学。19491949年之前:密码学是一门艺术年之前:密码学是一门艺术1949194919751975年:密码学成为科学年:密码学成为科学19761976年年以以后后:密密码码学学的的新新方方向向公公钥钥密密码码学的出现。学的出现。密码学的发展历史密码学的发展历史由于古时多数人并不识字,最早的秘密书写的形由于古时多数人并不识字,最早的秘密书写的形式只用到纸笔或等同物品,随着识字率提高,就式只用到纸笔或等同物品,随着识字率提高,就开始需要真正的密码学了。开始需要真正的密码学了。最古典的两个加密技巧是是:最古典的两个加密技巧是是:置换:将字母顺序重新排列,例如置换:将字母顺序重新排列,例如help me变成变成ehpl em;替代:有系统地将一组字母换成其他字母或符号,替代:有系统地将一组字母换成其他字母或符号,例如例如fly at once变成变成gmz bu podf(每(每个字母用下一个字母取代)。个字母用下一个字母取代)。古典密码实例古典密码实例希腊密码(二维字母编码查表)公元前希腊密码(二维字母编码查表)公元前2世纪世纪123451ABCDE2FGHIJK3LMNOP4QRSTU5VWXYZ明文:明文:HELLO 密文:密文:2315313134古典密码实例古典密码实例凯撒密码:公元前凯撒密码:公元前50年年 公元前公元前5050年,古罗马的凯撒大帝在高卢战争中采用的加年,古罗马的凯撒大帝在高卢战争中采用的加密方法。凯撒密码算法就是把每个英文字母向前推移密方法。凯撒密码算法就是把每个英文字母向前推移K K位。位。A B C D E F G X Y Z D E F G H I J A B C 明文:HELLO密文:KHOOL中国古代密码实例中国古代密码实例古中国周朝兵书六韬龙韬也记载了密码学的运用,其中古中国周朝兵书六韬龙韬也记载了密码学的运用,其中的阴符和阴书便记载了周武王问姜子牙关于征战时与的阴符和阴书便记载了周武王问姜子牙关于征战时与主将通讯的方式:主将通讯的方式:太公曰:主與將,有陰符,凡八等。有大勝克敵之符,長一太公曰:主與將,有陰符,凡八等。有大勝克敵之符,長一尺。破軍擒將之符,長九寸。降城得邑之符,長八寸。卻敵報尺。破軍擒將之符,長九寸。降城得邑之符,長八寸。卻敵報遠之符,長七寸。警眾堅守之符,長六寸。請糧益兵之符,長遠之符,長七寸。警眾堅守之符,長六寸。請糧益兵之符,長五寸。敗軍亡將之符,長四寸。失利亡士之符,長三寸。諸奉五寸。敗軍亡將之符,長四寸。失利亡士之符,長三寸。諸奉使行符,稽留,若符事聞,泄告者,皆誅之。八符者,主將祕使行符,稽留,若符事聞,泄告者,皆誅之。八符者,主將祕聞,所以陰通言語,不泄中外相知之術。敵雖聖智,莫之能識。聞,所以陰通言語,不泄中外相知之術。敵雖聖智,莫之能識。武王問太公曰:武王問太公曰:符不能明;相去遼遠,言語不通。為符不能明;相去遼遠,言語不通。為之奈何?太公曰:諸有陰事大慮,當用書,不用符。主以之奈何?太公曰:諸有陰事大慮,當用書,不用符。主以書遺將,將以書問主。書皆一合而再離,三發而一知。再離者,書遺將,將以書問主。書皆一合而再離,三發而一知。再離者,分書為三部。三發而一知者,言三人,人操一分,相參而不相分書為三部。三發而一知者,言三人,人操一分,相參而不相知情也。此謂陰書。敵雖聖智,莫之能識。知情也。此謂陰書。敵雖聖智,莫之能識。阴符是以八等长度的符来表达不同的消息和指令,可算是密码阴符是以八等长度的符来表达不同的消息和指令,可算是密码学中的替代法,把信息转变成敌人看不懂的符号。至于阴书则学中的替代法,把信息转变成敌人看不懂的符号。至于阴书则运用了移位法,把书一分为三,分三人传递,要把三份书从新运用了移位法,把书一分为三,分三人传递,要把三份书从新拼合才能获得还原的资讯。拼合才能获得还原的资讯。密码学的发展历史密码学的发展历史1949年美国科学家香农(年美国科学家香农(Shannon)发表)发表了题为了题为“保密系统的通信理论保密系统的通信理论”的著名论文,的著名论文,提出利用数学方法建立通用的密钥密码体提出利用数学方法建立通用的密钥密码体系。系。1976年,美国密码学家年,美国密码学家Diffie和和Hellman在在一篇题为一篇题为“密码学的新方向密码学的新方向”的论文中提出的论文中提出了公钥密码体制的思路了公钥密码体制的思路1978年年RSA公钥密码体制问世公钥密码体制问世 密码学的发展历史密码学的发展历史二十世纪早期的密码学本质上主要考虑语言学上二十世纪早期的密码学本质上主要考虑语言学上的模式。的模式。从此之后重心转移,现在密码学使用大量的数学,从此之后重心转移,现在密码学使用大量的数学,包括资讯理论、计算复杂性理论、统计学、组合包括资讯理论、计算复杂性理论、统计学、组合学、抽象代数以及数论。密码学同时也是工程学学、抽象代数以及数论。密码学同时也是工程学的分支,但却是与别不同,因为它必须面对有智的分支,但却是与别不同,因为它必须面对有智能且恶意的对手,大部分其他的工程仅需处理无能且恶意的对手,大部分其他的工程仅需处理无恶意的自然力量。密码学问题与量子物理间的关恶意的自然力量。密码学问题与量子物理间的关连也是目前热门的研究连也是目前热门的研究。课堂练习课堂练习运用置换、替代法设计一套针对中文的加运用置换、替代法设计一套针对中文的加密方案,要求如下:密方案,要求如下:1、能针对任何中文字符。、能针对任何中文字符。2、简单快捷,加密、解密一个中文字符的、简单快捷,加密、解密一个中文字符的时间不得超过时间不得超过10秒。秒。3、尽可能不被轻易识破。、尽可能不被轻易识破。密码分析密码分析主要研究如何分析和破译密码。对于一个主要研究如何分析和破译密码。对于一个密码体制,如果能够根据密文确定明文或密码体制,如果能够根据密文确定明文或密钥,或者能够根据明文和相应的密文确密钥,或者能够根据明文和相应的密文确定密钥,则我们说这个密码体制是可破译定密钥,则我们说这个密码体制是可破译的;否则,称其为不可破译的。密钥空间的;否则,称其为不可破译的。密钥空间中不同密钥的个数称为密码体制的密钥量,中不同密钥的个数称为密码体制的密钥量,它是衡量密码体制安全性的一个重要指标。它是衡量密码体制安全性的一个重要指标。密码分析密码分析密码系统的安全性由两方面因素决定:密码系统的安全性由两方面因素决定:所使用的密码算法的保密强度所使用的密码算法的保密强度密码算法以外不安全的因素密码算法以外不安全的因素因此,密码算法的保密强度并不等价于密因此,密码算法的保密强度并不等价于密码系统整体上的安全性。一个密码系统必码系统整体上的安全性。一个密码系统必须同时完善技术与制度要求,才能保证整须同时完善技术与制度要求,才能保证整个系统的支全。个系统的支全。密码攻击类别密码攻击类别惟密文攻击:分析者有一个或一些密文。惟密文攻击:分析者有一个或一些密文。已知明文攻击:分析者有一些明文及对应已知明文攻击:分析者有一些明文及对应的密文。的密文。选择明文攻击:分析者选择一些对攻击有选择明文攻击:分析者选择一些对攻击有利的特定明文,并产生对应的密文。利的特定明文,并产生对应的密文。选择密文攻击:分析者选择一些对攻击有选择密文攻击:分析者选择一些对攻击有利的特定密文,并得到对应的明文。利的特定密文,并得到对应的明文。密码攻击方法密码攻击方法穷举攻击:穷举攻击:密码攻击者用试遍所有密钥的方法来破译密码。密码攻击者用试遍所有密钥的方法来破译密码。所花时间尝试次数所花时间尝试次数*一次解密所需的时间。一次解密所需的时间。增大密钥量和加大解密算法的复杂性。增大密钥量和加大解密算法的复杂性。统计分析攻击统计分析攻击 密码攻击者通过分析密文和明文的统计规律来密码攻击者通过分析密文和明文的统计规律来破译密码。破译密码。设法使明文的统计特性不带入密文,密文不带设法使明文的统计特性不带入密文,密文不带有明文的痕迹。有明文的痕迹。密码攻击方法密码攻击方法数学分析攻击数学分析攻击 密码攻击者针对加密算法的数学依据通密码攻击者针对加密算法的数学依据通过数学求解的方法来破译密码。过数学求解的方法来破译密码。应该选用具有坚实数学基础和足够复杂应该选用具有坚实数学基础和足够复杂的加密算法。的加密算法。密码体制的分类密码体制的分类根据发展史:古典密码和近现代密码根据发展史:古典密码和近现代密码 ;根据加密方式:流密码和分组密码;根据加密方式:流密码和分组密码;根据加密变换是否可逆:单向函数密码以根据加密变换是否可逆:单向函数密码以及双向变换密码体制。及双向变换密码体制。根据加解密算法所使用的密钥是否相同:根据加解密算法所使用的密钥是否相同:对称密钥密码体制和非对称密钥密码体制;对称密钥密码体制和非对称密钥密码体制;流密码流密码流密码采用密钥生成器,根据初始密钥生流密码采用密钥生成器,根据初始密钥生成一系列密钥流来加密信息,每个明文可成一系列密钥流来加密信息,每个明文可以选用不同的密钥加密。如果流密码所使以选用不同的密钥加密。如果流密码所使用的是真正随机产生的、与消息流长度相用的是真正随机产生的、与消息流长度相同的二进制密钥序列,此时的流密钥就是同的二进制密钥序列,此时的流密钥就是一次一密的密码体制,这种密码的破解很一次一密的密码体制,这种密码的破解很困难。困难。流密码的加解密模型图流密码的加解密模型图流密码流密码流密码目前的应用领域主要还是军事和外流密码目前的应用领域主要还是军事和外交等部门。交等部门。可以公开见到的流密码算法主要包括可以公开见到的流密码算法主要包括A5、SEAL、RC4、PIKE等。等。流密码流密码同步流密码同步流密码:密钥流和明文流相互独立;:密钥流和明文流相互独立;异步流密码:异步流密码:密钥流和明文流不相互独立,密钥流和明文流不相互独立,密钥流的产生有密文或者明文的参与,会密钥流的产生有密文或者明文的参与,会发生错误传播现象。发生错误传播现象。流密码的加解密过程流密码的加解密过程流密码多数情况下用二进制序列来表示,流密码多数情况下用二进制序列来表示,这种流密码将明文和密钥都转换成相应的这种流密码将明文和密钥都转换成相应的二进制序列,种子密钥用来控制密钥流发二进制序列,种子密钥用来控制密钥流发生器,使密钥流发生器输出密钥流,加密生器,使密钥流发生器输出密钥流,加密变换只是简单的模变换只是简单的模2加变换加变换(即明文和密钥进即明文和密钥进行二进制的异或运算行二进制的异或运算)流密码的加解密过程流密码的加解密过程一个实例一个实例例如,若令例如,若令m=4,设置初始密钥为,设置初始密钥为1000,由由Zi4(Zi Zi+1)mod 2生成的密钥流为:生成的密钥流为:1000 1001 1010 1111,。任何一个初始。任何一个初始密钥不全为密钥不全为0的密钥都将产生一个周期为的密钥都将产生一个周期为2m-1个二进制长度的密钥流。个二进制长度的密钥流。流密码的加密强度流密码的加密强度二元流密码的安全强度取决于密钥生成器二元流密码的安全强度取决于密钥生成器所产生的密钥流的性质。在实际应用中的所产生的密钥流的性质。在实际应用中的密钥流都是用有限存储和有限复杂逻辑的密钥流都是用有限存储和有限复杂逻辑的电路来产生的,它的输出是周期序列。电路来产生的,它的输出是周期序列。分组密码分组密码分组密码体制是目前商业领域中比较重要分组密码体制是目前商业领域中比较重要而流行的一种加密体制,它广泛地应用于而流行的一种加密体制,它广泛地应用于数据的保密传输、加密存储等应用场合。数据的保密传输、加密存储等应用场合。加密时,先对明文分组,每组长度都相同,加密时,先对明文分组,每组长度都相同,然后对分组加密得到等长的密文,分组密然后对分组加密得到等长的密文,分组密码的特点是加密密钥与解密密钥相同。码的特点是加密密钥与解密密钥相同。如果明文不是分组长的倍数,则要填充。如果明文不是分组长的倍数,则要填充。分组密码分组密码分组密码算法的要求:分组密码算法的要求:分组长度分组长度m足够大足够大 密钥空间足够大密钥空间足够大 密码变换必须足够复杂密码变换必须足够复杂 强化密码算法的措施:强化密码算法的措施:将大的明文分组再分成几个小段,分别完成各将大的明文分组再分成几个小段,分别完成各个小段的加密置换,最后进行并行操作。个小段的加密置换,最后进行并行操作。采用乘积密码技术。乘积密码就是以某种方式采用乘积密码技术。乘积密码就是以某种方式连续执行两个或多个密码变换。连续执行两个或多个密码变换。分组密码分组密码基本设计原则基本设计原则1、扩散、扩散 将每一位明文的影响尽量迅速地应用到较将每一位明文的影响尽量迅速地应用到较多的密文位中。多的密文位中。2、混乱、混乱 密文和明文间的统计特性尽可能的复杂化,密文和明文间的统计特性尽可能的复杂化,避免很有规律的、线性的相互关系。避免很有规律的、线性的相互关系。课堂练习课堂练习思考题思考题1、简述密码体制的常见划分方法。、简述密码体制的常见划分方法。2、简述置换和移位的基本原理。、简述置换和移位的基本原理。3、简述混乱和扩散的基本原理。、简述混乱和扩散的基本原理。4、流密码体制最复杂的部分是加密变换函、流密码体制最复杂的部分是加密变换函数,这种说法对不对?数,这种说法对不对?单向散列函数单向散列函数单向散列函数是一种单向密码体制,它是一单向散列函数是一种单向密码体制,它是一个明文到密文的不可逆函数。个明文到密文的不可逆函数。也就是说,是无法解密的。通常用于只需要也就是说,是无法解密的。通常用于只需要加密不需要解密的特殊场合。加密不需要解密的特殊场合。目前多用于保存密码及保证数据的完整性。目前多用于保存密码及保证数据的完整性。单向散列函数单向散列函数Hash:哈希函数,杂凑函数,散列函数哈希函数,杂凑函数,散列函数h=H(m)H 具有如下特性:具有如下特性:1)可以操作任何大小的报文)可以操作任何大小的报文m;2)给定任意长度的)给定任意长度的m,产生的,产生的h的长度固定;的长度固定;3)给定)给定m 计算计算h=H(m)是容易的;是容易的;4)给定)给定h,寻找寻找m,使得,使得H(m)=h是困难的;是困难的;5)给定)给定m,要找到,要找到m,m m 且且 H(m)=H(m)是计算上不可行的;是计算上不可行的;6)寻找任何)寻找任何(x,y),xy,使得,使得H(x)=H(y)是是计计算上不可行的。算上不可行的。常用的常用的Hash算法有算法有:MD2、MD4、MD5 SHA、SHA-1单向散列函数单向散列函数在实际中,单向散列函数建立在压缩函数在实际中,单向散列函数建立在压缩函数的基础上。的基础上。给定一长度为给定一长度为m的输入,单向散列函数输出的输入,单向散列函数输出长度为长度为n的散列值。压缩函数的输入是消息的散列值。压缩函数的输入是消息分组和文本前一分组的输出。输出是到该分组和文本前一分组的输出。输出是到该点所有分组的散列,即:点所有分组的散列,即:hi=f(Mi,hi-1)单向散列函数单向散列函数MiHi-1hi单向散列函数单向散列函数MD5 算法算法Ron Rivest 设计设计,RFC 1321经历过经历过MD2,MD4 不同的版本不同的版本对任意输入均产生对任意输入均产生128bit的输出的输出基于基于32位的简单操作,易于软件实现位的简单操作,易于软件实现简单而紧凑,没有复杂的程序和大数据结构简单而紧凑,没有复杂的程序和大数据结构适合微处理器实现(特别是适合微处理器实现(特别是Intel)单向散列函数单向散列函数SHA,SHA-1NIST 和和NSA共同设计共同设计,用在用在DSS中中基于基于MD4 设计,与设计,与MD5 非常相似非常相似产生产生160 位位 散列值散列值密码学的基本数学知识密码学的基本数学知识异或运算异或运算异或是一个数学运算符。他应用于逻辑运算。其运算法则为abab+ab(a为非a)。两个值不相同,则异或结果为真。反之,为假。密码学的基本数学知识密码学的基本数学知识整除整除 若若b b可以被可以被a a整除,则表示为整除,则表示为a|ba|b,否则表,否则表示为示为a|b a|b,这里,这里a,bZa,bZ,Z Z表示整数集合。表示整数集合。密码学的基本数学知识密码学的基本数学知识模运算模运算 a,mZa,mZ,则,则a a模模m m的运算为的运算为a a除以除以m m的余数,的余数,这种运算为模这种运算为模(mod)(mod)运算,记为运算,记为a mod ma mod m,其值为其值为0 0到到m-1m-1的整数的整数(一般假定一般假定m0)m0)。模运。模运算和普通的运算一样,有交换律,结合律算和普通的运算一样,有交换律,结合律和分配律。和分配律。密码学的基本数学知识密码学的基本数学知识古典密码实例古典密码实例凯撒密码:公元前凯撒密码:公元前50年年 公元前公元前5050年,古罗马的凯撒大帝在高卢战争中采用的加年,古罗马的凯撒大帝在高卢战争中采用的加密方法。凯撒密码算法就是把每个英文字母向前推移密方法。凯撒密码算法就是把每个英文字母向前推移K K位。位。A B C D E F G X Y Z D E F G H I J A B C 明文:HELLO密文:KHOOL古典密码实例古典密码实例若将字母编号a-z对应为1-26凯撒变换c=(m+k)mod nk=3,n=26密码学的基本数学知识密码学的基本数学知识同余同余 设设a,bZZ,n0,如果,如果n|(a-b),则称为,则称为a和和b模模n同余,记为同余,记为a b(mod n),整数,整数n称为称为模数。若模数。若0bn,我们称,我们称b是是a对模对模n的最小的最小非负剩余,也称非负剩余,也称b为为a对模对模n的余数。的余数。两个数同余的基本性质如下:两个数同余的基本性质如下:密码学的基本数学知识密码学的基本数学知识 两个数同余的基本性质:(5)(5)若若若若ac bd(mod n),a b(mod n),(a,n)=1,ac bd(mod n),a b(mod n),(a,n)=1,那么有那么有那么有那么有cd(mod n)cd(mod n)密码学的基本数学知识密码学的基本数学知识逆变换对称加密技术对称加密技术对称加密系统私有密钥对称加密特点对称加密特点数据的发送方和接受方使用的是同一把私有密钥,数据的发送方和接受方使用的是同一把私有密钥,即把明文加密成密文和把密文解密成明文用的是同即把明文加密成密文和把密文解密成明文用的是同一把私有密钥。一把私有密钥。对称加密技术对称加密技术v对称加密过程对称加密过程发送方用自己的私有密钥对要发送的信息进行加密发送方用自己的私有密钥对要发送的信息进行加密发送方将加密后的信息通过网络传送给接收方发送方将加密后的信息通过网络传送给接收方接收方用发送方进行加密的那把私有密钥对接收到的接收方用发送方进行加密的那把私有密钥对接收到的加密信息进行解密,得到信息明文加密信息进行解密,得到信息明文.密文密文明文明文发发送方送方Internet密文密文密密钥钥发发送方送方(=密密钥钥接收方接收方)加密加密明文明文接收方接收方密密钥钥接收方接收方解密解密对称加密技术对称加密技术对称加密的特点优点:加解密速度快 缺陷:首先是密钥数目的问题 n(n-1)/2 其次是安全传输密钥也是一个难题 第三是无法鉴别彼此身份对称密码体制对称密码体制对称密码体制,也叫做单钥密码体制或秘对称密码体制,也叫做单钥密码体制或秘密密钥密码体制,即加密密钥与解密密钥密密钥密码体制,即加密密钥与解密密钥相同的密码体制,这种体制中只要知道加相同的密码体制,这种体制中只要知道加(解解)密算法,就可以反推解密算法,就可以反推解(加加)密算法。密算法。对称密码体制的分类对称密码体制的分类对称密码体制按照对明文数据的加密方式对称密码体制按照对明文数据的加密方式不同,可以分为流密码不同,可以分为流密码(又叫系列密码又叫系列密码)和分和分组密码两类。组密码两类。分组密码的加密单元是分组分组密码的加密单元是分组.流密码的加密单元是字符或者比特流密码的加密单元是字符或者比特.几种典型的古典密码几种典型的古典密码移位密码移位密码几种典型的古典密码几种典型的古典密码当K=3时,此密码体制通常叫恺撒密码(Caesar Cipher),由Julius Caesar首先使用。可以看出移位密码将明文在明文空间中循环移K位而成密文。几种典型的古典密码几种典型的古典密码代换密码几种典型的古典密码几种典型的古典密码维吉尼亚密码维吉尼亚密码法国密码学家维吉尼亚于法国密码学家维吉尼亚于1585年提出了一年提出了一种多表代换密码,即维吉尼亚密码,它的种多表代换密码,即维吉尼亚密码,它的一个明文字母可以表示成多个密文。一个明文字母可以表示成多个密文。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 A 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 B 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 A C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D D E F G H I J K L M N O P Q R S T U V W X Y Z A B CE E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F F G H I J K L M N O P Q R S T U V W X Y Z A B C D EG G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X X Y Z A B C D E F G H I J K L M N O P Q R S T U V WY Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z Z 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 几种典型的古典密码几种典型的古典密码对如下明文加密:对如下明文加密:TO BE OR NOT TO BE THAT IS THE QUESTION当选定当选定RELATIONS作为密钥时,加密过程是:明文一个作为密钥时,加密过程是:明文一个字母为字母为T,第一个密钥字母为,第一个密钥字母为R,因此可以找到在,因此可以找到在R行中代行中代替替T的为的为K,依此类推,得出对应关系如下:,依此类推,得出对应关系如下:密钥密钥:RELAT IONSR ELATI ONSRE LATIO NSREL明文明文:TOBEO RNOTT OBETH ATIST HEQUE STION密文密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY 历史上以维吉尼亚密表为基础又演变出很多种加历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。沿用到二战以后的初级电子密码机上。几种典型的古典密码几种典型的古典密码其他常见的多表替换密码还有希尔密码、置换密码等,详见课本23页。仿仿射射密密码码仿射密码仿射密码求模的逆元在乘法中,41/4=1,4和1/4互为逆元,在模运算中,求逆元要更复杂!假设:一般而论,如果gcd(a,n)=1,那么a-1 x mod(n)有唯一解,否则的话,无解。如果n是一个素数,在从1 到 n1的每一个数都与n是互素的,且在这个范围恰好有一个逆元。仿射密码仿射密码模逆元的求解假设M为模数,U为小于M的本元元素,且与M互素,R为余数,它们满足U*V mod M=R,当R=1时,我们称V为U的模逆元,当R1时,称V为U的模系数.模逆元和模系数是公开密钥加密算法和数字签名算法中最常用的参数之一。课堂练习课堂练习思考题1、简述单向散列函数的特点。2、简述对称密钥体制的特点。3、计算下列运算的结果 异或运算:10111100 求模:15 mod 4 求逆:a=16,m=5,求a-14、对英文加密,采用移位密码和代换密码可能的变换各有多少种?5、维吉尼亚密码体制能对抗统计概率分析吗?DES算法 IBM 公司,公司,70年代初提出,年代初提出,1977成为美国成为美国国家标准国家标准DES是一种对称密钥算法,密钥长度为是一种对称密钥算法,密钥长度为56bits(加上奇偶校验,通常写成加上奇偶校验,通常写成64bits)是一种分组加密算法,是一种分组加密算法,64 bits为一个分组为一个分组基本思想:基本思想:混乱(混乱(Confusion)和扩散(和扩散(Diffusion)使用标准的算术和逻辑运算使用标准的算术和逻辑运算DES算法 加密过程如下:加密过程如下:首先对明文比特进行初始置换,然后将所得的结首先对明文比特进行初始置换,然后将所得的结果进行完全相同的依赖于密钥的果进行完全相同的依赖于密钥的16轮处理,最后轮处理,最后应用一个末尾置换获得密文。应用一个末尾置换获得密文。依赖于密钥的计算首先将依赖于密钥的计算首先将64比特的数据平均分成比特的数据平均分成两半,其中一半作为一个复杂函数的输入,并且两半,其中一半作为一个复杂函数的输入,并且将其输出结果与另一半进行异或。复杂函数包括将其输出结果与另一半进行异或。复杂函数包括通过确定的通过确定的8个称为个称为S-盒的非线性代换。盒的非线性代换。DES的安的安全性主要依赖于全性主要依赖于S-盒,而且盒,而且S-盒是唯一的非线性盒是唯一的非线性部分。解密过程与加密过程一样,除了所使用的部分。解密过程与加密过程一样,除了所使用的密钥的次序(以逆序使用)外。密钥的次序(以逆序使用)外。DES加密过程DES加密过程首先把明文分成以首先把明文分成以64 bit为单位的块为单位的块m,对于,对于每个每个m,执行如下操作执行如下操作 DES(m)=IP-1 T16 T15.T2 T1 IP(m)初始置换,初始置换,IP 16轮迭代,轮迭代,Ti,i=1,2,16末置换,末置换,IP-1DES加密过程初始置换初始置换末置换末置换M=m1m2,m62m63,m64M=m58m50,m23m15,m7IP(M)IP-1(IP(M)=M迭代过程迭代过程T。在。在DES算法中,要重复算法中,要重复16次。次。设设第第i次次迭迭代代T的的输输入入为为,其其中中L、R分分别别是是左左半半部部分分32位位和和右右半半部部分分32位位,则则第第i次次迭迭代的输出为代的输出为第第i次次迭迭代代的的输输出出作作为为第第i+1次次迭迭代代的的输输入入,进行下一次迭代。进行下一次迭代。Ki是是由由56位位的的密密钥钥K确确定定的的48位位密密钥钥,每每一一次迭代使用不同的次迭代使用不同的48位密钥。位密钥。16次迭代DES加密过程f是将一个是将一个32位的符号串转换为另一个位的符号串转换为另一个32位位的符号串的运算函数,功能的第一步是将的符号串的运算函数,功能的第一步是将32位的输入转换为位的输入转换为48位,并与迭代密钥按位,并与迭代密钥按位异或,再把得到的位异或,再把得到的48位分为八组,每组位分为八组,每组六位,分别通过六位,分别通过S1,S2,S8输出,每输出,每组只输出四位,组合成组只输出四位,组合成32位,这位,这32位最后位最后通过置换输出。通过置换输出。DES加密过程DES加密过程下下一一张张图图中中扩扩增增排排列列的的选选位位表表描描述述了了如如何何将将32位位转转换换为为48位的方法,总共八行六列。位的方法,总共八行六列。单单纯纯置置换换是是对对输输入入的的32位位进进行行置置换换,产产生生32位位输输出出。如如果果输输入入为为Hi=r1r2r32,则则P(Hi)=h16h7h4h25,如如后表所示。后表所示。扩增排列扩增排列E(R)单纯置换单纯置换P(H)DES加密过程数据在数据在S盒中执行混淆动作。八个盒中执行混淆动作。八个S盒中的盒中的每一个每一个S盒都是将六位的输入映射为四位的盒都是将六位的输入映射为四位的输出。以输出。以S1盒为例,盒中的数据排列如下盒为例,盒中的数据排列如下表所示。表所示。关于DES的评价DESDES加密解密完成的只是简单的算术运算,加密解密完成的只是简单的算术运算,即比特串的异或处理的组合,因此速度快,即比特串的异或处理的组合,因此速度快,密钥生产容易,能以硬件或软件的方式非密钥生产容易,能以硬件或软件的方式非常有效的实现。常有效的实现。对对DESDES的批评的批评DESDESDESDES的密钥长度的密钥长度的密钥长度的密钥长度56565656位可能太小位可能太小位可能太小位可能太小DESDESDESDES的迭代次数可能太少的迭代次数可能太少的迭代次数可能太少的迭代次数可能太少SSSS盒(即代替函数盒(即代替函数盒(即代替函数盒(即代替函数 Sj Sj Sj Sj)中可能有不安全因素)中可能有不安全因素)中可能有不安全因素)中可能有不安全因素DESDESDESDES的一些关键部分不应当保密(如的一些关键部分不应当保密(如的一些关键部分不应当保密(如的一些关键部分不应当保密(如S S S S盒设计)盒设计)盒设计)盒设计)三重三重DES人们并没有放弃使用DES,并想出了一个解决其长度问题的方法,即采用三重DES。这种方法用两个密钥对明文进行三次加密,假设两个密钥是K1和K2,其算法的如下:1.用密钥K1进行DES加密。2.用K2对步骤1的结果进行DES解密。3.用步骤2的结果使用密钥K1进行DES加密。这种方法的缺点,是要花费原来三倍时间,从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式了。AES(Advanced Encryption Standard)AES的产生的产生 美国国家标准和技术协会美国国家标准和技术协会NIST从从1997年年4月月5日开日开始征集和评估新的数据加密标准;始征集和评估新的数据加密标准;1998年年NIST发布了发布了15个个AES的候选算法,并挑出的候选算法,并挑出了五个了五个(MARS,RC6TM,Rijndael,Serpent,Twofish)进进入新一轮评估;入新一轮评估;2000年年10月宣布月宣布Rijndael(发音为(发音为“Rhine-dale”,设计者为比利时的设计者为比利时的JoanDaemen和和VincentRijmen)为)为AES的最终算法;的最终算法;2001年年11月月26日日NIST正式宣布正式宣布AES 为美国政府的为美国政府的新加密标准,该决定在新加密标准,该决定在2002年年5月月26日生效。日生效。AES的基本参数的基本参数AES为对称分组密码体制。密钥长度有128、192和256比特三种。数据分组长度也有128、192和256比特三种。AES变换由轮函数通过多轮迭代实现,根据密钥、分组长度不同,迭代次数可能为10,12或14轮三种。AES加密算法的具体实现加密算法的具体实现AES轮函数每轮要经过四次变换,分别是 SubByte()字节代换运算 ShiftRows()行移位变换 MixColumns()列混合变换 AddRoundKey()轮密钥的混合变换AES加密算法的具体实现加密算法的具体实现假设我们用的128bit的密钥,并且每次加密的分组长为128bit,即16个字节,此时轮函数迭代次数为10轮。每次从明文中按顺序取出16个字节假设为a a0 0a a1 1a a2 2a a3 3a a4 4a a5 5a a6 6a a7 7a a8 8a a9 9a a1010a a1111a a1212a a1313a a1414a a1515,这16个字节在进行变换前先放到一个44的矩阵中。如下页图所示:AES(Advanced Encryption Standard)a0a4a8a12a1a5a9a13a2a6a10a1