单向散列函数的实际应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/82814201

一 单向散列函数相关术语

单向散列函数也称为消息摘要函数、哈希函数或者杂凑函数。

输入单向散列函数的消息也称为原像。

单向散列函数输出的散列值也称为消息摘要或者指纹。

完整性也称为一致性。

二 单向散列函数实际应用

1 检测软件是否被篡改

可以使用单向散列函数来确认自己下载的软件是否被篡改。

很多软件,尤其是安全相关的软件都会把单向散列函数计算出的散列值公布在自己的官网上。用户下载到软件之后,可以自行计算散列值,然后与官网上公布的散列值进行对比。通过散列值,用户可以确认所下载到的文件与软件作者所提供的文件是否一致。

这样的方法,在可以通过多种途径得到软件的情况下非常有用。为了减轻服务器的压力,很多软件作者都会借助多个网站(镜像站点)来发布软件,在这种情况下,单向散列函数就会在检测软件是否被篡改方面发挥重要作用。

下图展示的是单向散列函数检测软件是否被篡改

2 基于口令的加密

单向散列函数可用于基于口令的加密(Password Based Encryption,PBE)。

PBE的原理是将口令和盐(salt,通过伪随机数生成器产生的随机数)混合后计算其散列值,然后将这个散列值用作加密的密钥。通过这样的方法能够防御针对口令的字典攻击。

3 消息认证码

使用单向散列函数可以构造消息认证码。

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

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

4 数字签名
在进行数字签名时也会使用单向散列函数。

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

5 伪随机数生成器

使用单向散列函数可以构造伪随机数生成器。

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

6 一次性口令

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

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/82814201