美文网首页
密码技术(七、一)之单向散列函数

密码技术(七、一)之单向散列函数

作者: Invincibled | 来源:发表于2019-04-02 23:41 被阅读0次

单向散列函数

  ——获取消息的“指纹”

什么是单向散列函数

单向散列函数(one-way hash function)有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
 这里的消息不一定是人类能够读懂的文字,也可以是图像文件或声音文件。单向散列函数不需要只得到消息实际代表的含义。无论任何消息,单向散列函数都会将它作为单纯的比特序列来处理,即根据比特序列计算出散列值。
 散列值的长度和消息的长度无关。无论是1比特,还是100MB,甚至100GB,单向散列函数都会计算出固定长度的散列值。以SHA-256单向散列函数为例,它所计算出的散列值的长度永远都是256比特(32字节)。所以,很容易处理和使用。

散列值的长度总是固定的.png

单向散列函数的性质

  • 根据任意长度的消息计算出固定长度的散列值
  • 能够快速就算出散列值
  • 消息不同散列值不同
     为了能够确认完整性,消息中哪怕只有一个比特发生的改变,也必须有很高的概率产生不同的散列值。
     如果单向散列函数计算出的散列值没有发生变化,那么消息很容易就会被篡改,这个单向散列函数也就无法被用于完整性的检查。两个不同的消息产生同一个散列值的情况称为碰撞。如果要将单向散列函数用于完整性的检查,则需要确保在事实上不可能被人为地发现碰撞。
     难以发现碰撞的性质称为对抗碰撞(collision resistance)。密码技术中所使用的单向散列函数,都需要具备抗碰撞性。
     这里所说的抗碰撞性,指的是难以找到另外一条具备特定散列值的消息。当给定某条消息的散列值时,单向散列函数必须确保要找到和该条休息具有相同散列值的另外一条消息是非常困难的。这一性质称为弱抗碰撞性。单向散列函数都必须具备弱抗碰撞性。
     和弱抗碰撞性相对地,还有强抗碰撞性。所谓强碰撞性,是指要找到散列值相同的两条不同的消息是非常困难的这一性质。在这里,散列值可以是任意的。
     密码技术中所使用的单向散列函数,不仅具备弱抗碰撞性,还必须具备强抗碰撞性。
  • 具备单向性
     单向散列函数必须具备单向性(one-way)。单向性指的是无法通过散列值反算出消息的性质。根据消息计算散列值可以很容易的,但这条单行路是无法反过来走的。

术语

单向散列函数 也称为消息摘要函数(message digest function)、哈希函数或者咋凑函数
 输入单向散列函数的消息也称为原像(pre-image)。
 单向散列函数输出的散列值也称为消息摘要(message digest)或者指纹(fingerprint)

单向散列函数的实际应用

检测软件是否被篡改

使用单向散列函数检测软件是否被篡改.png

基于口令的加密

 单向散列函数也被用于基于口令的加密(password based encryption ,PBE)。
 PBE的原理是将口令和盐(salt,通过伪随机数生成器产生的随机值)混合后计算其散列值,然后将这个散列值用作加密的密钥。通过这样的方式能够防御口令的字典攻击。

消息认证码

 使用单向散列函数可以构造消息认证码。
 消息认证码是将“发送者和接收者之间的共享密钥”和“消息”进行混合计算出的散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。

数字签名

 在进行数字签名时也会使用单向散列函数。
 数字签名是现实社会中的签名和盖章这样的行为在数字世界中的实现。数字签名的处理过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后在对这个散列值施加数字签名。

伪随机数生成器

 使用单向散列函数可以构造伪随机数生成器。
 密码技术中所使用的伪随机生成树需要具备“事实上不可能根据过去的随机数列预测未来的随机数列”这样的性质。为了保证不可预测性,可以利用单向散列函数的单向性。

一次性口令

 使用单向散列函数可以构造一次性口令(one-time password)。一次性口令经常被用于服务器对客户端的合法认证。在这种方式中,通过使用单向散列函数可以保证口令只在通信链路上传送一次(one-time),因此即便被窃取了,也无法使用。


该系列的主要内容来自《图解密码技术第三版》
我只是知识的搬运工
文章中的插图来源于原著

相关文章

网友评论

      本文标题:密码技术(七、一)之单向散列函数

      本文链接:https://www.haomeiwen.com/subject/lcrsbqtx.html