第3章数字签名和认证技术第3章数字签名和认证技术3.1报文鉴别3.2散列函数3.3数字签名体制3.4身份认证技术3.5身份认证的实现第3章数字签名和认证技术3.1报文鉴别信息网络安全的威胁来自两个方面:一方面是被动攻击,对手通过侦听和截取等手段获取数据;另一方面是主动攻击,对手通过伪造、重放、篡改、乱序等手段改变数据。报文鉴别的方式主要有:1)报文加密函数。加密整个报文,以报文的密文作为鉴别。2)报文鉴别码。依赖公开的函数对报文处理,生成定长的鉴别标签。3)散列函数。将任意长度的报文变换为定长的报文摘要,并加以鉴别。第3章数字签名和认证技术3.1.1报文鉴别概述鉴别是验证通信对象是原定的发送者而不是冒名顶替者的技术。既,通信的接收方能够鉴别验证所收到的报文的真伪。1、报文源的鉴别接收方使用约定的密钥(由发方决定)对收到的密文进行解密,并且检验还原的明文是否正确,根据检验结果就可以验证对方的身份。2、报文宿的鉴别只要将报文源的鉴别方法稍作修改,便可使报文的收方(报文宿)能够认证自己是否是指定的收方。既在将接收方的某种标识(如标识符、通行字等),加入到报文中。第3章数字签名和认证技术3、报文时间性的鉴别报文的时间性即指报文的顺序性。报文时间性的鉴别是指收方在收到一份报文后,需要确认是否保持正确的顺序,有无断漏和重复。4、报文内容的鉴别对报文内容进行鉴别是十分重要的。报文内容的鉴别使收方能够确认报文内容是否真实。第3章数字签名和认证技术在1992年[RFC1321]公布了MD报文摘要算法的细节。这是Rivest(即RSA中的第一个人“R”)提出的第5个版本的MD。此算法可对任意长的报文进行运算,然后得出128bit的MD代码。第3章数字签名和认证技术3.2散列函数散列函数(Hash)又称哈希函数,是把任意长度的报文(消息)M通过函数H变换为一个固定长度的散列码h,散列函数表示为h=H(M),它生成报文所独有的“指纹”。散列函数是一种算法,算法输出的内容称为散列码(值)或称报文摘要(也称数字摘要)。报文摘要就像该报文的数字指纹,唯一地对应原始报文,如果原始报文改变并且再次通过散列函数,它将生成不同的报文摘要,因此,散列函数能用来检测报文的完整性,保证报文从建立开始到收到始终第3章数字签名和认证技术没有被改变和破坏。运行相同算法的接收者应该收到相同的报文摘要,否则报文是不可信的。散列函数是公开的,一般不涉及保密密钥。少量的密钥的散列函数可以作为计算报文的认证码等其他用途,因其有密钥而具有一定的身份鉴别功能。3.2.1单向散列函数对于单列函数h=H(M),函数H是单向函数,即为单向散列函数。单向函数:设函数y=f(x)如果不存在这样一个函数F(y)=F(f(x))=x那么f就是一个单项函数第3章数字签名和认证技术单向函数是进行数据加密/编码的一种算法单向函数一般用于产生消息摘要,密钥加密等,常见的有:MD5(MessageDigestAlgorithm5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;SHA(SecureHashAlgorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;MAC(MessageAuthenticationCode):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。第3章数字签名和认证技术CRC(CyclicRedundancyCheck):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测的一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。单向散列函数性质:1)广泛适用性。函数H适用于任何大小的数据分组。2)码长固定性。函数H产生定长输出,一个短报文的散列与百科全书报文的散列将产生相同长度的散列码。3)易计算性。对于任何数据M,计算H(M)是容易的。4)单向不可逆性。无法根据散列码倒推报文,这就是单向函数的性质。第3章数字签名和认证技术5)弱单向性。对于任意给定的数据X,要计算出另一个数据Y,使H(X)=H(Y),这在计算上是不可行的。6)强单向性。要寻找任何一对数据(X,Y),使得H(X)=H(Y),这在计算上是不可行的。第3章数字签名和认证技术3.3数字签名是通信双方在网上交换信息用公钥密码防止伪造和欺骗的一种身份认证。数字签名(或称电子加密)是公开密钥加密技术的一种应用。其使用方式是:报文的发送方从报文文本中生成一个128位的散列值(即哈希函数,根据报文文本而产生的固定长度的单向哈希值。有时这个单向值也叫做报文摘要,与报文的数字指纹或标准校验相似)。发送方用自己的专用密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收第3章数字签名和认证技术到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。第3章数字签名和认证技术数字签名机制提供了一种鉴别方法,通常用于银行、电子贸易方面等,以解决如下问题:(1)伪造:接收者伪造一份文件,声称是对方发送的;(2)抵赖:发送者或接收者事后不承认自己发送或接收过文件;(3)冒充:网上的某个用户冒充另一个用户发送或接收文件;(4)篡改:接收者对收到的文件进行局部的篡改。数字签名不同于手写签名。数字签名随文本的变化而变化,手写签名反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签名是附加在文本之后的,与文本信息是分离的。第3章数字签名和认证技术消息认证的作用是保护通信双方以防第三方的攻击,但是却不能保护通信双方的一方以防另一方的欺骗或伪造。通信双方之间也可能有多种形式的欺骗,有可能发生以下欺骗:第3章数字签名和认证技术(1)B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后声称该消息来自于A。(2)由于B有可能伪造A发来的消息,因此A就可以对自己发过的消息予以否认。这两种欺骗在实际的网络安全中都有可能发生,例如在电子资金传输中,收方增加收到的资金数,并声称这一数目来自发方。又如用户通过电子邮件向证券经纪人发送对某笔业务的指令,以后这笔业务赔钱了,用户就可否认曾发过相应的指令。因此在收发双方未建立起安全的信任关系且存在利害冲突的情况下,单纯的消息认证就显得不够。数字签名技术则可有效地解决这一问题。第3章数字签名和认证技术1.数字签名应具有的性质(1)能够验证签名产生者的身份,以及产生签名的日期(2)能用于证实被签消息的内容;(3)数字签名可由第三方验证,从而能够解决通信双方的争议。第3章数字签名和认证技术2.(1)签名的产生必须使用发方独有的一些信息以防伪造和否认;(2)签名的产生应较为容易;(3)签名的识别和验证应较为容易;(4)对已知的数字签名构造一新的消息或对已知的消息构造一假冒的数字签名在计算上都是不可行的。目前已有多种数字签名体制,所有这些体制可归结为两类:直接方式的数字签名和具有仲裁方式的数字签名。第3章数字签名和认证技术直接方式的数字签名只有通信双方参与,并假定接收一方知道发方的公开密钥。数字签名的形成方式可以用发方的秘钥加密整个消息或加密消息的杂凑值。如果发方用收方的公开密钥(公钥加密体制)或收发双方共享的会话密钥(单钥加密体制)对整个消息及其签名进一步加密,那么对消息及其签名更加提供了保密性。而此时的外部保密方式(即数字签名是直接对需要签名的消息生成而不是对已加密的消息生成,否则称为内部保密方式),则对解决争议十分重要,因为在第三方处理争议时,需要得到明文消息及其签名才行。但如果采用内部保密方式,那么,第三方必须在得到消息的解密密钥后才能得到明文消息。如果采用外部保密方式,那么,接收方就可将明文消息及其数字签名存储下来以备以后万一出现争议时使用。第3章数字签名和认证技术直接方式的数字签名有一弱点,即方案的有效性取决于发方秘钥的安全性。如果发方想对自己已发出的消息予以否认,就可声称自己的秘钥已丢失或被盗,认为自己的签名是他人伪造的。对这一弱点可采取某些行政手段,在某种程度上可减弱这种威胁,例如,要求每一被签的消息都包含有一个时间戳(日期和时间),并要求密钥丢失后立即向管理机构报告。这种方式的数字签名还存在发方的秘钥真的被偷的危险,例如敌方在时刻T偷得发方的秘钥,然后可伪造一消息,用偷得的秘钥为其签名并加上T以前的时刻作为时戳。第3章数字签名和认证技术具有仲裁方式的数字签名技术上述直接方式的数字签名所具有的威胁都可通过使用仲裁者得以解决。和直接方式的数字签名一样,具有仲裁方式的数字签名也有很多实现方案,这些方案都按以下方式运行:发方X对发往收方Y的消息签名后,将消息及其签名先发给仲裁者A,A对消息及其签名验证完后,再连同一个表示已通过验证的指令一起发往收方Y。此时由于A的存在,X无法对自己发出的消息予以否认。在这种方式中,仲裁者起着重要的作用并应取得所有用户的信任。第3章数字签名和认证技术3.数字证书数字签名很重要的机制是数字证书(DigitalCertificate,或DigitalID),数字证书又称为数字凭证,是用电子手段来证实一个用户的身份和对网络资源访问的权限。在网上的电子交易中,如双方出示了各自的数字凭证,并用它来进行交易操作,那么双方都可不必为对方身份的真伪担心。数字凭证可用于电子邮件、电子商务、群件、电子基金转移等各种用途。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的数字证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下,数字证书中还包括密钥的有效时间、发证机关(证书授权中心)的名称、证书的序列号等信息,证书的格式遵循ITUTX.509国际标准。第3章数字签名和认证技术1)X.509(1)证书的版本信息;(2)证书的序列号,每个证书都有一个惟一的证书序列号;(3)证书所使用的签名算法;(4)证书的发行机构名称,命名规则一般采用X.509格式;(5)证书的有效期,现在通用的证书一般采用UTC时间格式,它的计时范围为1950~2049;(6)证书所有人的名称,X.509格式;(7)证书所有人的公开密钥;(8)证书发行者对证书的签名。第3章数字签名和认证技术2)(1)个人凭证(PersonalDigitalID)它仅仅为某一个用户提供凭证,以帮助其个人在网上进行安全交易操作。个人身份的数字凭证通常是安装在客户端的浏览器内的,并通过安全的电子邮件(S/MIME)来进行交易操作。(2)企业(服务器)凭证(ServerID)它通常为网上的某个Web服务器提供凭证,拥有Web服务器的企业就可以用具有凭证的Web站点(WebSite)来进行安全电子交易。有凭证的Web服务器会自动地将其与客户端Web浏览器通信的信息加密。第3章数字签名和认证技术(3)软件(开发者)凭证(DeveloperID)它通常为因特网中被下载的软件提供凭证,该凭证用于微软公司的Authenticode技术(合法化软件)中,以使用户在下载软件时能获得所需的信息。上述三类凭证中前两类是常用的凭证,第三类则用于比较特殊的场合。大部分认证中心提供前两类凭证,能提供各类凭证的认证中心并不普遍。第3章数字签名和认证技术3.3.5数字签名的发展方向数字签名作为电子商务的应用技术,越来越得到人们的重视,它涉及的关键技术也很多,并且很多新的协议(如网上交易安全协议SSL、SET协议)都会设计数字签名。究竟使用哪种算法、哪种Hash函数,以及数字签名管理、在通信实体与可能有的第三方之间使用协议等等问题都可以作为新的课题。第3章数字签名和认证