密码技术基础密码技术可以提供那些安全保障密码技术是电子商务系统采取的主要安全技术手段,可为其提供四种基本安全服务:保密性:满足交易过程中敏感信息的机密性不可否认性:防止交易伙伴抵赖曾经做过的交易源验证:接受者可验证消息的来源完整性校验:接收者可以验证信息在传输途中没有被篡改信息加密技术是电子商务安全交易的核心,可实现电子商务交易的保密性、完整性,不可否认性、真实性等。密码学是应用数学和计算机科学相结合的一个交叉学科。数学理论在密码编码学和密码分析学中发挥着重要的作用,在密码学中用到的数学知识主要包括:数论、群论、组合逻辑、复杂性理论、遍历理论和信息论等。本章主要内容密码技术概述密码技术的基本知识密码分析密码学的基本数学知识对称密码体制非对称密码体制认证技术2.1密码技术概述密码学的发展大致分为三个阶段:古代密码、古典密码和近现代密码学。•1949年之前:密码学是一门艺术•1949~1975年:密码学成为科学•1976年以后:密码学的新方向——公钥密码学的出现。2.2密码技术的基本知识密码学的几个基本概念明文:要加密的信息,用M或P表示密文:经过加密后的明文,用C表示。加密:对明文实施变换的过程,记为E(M).解密:对密文实施变换的过程,记为D(M).加密算法:对明文加密时使用的规则。解密算法:加密密钥:参与加密过程的密钥。解密密钥一个密码系统(密码体制)通常由五个部分组成:明文空间M,全体明文的集合密文空间C,全体密文的集合密钥空间,全体密钥的集合K=(Ke,Kd)加密算法E,C=E(M,Ke)解密算法D,M=D(C,Kd),D是E的逆变换加解密过程示意图明文明文密文加密算法解密算法密钥密钥密码分析者窃听密码体制的分类根据发展史:古典密码和近现代密码;根据加解密算法所使用的密钥是否相同:对称密钥密码体制和非对称密钥密码体制;根据加密方式:流密码和分组密码;根据加密变换是否可逆:单向函数密码以及双向变换密码体制。2.3密码分析主要研究如何分析和破译密码。对于一个密码体制,如果能够根据密文确定明文或密钥,或者能够根据明文和相应的密文确定密钥,则我们说这个密码体制是可破译的;否则,称其为不可破译的。密钥空间中不同密钥的个数称为密码体制的密钥量,它是衡量密码体制安全性的一个重要指标。密码系统的安全性由两方面因素决定:所使用的密码算法的保密强度密码算法以外不安全的因素(管理制度)因此,密码算法的保密强度并不等价于密码系统整体上的安全性。一个密码系统必须同时完善技术与制度要求,才能保证整个系统的支全。密码攻击类别惟密文攻击:分析者有一个或一些密文。已知明文攻击:分析者有一些明文及对应的密文。选择明文攻击:分析者选择一些对攻击有利的特定明文,并产生对应的密文。选择密文攻击:分析者选择一些对攻击有利的特定密文,并得到对应的明文。2.4密码学的基本数学知识整除若b可以被a整除,则表示为a|b,否则表示为a|b,这里a,b∈Z,Z表示整数集合。模运算a,m∈Z,则a模m的运算为a除以m的余数,这种运算为模(mod)运算,记为amodm,其值为0到m-1的整数(一般假定m0)。模运算和普通的运算一样,有交换律,结合律和分配律。同余设a,b∈Z,n≠0,如果n|(a-b),则称为a和b模n同余,记为a≡b(modn),整数n称为模数。若0≤bn,我们称b是a对模n的最小非负剩余,也称b为a对模n的余数。两个数同余的基本性质如下:,abZ两个数同余的基本性质:(5)若ac≡bd(modn),a≡b(modn),(a,n)=1,那么有c≡d(modn)逆变换若m≥1,(a,m)=1,则存在c使得ca≡1modm,满足这种条件的c称为a对模m的逆,记作a-1modm群2.5对称密码体制所谓加密,就是用基于数学方法的程序和保密的密钥对信息进行编码,把明文信息变成一堆杂乱无章难以理解的字符串,也就是把明文变成密文。古典密码实例希腊密码(二维字母编码查表)公元前2世纪123451ABCDE2FGHIJK3LMNOP4QRSTU5VWXYZ明文:HELLO密文:2315313134古典密码实例凯撒密码公元前50年,古罗马的凯撒大帝在高卢战争中采用的加密方法。凯撒密码算法就是把每个英文字母向前推移K位。ABCDEFG……XYZDEFGHIJ……ABC明文:xinancaijinguniversity密文:alqdqfdlmlqjxqlyhuvlwb古典密码实例若将字母编号a-z对应为1-26凯撒变换c=(m+k)modnn=26E(ai)=aj,j≡i+k(modn),0kn加法密码实际上是每个字母向前推移k位,不同的可得到不同的密文,若假设26个字母分别对应于整数0~25,如下表:加密变换实际是c≡m+k(mod26),0k26,k是密钥。例如,明文为datasecurity对应的数据序列是301901842201781924k=5时密文数据为:852452397252213243密文为:ifyfxjhzwnydabcdefghijklmnopqrstuvwxyz012345678910111213141516171819202122232425对称加密特点对称加密系统——秘密密钥数据的发送方和接受方使用的是同一把秘密密钥,即把明文加密成密文和把密文解密成明文用的是同一把秘密密钥。对称加密过程发送方用自己的秘密密钥对要发送的信息进行加密发送方将加密后的信息通过网络传送给接收方接收方用发送方进行加密的那把秘密密钥对接收到的加密信息进行解密,得到信息明文.密文明文发送方Internet密文密钥发送方(=密钥接收方)加密明文接收方密钥接收方解密对称加密的特点优点:加解密速度快缺陷:首先是密钥数目的问题(n×(n-1)/2)其次是安全传输密钥也是一个难题第三是无法鉴别彼此身份对称密码体制对称密码体制,也叫做单钥密码体制或秘密密钥密码体制,即加密密钥与解密密钥相同的密码体制,这种体制中只要知道加(解)密算法,就可以反推解(加)密算法。对称密码体制的分类对称密码体制按照对明文数据的加密方式不同,可以分为流密码(又叫系列密码)和分组密码两类。分组密码的加密单元是分组.流密码的加密单元是字符或者比特.几种典型的古典密码移位密码几种典型的古典密码当K=3时,此密码体制通常叫恺撒密码(CaesarCipher),由JuliusCaesar首先使用。可以看出移位密码将明文在明文空间中循环移K位而成密文。代换密码仿射密码求模的逆元在乘法中,4×1/4=1,4和1/4互为逆元,在模运算中,求逆元要更复杂!假设:一般而论,如果gcd(a,n)=1,那么ax≡1mod(n)有唯一解,否则的话,无解。如果n是一个素数,在从1到n-1的每一个数都与n是互素的,且在这个范围恰好有一个逆元。模逆元的求解假设M为模数,U为小于M的本原元素,且与M互素,R为余数,它们满足U*VmodM=R,当R=1时,我们称V为U的模逆元,当R≠1时,称V为U的模系数.模逆元和模系数是公开密钥加密算法和数字签名算法中最常用的参数之一。流密码流密码采用密钥生成器,根据初始密钥生成一系列密钥流来加密信息,每个明文可以选用不同的密钥加密。如果流密码所使用的是真正随机产生的、与消息流长度相同的二进制密钥序列,此时的流密钥就是一次一密的密码体制,这种密码的破解很困难。流密码流密码目前的应用领域主要还是军事和外交等部门。可以公开见到的流密码算法主要包括A5、SEAL、RC4、PIKE等。流密码同步流密码:密钥流和明文流相互独立;异步流密码:密钥流和明文流不相互独立,密钥流的产生有密文或者明文的参与,会发生错误传播现象。流密码的加解密模型图流密码的加解密过程流密码多数情况下用二进制序列来表示,这种流密码将明文和密钥都转换成相应的二进制序列,种子密钥用来控制密钥流发生器,使密钥流发生器输出密钥流,加密变换只是简单的模2加变换(即明文和密钥进行二进制的异或运算)一个实例例如,若令m=4,设置初始密钥为1000,由Zi+4=(Zi+Zi+1)mod2生成的密钥流为:1000100110101111,…。任何一个初始密钥不全为0的密钥都将产生一个周期为2m-1个二进制长度的密钥流。流密码的加密强度二元流密码的安全强度取决于密钥生成器所产生的密钥流的性质。在实际应用中的密钥流都是用有限存储和有限复杂逻辑的电路来产生的,它的输出是周期序列。分组密码分组密码体制是目前商业领域中比较重要而流行的一种加密体制,它广泛地应用于数据的保密传输、加密存储等应用场合。加密时,先对明文分组,每组长度都相同,然后对分组加密得到等长的密文,分组密码的特点是加密密钥与解密密钥相同。如果明文不是分组长的倍数,则要填充。分组密码算法的要求分组长度m足够大密钥空间足够大密码变换必须足够复杂强化密码算法的措施:将大的明文分组再分成几个小段,分别完成各个小段的加密置换,最后进行并行操作。采用乘积密码技术。乘积密码就是以某种方式连续执行两个或多个密码变换。密码攻击方法:穷举攻击:密码攻击者用试遍所有密钥的方法来破译密码。所花时间=尝试次数*一次解密所需的时间。增大密钥量和加大解密算法的复杂性。统计分析攻击密码攻击者通过分析密文和明文的统计规律来破译密码。设法使明文的统计特性不带入密文,密文不带有明文的痕迹。数学分析攻击密码攻击者针对加密算法的数学依据通过数学求解的方法来破译密码。应该选用具有坚实数学基础和足够复杂的加密算法。密码攻击方法穷举攻击统计分析攻击数学分析攻击对称密码系统AES(AdvancedEncryptionStandard)AES的产生美国国家标准和技术协会NIST从1997年4月5日开始征集和评估新的数据加密标准;1998年NIST发布了15个AES的候选算法,并挑出了五个(MARS,RC6TM,Rijndael,Serpent,Twofish)进入新一轮评估;2000年10月宣布Rijndael为AES的最终算法;2001年11月26日NIST正式宣布AES为美国政府的新加密标准,该决定在2002年5月26日生效。Rijndael之所为能当选AES,主要是因为:(1)运算速度快,软硬件实现都表现出非常好的性能;(2)对内存的需求非常低,很适合于受限制的环境下;(3)算法可靠,使用非线性结构S盒,有足够的安全性;(4)该算法能有效抵抗差分分析和线性分析攻击;(5)Rijndael是一个分组迭代密码,被设计成128/192/256比特三种密钥长度,可用于加密长度为128/192/256比特的分组,相应的轮数为10/12/14,分组长度和密钥长度设计灵活。(6)密钥安装的时间很好,具有很高的灵活性。AES加密算法的具体实现AES每轮要经过四次变换,分别是字节代换运算(SubByte())ShiftRows()(行移位)变换MixColumns()(列混合)变换AddRoundKey()(轮密钥的混合)变换我们用的128bit的密钥(循环次数为10),那么每次加密的分组长为128bit,16个字节,每次从明文中按顺序取出16个字节假设为a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15,这16个字节在进行变换前先放到一个4×4的矩阵中。如下页图所示:a0a4a8a12a1a5a9a13a2a6a10a14a3a7a11a15这个矩阵称为状态(state)以后所有的变换都是基于这个矩阵进行的,到此,准备工作已经完成。现在按照前面的顺序进行加密变换,首先开始第一次循环的第一个变换:字节代换(SubByte())。字节代换(SubByte())a0a4a8a12a1a5a9a13a2a6a10a14a3a7a11a15s00s01s02s03s10s11s12s13s20s21s22s23s30s31s32s33out0out4out8out12out1out5out9out