HASH GAME - Online Skill Game GET 300
7r7L+g*O-B(}*Ig移动通信,通信工程师的家园,通信人才,求职招聘,网络优化,通信工程,出差住宿,通信企业黑名单第二是抗冲突性(collision-resistant),即在统计上无法产生2个散列值相同的预映射。给定M,计算上无法找到M,满足H(M)=H(M),此谓弱抗冲突性;计算上也难以寻找一对任意的M和M,使满足H(M)=H(M),此谓强抗冲突性。要求强抗冲突性主要是为了防范所谓生日攻击(birthdayattack),在一个10人的团体中,你能找到和你生日相同的人的概率是2.4%,而在同一团体中,有2人生日相同的概率是11.7%。类似的,当预映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到相同生日的人。
!I$d0N5k%b,HI!{%F第三是映射分布均匀性和差分分布均匀性,散列结果中,为0的bit和为1的bit,其总数应该大致相等;输入中一个bit的变化,散列结果中将有一半以上的bit改变,这又叫做雪崩效应(avalancheeffect);要实现使散列结果中出现1bit的变化,则输入中至少有一半以上的bit必须发生变化。其实质是必须使输入中每一个bit的信息,尽量均匀的反映到输出的每一个bit上去;输出中的每一个bit,都是输入中尽可能多bit的信息一起作用的结果。通信人生活的社区。-e0H!E0{+UZ(@*bR
Damgard和Merkle定义了所谓“压缩函数(compressionfunction)”,就是将一个固定长度输入,变换成较短的固定长度的输出,这对密码学实践上Hash函数的设计产生了很大的影响。Hash函数就是被设计为基于通过特定压缩函数的不断重复“压缩”输入的分组和前一次压缩处理的结果的过程,直到整个消息都被压缩完毕,最后的输出作为整个消息的散列值。尽管还缺乏严格的证明,但绝大多数业界的研究者都同意,如果压缩函数是安全的,那么以上述形式散列任意长度的消息也将是安全的。这就是所谓Damgard/Merkle结构:
B{{5[;i$G5eOmscbsc移动通信论坛拥有30万通信专业人员,超过50万份GSM/3G等通信技术资料,是国内领先专注于通信技术和通信人生活的社区。在下图中,任意长度的消息被填充字节,这些分组将被顺序处理,除了第一个消息分组将与散分拆成符合压缩函数输入要求的分组,最后一个分组可能需要在末尾添上特定的列初始化值一起作为压缩函数的输入外,当前分组将和前一个分组的压缩函数输出一起被作为这一次压缩的输入,而其输出又将被作为下一个分组压缩函数输入的一部分,直到最后一个压缩函数的输出,将被作为整个消息散列的结果。MSCBSC移动通信论坛(Uc;O/c$a0NM5?9F
:@2_v4[!^:\移动通信,通信工程师的家园,通信人才,求职招聘,网络优化,通信工程,出差住宿,通信企业黑名单MD4(RFC1320)是MIT的RonaldL.Rivest在1990年设计的,MD是MessageDigest的缩写。它适用在32位字长的处理器上用高速软件实现--它是基于32位操作数的位操作来实现的。它的安全性不像RSA那样基于数学假设,尽管DenBoer、Bosselaers和Dobbertin很快就用分析和差分成功的攻击了它3轮变换中的2轮,证明了它并不像期望的那样安全,但它的整个算法并没有真正被破解过,Rivest也很快进行了改进。MSCBSC移动通信论坛;q5e-R!^6n0J*_9E9P
2\/x!a4&+n#L/b 国内领先的通信技术论坛消息首先被拆成若干个512位的分组,其中最后512位一个分组是“消息尾+填充字节(100…0)+64 位消息长度”,以确保对于不同长度的消息,该分组不相同。64位消息长度的限制导致了MD5安全的输入长度必须小于264bit,因为大于64位的长度信息将被忽略。而4个32位寄存器字初始化为A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210,它们将始终参与运算并形成最终的散列结果。
7A$Qf0d)\#H:A5eSHA1是由NIST NSA设计为同DSA一起使用的,访问可以得到它的详细规范--[/url]FIPS PUB 180-1 SECURE HASH STANDARD。它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。因为它将产生160bit的散列值,因此它有5个参与运算的32位寄存器字,消息分组和填充方式与MD5相同,主循环也同样是4轮,但每轮进行20次操作,非线性运算、移位和加法运算也与MD5类似,但非线性函数、加法常数和循环左移操作的设计有一些区别,可以参考上面提到的规范来了解这些细节。下面是一些SHA1散列结果的例子: .mscbsc%c7K2w8C2r#b.n,t8]
其他一些知名的Hash算法还有MD2、N-Hash、RIPE-MD、HAVAL等等。上面提到的这些都属于纯Hash算法。还有另2类Hash算法,一类就是基于对称分组算法的单向散列算法,典型的例子是基于DES的所谓Davies-Meyer算法,另外还有经IDEA改进的Davies-Meyer算法,它们两者目前都被认为是安全的算法。另一类是基于模运算/离散对数的,也就是基于公开密钥算法的,但因为其运算开销太大,而缺乏很好的应用前景。
%r$t4X7V$a+j&{)]:~.? 国内领先的通信技术论坛没有通过分析和差分攻击考验的算法,大多都已经夭折在实验室里了,因此,如果目前流行的Hash算法能完全符合密码学意义上的单向性和抗冲突性,就保证了只有穷举,才是破坏Hash运算安全特性的唯一方法。为了对抗弱抗冲突性,我们可能要穷举个数和散列值空间长度一样大的输入,即尝试2^128或2^160个不同的输入,目前一台高档个人电脑可能需要10^25年才能完成这一艰巨的工作,即使是最高端的并行系统,这也不是在几千年里的干得完的事。而因为生日攻击有效的降低了需要穷举的空间,将其降低为大约1.2*2^64或1.2*2^80,所以,强抗冲突性是决定Hash算法安全性的关键。
2y&w+G.!L,P/x!Y&V第一是文件传送后的校验,将得到的目标文件计算 md5 checksum,与源文件的md5 checksum 比对,由两者 md5 checksum 的一致性,可以从统计上保证2个文件的每一个码元也是完全相同的。这可以检验文件传输过程中是否出现错误,更重要的是可以保证文件在传输过程中未被恶意篡改。一个很典型的应用是ftp服务,用户可以用来保证多次断点续传,特别是从镜像站点下载的文件的正确性。 %f8_#H!a*ue!h)]5c
e44u9J,^*P*kYMSCBSC 移动通信论坛第二是用作保存二进制文件系统的数字指纹,以便检测文件系统是否未经允许的被修改。不少系统管理/系统安全软件都提供这一文件系统完整性评估的功能,在系统初始安装完毕后,建立对文件系统的基础校验和数据库,因为散列校验和的长度很小,它们可以方便的被存放在容量很小的存储介质上。此后,可以定期或根据需要,再次计算文件系统的校验和,一旦发现与原来保存的值有不匹配,说明该文件已经被非法修改,或者是被病毒感染,或者被木马程序替代。TripWire就提供了一个此类应用的典型例子。 .mscbsc7[&E+q(}j0\+V2A
更完美的方法是使用MAC。MAC 是一个与Hash密切相关的名词,即信息鉴权码(Message Authority Code)。它是与密钥相关的Hash值,必须拥有该密钥才能检验该Hash值。文件系统的数字指纹也许会被保存在不可信任的介质上,只对拥有该密钥者提供可鉴别性。并且在文件的数字指纹有可能需要被修改的情况下,只有密钥的拥有者可以计算出新的散列值,而企图破坏文件完整性者却不能得逞。 .mscbsc4]5?-{6]7h![6G
)p#V8D7s)D!n9qmscbsc 移动通信论坛拥有30万通信专业人员,超过50万份GSM/3G等通信技术资料,是国内领先专注于通信技术和通信人生活的社区。再者,有些情况下签名密钥可能与解密密钥是同一个,也就是说,如果对一个数据文件签名,与对其进行非对称的解密操作是相同的操作,这是相当危险的,恶意的破坏者可能将一个试图骗你将其解密的文件,充当一个要求你签名的文件发送给你。因此,在对任何数据文件进行数字签名时,只有对其Hash值进行签名才是安全的。 MSCBSC 移动通信论坛4u1_/?)I3i/z*O;o-p)D3Q