资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,计算机网络教研室 林金山,8.3 密码技术,8.3.1 加密技术概述,8.3.2 私钥密码技术,8.3.3 公钥密码技术,8.3.1 密码技术概述,密码技术(Cryptology)对存储或者传输的信息采取秘密的交换以防止第三者对信息的窃取的技术。,密码技术分为加密和解密两部分。加密是把需要加密的报文(也称为明文known plaintext)按照以密码钥匙(简称密钥)为参数以及加密函数进行变换,产生无阅读意义的密码文件(简称密文 ciphertext)。解密是按照密钥和解密函数把密文还原成明文的过程。,密码学的基本原则是假定密码分析者知道加密和解密使用的方法,但不知道密钥。所以算法(可能多种)必须是公开的,只有密钥是保密的。,密钥是为了有效控制加密、解密算法的实现,在这些算法的实现过程中,需要有某些只能被通信双方所掌握的专门的、关键的信息参与,这些信息就是密钥。加密在许多场合集中表现为对密钥的应用,因此密钥是保密和窃密的主要对象。密钥是一个数值,它和加密算法一起生成特别的密文。密钥本质是非常大的数,密钥的尺寸用位(bit)表示,在公开密钥加密方法中,密钥的尺寸越大,密文就越安全。如商业机构至少使用128位的密钥;政府机构至少需要256位密钥,才算得上安全密钥。,几个概念,明文(消息)(Plaintext) :被隐蔽消息。,密文,(Ciphertext)或,密报,(Cryptogram):明文经密码变换成的一种隐蔽形式。,加密,(Encryption):将明文变换为密文的过程。,解密,(Decryption):加密的逆过程,即由密文恢复出原明文的过程。,加密员,或,密码员,(Cryptographer):对明文进行加密操作的人员。,加密算法(Encryption algorithm):密码员对明文进行加密时所采用的一组规则。,接收者(,Receiver):,传送消息的预定对象。,解密算法:接收者对密文进行解密时所采用的一组规则。,密钥(,Key):,控制加密和解密算法操作的数据处理,分别称作加密密钥和解密密钥,截收者(,Eavesdropper):,在信息传输和处理系统中的非受权者,通过搭线窃听、电磁窃听、声音窃听等来窃取机密信息。,8.3.1 密码技术概述,利用密码技术,报文在从信源发出和进入通信信道之间进行加密,经过信道传输,到信宿接收时进行解密,以实现网络通信保密。加密与解密模型 如图8.8所示。,图8.8加密解密模型,在网络中,位于通信双方两个端点之间的任何一个实体均可将信息(信号)轻易拦截下来。若密码分析的攻击者只是监听、破译对密码通信信道上所有信息,称之为被动攻击。若他还能够对通信道上传输的消息进行篡改甚至主动发送信息,破坏信息的完整性和可用性称之为主动攻击。,恺撒密码(The Caesar Cipher),它是一种简单的替换加密法: 字母表中的每个字母依次都被靠后的第三个字母取代。即:字母A变成D、B变成E、X变成A、Y变成B、Z变成C,依次类推。这种加密技术的一个变种是ROT-13密码,每个字母均循环移动13个位置。 简单的替换加密存在重大的缺陷,因为重复出现的某个字母总是会用相同的字母替代。通过对某种语言的分析,可知道字母被移动的大致距离。,信源,M,m,加密器,解密器,接收者,m,非法接入者,搭线信道,(主动攻击),C ,搭线信道,(被动攻击),密码分析员,m,密钥源,K,1,k,1,密钥源,K,2,k,2,密钥信道,保密系统模型,8.3.2 私钥密码技术,私钥密码体制是从传统的简单换位、代替密码发展而来的,也称为对称密码体制(Symmetric-key algorithm)。对称密码体制使用相同的密钥加密和解密信息,亦即通信双方建立并共享一个密钥。,对称密码体制的工作原理为:用户A要传送机密信息给B,则A和B必须共享一个预先由人工分配或由一个密钥分发中心(KDC)分发的密钥K,于是A用密钥K和加密算法E对明文P加密得到密文C=EK(P),并将密文C发送给B;B 用同样的密钥K和解密算法D对密文进行解密,得到明文P=DK(EK(P)。,按加密模式来分,对称密码体制可以分为流密码Stream Cipher(或称序列密码)和分组密码 Block Cipher (或称块密码)两大类。,8.3.2 私钥密码技术,流密码,SSC(Synchronous Stream Cipher),:,流密码的工作原理是,:,通过有限状态机产生性能优良的伪随机序列,使用该序列加密信息流,逐比特加密,得到密文序列。所以流密码的安全强度完全取决于它所产生的伪随机序列的好坏。,密钥流将独立于明文。,流密码的优点,是错误扩展小、速度快、同步容易和安全程度高。,对流密码的攻击的主要手段有,代数方法和概率统计方法,两者的结合可以达到较好的效果。,8.4.2 私钥密码技术,2. 分组密码,分组密码是许多系统安全的一个重要组成部分。,分组密码的工作方式是将明文分成固定的块,用同一密钥算法对每一块加密,输出也是固定长度的密文。分组密码(Block Cipher)是将明文消息编码表示后的数字序列x,1,,x,2,,x,3,,划分成长为m的组x=(x,0,,x,1,,x,m-1,),各组分别在密钥k=(k,0,,k,1,,k,l-1,)控制下变换成等长的输出数字序列y=(y,0,,y,1,,y,n-1,),其加密函数E:V,n,KV,n,,V,n,是n维矢量空间,K为密钥空间。,分组密码与流密码不同之处在于输出的每一位数字不是只与相应时刻输入的明文数字有关,而是还与一组长为m的明文数字有关。这种密码实质上是字长为m的数字序列的代换密码,如图8.9所示。,8.3.2 私钥密码技术,图8.9 分组密码框图,明文序列,x,1,x,2,x,i,加密函数E:,V,n,K,V,n,这种密码实质上是字长为,m,的数字序列的代换密码,。,解密算法,加密算法,密钥,k,=(,k,0,k,1,k,t-1,),密钥,k,=(,k,0,k,1,k,t-1,),明文,x,=(,x,0,x,1,x,m-1,),明文,x,=(,x,0,x,1,x,m-1,),密文,x,=(,y,0,y,1,y,m-1,),8.3.2 私钥密码技术,通常取n=m;若nm,则为有数据扩展的分组密码; 若nm,则为有数据压缩的分组密码。,分组密码每次加密的明文数据量是固定的分组长度n,而实用中待加密消息的数据量是不定的,因此需要采用适当的工作模式来隐蔽明文中的统计特性、数据的格式等,以提高整体的安全性,降低删除、重放、插入和伪造的成功的机会。,美国NSB规定了四种基本的工作模式,即,电码本(ECB),、,密码反馈链接(CBC)、密码反馈(CFB)、输出反馈(OFB),。ANSI、ISO和ISO/IEC也规定了类似的工作模式。SET协议使用DES的密码分组链接CBC(Cipher Block Chaining)模式。,比较和选用,ECB模式,简单、高速,但最弱、易受重发攻击,一般不推荐。,CBC适用于文件加密,但较ECB慢。安全性加强。当有少量错误时,也不会造成同步错误。,OFB和CFB较CBC慢许多。每次迭代只有少数bit完成加密。若可以容忍少量错误扩展,则可换来恢复同步能力,此时用CFB。在字符为单元的流密码中多选CFB模式。,OFB用于高速同步系统,不容忍差错传播。,8.3.2 私钥密码技术,3. DES和AES,美国数据加密标准:,DES (Data Encryption Standard)是当今使用得最为广泛的一种加密方案,一般认为是很难破解的私钥。它以64bit的块来加密,即通过对64位的明文块加密得到64位的密文块。,加密和解密都使用相同的密钥和算法,只是在密钥次序中有些区别。56位的密钥表示为64位的数,而每个第8位都用于奇偶校验。,DES,算法,分组长度为64 bits (8 bytes),密文分组长度也是64 bits。,密钥长度为64 bits,有8 bits奇,偶校验,有效密钥长度为56 bits。,算法主要包括:初始置换,IP,、,16轮迭代的乘积变换、逆初始,置换,IP,-1,以及16个子密钥产生器。,输入,64,bit,明文数据,初始置换IP,乘积变换,(16轮迭代),逆初始置换IP,-1,64,bit密文数据,输出,标准数据加密算法,DES可用于所有4种模式中:ECB、CBC、CFB用OFB。但是,一般DES只用于密码块链接CBC模式和CFB模式。,8.3.2 私钥密码技术,高级加密标准AES(Advanced Encryption Standard)是替换DES 的一种加密算法。,AES具备以下的特点:,算法必须是对称密码或私有密码。,算法必须是类似DES的一块密码,而不是流密码。,算法支持密钥长度范围从128、192到256位,而且算法还应支持不同块数的数据。,算法应该用或Java程序语言设计。,状态,算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵阵列表示,该阵列有4行,列数N,b,为分组长度除32,种子密钥,以字节为元素的矩阵阵列描述,阵列为4行,列数N,k,为密钥长度除32,除上述需求外,AES还必须要高效率,高安全性,而且AES算法必须是公开,免专利权税。,AES的评审,1999年8月9日NIST宣布第二轮筛选出的5个候选算法为:,MARS(C.Burwick,等,IBM),,RC6,TM,(R. Rivest等,RSA Lab.),,RIJNDEAL(J. Daemen,比),,SERPENT(R. Anderson等,英、以、挪威),,TWOFISH(B. Schiener)。,2000年10月2日,NIST宣布Rijndael作为新的AES,AES算法设计思想,抵抗所有已知的攻击;,在多个平台上速度快,编码紧凑;,设计简单。,Rijndael没有采用Feistel结构,轮函数由3个不同的可逆均匀变换构成的,称为3个层,均匀变换是指状态的每个bit都用类似的方法处理,8.3.3 公钥密码技术,公开密钥密码概述,公钥加密算法也称非对称密钥算法,,用两对密钥:一个公共密钥和一个专用密钥。公共密钥则可以发布出去,专用密钥要保证绝对的安全。用公共密钥加密的信息只能用专用密钥解密,反之亦然。公共密钥加密算法主要有:,RSA,、,DiffieHellman,等。,公钥密码体制的原理为:,用户,A,和,B,各自拥有一对密钥,(,KA,、,KA,-1,),和,(,KB,、,KB,-1,),。,私钥,KA,-1,、,KB,-1,分别由,A,、,B,各自秘密保管,而,KA,、,KB,则以证书的形式对外公布。当,A,要将明文消息,P,安全地发送给,B,,则,A,用,B,的公钥,KB,加密,P,得到密文,C=E,KB,(,P,);而,B,收到密文,P,后,用私钥,KB,-1,解密恢复明文,P= D,KB,-1,(,C,),= D,KB,-1,(,E,KB,(,P,),8.3.3 公钥密码技术,公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密、解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。 RSA之所以能够保密,关键在于大质数的乘积因子的分解困难。,RSA的重要特点是其中一个密钥对一条信息进行加密,而只有你才能对它进行解密;另外,你也可用自己的私人密钥对任何东西进行加密,而只要拿到你的公共密钥的人都能对它进行解密。这样做的实际意义在于“不可否认”以及数字签名中非常重要。,公用密钥的优点就在于,尽管通信双方不认识,但只要提供密钥的CA可靠,就可以进行安全通信,这正是Web商务所要求的。,公共密钥方案较保密密钥方案处理速度慢,因此,通常把公共密钥与专用密钥技术结合起来实现最佳性能。,8.3.3 公钥密码技术,2. RSA密码系统,RSA是第一个较完善的公开密钥算法。RSA的理论基础是数论的欧拉定理,即寻求两个大素数容易,但将它们的乘积进行因式分解极其困难。,基于这一原理,用户秘密选择两个100位的十进制大素数p、q,计算出它们的乘积Npq,并将N公开;再计算出N的欧拉函数(N)=(p一1)(q1),定义(N)为小于等于N且与N互为素数的个数;然后,用户从0,(N)-1中任选一个与其(N)互为素数的数e,同时由de,-1,(mod(N))得到另一个数d。这样就产生一对密钥:PK=(e,N),SK=(d,N)若用整数X为明文,Y为密文,则有:加密:YX,e,(modN);解密:XY,d,(mod N)。,一般要求p,q为安全素数,N的长度大于512 bit 。,8.3.3 公钥密码技术,3. DiffieHellman密钥交换,密钥交换是指通信双方交换会话密钥,以加密通信双方后续连接所传输的信息。每次逻辑连接使用一把新的会话密钥,用完就丢弃。,DiffieHellman算法是第一个公开密钥算法,发明于1976年。DiffieHellman算法能够用于密钥分配,但不能用于加密或解密信息。,下面是DiffieHellman密钥交换协议。设p为512bit以上大素数,,g,p,p、,g,公开,A与B通过对称密钥密码体制进行保密通信。,8.3.3 公钥密码技术,下面是A、B通过公开密钥算法协商通信密钥的协议:,A随机选择xp,发送X=g,x,(mod p)给B。,B,随机选择,y,p,,发送,Y=g,y,(mod p),给,A,。,A通过自己的x秘密计算得:,K=(Y),x,(mod p)=( g,y,),x,(mod p)g,xy,(mod p),B通过自己的y秘密计算得:,K,=(X),y,(mod p)( g,x,),y,(mod p)=g,xy,(mod p),知K=K。线路上的搭线窃听者只能得到p、,g,,X和Y的值,除非能计算离散对数,恢复出x和y,否则就无法得到K,因此,K为A和B独立计算的秘密密钥。,8.3.3 公钥密码技术,4. 数字签名,对文件进行加密只解决了传送信息的保密问题,而防止他人对传输的文件进行破坏,以及如何确定发言人的身份还需要采取其他手段。 数字签名是目前流行的进行身份验证和确保报文安全的主要手段。作用是:接收方可以验证发送方宣称的身份,发送以后不能否认该消息的内容,接受方不可能编造这样的消息。方法是:使用某人的私钥加密特定的消息摘要散列值而得到的结果,通过这种方法把人同特定消息联系起来,类似于手书签字。完善的数字签名应具有签字方不能抵赖、他人不能伪造、在公证人面前能够验证真伪的能力。,在数字签名技术出现之前,曾有“数字画签名”技术,在手写板上签名,然后将图象传输到电子文档中。,数字签名与,“数字画签名”技术是两种截然不同的安全技术,,数字签名与用户的姓名和,手书签名形式毫无关系,它实际使用了信息发送者的私有密钥变换所需传输的信息。对于不同的文档信息,发送者的,数字签名并不相同。没有私有密钥,任何人都无法完成非法复制。,从这个意义上说,数字签名的含义是通过一个单向函数对要传送的报文进行处理得到的,用以认证报文来源并核实报文是否发生变化的一个字母数字串。,在书面文件上签名是确认文件的一种手段,其作用有2点:1.因为自己的签名难以否认,从而确认了文件已签署这一事实;2.因为签名不易仿冒,从而确认了文件是真的这一事实;,数字签名也能确认以下2点:1.信息是由签名者发送的;2.信息自签发后到收到为止未曾做过任何修改;这样数字签名就可用来防止电子信息因易被修改而被人作伪或冒用别人的名义发送信息或发出(收到)信息后又加以否认等情况的发生。,数字签名技术在具体工作时,首先发送方对信息进行数学变换,所得到的信息与原信息唯一对应;在接收方进行逆变换,得到原始信息。只要数学变换方法优良,变换后的信息在传输过程中就具有很强的安全性。,目前数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一种应用。主要方式是:报文的发送方从报文文本中生成一个128位的散列值(或报文摘要),发送方用自己的私人密钥对这个散列值进行加密 ,来形成发送方的数字签名。然后这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果2个散列值相同,那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文进行鉴别。,数字签名与手书签名的区别在于,手书签字是模拟的,且因人而异。数字签字是0和1的数字串,因消息而异。,数字签字有两种:一种是对整体消息的签字,它是消息经过密码变换的被签消息整体。一种是对压缩消息的签字,它是附加在被签字消息之后或某一特定位置上的一段签字图样。一个签字体制一般含有两个组成部分,即签字算法和验证算法。,目前应用广泛的数字签名方法主要有3种,即:RSA签名、DSS签名和Hash签名。数字签名是通过密码算法对数据进行加、解密变换实现的。,数字签名的原理可归纳如下:1.被发送文件采用哈希算法对原始报文进行运算,得到一个固定长度的数字串,即报文摘要(Message Digest ),不同的报文所得到的报文摘要各异,但对相同的报文它的报文摘要是唯一的。2.发送方生成的报文摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名。3.该数字签名将作为报文的附件和报文一并发给接收方。4.接收方首先从接收到的原始报文中用同样的算法计算出新的报文摘要,再用发送方的公钥对报文附件的数字签名进行解密,比较2个报文摘要,如果相同,那么接收方就能确认该数字签名是发送方的。,8.3.3 公钥密码技术,数字签名算法:,公开密钥:p为512l024bit的素数;q为160bit长的素数,且为(p一1)的因子。,gh,(p-1)/q,modq,其中1hp一1且g1的整数;yg,x,modp。,秘密密钥:0xq,且为随机产生的整数。,签名过程:0kq,且为随机产生的整数。,r(g,k,(modp)modq,s(k,-1,(H(m)十xr)modq;(r,s)作为对消息m的签名,H(x)为安全的Hash(散列)函数。,验证过程:ws,-1,modq;u1(H(m)xw)modq;u2(rw)modq;,v(g,u1,xy,u2,)mod p)modq;若vr,则对m的签名有效。,。,
展开阅读全文