第2部分 基础篇 第2章 密码技术(3)

2.2.2.3. 杂凑算法

第2部分 基础篇 第2章 密码技术(3)

小云:杂凑算法又称单向hash函数(One-Way Hash function),该函数有一个输入和一个输出。输入称为消息,或者原像(pre-image),输出称为hash值。

小天:经常听说哈希这个词,到底哈希这个词是什么意思呢?

小云:Hash来自于古法语,原意是”斧子“,引申为”剁碎的肉末“,这里表示把很长的消息剁碎,混合成固定长度。也就是把任意长的输入消息杂凑成固定长的hash值。杂凑算法主要用于消息摘要和签名,输出的hash值可以用来检查输入消息的完整性,避免输入被篡改。

  • 杂凑算法的特性

小明:那么这种算法有什么特点呢?

小云:杂凑算法最终的特点就是,无论输入的内容大小,输出内容是等长的,只需要比对输出结果就可以验证完整性。这是杂凑算法的主要热点。

小天:嗯,这个特点挺鲜明的。杂凑算法都有哪些呢?

小云:杂凑算法有MD5、SHA,还有国密算法中的SM-3。一般来说,具备下面特性的都属于杂凑算法,比如除了刚才提到的输出等长之外,还有输入敏感,就是说哪怕输入有任何微小改动,输出会完全不同。

小明:能不能通过输出逆向还原输入呢?

小云:这就是第三个特性,不能通过输出反推出输入内容,严格说应该是逆向还原成本很高。

小天:那是否可以遍历输入得到输出呢?

小云:这个就是抗碰撞性,除非明确知道输入内容的可能范围,算法应该具备强抗碰撞性,我们一会看具体算法就会了解各自的抗碰撞性。还有一个特点就是正向验证很方便,就是利用算法函数再次从输入内容生成输出,产生的值应该永远一样,方便验证。下面开始简单介绍几种杂凑算法。大家如果愿意进一步了解各种算法,可以访问:chat.ytm.app这个连接,与chatGPT或者谷歌 gemini对话进一步了解。

  • 常见的杂凑算法

MD(Message Digest)算法

小云:严格来说,MD算法只是一种摘要算法,用来确保信息完整性。比如提供下载的网站在下载页面提供文件的MD值,用户下载后对文件做一次MD校验,如果产生的值一致,证明文件没有被篡改。

小天:我听说MD5已经被破解了。

小云:对。我们回顾下MD算法的历史。1989年,RSA发明人开发了MD2算法,之后麻省理工学院教授RonaldRivest在此基础上开发了MD4、MD5以及最新的MD6。具体破解公开发布是在2004年8的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上。来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD128算法的报告,公布了MD5算法强抗碰撞性理论上被攻破的报告,等同于宣告了MD5系列算法被成功破解。虽然MD5算法被破解了,不过后来的MD6算法相比MD5安全性大大提高,也更为完善,但是并没有被广泛推广使用。

SHA

小云:我们再来介绍SHA算法,SHA全名是Secure Hash Algorithm,是一个密码Hash函数族,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准(FIPS)。

小天:我听说SHA有许多种?

小云:对,有SHA-1、SHA-2、SHA-3。其中SHA-1已经被王小云姚期智团队首先宣布理论上可破解,被宣布列入“可谨慎使用的密码清单”。

小明:中国人在密码学发展方面贡献不小啊。

小云:是啊,我们再来看SHA-2,它共有6个算法标准,包括SHA-256和SHA-512,以及从它们衍生出来的SHA-224、SHA-384和SHA-512/224、SHA-512/256(对SHA-256和SHA-512的结果进行截取)。

小天:SHA-3呢?

小云:稍等。我们总结下这前两个。SHA-1和SHA-2是SHA算法的两个不同版本。它们的主要区别在于构造和签名的比特位长的不同。SHA-1结果是160比特位的Hash值,而SHA-2根据上面的算法标准有不同的比特位数,比如SHA-256结果是256比特位。比特位长度越长,抗碰撞性就越强。总体来讲SHA-2是SHA-1的整体改进,根据应用环境的安全和效率进行选择。

小云:再来说SHA-3,SHA-3起源于SHA-1被破解后,需要寻找其替代品,从2005年开始,NIST开始面向全世界公开遴选,一直到2012年选定Keccak算法成为SHA-3。

小明:这么说SHA-3并不是的SHA-2升级换代?

小云:对,可以这么说,SHA-3只是更加适应主流的多核CPU,硬件实现方面比其他算法有明显优势。SHA-3算法依据输出的Hash长度不同分为SHA3-224,SHA3-256,SHA3-512四种。关于输入的明文消息,SHA-1有264-1的比特位长度限制,SHA-2有2128-1的比特位长度限制,SHA3则没有输入长度限制。

小天:SHA算法到底是怎么回事呢?

小云:SHA算法流程比较复杂,这里只简单涉及一下,更多大家还是去问:chat.ytm.app吧。SHA的算法基本思路是将消息分成若干个分组,每组512比特位(64个字节),每个分组再划分为32比特位的“字(word)”,然后逐个进行摘要运算。当一个分组的摘要运算完毕后,将上一个分组的结果也用于下一个分组的运算,全部分组处理完成后最后得到的字符串就是明文消息的Hash值。

RIPEMD原始完整性校验消息摘要

小云:最后简单介绍一下RIPEMD,

小天:我记得比特币公钥到地址的衍生过程中就使用了这种算法。

小云:对,使用的是RIPEMD 160,RIPEMD全名是RACE Integrity Primitives Evaluation Message Digest,是Hans Dobbertin,Antoon Bosselaers 和 Bart Prenee组成的COSIC 研究小组在md4,md5的基础上,于1996年提出来的。

小天:除了RIPEMD 160,还有其他吗?

小云:共有4个标准,分别是RIPEMD 128、RIPEMD 160、RIPEMD 256和RIPEMD 320,其对应输出长度分别为16字节、20字节、32字节和40字节。RIPEMD 128位版本已经被发现有潜在的安全问题。 而RIPEMD 256和RIPEMD 320位版本只是在128位元和160位元的基础上,修改了初始参数和s-box来达到输出为256和320位元。所以,RIPEMD 256的抗碰撞强度和RIPEMD 128相当,而RIPEMD 320的强度和RIPEMD 160相当。算法原理上说,RIPEMD建立在MD算法基础之上,其添加数据的方式和MD5,SHA-1基本一样。


本文内容摘自《对话去中心化数字身份》。作者:乔布施。首发平台:https://ytm.app

欢迎转载,请注明出处及作者。

© 版权声明

相关文章

暂无评论

暂无评论...