V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iloveMonica
V2EX  ›  程序员

哈希冲撞的可能性

  •  
  •   iloveMonica · 2022-09-28 13:22:24 +08:00 via iPad · 4336 次点击
    这是一个创建于 548 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很多验证都是根据 hash 判断是否被修改过,有没有一种方法让修改过的文件的哈希值和修改前的一样。绕过验证

    27 条回复    2022-09-29 13:50:42 +08:00
    DGideas
        2
    DGideas  
       2022-09-28 13:28:06 +08:00
    这些资料只要在 Google 上一搜就都有了
    newmlp
        3
    newmlp  
       2022-09-28 13:38:46 +08:00
    当然可以,md5 最简单几秒搞定
    julyclyde
        4
    julyclyde  
       2022-09-28 13:59:02 +08:00
    有可能
    但是好像还没统一的“方法”
    maskerTUI
        5
    maskerTUI  
       2022-09-28 14:11:37 +08:00
    md5 可以进行哈希碰撞,其他比较难
    lmshl
        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,

    理论是存在,实践上需要耗费大量计算资源
    thinkershare
        7
    thinkershare  
       2022-09-28 14:26:07 +08:00
    我们用的 SHA-3, 目前 SHA-2,SHA-3 的篡改应该还没有. 最差也会上 SHA-1, md5 的确已经不安全了.
    acmore
        8
    acmore  
       2022-09-28 14:38:51 +08:00
    理论上可行,但是要是能凑出来的话给你带来的好处远比破坏文件一致性的坏处大得多的多
    villivateur
        9
    villivateur  
       2022-09-28 14:56:12 +08:00
    MD5 很简单,sha1 记得之前看过一个文章说四张显卡算几个小时就行,sha256 目前还没有相对短时间能碰撞的算力
    litguy
        10
    litguy  
       2022-09-28 15:13:26 +08:00
    SHA256 暂时还是安全的,我们存储里面作数据重删用这个判断重复数据
    如果这个有冲突,那整个产品就不能用了
    loryyang
        11
    loryyang  
       2022-09-28 15:15:11 +08:00
    这属于密码学范畴了,部分国家估计在深入研究,如果被突破了,那么很多加密方式会有问题
    leefor2020
        12
    leefor2020  
       2022-09-28 15:46:06 +08:00
    感觉有意图的篡改原始数据的特定部分之后还能做出一样的 HASH ,难度要比单纯的找出两组不同数据有同样的 HASH ,难度要大很多了
    raw0xff
        13
    raw0xff  
       2022-09-28 15:57:18 +08:00
    弱弱的问,多 hash 个 100 次,会不会增加 100 倍的难度?
    also24
        14
    also24  
       2022-09-28 15:59:21 +08:00
    mingl0280
        15
    mingl0280  
       2022-09-28 16:15:51 +08:00 via Android
    @raw0xff 当然不行。
    swulling
        16
    swulling  
       2022-09-28 16:21:03 +08:00   ❤️ 1
    @DGideas sha256 到目前为止貌似还没有找到碰撞的实例,有的话可以发出来验证下,验证很简单。
    raw0xff
        17
    raw0xff  
       2022-09-28 16:31:16 +08:00
    @mingl0280 那也会增加 100 倍的时间吧
    leoleoleo
        18
    leoleoleo  
       2022-09-28 17:07:26 +08:00
    哈希函数的一个特点就是抗碰撞性,目前已经发表的论文来看 md5 和 SHA1 安全性存在问题,其他通用 hash 算法应该还没有相关的论文说有安全性问题,如果能找到其他通用 hash 算法的安全性问题,可以发密码学或者计算机类的国际顶级会议或者期刊了。
    geelaw
        19
    geelaw  
       2022-09-28 17:30:56 +08:00 via iPhone
    @raw0xff F 的碰撞当然是 n 个 F 复合的碰撞,因此寻找碰撞的难度不会有任何升高(包括 100 的因子也是不存在的)。
    lysS
        20
    lysS  
       2022-09-28 17:53:45 +08:00
    无限域映射到有限域,肯定会有冲突啊; md5 不安全在于可以人为构造相同 hash 的值。要避免冲突错误就每个字节逐个比较
    sparky
        21
    sparky  
       2022-09-28 18:15:10 +08:00
    是不是和挖矿一个道理
    yeqizhang
        22
    yeqizhang  
       2022-09-28 18:29:46 +08:00 via Android
    能构造出 hash 一样的文件,但几乎不能构造出相同作用的文件,如果是程序,那也跑不起来,是文档也打开,没啥用
    zeni123
        23
    zeni123  
       2022-09-28 18:44:23 +08:00
    假如有一个方法可以 找到 sha256 的哈希碰撞 例如伪造一个 花费 10000RMB 和 十天内吧,那么现在 web 安全应该会崩溃了。 数字签名就是先 hash 再密钥加密。 可以任意构造 hash 的话你可以伪造数字签名。 例如你可以构造一个对密钥 使其的 hash 值和 google 的公钥一样,然后用这个进行第三人攻击。
    mutalisk
        24
    mutalisk  
       2022-09-28 18:48:18 +08:00
    @sparky 纯暴力计算的话,这个比挖矿要难得多得多了,挖矿只需要计算在一个区域内的就可以,这个是需要计算到准确的一模一样的。
    zeni123
        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 元)

    然而这只是暴力法。
    ShinichiYao
        26
    ShinichiYao  
       2022-09-28 19:49:03 +08:00 via Android
    检测一下文件大小,算两个不同的 Hash 就行了,大小和两种 hash 都对上难度高多了
    araaaa
        27
    araaaa  
       2022-09-29 13:50:42 +08:00
    这不是和挖矿一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5177 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:31 · PVG 17:31 · LAX 02:31 · JFK 05:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.