很多验证都是根据 hash 判断是否被修改过,有没有一种方法让修改过的文件的哈希值和修改前的一样。绕过验证
1
DGideas 2022-09-28 13:27:46 +08:00
哈希冲突的相关信息可以看这里: https://en.wikipedia.org/wiki/Hash_collision
这里有一些 SHA-256 的哈希冲突的例子: https://crypto.stackexchange.com/questions/52578/are-there-any-well-known-examples-of-sha-256-collisions 同样地,MD5 会更简单: https://crypto.stackexchange.com/questions/1434/are-there-two-known-strings-which-have-the-same-md5-hash-value |
2
DGideas 2022-09-28 13:28:06 +08:00
这些资料只要在 Google 上一搜就都有了
|
3
newmlp 2022-09-28 13:38:46 +08:00
当然可以,md5 最简单几秒搞定
|
4
julyclyde 2022-09-28 13:59:02 +08:00
有可能
但是好像还没统一的“方法” |
5
maskerTUI 2022-09-28 14:11:37 +08:00
md5 可以进行哈希碰撞,其他比较难
|
6
lmshl 2022-09-28 14:18:55 +08:00
《 How to Break MD5 and Other Hash Functions 》-- Xiaoyun Wang and Hongbo Yu @ Shandong University, Jinan 250100, China,
理论是存在,实践上需要耗费大量计算资源 |
7
thinkershare 2022-09-28 14:26:07 +08:00
我们用的 SHA-3, 目前 SHA-2,SHA-3 的篡改应该还没有. 最差也会上 SHA-1, md5 的确已经不安全了.
|
8
acmore 2022-09-28 14:38:51 +08:00
理论上可行,但是要是能凑出来的话给你带来的好处远比破坏文件一致性的坏处大得多的多
|
9
villivateur 2022-09-28 14:56:12 +08:00
MD5 很简单,sha1 记得之前看过一个文章说四张显卡算几个小时就行,sha256 目前还没有相对短时间能碰撞的算力
|
10
litguy 2022-09-28 15:13:26 +08:00
SHA256 暂时还是安全的,我们存储里面作数据重删用这个判断重复数据
如果这个有冲突,那整个产品就不能用了 |
11
loryyang 2022-09-28 15:15:11 +08:00
这属于密码学范畴了,部分国家估计在深入研究,如果被突破了,那么很多加密方式会有问题
|
12
leefor2020 2022-09-28 15:46:06 +08:00
感觉有意图的篡改原始数据的特定部分之后还能做出一样的 HASH ,难度要比单纯的找出两组不同数据有同样的 HASH ,难度要大很多了
|
13
raw0xff 2022-09-28 15:57:18 +08:00
弱弱的问,多 hash 个 100 次,会不会增加 100 倍的难度?
|
14
also24 2022-09-28 15:59:21 +08:00
|
18
leoleoleo 2022-09-28 17:07:26 +08:00
哈希函数的一个特点就是抗碰撞性,目前已经发表的论文来看 md5 和 SHA1 安全性存在问题,其他通用 hash 算法应该还没有相关的论文说有安全性问题,如果能找到其他通用 hash 算法的安全性问题,可以发密码学或者计算机类的国际顶级会议或者期刊了。
|
19
geelaw 2022-09-28 17:30:56 +08:00 via iPhone
@raw0xff F 的碰撞当然是 n 个 F 复合的碰撞,因此寻找碰撞的难度不会有任何升高(包括 100 的因子也是不存在的)。
|
20
lysS 2022-09-28 17:53:45 +08:00
无限域映射到有限域,肯定会有冲突啊; md5 不安全在于可以人为构造相同 hash 的值。要避免冲突错误就每个字节逐个比较
|
21
sparky 2022-09-28 18:15:10 +08:00
是不是和挖矿一个道理
|
22
yeqizhang 2022-09-28 18:29:46 +08:00 via Android
能构造出 hash 一样的文件,但几乎不能构造出相同作用的文件,如果是程序,那也跑不起来,是文档也打开,没啥用
|
23
zeni123 2022-09-28 18:44:23 +08:00
假如有一个方法可以 找到 sha256 的哈希碰撞 例如伪造一个 花费 10000RMB 和 十天内吧,那么现在 web 安全应该会崩溃了。 数字签名就是先 hash 再密钥加密。 可以任意构造 hash 的话你可以伪造数字签名。 例如你可以构造一个对密钥 使其的 hash 值和 google 的公钥一样,然后用这个进行第三人攻击。
|
24
mutalisk 2022-09-28 18:48:18 +08:00
@sparky 纯暴力计算的话,这个比挖矿要难得多得多了,挖矿只需要计算在一个区域内的就可以,这个是需要计算到准确的一模一样的。
|
25
zeni123 2022-09-28 18:59:24 +08:00
@yeqizhang 可以跑起来的, 例如有一个 java 二进制的程序, 你只需要构造一个 最长 16 的字符串的 nonce 加到 bytecdoe 里面. java 字符是 2 个字节,16 个字符串是 256 位可以穷举 sha256 的所有值了。
文档同理,会计有一个文档记录着, A 公司 欠 B 公司 10000 元。 你想把它改成 B 公司 欠 A 公司 这样 Hash 值就变了。 你需要构造一个 nonce 。使得他们的 hash 值一样 可以改成 “B 公司 欠 A 公司 10000 元。<一个看不见的 2^256 可能的字符>” 或者 “B 公司 欠 A 公司 12312323242312334512313 元。” (最多 2^256 元) 然而这只是暴力法。 |
26
ShinichiYao 2022-09-28 19:49:03 +08:00 via Android
检测一下文件大小,算两个不同的 Hash 就行了,大小和两种 hash 都对上难度高多了
|
27
araaaa 2022-09-29 13:50:42 +08:00
这不是和挖矿一样
|