第2章信息加密技术与应用信息加密技术•信息加密技术是电子商务安全交易的核心,可实现电子商务交易的保密性、完整性,不可否认性等。•密码学是应用数学和计算机科学相结合的一个交叉学科。数学理论在密码编码学和密码分析学中发挥着重要的作用,在密码学中用到的数学知识主要包括:数论、群论、组合逻辑、复杂性理论、遍历理论和信息论等。密码技术的基本知识•密码学的几个基本概念明文、密文、加密、解密、加密算法、解密算法、加密密钥和解密密钥。•一个密码系统(密码体制)通常由五个部分组成:明文空间M,全体明文的集合密文空间C,全体密文的集合密钥空间,全体密钥的集合K=(Ke,Kd)加密算法E,C=E(M,Ke)解密算法D,M=D(C,Kd),D是E的逆变换加解密过程示意图明文明文密文加密算法解密算法密钥密钥密码分析者窃听密码学的发展历史•密码学的发展大致分为三个阶段:古代密码、古典密码和近现代密码学。•1949年之前:密码学是一门艺术•1949~1975年:密码学成为科学•1976年以后:密码学的新方向——公钥密码学的出现。密码学的发展历史•由于古时多数人并不识字,最早的秘密书写的形式只用到纸笔或等同物品,随着识字率提高,就开始需要真正的密码学了。•最古典的两个加密技巧是是:置换:将字母顺序重新排列,例如『helpme』变成『ehplem』;替代:有系统地将一组字母换成其他字母或符号,例如『flyatonce』变成『gmzbupodf』(每个字母用下一个字母取代)。古典密码实例•希腊密码(二维字母编码查表)公元前2世纪123451ABCDE2FGHIJK3LMNOP4QRSTU5VWXYZ明文:HELLO密文:2315313134古典密码实例•凯撒密码:公元前50年公元前50年,古罗马的凯撒大帝在高卢战争中采用的加密方法。凯撒密码算法就是把每个英文字母向前推移K位。ABCDEFG……XYZDEFGHIJ……ABC明文:HELLO密文:KHOOL中国古代密码实例•古中国周朝兵书《六韬.龙韬》也记载了密码学的运用,其中的《阴符》和《阴书》便记载了周武王问姜子牙关于征战时与主将通讯的方式:•太公曰:「主與將,有陰符,凡八等。有大勝克敵之符,長一尺。破軍擒將之符,長九寸。降城得邑之符,長八寸。卻敵報遠之符,長七寸。警眾堅守之符,長六寸。請糧益兵之符,長五寸。敗軍亡將之符,長四寸。失利亡士之符,長三寸。諸奉使行符,稽留,若符事聞,泄告者,皆誅之。八符者,主將祕聞,所以陰通言語,不泄中外相知之術。敵雖聖智,莫之能識。」武王問太公曰:「…符不能明;相去遼遠,言語不通。為之奈何?」太公曰:「諸有陰事大慮,當用書,不用符。主以書遺將,將以書問主。書皆一合而再離,三發而一知。再離者,分書為三部。三發而一知者,言三人,人操一分,相參而不相知情也。此謂陰書。敵雖聖智,莫之能識。」•阴符是以八等长度的符来表达不同的消息和指令,可算是密码学中的替代法,把信息转变成敌人看不懂的符号。至于阴书则运用了移位法,把书一分为三,分三人传递,要把三份书从新拼合才能获得还原的资讯。密码学的发展历史•1949年美国科学家香农(Shannon)发表了题为“保密系统的通信理论”的著名论文,提出利用数学方法建立通用的密钥密码体系。•1976年,美国密码学家Diffie和Hellman在一篇题为“密码学的新方向”的论文中提出了公钥密码体制的思路•1978年RSA公钥密码体制问世密码学的发展历史•二十世纪早期的密码学本质上主要考虑语言学上的模式。•从此之后重心转移,现在密码学使用大量的数学,包括资讯理论、计算复杂性理论、统计学、组合学、抽象代数以及数论。密码学同时也是工程学的分支,但却是与别不同,因为它必须面对有智能且恶意的对手,大部分其他的工程仅需处理无恶意的自然力量。密码学问题与量子物理间的关连也是目前热门的研究。课堂练习•运用置换、替代法设计一套针对中文的加密方案,要求如下:•1、能针对任何中文字符。•2、简单快捷,加密、解密一个中文字符的时间不得超过10秒。•3、尽可能不被轻易识破。密码分析•主要研究如何分析和破译密码。对于一个密码体制,如果能够根据密文确定明文或密钥,或者能够根据明文和相应的密文确定密钥,则我们说这个密码体制是可破译的;否则,称其为不可破译的。密钥空间中不同密钥的个数称为密码体制的密钥量,它是衡量密码体制安全性的一个重要指标。密码分析•密码系统的安全性由两方面因素决定:–所使用的密码算法的保密强度–密码算法以外不安全的因素•因此,密码算法的保密强度并不等价于密码系统整体上的安全性。一个密码系统必须同时完善技术与制度要求,才能保证整个系统的支全。密码攻击类别•惟密文攻击:分析者有一个或一些密文。•已知明文攻击:分析者有一些明文及对应的密文。•选择明文攻击:分析者选择一些对攻击有利的特定明文,并产生对应的密文。•选择密文攻击:分析者选择一些对攻击有利的特定密文,并得到对应的明文。密码攻击方法•穷举攻击:密码攻击者用试遍所有密钥的方法来破译密码。所花时间=尝试次数*一次解密所需的时间。增大密钥量和加大解密算法的复杂性。•统计分析攻击密码攻击者通过分析密文和明文的统计规律来破译密码。设法使明文的统计特性不带入密文,密文不带有明文的痕迹。密码攻击方法•数学分析攻击密码攻击者针对加密算法的数学依据通过数学求解的方法来破译密码。应该选用具有坚实数学基础和足够复杂的加密算法。密码体制的分类•根据发展史:古典密码和近现代密码;•根据加密方式:流密码和分组密码;•根据加密变换是否可逆:单向函数密码以及双向变换密码体制。•根据加解密算法所使用的密钥是否相同:对称密钥密码体制和非对称密钥密码体制;流密码•流密码采用密钥生成器,根据初始密钥生成一系列密钥流来加密信息,每个明文可以选用不同的密钥加密。如果流密码所使用的是真正随机产生的、与消息流长度相同的二进制密钥序列,此时的流密钥就是一次一密的密码体制,这种密码的破解很困难。流密码的加解密模型图流密码•流密码目前的应用领域主要还是军事和外交等部门。•可以公开见到的流密码算法主要包括A5、SEAL、RC4、PIKE等。流密码•同步流密码:密钥流和明文流相互独立;•异步流密码:密钥流和明文流不相互独立,密钥流的产生有密文或者明文的参与,会发生错误传播现象。流密码的加解密过程•流密码多数情况下用二进制序列来表示,这种流密码将明文和密钥都转换成相应的二进制序列,种子密钥用来控制密钥流发生器,使密钥流发生器输出密钥流,加密变换只是简单的模2加变换(即明文和密钥进行二进制的异或运算)流密码的加解密过程•一个实例•例如,若令m=4,设置初始密钥为1000,由Zi+4=(Zi⊕Zi+1)mod2生成的密钥流为:1000100110101111,…。任何一个初始密钥不全为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),x≠y,使得H(x)=H(y)是计算上不可行的。•常用的Hash算法有:–MD2、MD4、MD5–SHA、SHA-1单向散列函数•在实际中,单向散列函数建立在压缩函数的基础上。•给定一长度为m的输入,单向散列函数输出长度为n的散列值。压缩函数的输入是消息分组和文本前一分组的输出。输出是到该点所有分组的散列,即:hi=f(Mi,hi-1)单向散列函数MiHi-1hi单向散列函数•MD5算法•RonRivest设计,RFC1321•经历过MD2,MD4不同的版本•对任意输入均产生128bit的输出•基于32位的简单操作,易于软件实现•简单而紧凑,没有复杂的程序和大数据结构•适合微处理器实现(特别是Intel)单向散列函数•SHA,SHA-1–NIST和NSA共同设计,用在DSS中–基于MD4设计,与MD5非常相似–产生160位散列值密码学的基本数学知识•异或运算•异或是一个数学运算符。他应用于逻辑运算。其运算法则为a⊕b=a‘b+ab’(a‘为非a)。•两个值不相同,则异或结果为真。反之,为假。密码学的基本数学知识•整除若b可以被a整除,则表示为a|b,否则表示为a|b,这里a,b∈Z,Z表示整数集合。密码学的基本数学知识•模运算a,m∈Z,则a模m的运算为a除以m的余数,这种运算为模(mod)运算,记为amodm,其值为0到m-1的整数(一般假定m0)。模运算和普通的运算一样,有交换律,结合律和分配律。密码学的基本数学知识古典密码实例•凯撒密码:公元前50年公元前50年,古罗马的凯撒大帝在高卢战争中采用的加密方法。凯撒密码算法就是把每个英文字母向前推移K位。ABCDEFG……XYZDEFGHIJ……ABC明文:HELLO密文:KHOOL古典密码实例•若将字母编号a-z对应为1-26•凯撒变换c=(m+k)modn•k=3,n=26密码学的基本数学知识•同余设a,b∈Z,n≠0,如果n|(a-b),则称为a和b模n同余,记为a≡b(modn),整数n称为模数。若0≤bn,我们称b是a对模n的最小非负剩余,也称b为a对模n的余数。两个数同余的基本性质如下:密码学的基本数学知识•两个数同余的基本性质:(5)若ac≡bd(modn),a≡b(modn),(a,n)=1,那么有c≡d(modn)密码学的基本数学知识•逆变换对称加密技术•对称加密系统——私有密钥–对称加密特点•数据的发送方和接受方使用的是同一把私有密钥,即把明文加密成密文和把密文解密成明文用的是同一把私有密钥。对称加密技术对称加密过程•发送方用自己的私有密钥对要发送的信息进行加密•发送方将加密后的信息通过网络传送给接收方•接收方用发送方进行加密的那把私有密钥对接收到的加密信息进行解密,得到信息明文.密文明文发送方Internet密文密钥发送方(=密钥接收方)加密明文接收方密钥接收方解密对称加密技术•对称加密的特点•优点:加解密速度快•缺陷:首先是密钥数目的问题n×(n-1)/2其次是安全传输密钥也是一个难题第三是无法鉴别彼此身份对称密码体制•对称密码体制,也叫做单钥密码体制或秘密密钥密码体制,即加密密钥与解密密钥相同的密码体制,这种体制中只要知道加(解)密算法,就可以反推解(加)密算法。对称密码体制的分类•对称密码体制按照对明文数据的加密方式不同,可以分为流密码(又叫系