It's our wits that make us men.

2019/5/17 《图解密码技术》第七章

Posted on By LuLu

《图解密码技术》第七章

  • 完整性:integrity,单向散列函数:one-way hash function,碰撞:collision,抗碰撞性:collision resistance,单向性:one-way,
  • 消息摘要函数:message digest fuction,原像:pre-image,消息摘要:message digest,指纹:fingerprint
  • 基于口令的加密:Password Bsaed Encryption,PBE,一次性口令:one-time password

什么是单向散列函数

这个文件是不是真的

“真的”是指完整性

单向散列函数是一种采集文件“指纹”的级数,单向散列函数生成的散列值就相当于消息的“指纹”

什么是单向散列函数

  • 单向散列函数有一个输入和输出,输入成为消息,输出称为散列值,单向散列函数可以根据消息的内容,计算出散列值,而散列值就可以被用来检查消息的完整性。
  • 单向散列函数把任何消息都看成比特序列处理
  • 散列值的长度与消息的长度无关,散列值是固定场的的,比如SHA-256计算出的散列值长度永远是256比特(32字节)

关键:要确认完整性,只需要对比散列值就可以了

单向散列函数的性质

  • 根据任意长度的消息计算出固定长度的散列值
  • 能快速计算出散列值
  • 消息不同,散列值也不同
    • 两个不同的消息产生同一个散列值的情况称为碰撞
    • 密码技术中所使用的单向散列函数都需要具备抗碰撞性(难以发生碰撞的性质)
    • 单向散列函数都必须具备弱抗碰撞性(单向散列函数必须确保要找到和该条消息具有相同散列值的另外一条消息是非常困难的)
    • 单向散列函数都必须具备强抗碰撞性(单向散列函数必须确保要找到散列值相同的两条不同的消息是非常困难的)
  • 具备单向性

关于术语

单向散列函数也成为:消息摘要函数,哈希函数或者紧凑函数

消息也成为原像

散列值也成为消息摘要或者指纹

完整性也成为一致性

单向散列函数的实际应用

检测软件是否被篡改

有些软件,尤其是安全有关方面的软件,都会把单向散列函数计算的散列值公布在自己的官方网站上。

基于口令的加密

PBE原理:将得到的口令与盐(通过为随机数生成的随机值)混合后计算散列值,作为加密的密钥。

通过这种方式可以防御针对口令的字典攻击。

消息认证码

消息验证码是将共享密钥与消息进行混合,计算散列值。

使用消息认证码可以检测并防止通信过程中的错误、篡改及伪装。

消息认证码在SSL/TLS中也得到了运用。

数字签名

一般是对散列值进行数字签名。

伪随机数生成器

密码技术中所使用的随机数要求具备:不能从过去的随机数列预测未来的随机数列,这就要利用单向散列函数的单向性。

一次性口令

一次性口令经常被运用于服务器对客户端的合法性认证,单向散列函数可以保证口令只在通信链路上传送一次。