最近研究loghub的组件分发原理的时候又碰到了MD5算法,所以还是系统了解下好了。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
说到这里,可能大部分人对于MD5的了解最常见的就是用来做下载包或者安装包的校验,经常我们在下载镜像文件以后,都提示最好用MD5校验工具做一下MD5校验,所以想一下也大概能猜到MD5的作用。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。
MD5的应用: 数字签名、一致性验证、安全访问认证
MD5典型应用一般是用来对一段信息(Message)产生信息摘要(Message-Digest)以防止被“篡改”,这个信息摘要我们可以称为message fingerprint([信息指纹])。
举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用,也就是所谓的一致性验证。
另外,MD5还广泛用于操作系统的登陆认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面。如在Unix系统中用户的密码是以MD5(或其它类似的算法)经Hash运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确,所以这可以避免用户的密码被具有系统管理员权限的用户知道。
作为任务调度分配的算法
这么看来,MD5其实就是一种HASH算法,另外,除了将有对信息加密制作数字签名的一列应用以外,其实也在任务调度分配上有所应用。
如阿里云的loghub组件对于分配日志读写到Shard
背景抽象:
Log/LogGroup:用户发出的存取款等操作。
用户(User):Log/LogGroup生产者。(就是产生要产生日志的写者)
柜员(Clerk):银行处理用户请求的员工。(就是要消费日志的读者)
银行大厅(Logstore):用户产生的操作请求先进入银行大厅,再交给柜员处理。
分区(Shard):银行大厅用以安排用户请求的组织方式。
问题场景:保序(Ordering)
银行有2个柜员(A,B),张三进了银行,在柜台A上存了1000元,A把张三1000元存在自己的账本上。张三到了下午觉得手头紧到B柜台取钱,B柜员一看账本,发现不对,张三并没有在这里存钱。
从这个例子可以看到,存取款是一个严格有序的操作,需要同一个柜员(处理器)来处理同一个用户的操作,这样才能保持状态一致性。
实现保序的方法很简单:排队,创建一个Shard,终端只有一个柜员A来处理。用户请求先进先出,一点问题都没有。但带来的问题是效率低下,假设有1000个用户来进行操作,即使有10个柜员也无济于事。
这种场景怎么办?
假设有10个柜员,我们可以创建10个Shard。
如何保证对于同一个账户的操作是有序的?可以根据一致性Hash方式将用户进行映射。例如我们开10个队伍(Shard),每个柜员处理一个Shard,把不同银行账号或用户姓名,映射到特定Shard中。在这种情况下张三 Hash(Zhang)= Z 永远落在一个特定Shard中(区间包含Z),处理端面对的永远是柜员A。
当然如果张姓用户比较多,也可以换其他策略。例如根据用户AccountID、ZipCode进行Hash,这样就可以使得每个Shard中操作请求更均匀。
这样就完成了任务的调度和下发,保证了专人专柜。
弱点:
2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。(注意:并非是真正的破解,只是加速了杂凑冲撞)
令世界顶尖密码学家想象不到的是,破解MD5之后,2005年2月,王小云教授又破解了另一国际密码SHA-1。因为SHA-1在美国等国际社会有更加广泛的应用,密码被破的消息一出,在国际社会的反响可谓石破天惊。换句话说,王小云的研究成果表明了从理论上讲电子签名可以伪造,必须及时添加限制条件,或者重新选用更为安全的密码标准,以保证电子商务的安全。
MD5破解工程权威网站是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang,Feng,Lai,Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”
网友评论