标签:hash 领域 dig 平方根 技术 翻译 速度 size 执行文件
散列函数的应用及其安全性
一、散列函数
1.定义
Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
2.散列函数的应用
Hash函数被广泛的应用于各种不同的安全应用和网络协议中
1、保证数据的完整性
就是用散列函数对数据或文件进行转换,生成一个散列码并保存,下次使用该数据和文件,同样进行散列函数计算得出结果与之比较,如果数据或文件被恶意篡改的,这两个值就不同了。以此发现病毒或入侵者。因为一个比特或几个比特被改变,它的hash结果就被改变。
2、单向数据加密
例子有口令加密,将用户口令的散列码存到一个表中,使用时将用户输入口令进行散列运算然后与准备好的散列表值进行对比,从而完成口令的有效验证。
3、数字签名
所谓数字签名(Digital Signature)(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
生日攻击:
利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根攻击。 生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。
散列函数的安全性:
安全散列函数
因为所需的安全散列长度越来越长,因此我们可以使用有限定义域上的散列函数(俗称压缩函数)通过迭代方式拓展为具有无限定义域的散列函数。而最为代表性的就Merkle-Damgard结构
这个结构的好处是,如果压缩函数是抗碰撞的,那经过此结构处理后的散列函数也是抗碰撞的。
SM3,HMAC就是基于这种结构,因为Merkle-Damgard结构并不能抵抗扩展攻击,因此HMAC引入了Key。
1两个不同的程序,MD5可能是相同的
2无法保证文件的来源可靠性,不能确认接收方接收到的文件与发送方的发出文件相同。
3如果安全软件在系统升级后没有考虑到双签名验证的情况,很有可能按照类似“正常”的逻辑判定这个恶意样本伪造的签名有效
4不能保证文件的完整性和正确性,文件可能被损坏。
标签:hash 领域 dig 平方根 技术 翻译 速度 size 执行文件
原文地址:https://www.cnblogs.com/951753qwer/p/9032455.html