1、消息摘要概述
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。
2、消息摘要算法特点
2.1 变成输入、定长输出
无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出。
2.2 输入不同、摘要不同,输入相同、摘要相同
只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。这正是好的消息摘要算法所具有的性质:输入改变了,输出也就改变了;两条相似的消息的摘要确不相近,甚至会大相径庭。从理论上来说,不管使用什么样的摘要算法,必然存在2个不同的消息,对应同样的摘要。因为输入是一个无穷集合,而输出是一个有限集合,所以从数学上来说,必然存在多对一的关系。但是实际上,很难或者说根本不可能人为的造出具有同样摘要的2个不同消息。
2.3 单向、不可逆、散列值不同、原始值不同
消息摘要是单向、不可逆的。只能进行正向的信息摘要,而无法从摘要中恢复出任何的原始消息,甚至根本就找不到任何与原信息相关的信息。当然,可以采用强力攻击的方法,即尝试每一个可能的信息,计算其摘要,看看是否与已有的摘要相同,如果这样做,最终肯定会恢复出摘要的消息。但实际上,要得到的信息可能是无穷个消息之一,所以这种强力攻击几乎是无效的。
2.4 “碰撞” 难找到
好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。即无法找到两条不同消息,但是它们的摘要相同。
3、消息摘要的分类
(1)MD(Message Digest) 消息摘要算法
(2)SHA(Secure Hash Algorithm) 安全散列算法
(3)MAC(Message Authentication Code) 消息认证码算法
4、消息摘要用途
4.1、检查软件与数据是否被篡改
检查我们下载的软件是否被篡改过。很多软件,都会将软件通过单向散列值函数计算,将散列值公布自己在官网上。网盘4G文件秒传也是应用的次特性。
4.2、基于口令的加密
单向散列函数也被用于基于口令加密(Password Base Encryption PBE)
PBE的原理是将口令和盐(salt,通过随机数生成器生成)混合后计算其散列值。防御口令字典的攻击。
4.3、消息认证码
消息认证码是将“发送者和接收者直接的共享的密钥”和“消息” 进行混合后计算出散列值。使用消息认证码可以防止消息的错误、篡改、伪装。
4.4、数据签名
数据签名非常耗时,一般会对消息先进行摘要处理,处理后直接对象消息摘要信息进行述职签名。
4.5、伪随机数
密码技术中,所使用的随机数需要“不能根据过去的随机数数列,预测未来的随机数数列”这样的性质,可以利用单向哈希函数的性质。
4.6、一次性口令
使用单向哈希函数,可以构造一次性口令。一次性口令常被用于服务器和客户端的合法认证,在这种方式中,通过单向散列函数可以保证,口令只在通讯链路上传递一次,因此即使窃听者获取,也无法使用。
5. 散列算法破解
(1) 算法破解
已知数据A和消息的散列值,找到另外一个数据B和A的散列值相同。例如2005年2月,王小云破解SHA-1 算法。
(2) 假破解
根据数据库查询散列值,查询数据对应的明文。数据树数据越多破解的概率越大,例如密码使用md5加密,因为密码长度一般都是1-8位的,所以数据库可以穷举这些值,提供逆向查询。
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【小工匠技术圈】
个人公众号,欢迎关注,查阅更多精彩历史!