文档介绍:第3章数字签名和认证技术
报文鉴别
散列函数
数字签名体制
身份认证技术
身份认证的实现
报文鉴别
信息网络安全的威胁来自两个方面:一方面是被动攻击,对手通过侦听和截取等手段获取数据;另一方面是主动攻击,对手通过伪造、重放、篡改、乱序等手段改变数据。
报文鉴别的方式主要有:
1)报文加密函数。加密整个报文,以报文的密文作为鉴别。
2)报文鉴别码。依赖公开的函数对报文处理,生成定长的鉴别标签。
3)散列函数。将任意长度的报文变换为定长的报文摘要,并加以鉴别。
报文鉴别概述
鉴别是验证通信对象是原定的发送者而不是冒名顶替者的技术。既,通信的接收方能够鉴别验证所收到的报文的真伪。
1、报文源的鉴别
接收方使用约定的密钥(由发方决定)对收到的密文进行解密,并且检验还原的明文是否正确,根据检验结果就可以验证对方的身份。
2、报文宿的鉴别
只要将报文源的鉴别方法稍作修改,便可使报文的收方(报文宿)能够认证自己是否是指定的收方。既在将接收方的某种标识(如标识符、通行字等),加入到报文中。
3、报文时间性的鉴别
报文的时间性即指报文的顺序性。报文时间性的鉴别是指收方在收到一份报文后,需要确认是否保持正确的顺序,有无断漏和重复。
4、报文内容的鉴别
对报文内容进行鉴别是十分重要的。报文内容的鉴别使收方能够确认报文内容是否真实。
在 1992 年[RFC 1321] 公布了 MD 报文摘要算法的细节。这是 Rivest (即 RSA 中的第一个人“R”) 提出的第 5 个版本的 MD。此算法可对任意长的报文进行运算,然后得出 128 bit 的 MD 代码。
散列函数
散列函数(Hash)又称哈希函数,是把任意长度的报文(消息)M通过函数H变换为一个固定长度的散列码h,散列函数表示为h=H(M),它生成报文所独有的“指纹”。
散列函数是一种算法,算法输出的内容称为散列码(值)或称报文摘要(也称数字摘要)。报文摘要就像该报文的数字指纹,唯一地对应原始报文,如果原始报文改变并且再次通过散列函数,它将生成不同的报文摘要,因此,散列函数能用来检测报文的完整性,保证报文从建立开始到收到始终
没有被改变和破坏。运行相同算法的接收者应该收到相同的报文摘要,否则报文是不可信的。
散列函数是公开的,一般不涉及保密密钥。少量的密钥的散列函数可以作为计算报文的认证码等其他用途,因其有密钥而具有一定的身份鉴别功能。
单向散列函数
对于单列函数h=H(M),函数H是单向函数,即为单向散列函数。
单向函数:设函数 y = f(x) 如果不存在这样一个函数 F(y)=F(f(x))=x 那么f就是一个单项函数
单向函数是进行数据加密/编码的一种算法单向函数一般用于产生消息摘要,密钥加密等,常见的有: MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值; SHA(Secure Hash Algorithm)这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值; MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子。
CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测的一种很好的手段(CRC 并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。
单向散列函数性质:
1)广泛适用性。函数H适用于任何大小的数据分组。
2)码长固定性。函数H产生定长输出,一个短报文的散列与百科全书报文的散列将产生相同长度的散列码。
3)易计算性。对于任何数据M,计算H(M)是容易的。
4)单向不可逆性。无法根据散列码倒推报文,这就是单向函数的性质。
5)弱单向性。对于任意给定的数据X,要计算出另一个数据Y,使H(X)=H(Y),这在计算上是不可行的。
6)强单向性。要寻找任何一对数据(X,Y),使得H(X)=H(Y),这在计算上是不可行的。