关于LNMP供应链投毒事件风险提示的风险提示
2023-10-19 19:24:18 Author: mp.weixin.qq.com(查看原文) 阅读量:5 收藏

故事的起因来自于:

事件分析是这样的:

他们的自查方法是这样的:

至此厂商对于这个LNMP供应链投毒事件情报就结束了。

但是想想还是不对啊,记得王小云教授告诉我们。MD5不可信,那么用MD5作为判断标准就不太合理了。

我想lnmp也该更新一下了,安全厂商也该对技术严谨一些,那么下面我们来重温下md5的强碰撞。

首先温习下原理:

一、MD5碰撞技术

MD5碰撞技术是指通过预处理技术、选择性碰撞攻击、差分分析以及生日攻击等方法,在有限时间内对MD5哈希函数进行攻击,生成两个不同的数据块,使它们的MD5哈希值相同。

这种技术的攻击成功率不是100%,取决于攻击者所选择的算法和所拥有的资源。但它被广泛应用于密码学攻击(如密码破解)和数字签名伪造等领域,对信息安全造成了极大威胁。

二、MD5碰撞脚本

MD5碰撞脚本是指通过编写脚本,在有限时间内进行MD5哈希函数的碰撞攻击。碰撞脚本一般可以使用多种编程语言编写,如Python、Java、C++等,以实现对MD5哈希值的攻击。

import hashlibimport itertools



s1 = "This is a sample message."s2 = "This is another message."



h1 = hashlib.md5(s1.encode()).hexdigest()h2 = hashlib.md5(s2.encode()).hexdigest()



# Brute force collision findingfor message in itertools.product('abcdefghijklmnopqrstuvwxyz', repeat=20): m = "".join(message) if hashlib.md5(m.encode()).hexdigest() == h1: print("Found a collision for %s and %s: %s" % (s1, m, h1))

上述代码是一个基于Python的MD5碰撞脚本,它通过对两个字符串进行散列值的计算,以及对多个字符串进行逐一测试,最终找到符合条件的字符串。

三、MD5碰撞算法

MD5碰撞算法是指对MD5哈希函数进行攻击的一组算法。这些算法一般基于概率、统计和数学方法,可以有效地对MD5哈希函数进行攻击。

其中,预处理技术是一种常用的攻击方法,它可以通过在原始消息中添加一些特定的后缀或前缀,以实现生成相同哈希值的消息。比如,可以构建两个具有相同哈希值的消息,使得它们均包含一段特定的后缀。

此外,选择性碰撞攻击也是一种常用的攻击方法,它可以根据一定的规则对哈希函数产生的碰撞进行选择,使得攻击的效率和成功率更高。

四、MD5碰撞算法-原理

MD5碰撞算法的原理主要对MD5哈希函数的内部结构进行攻击。MD5函数的内部结构包含四个基本的压缩函数(F、G、H、I)以及多个复合函数。

攻击者可以对这些函数的参数进行修改,以实现生成相同MD5哈希值的消息。比如,攻击者可以通过修改F函数中的中间计算结果和函数参数,从而使得两个消息的哈希值相等。

五、MD5碰撞生成器

MD5碰撞生成器是一种专用工具,它可以自动化地对MD5哈希函数进行攻击,帮助攻击者快速找到哈希值相等的消息。MD5碰撞生成器一般可以使用多种编程语言编写,如Python、Java、C++等。

下面是一个基于Python的MD5碰撞生成器的示例代码:

import hashlibimport itertools
def md5_collision(num_tries): for i in range(num_tries): message1 = 'A' * i message2 = 'B' * i hashed1 = hashlib.md5(message1).hexdigest() hashed2 = hashlib.md5(message2).hexdigest() if hashed1 == hashed2: return message1, message2, hashed1 return None, None, None
message1, message2, hashed = md5_collision(1000)print('Message 1:', message1)print('Message 2:', message2)print('Hash:', hashed)

上述代码使用了一个简单的方法来生成MD5碰撞。它首先定义了一个函数md5_collision,该函数通过逐渐增加字符长度的方式来生成两个具有相同哈希值的字符串。之后,通过对每个字符串进行哈希求值,比较它们的哈希值是否相等,以实现MD5碰撞攻击。

六、王小云MD5碰撞算法

王小云MD5碰撞算法是一种成功攻击MD5哈希函数的经典算法,由中国山东大学的王小云教授等人提出。该算法基于重复密钥攻击的思想,首次实现了对MD5哈希函数的攻击,开发了一种全球公认有效的MD5哈希值生成算法。

该算法的具体实现过程需要涉及一些数学知识,具体内容可以参考相关文献。

七、实践出真理

使用强碰撞工具生成两个“畸形儿”

就是下面这三个东西

这两个“畸形儿”的产生人难过数字大脑跳了起来

该说不说,这是我没想到的。暂时允许执行,发现是可以正常打开的

重头戏来了,使用哈希效验工具进行比对如下图

可以看到,md5,明晃晃的是一样的东西,但sha1和CRC32是不一样的,而且据可靠消息,自动化的md5强碰撞绑定工具已经在野利用很久了。

所以提醒各位,尽快更换完整性识别方式。

无相关工具


文章来源: https://mp.weixin.qq.com/s?__biz=MzI2MzA3OTgxOA==&mid=2657164886&idx=1&sn=f8e61b0a26bd1a78841af559a4e89bce&chksm=f1d4ecb3c6a365a5321e871f6860447331cdeb83ce43220cee59e9d5f53682975eca2267a0cd&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh