鉴别

Wu Jun 2020-01-07 11:43:49
Categories: > Tags:

鉴别可细分为两种。

1 报文鉴别

1.1 密码散列函数

理论上讲数字签名就能够实现报文鉴别,但这种方法在对较长的报文进行数字签名时,需要进行较多的时间来进行运算。而密码散列函数是进行报文鉴别的一种相对简单的方法。

一个安全的散列算法需要满足如下两个条件,也是散列算法的两个特性。

注意,抗碰撞性并不是说散列算法无碰撞,无碰撞的算法不可能是一个散列算法,而只能是一个无损压缩算法,因为散列算法在计算过程中必然会丢失原文部分信息。

1.2 实用的密码散列函数 MD5 和 SHA-1

1)MD5

报文摘要 MD(Message Digest)最终被 SHA 所取代。

MD5 的不可逆性

因为 MD5 算法里面有很多不可逆的运算,会丢失很多原文的信息,无法找回,所以是不可逆的。

MD5 的抗碰撞性

王小云院士的研究成果证明可以找到 M2 使 MD5(M1)=MD5(M2),破坏了 MD5 的抗碰撞性。

王小云院士的研究报告表明,MD4,MD5,HAVAL-128,RIPEMD 和 SHA-1 均已被证实存在上面的漏洞,即给定消息 M1,能够找到不同消息 M2 产生相同的散列值,即产生 Hash 碰撞。

虽然 MD5、SHA1 已经被证实在数字签名存在安全问题,但是 MD5、SHA1 在密码的散列存储方面还是很安全的算法,只要密码足够复杂,加盐且迭代次数足够多,基本能够抗得住主流的口令破解方法,如暴力破解、彩虹表、字典攻击、词表重整攻击、概率上下文无关文法等。

MD5 算法的大致过程

这样得出的 MD5 报文摘要代码中的每一位都与原来报文中的每一位有关。由此可见,像 MD5 这样的密码散列函数实际上己是个相当复杂的算法,而不是简单的函数了。

2)SHA

安全散列算法 SHA (Secure Hash Algorithm)和 MD5 相似,但码长为 160 位(比 MD5 的 128 位多了 25%)。

SHA 也是用 512 位长的数据块经过复杂运算得出的。SHA 比 MD5 更安全,但计算起来却比 MD5 要慢些。

1995 年发布的 SHA-1 也曾被王小云教授的研究团队攻破。虽然现在 SHA-1 仍在使用,但很快就会被另外的两个版本 SHA-2 和 SHA-3 所替代。

1.3 报文鉴别码

1)工作过程

这样不需要加密整个报文,只需要加密固定长度的报文鉴别码,减少了很多计算资源,能很方便的保护报文的完整性。

2)密钥传递

用户 A 用其私钥对散列 H 进行运算,得出报文鉴别码 MAC。然后 A 把报文鉴别码 MAC 拼接在报文 X 的后面,构成扩展的报文发送给 B。B 收到扩展的报文后,采取的做法和前面所述的基本一样,不同的地方是,对收到的报文鉴别码 MAC 是用 A 的公钥进行 E 运算。由于入侵者没有 A 的私钥,因此他不可能伪造出 A 发出的报文。

采用这样的方法得到的扩展报文,不仅是不可伪造的,也是不可否认的。

2 实体鉴别

实体鉴别和报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。