密码技术所提供的不仅仅是基于密码的机密性,用于检验消息是否被篡改的完整性、以及用于确认对方是否是本人的认证都是密码技术的重要部分。
一 单向散列函数
下载软件故事:
我们常常通过互联网下载一些免费软件,我们下载的软件,是否和软件作者所制作的东西一模一样呢?会不会有坏人在软件里植入一些恶意程序呢?
个人经验是:一般官网提供下载的软件都是正版的,不会植入恶意程序。而第三方网站提供的免费软件往往会对软件做一些修改,植入一些广告或游戏,甚至病毒。
我们看看有安全意识的软件发布商是怎样发布自己软件以防止篡改的。
它们在发布自己软件的同时也会发布软件的散列值。也就是发布两样东西。那么什么是散列值呢?
散列值是单向散列函数计算出来的数值。它有很多别名:哈希值、密码校验和、指纹、消息摘要。
软件发布者发布了两样东西,那么使用软件人需要做点什么呢?
下载该软件的人可以拿工具计算所下载文件的散列值,然后与软件发布者公布的散列值进行对比。如果一致,就说明下载的软件与发布者发布的软件是相同的。就可以放心大胆地安装和使用软件了。
再说说单向散列函数是什么回事。
单向散列函数所保证的并不是机密性,而是完整性。完整性指的是数据是正牌的而不是伪造的这一性质。使用单向散列函数,可以检测出数据是否被篡改过。所以说,单向散列函数是一种保证完整性的密码技术。
二 消息认证码
为了确认消息是否来自所期望的通信对象,可以使用消息认证码技术。
通过使用消息认证码,不但能确认消息是否被篡改,而且能够确认消息是否来自所期待的通信对象。也就是说,消息认证码不仅能够保证完整性,还能够提供认证机制。
所以说,消息认证码是一种能够保证完整性和提供认证的密码技术。
三 数字签名
我们再回到Alice和Bob的故事:
Bob刚刚收到了一封来自Alice的邮件,内容是“以100万元的价格购买珠宝”。
Bob收到这么大的单,自然是高兴。不过,这封邮件到底是不是Alice本人写的呢?Bob仅通过阅读邮件内容,是否能够判断该邮件确实是来自Alice呢?现在黑客太多了,邮件的发送者(From一栏)是否是被黑客给伪造了,也许是黑客发送的邮件,他把From一栏改成了Alice。这种伪造实时是太可怕了。这种情况密码学称为伪装。
就算是Alice真的发出过邮件,但是Alice当初写邮件时,内容真的是“以100万元的价格购买珠宝”吗?该邮件是否被黑客截获,然后将内容修改为100万呢?于是他打电话给Alice确认,Alice说邮件中写的是1万元。实在是太可怕了,邮件内容真的被黑客修改了。这种情况,密码学称为篡改。
还有另外一种风险:Alice真的向Bob发送了内容为“以100万元的价格购买珠宝”的邮件,但后来Alice觉得珠宝太贵了,不想买了,于是便谎称“我当初根本没发过那封邮件”。Bob生气了,拿出他收到的Alice的邮件跟Alice对质,Alice却说,那是黑客伪造的邮件。Bob无言以对。像这种事后推翻自己先前主张的行为,密码学中称为“否认”。
现代商战中,大量充斥着上面的案例。
其实存在相关的技术可以防止上面风险的发生。
能够防止上述伪造、篡改和否认等威胁的技术,就是数字签名了。数字签名是一种将现实世界中的签名和盖章移植到数字世界的技术,它是一种重要的密码技术。
在上面的Alice购买珠宝的案例中,Alice可以对“以100万元的价格购买珠宝”的内容加上数字签名后,再通过邮件发送,而Bob则可以对该数字签名进行验证。如果验证通过,就可以确认Alice发“以100万元的价格购买珠宝”这件事情为真。数字签名可以检测出伪装、篡改和事后否认。如果验证不通过,Bob就可以不用理会该邮件,因为该邮件为假。
所以说数字签名是一种能够确认完整性、提供认证并防止否认的密码技术。
四 伪随机数生成器
伪随机数生成器是一种能够模拟产生随机数列的算法。随机数和密码技术相关,这样说读者可能感到意外,但实际上随机数确实承担这密钥生成的重要职责。
口说无凭,举例为证:大名鼎鼎的SSL/TLS通信中,会生成一个仅用于当前通信的临时密钥(会话密钥),这个密钥就是基于伪随机数生成器生成的。
如果随机数的算法不好,窃听者就能够推测出密钥,从而带来通信机密性下降的风险。
五 密码司令的六大将军
到此为止,任命一下密码技术中六大将军:
- 对称密码
- 公钥密码
- 单向散列函数
- 消息认证码
- 数字签名
- 随机数生成器
文章图片
【安全|环游密码世界之其他密码技术】
推荐阅读
- 密码学|密码学(概论)
- 安全|数字签名
- Python爬虫|逆向系列 | AES逆向加密案例分析
- 程序员|【web安全】Spring Boot eureka xstream 反序列化
- com6516
- 漏洞复现|ms17-010永恒之蓝漏洞复现
- XSS|XSS (跨站脚本攻击) 分析与实战
- 安全|深入分析H2数据库控制台中无需身份验证的RCE漏洞
- 《网络安全快速入门》|别让数据库的报错信息,暴露了网站的用户数据。