V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aa45942
V2EX  ›  信息安全

迅雷应该是此次 XCodeGhost 事件躺枪最严重的了吧

  •  
  •   aa45942 · 2015-09-19 17:24:07 +08:00 · 6397 次点击
    这是一个创建于 3143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    非 5 毛水军,就事论事

    很多人都说用迅雷拖官网下载链接下载的 XCode 也会带毒,事实上真的有人试过么?

    这类支持离线下载的软件为了保证文件被正确下载,会依照 MD5 值、 hash 等方式判断用户需要下载的文件与服务器保存的文件是否为同一文件吧

    由上面一条,被投毒的 XCode 与官方 XCode 从 MD5 到 hash 、大小都不一样,在服务器上就是两个完全不同的文件,怎么可能会发生用户下载的是 A 文件而服务器给 B 文件这种乌龙

    不过,确有下载的文件和原始链接不匹配的时候,这种情况即下载的文件与原始文件的特性相同造成服务器误判。

    真实例子:先后上传两张 MD5 、大小均相同但内容不同的图片文件到 EverNote ,发现后一张上传的图片下载下来实际上是第一张图

    然后证明了一个道理:网上很多人都是看到什么消息就人云亦云当,就像亲身经历一样。

    所以现在,坐等有人用迅雷拖 XCode 官方下载链接,然后给出与官方 XCode 不同的 MD5 校验值打脸

    第 1 条附言  ·  2015-09-19 18:55:24 +08:00
    其实我发这主题的真实目的还有一个,就是看哪些情况下用离线功能会下载到错误的程序

    要知道对于我这种小水管,完全不用下载工具下载动辄过 G 的大软件是一件很蛋疼的事

    如果迅雷真的不能用,那就得尽快找替代方案了
    第 2 条附言  ·  2015-09-20 17:43:04 +08:00
    基于多人的讨论,证明使用迅雷的的确确会下载到错误的文件。
    不过,虽然迅雷多有下错文件的现象发生,但是在此次事件中迅雷是否躺枪还未知,因为至今未看到有人能证明用迅雷拖官网链接下载的 XCode 被投毒

    另外,很多人质疑 MD5 碰撞的真实性,这里有证明:
    http://pan.baidu.com/s/1kTpAUNl#path=%252Fmd5.%25E7%25A2%25B0%25E6%2592%259E

    又不得不扯回这个主题的主要目的:
    不要把自己臆想的东西当成真理,其中既包括不要把未发生的当成既定事实,也同样包括不要把自己不知道未查验过的当成不存在、不可能
    第 3 条附言  ·  2015-09-20 17:54:19 +08:00
    感谢 @Kisesy 为我们找到了迅雷对文件 hash 的验证
    http://blog.binux.me/2012/03/hash_algorithm_of_xunlei/
    84 条回复    2015-09-21 21:29:25 +08:00
    deepjia
        1
    deepjia  
       2015-09-19 17:51:32 +08:00
    遇到过很多次迅雷下载的文件跟源文件 Hash 值不同。迅雷没有对整个文件作 Hash 对比,至少几年前我用的时候没有。
    aa45942
        2
    aa45942  
    OP
       2015-09-19 18:18:28 +08:00
    @deepjia 我记得以前的网盘都是靠大小和 MD5 来区分文件的,现在因为要离线磁链资源,估计已经把 hash 加上了
    Kisesy
        3
    Kisesy  
       2015-09-19 18:24:51 +08:00
    同 1 楼,确实有这种情况
    这时候只能开启迅雷的选项 "只从原始地址下载"
    jasontse
        4
    jasontse  
       2015-09-19 18:29:08 +08:00 via iPad
    我想起了感染 Delphi 的 Win32.Indcu.a
    canesten
        5
    canesten  
       2015-09-19 18:35:06 +08:00
    没用迅雷下过 XCode
    但是我最近这一年用迅雷下过 VS
    HASH 对不上
    l12ab
        6
    l12ab  
       2015-09-19 18:40:48 +08:00
    我自己是测试过离线下载,步骤
    1 、上传文件 abc.zip 到自己的服务器,下载链接丢到离线
    2 、修改文件 abc.zip 里的内容,但保持文件名 abc.zip 不变,上传到服务器,丢到离线。
    3 、从离线下载文件,结果是第 1 步里的那个文件。
    wujichao
        7
    wujichao  
       2015-09-19 18:46:14 +08:00 via iPhone
    网易的黑苹果
    Slienc7
        8
    Slienc7  
       2015-09-19 18:47:03 +08:00
    很久不用迅雷,不過以前確實遇到過離綫加速下載完文件與源文件 MD5 不符之情況
    aa45942
        9
    aa45942  
    OP
       2015-09-19 18:50:36 +08:00
    @l12ab 说明迅雷判断依据是:保存第一次的下载链接+文件特征,然后以后此链接的下载请求,则直接返回服务器缓存的文件,故第二次下载的文件是第一次的(判断原理:这样会使某些原地址失效的下载链接能下载)
    的确会出问题,不过如果原始链接就是官方的,第一次保存的文件应该也是正常的

    @canesten hash 对不上说明文件特征不包含 hash

    可以用 MD5 碰撞过的文件试试。如果离线两个大小相同 MD5 相同的文件,迅雷会不会把他们弄混
    aa45942
        10
    aa45942  
    OP
       2015-09-19 19:01:06 +08:00
    @canesten http 的么,原因会不会和 6L 的一样
    aa45942
        11
    aa45942  
    OP
       2015-09-19 19:02:42 +08:00
    @wujichao 233 ,黄易都快成苹果黑了
    canesten
        12
    canesten  
       2015-09-19 19:31:12 +08:00
    不是离线,本来是从 MSDN 下载的连接直接创建一个迅雷下载任务
    然后下载完成发现版本不对。
    mongodb
        13
    mongodb  
       2015-09-19 19:33:01 +08:00
    都会做开发了,还用迅雷下工具,这是人的问题,不是迅雷的事。

    迅雷就是用来下电影的。
    aa45942
        14
    aa45942  
    OP
       2015-09-19 19:41:44 +08:00
    @mongodb
    做开发就不能用迅雷下工具是什么逻辑。
    迅雷就是用来下电影又是什么逻辑

    @canesten
    原因会不会和 6L 的一样,迅雷保存了这个下载链接第一次缓存的文件,然后你下载到的是老版本
    chengzhoukun
        15
    chengzhoukun  
       2015-09-19 20:43:16 +08:00
    在 Oracle 官网下 jdk 被劫持成百度杀毒,浏览器下载没问题。
    这事我在 jdk 捆绑百度杀毒之前就遇到过
    qw7692336
        16
    qw7692336  
       2015-09-19 20:48:49 +08:00
    就只能翻看以前的迅雷下载记录,看看谁还有
    Cu635
        17
    Cu635  
       2015-09-19 20:48:51 +08:00
    迅雷不检查 md5 或者 sha1 ……
    它看文件名,也许还看文件大小,所以说迅雷下载的文件有一定概率是坏的……
    lightening
        18
    lightening  
       2015-09-19 20:53:58 +08:00
    以前听说过,迅雷下载时只检查前一段 n kb 的 hash ,如果前一段一样很可能会下载到不一样的文件……
    lightening
        19
    lightening  
       2015-09-19 20:55:09 +08:00   ❤️ 1
    对了楼主, MD5 是众多 hash 算法的一种……
    aa45942
        20
    aa45942  
    OP
       2015-09-19 21:24:11 +08:00
    @lightening 感谢提醒,上面的 hash 应为 SHA-1
    一般文件校验是通过 SHA-1 与 MD5 两个值共同完成

    应该不会只检查前一段 hash ,毕竟有相同文件头的玩意太多了

    有可能是每一分块都查一部分,也可能是比较每个文件的大小、头尾字节、原始链接
    zent00
        21
    zent00  
       2015-09-19 21:30:12 +08:00
    前些年遇到过几次,迅雷下载 Linux 的 ISO 文件,发现 hash 不匹配,那时开始我一般不用迅雷下载软件,只用它下载电影和音乐。
    kran
        22
    kran  
       2015-09-19 21:46:21 +08:00 via Android
    每次用迅雷脑子里就会想迅雷是怎么解决这问题的
    likuku
        23
    likuku  
       2015-09-19 22:09:59 +08:00
    「先后上传两张 MD5 、大小均相同但内容不同的图片文件」。。。人为制造 MD5 碰撞文件,当前已经很容易了吗?
    lj0014
        24
    lj0014  
       2015-09-19 22:14:23 +08:00 via iPhone
    迅雷多源下载会对数据做块校验的,正常情况是不会出现下错的
    aa45942
        25
    aa45942  
    OP
       2015-09-19 22:58:31 +08:00   ❤️ 1
    @likuku 是的,而且已经有工具了。大概原理是在文件尾部添加数据以达到 MD5 碰撞。
    在这个基础上再微调一下文件大小就能做到 MD5 和大小一样内容不同的文件
    atan
        26
    atan  
       2015-09-19 23:08:09 +08:00
    微软提供的虚拟机镜像, https://dev.modern.ie/tools/vms ,下载过很多次,迅雷下的就是不能用,右键另存为慢慢下的就是可以的,文件 HASH 就是不同的,有同学有空可以试试
    eirk2004
        27
    eirk2004  
       2015-09-20 00:42:33 +08:00
    迅雷会校验的,但是偶尔还会出错,原因不明。有一次局域网缓存中的压缩包损坏,迅雷一直保持 10MB/S 而且卡在 99%,感觉挺萌的
    lecher
        28
    lecher  
       2015-09-20 01:19:42 +08:00 via Android
    利用迅雷从多个源下载数据但校验不严谨的事情进行木马代码污染下载文件不是新鲜的技术了,这是迅雷一直以来的坑,好多年前就有这个问题,直接伪造一个感染木马的源发布到迅雷上。所有数据校验都可以构造给迅雷的服务器,这种数据流迅雷也很难验真。
    binux
        29
    binux  
       2015-09-20 06:59:07 +08:00
    @aa45942 在文件尾部加数据后,即使碰撞了,再调整文件大小, MD5 就变了。不管你怎么微调
    gamecmt
        30
    gamecmt  
       2015-09-20 08:51:01 +08:00 via iPhone
    上个月下 linux 镜像 homestead ,从官网下 2k 每秒,迅雷单一来源都下载不成功,后面是 vps 下载打包之后再单一来源下载才成功。
    geeglo
        31
    geeglo  
       2015-09-20 09:12:20 +08:00 via iPhone
    @aa45942 诶嘛呀、搞的好像碰撞这么容易似的。还有工具了,呵呵呵,有本事的话发个工具吧。
    javaluo
        32
    javaluo  
       2015-09-20 09:50:30 +08:00 via Android
    @aa45942 来个工具 洗耳恭听
    sunyang
        33
    sunyang  
       2015-09-20 09:58:52 +08:00
    @binux 我是来打碎你三观的。
    @geeglo
    @javaluo
    工具在此
    https://marc-stevens.nl/p/hashclash/
    geeglo
        34
    geeglo  
       2015-09-20 10:10:35 +08:00
    @sunyang 见风就是雨,你用过么?
    lvyao
        35
    lvyao  
       2015-09-20 10:13:26 +08:00
    http://winscp.net/download/winscp570setup.exe
    用迅雷下载这个链接试试。
    Ncer
        36
    Ncer  
       2015-09-20 10:43:17 +08:00
    以前迅雷 5 的时代经常发生这种事,
    迅雷 7 的时候还没遇到
    znoodl
        37
    znoodl  
       2015-09-20 11:19:56 +08:00
    @geeglo
    这个真有
    http://www.win.tue.nl/hashclash/SoftIntCodeSign/HelloWorld-colliding.exe
    http://www.win.tue.nl/hashclash/SoftIntCodeSign/GoodbyeWorld-colliding.exe

    我知道 CRC32 可以修改数据达到特定的 CRC 值, MD5 还真没想到会有,然后搜了一下,是真的
    上面两个文件大小一样 MD5 一样,不过 CRC32 和 SHA1 不一样

    所以以后为了安全还是用两种 hash 算法比较保险
    blacklee
        38
    blacklee  
       2015-09-20 11:22:16 +08:00
    认为制造 MD5 碰撞?你还能用两张图片搞出来!
    能不能把这两张图片放出来看看啊?
    zts1993
        39
    zts1993  
       2015-09-20 12:55:42 +08:00
    我也觉的迅雷虽然垃圾,但是这样躺枪有点被人恶意攻击的节奏。。。
    BGLL
        40
    BGLL  
       2015-09-20 14:35:00 +08:00
    @atan 我用迅雷下过,可用
    imn1
        41
    imn1  
       2015-09-20 15:18:35 +08:00
    1.大字节全文件 hash 是很惨的,做过大量 hash 的人都不会这么想
    2.基于前一条,仅凭 url 怎么确保 hash ?

    我能想到的他们最多会做的事只是取样判断——抽取多个部分字节片段 hash
    binux
        42
    binux  
       2015-09-20 16:27:42 +08:00
    @sunyang 你在拿这个地址出来装逼之前,你确实用过,或者读过里面的论文吗?
    这个实现的是 collision 而不是 pre-image ,并不能实现上文中,给定 hash 值,修改 /构造文件产生相同的 hash 。而是基于 birthday paradox 构造碰撞
    Cu635
        43
    Cu635  
       2015-09-20 16:58:33 +08:00
    @lj0014 迅雷还真不检查,至少是不检查完整文件的 hash ……
    以前遇到过迅雷下载的哪个软件(是 ISO 还是压缩包我忘了), md5 和 sha1 总是都不对。用 http 下载的就没事。

    说一下,校园网,不是运营商缓存的事儿。
    Kisesy
        44
    Kisesy  
       2015-09-20 17:19:02 +08:00   ❤️ 1
    关于迅雷对文件 hash 的验证可以看看这篇文章
    http://blog.binux.me/2012/03/hash_algorithm_of_xunlei/
    wdlth
        45
    wdlth  
       2015-09-20 17:30:28 +08:00
    以前用 QQ 旋风离线下大压缩包,整天解压不了,用 WinHex 打开一看,有的文件中间全是空的,真是日了 Pony 了……
    aa45942
        46
    aa45942  
    OP
       2015-09-20 17:34:08 +08:00
    @blacklee
    之前提到的两张 MD5 相同、大小相同的图片
    http://pan.baidu.com/s/1kTpAUNl#path=%252Fmd5.%25E7%25A2%25B0%25E6%2592%259E

    @binux 碰撞前先调好大小,使得调整完之后大小与原文件相同

    @geeglo 搜索关键字“ MD5 碰撞工具”,并且,我用过,而且校验过两个文件的 MD5 ,请善用搜索
    aa45942
        47
    aa45942  
    OP
       2015-09-20 17:35:07 +08:00
    手误,上面的“调整完之后”应为“碰撞完之后”
    binux
        48
    binux  
       2015-09-20 17:42:19 +08:00
    @aa45942 MD5 碰撞指的是构造「两个」文件,使得他们的 MD5 相同,而不是已知一个 hash 值,构造「一个」文件使得它的 MD5 为 hash 值。前者即使是暴力产生也只需要 2^(n/2 ) 次计算,而后者理论上是 2^n
    aa45942
        49
    aa45942  
    OP
       2015-09-20 17:46:46 +08:00
    @binux
    数据 1

    4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
    d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
    af bf a2 (00 ) a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
    93 d8 49 67 6d a0 d1 (55 ) 5d 83 60 fb 5f 07 fe a2

    数据 2

    4d c9 68 ff 0e e3 5c 20 95 72 d4 77 7b 72 15 87
    d3 6f a7 b2 1b dc 56 b7 4a 3d c0 78 3e 7b 95 18
    af bf a2 (02 ) a8 28 4b f3 6e 8e 4b 55 b3 5f 42 75
    93 d8 49 67 6d a0 d1 (d5 ) 5d 83 60 fb 5f 07 fe a2

    摘自
    https://sumnous.wordpress.com/2012/09/25/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%BA%94%E8%AF%A5%E6%94%BE%E5%BC%83%E6%88%96%E5%87%8F%E5%B0%91%E4%BD%BF%E7%94%A8md5/
    juneszh
        50
    juneszh  
       2015-09-20 17:58:47 +08:00
    是不是躺枪, 用过迅雷的人心里都明白. 一句"至今未看到有人能证明用迅雷拖官网链接下载的 XCode 被投毒 "就想洗白有点过于天真, 用"未知"来证明其"不存在"本来就站不住脚.

    按照 LZ 的思路, "我未亲眼见过党腐败所以腐败都是子虚乌有, 你们认为的腐败都是臆想"
    binux
        51
    binux  
       2015-09-20 17:58:55 +08:00
    @aa45942 再说一次, collision 和 pre-image 是不同的,由于生日悖论,构造碰撞比指定 hash 构造内容,代价差了一个指数级。
    aa45942
        52
    aa45942  
    OP
       2015-09-20 18:02:01 +08:00
    @binux 我不知道你的 2^(n/2 )是如何得到的,即便是构造「两个」文件,也只能是先有一个文件,然后有另一个文件的 MD5 值与其相同,概率同样是 36 的 32 次方(也就是可能的 MD5 值总数)
    就好像有一堆 36 的 32 次方个不同的球与另一堆 36 的 32 次方个和之前的球 一 一 对应的球,两堆球之中各抽一个,拿到对应球的概率总是 36 的 32 次方,并不会因为你是先拿一个再拿一个还是同时拿而改变概率
    aa45942
        53
    aa45942  
    OP
       2015-09-20 18:05:30 +08:00
    @juneszh "至今未看到有人能证明用迅雷拖官网链接下载的 XCode 被投毒“是既定事实,如果出现"有人能证明用迅雷拖官网链接下载的 XCode 被投毒”,那么我被打脸。我从没有臆想通过迅雷下载的文件一定与原文件一样,我只是说在这件事情上,迅雷目前是被冤枉的。

    如果你想证明迅雷在这次事件中没被冤枉,请拿出证据打我脸。
    binux
        54
    binux  
       2015-09-20 18:06:11 +08:00
    @aa45942 生日悖论啊生日悖论,一群人中,任意两个人生日相同的概率是多少,并不需要 365 个人,只要 23 个就能使碰撞概率超过 50%
    juneszh
        55
    juneszh  
       2015-09-20 18:20:38 +08:00
    @aa45942 中国是一个"谁主张谁举证"的法治国家, 既然你提出迅雷是躺枪, 你能拿出有力证据来证明你的论点? 不能, 你也只是你口中说的那群"臆想"的家伙.
    aa45942
        56
    aa45942  
    OP
       2015-09-20 18:28:27 +08:00
    @binux 而碰撞工具的原理,则是通过很小的代价从中拿到对应的球,比如根据球的特征分类,然后根据已经得到的球的特征从已被分类好的球中挑选,概率被人为的改变了,从原本的概率极小的事件变成了必然事件。
    至于你说的生日悖论,说白了就是概率学的排序与组合问题,而先选定一个或是同时选定并不能改变概率事件的性质,本质上两者都是组合概率, MD5 碰撞概率的计算式子:
    1 * 1/(36^32 ) = 1/(36^32 )

    其中 1/(36^32*2 )为抽取第二个的概率
    选定一种 MD5 然后抽,则有 36^32 种 MD5 选择的可能,碰撞成功的概率(放回抽样):
    1/(36^32 ) * 1/(36^32 ) * 36^32 = 1/(36^32 )

    如果你说指定一个 MD5 ,不能乘 36^32 ,那么这样一来就是寻找两个文件使得他们的 MD5 值与指定文件相同了,寻找的文件多了一个,概率自然大了一个数量级,如果只寻找一个,概率是 1/(36^32 )
    aa45942
        57
    aa45942  
    OP
       2015-09-20 18:31:35 +08:00
    @juneszh 我的证据就是,目前所有说迅雷下载的 XCode 带毒的人都没有确实的证据,而且
    http://digi.163.com/15/0919/06/B3RUU5CM00162OUT.html
    脸疼?
    juneszh
        58
    juneszh  
       2015-09-20 18:52:59 +08:00
    @aa45942
    你这种"别人无法证明他有罪所以他就无罪"的逻辑什么可笑;
    我同样可以说"你无法证明他无罪所以他有罪".

    然而你发这个目的是什么? 让讨论了一轮, 然后用自己的谬论来自圆其说?

    当大家都已经提出, 迅雷是有"下载的文件不是原文件"的情况存在, 并且是普遍存在, 除非你能证明在这个事件出现之前, 迅雷就已经有一套机制"对特定软件自动只从原地址下载", 并且这套机制对 XCode 生效, 不然你说再多都只是在钻牛角尖.

    你能证明吗? 当然不能.

    同时, 作为一个有知名度的公司, 危机公关肯定已经开始有动作: 第一时间处理 XCode 相关的源; 发声明说自己无关; 再铺开各大论坛的软文;

    然后你居然试图天真的拿个官方声明来证明你的论点, 还有讨论下去的必要吗?
    aa45942
        59
    aa45942  
    OP
       2015-09-20 18:56:09 +08:00
    @binux 而且你所说的生日悖论,概率事件完整的描述应该是:
    有一群人,其中存在两人生日相同的概率

    MD5 碰撞的概率描述是:
    某两个文件的 MD5 值相同的概率

    如果要符合生日悖论,那么正确的描述应该是:
    有一批文件,其中存在两个文件 MD5 值相同的概率

    仔细想想就会知道这描述了两个完全不同的事件(但可以转化):
    某两个文件的 MD5 值相同的概率--->有两个文件,其中存在两个文件 MD5 值相同的概率
    两个人的生日相同--->有两个人,其中存在两人生日相同的概率

    然后你可以算一下事件发生的概率
    alexapollo
        60
    alexapollo  
       2015-09-20 19:02:27 +08:00
    md5 hack 是比较成熟的技术,没法避免的。
    在一些核心路由器上就有算法防止 hash 碰撞,但说实话还是很难防住。
    binux
        61
    binux  
       2015-09-20 19:18:35 +08:00
    @aa45942 “那么这样一来就是寻找两个文件使得他们的 MD5 值与指定文件相同了” 我并没有这么说,我说的是两个文件互相相同。
    “某两个文件的 MD5 值相同的概率 ” 构造碰撞时,是同时更改两个文件的,所以就是 “有一批文件,其中存在两个文件 MD5 值相同的概率 ”

    不多说了, https://marc-stevens.nl/p/hashclash/ 里面论文的概论里面就有对基础知识的概述。
    然后, http://blog.binux.me/2012/03/hash_algorithm_of_xunlei/ 这篇文章就是我写的。
    aa45942
        62
    aa45942  
    OP
       2015-09-20 19:19:52 +08:00
    @juneszh
    1.如果你仔细看了我的主题,就会发现我从来没否认“迅雷下载的文件不是源文件”存在的可能性,甚至我还证明了有这种可能

    2.如果你说我的是强盗逻辑,那么我倒要问问你了,“迅雷拖官方 XCode 下载链接下载回来的 XCode 带毒”这条结论是怎么成立的,有没有证据?如果你没有证据,我同样可以说你是强盗逻辑(如果你说迅雷下载的文件不是源文件就证明了迅雷拖官方 XCode 下载链接下载回来的 XCode 带毒,那我只能说呵呵,截图、微博、链接都行,但请注意不是从百度网盘上拖的链接,而是官网!你证明了百度网盘拖的带毒 XCode 下载回来带毒那只能证明你在说废话)

    3.不管官方声明是不是软文,是不是编造的数据,至少官方给出了证据,而要反驳这条证据,最好的办法就是拿出和证据矛盾的另一条证据或者指出证据的疑点,如果你不能反驳别人提出的证明,那和喷子有什么区别。

    4.本来就是一个很容易判断的事实,被网上某些黑子抹了一刀歪曲事实,然后被不明真相的围观群众大肆鼓吹,这才是我感到愤怒的地方,谣言就是这么来的。谣言止于事实,而不是止于自己的猜测

    5.你的结论让我想起了一个笑话,如何证明你不是神经病
    aa45942
        63
    aa45942  
    OP
       2015-09-20 19:22:33 +08:00
    @binux 存在相同和指定他们相同,两者不一样的
    就比如 366 个人,肯定存在两个人生日相同,但是我从中指定了两个人,他们两个生日相同的概率依然是 1/365
    Cu635
        64
    Cu635  
       2015-09-20 19:36:14 +08:00
    @geeglo “诶嘛呀、搞的好像碰撞这么容易似的。还有工具了,呵呵呵,有本事的话发个工具吧。”

    你这话在十年前说还对,但是在 2004 年的时候就已经出现 md5 碰撞的理论论文了: http://link.springer.com/chapter/10.1007/11426639_2 ,基于这篇论文的 md5 碰撞实际实现也在 2005 年有了结果: http://link.springer.com/chapter/10.1007/11506157_23http://infoscience.epfl.ch/record/164540/files/NPDF-33.pdf

    新闻报道也是在 2005 年就有了。

    所以说你的知识还停留在十年前么……
    aa45942
        65
    aa45942  
    OP
       2015-09-20 20:06:24 +08:00
    @binux 刚才又仔细回顾了一下你的回复,其实你在意的是工具能否指定 MD5 值吧

    事实上,很早就有工具实现修改两个不同文件达到相同 MD5 值( fastcoll_v1.0.0.5 )
    现在有没有指定 MD5 修改工具这个确实不知道,这种工具我觉得即便有也不会公布出来(网上倒是有这类工具的截图,但是我下载的时候都会报毒,没敢下来测试)
    binux
        66
    binux  
       2015-09-20 20:27:45 +08:00
    @aa45942 并不能指定 2 个文件, MD5 碰撞是要同时修改两个文件,使他们计算 hash 时能更接近,以实现加速碰撞。是可以实现“修改两个不同文件”,但是并不能只修改一个使它和另一个不变的文件(即给定 hash )相同。
    而在上面的场景中,你是没法修改苹果服务器上的文件的,所以并不能在有效的时间内,构造另一个文件,让它的 hash 和苹果服务器上的文件 md5 相同。
    aa45942
        67
    aa45942  
    OP
       2015-09-20 20:57:01 +08:00
    @binux
    现有技术能不能实现的确不知道,因为即便有这种工具,也不会公开,别人还指着这工具达到某种目的,公开的话 MD5 就废了,然后这个工具也就没用了(目前 MD5 应用广,利益诱人,这种工具会给他们带来很高的收益)
    另外,之前所说的是构造两个 MD5 相同大小相同的图片,并未指定 MD5 值。
    科技的发展是很快的(王小云的实验需要几个小时,而 fastcoll 只需要几秒钟就完成了碰撞)
    比如 37L @znoodl 提供的两个程序就不是依靠尾部添加数据达到的碰撞,我也不相信这两个程序 MD5 相同完全是巧合
    那么可以确定的是某些人又发现了可以修改程序 MD5 值而又不破坏程序的运行的方法,甚至是不是可以猜想已经达到了修改程序某些字节而不改变原程序 MD5 的程度

    另外,有毒 XCode 的 MD5 值与官方的并不相同,这个和我们讨论的其实是两件事, XCodeGhost MD5 如果与官方相同,那就不仅仅是大事了,那就是席卷整个 IT 界的大海啸
    geeglo
        68
    geeglo  
       2015-09-20 22:28:33 +08:00 via iPhone
    @Cu635 存在碰撞但肯定还没到烂大街的程度, md5 值的固定长度就决定了他肯定存在碰撞。

    我的认知不是停在数年前,而是我认为:既要生成和原安装包一样 md5 的包,又要保证伪造包可用,又要保证伪造包带毒。目前不可能。
    Cu635
        69
    Cu635  
       2015-09-20 23:57:55 +08:00
    @geeglo 看看这篇文章: http://blog.jianguoyun.com/?p=537

    “ MD5 最大的问题在于,通过我国的王晓云教授等学者的工作, md5 已经被证明可以进行碰撞攻击。也就是说,攻击者可以产生两个应用程序,内容不一样,但是哈希值完全一样。

    在云存储的应用场合中,这种危害表现为攻击者可以伪造一个 Windows 的安装光盘,在其中嵌入木马,通过上述手段让 MD5 哈希值和微软官方发布的光盘签名一致,抢先上传到分享类网盘中。如果该网盘采用 MD5 检查重复文件(例如离线下载服务), 木马就会被植入到希望下载原版光盘用户的电脑中。”

    再强调一遍“攻击者可以伪造一个 Windows 的安装光盘,在其中嵌入木马,通过上述手段让 MD5 哈希值和微软官方发布的光盘签名一致”

    也许(注意是也许),构造一个 sha1 值相同,又要保证伪造包可用,又要保证伪造包带毒的伪造包,现在还没有一个有效时间内完成的工具。但是 md5 可不是这样了。

    “事实上,早在 2005 年, On the possibility of constructing meaningful hash collisions for public keys [7] 提出了一种利用 MD5 Collision 构造 PKI 证书的方法,并且构造出了两个散列值一样,而公钥不同 X.509 证书,以最直接的方式强调了现行 PKI 系统的脆弱性。 2007 年, Chosen-prefix Collisions for MD5 and Colliding X.509 Certificates for Different Identities [12] 中用特定前缀的 MD5 碰撞对,为不同 ID 构造出具有相同 MD5 值的 X.509 证书。 2008 年 12 月, 25th CCC ( Chaos Communication Congress )会上,研究人员里用 MD5 碰撞创造假的数字证书认证( certificate authority ),利用 200 台 PS3 ,他们能在短时间破解 SSL 加密。安全研究人员利用 200 台 PS3 攻击 MD5 算法,创造了一个假的来自可信 CA 的数字证书。”

    注意,这一对 md5 值相同的 X.509 证书都是合法的,可用的。

    你说的对于可执行文件这“不可能”的情况大部分是在黑产里面,所以说知道的人比较少。看看这个帖子吧: http://lcx.cc/?i=1822

    如果你还是视而不见的话,那我只能说要怀疑你的人格问题了。

    另外在迅雷下载文件损坏这个问题上,只要迅雷找到的一个文件块是同名不同内容文件的,这文件就是坏了,不需要那么强的条件。
    geeglo
        70
    geeglo  
       2015-09-21 08:25:30 +08:00 via iPhone
    @Cu635 我看了,还看了这个 http://lcx.cc/?i=2680 请看方案 2 另外,你慢慢怀疑吧。呵呵
    lnkisi
        71
    lnkisi  
       2015-09-21 09:25:49 +08:00
    就是两个不同的文件,迅雷都是用 GCID 来标识文件的。
    helloyang
        72
    helloyang  
       2015-09-21 09:28:05 +08:00
    @geeglo @Cu635 你们二人给的网站 小红伞 chrome 插件显示警告 ,可能已对计算机产生危害,岔个话题,这两个网站应该有什么问题
    helloyang
        73
    helloyang  
       2015-09-21 09:50:35 +08:00
    是 Avast 更正 ps 这网站介绍的好霸气
    lawder
        74
    lawder  
       2015-09-21 16:44:36 +08:00
    @atan 跟你一样,我也是下这个微软虚拟机镜像, 2 次都不一样,从此以后就很少用迅雷下载了。
    aa45942
        75
    aa45942  
    OP
       2015-09-21 17:18:09 +08:00
    @geeglo MD5 的应用就单单是校验程序?你看了那个方案二就相信了?少年我只能说你图样图森破
    黑客界从来不惮以最坏的恶意来推测他人用心。
    某些黑客界的大神密码、算法学水平远远超过大学教授,你怎知他人不能改进碰撞算法,又怎知他人没有使用先进的超级计算机的机会?最简单的例子,在王小云的论文出来后曾有人说伪造数字证书不可能, 69L 就是打脸的例子

    比如,若黑客掌握了指定 MD5 碰撞的技术,那么以 MD5 加密的密码就不再保险,无论你设的密码多复杂,黑客只要知道你密码的 MD5 值,就等于知道了你的密码

    再仔细想想就知道,为什么这么多安全专家(非砖家)说 MD5 已经不再安全,需要靠多种方式校验,如果按你说的“不可能”,那干脆只使用 MD5 就好了,何必多此一举再验一次
    binux
        76
    binux  
       2015-09-21 17:19:49 +08:00
    @Cu635 “攻击者可以伪造一个 Windows 的安装光盘,在其中嵌入木马,通过上述手段让 MD5 哈希值和微软官方发布的光盘签名一致” 不可以, 碰撞是要求能同时修改碰撞双方的两个文件, 指定 hash 值寻找碰撞, 难度上升 2^64 倍
    aa45942
        77
    aa45942  
    OP
       2015-09-21 17:24:02 +08:00
    @binux 其实这个倒不必担心,安装盘一般用 MD5 和 SHA1 两个值来校验
    geeglo
        78
    geeglo  
       2015-09-21 17:56:43 +08:00
    @aa45942 要不我发个 火狐浏览器的 安装包给你,然后你发我一个 MD5 相同且带病毒能运行的?
    你可能又会讲,你找不出不代表不存在。黑客啥啥的可能早就掌握了。

    大哥啊,给定 MD5 ,要产出一个相同 MD5 的文件已经不容易了,还要实现原来安装包的功能,又要。。。。 这,又不是随便算几天就能出来的。


    另外,我觉得和你争论没意义,我说的不可能是有前提的。我不是在坚持:( MD5 不可能相同这个观点)
    aa45942
        79
    aa45942  
    OP
       2015-09-21 18:47:07 +08:00
    @geeglo MD5 的应用领域有这么多,为什么非要干伪装校验这种吃力又没卵用的事,黑客真没你想的这么 2
    这么个假设吧,黑客做中间人窃听用户与服务器之间的通讯,因为用 MD5 碰撞创造了一个假的来自可信 CA 的数字证书(若能指定 MD5 ,那就是伪造了一份可验证的服务器数字证书,不过没人会检查可通过验证的证书是不是和以前的证书一样,所以黑客完全没必要指定 MD5 ),截获了用户本应发往服务端的加密数据包。
    然后就是你要的实际意义了:哪天你用了网银在完全正常的网站付了一次款,然后发现你银行卡里的钱被转走,你甚至不知道钱是怎么丢的

    伪造文件等待别人安装?你的观念还停留在十几年前
    如果是我是黑客,我甚至不需要让你安装伪装文件,你所浏览的一切网页、发出去的每一个数据包都有可能能被我控制

    当然,黑客不会对普通人干这种事,因为这么干了,等于逼着让全球安全领域的人掘地三尺把他(们)找出来,因为这样代表这个黑客正在威胁全球互联网络,你并不知道也不会知道是否会有人有能力干这件事,这种事情一旦连普通人都知道了,代表的要么是这种技术早就被淘汰,要么就是要发生大事

    另外,就 XCodeGhost 事件来说,有传言说 CIA 早在 3 月就知道了,而 XCodeGhost 被爆出通讯过程容易被第三人攻击,你就可以想想这 6 个月 CIA 能从中获得什么。黑色世界真的没你想的这么简单
    geeglo
        80
    geeglo  
       2015-09-21 19:52:06 +08:00
    @aa45942 你懂的真多,我借用你自己发的一句话:网上很多人都是看到什么消息就人云亦云,就像亲身经历一样。


    另外,从你的言论中我只看到了说教,完全没见到实质的证据。想一下应该是因为我的观念落后了十年。
    呵呵呵。
    geeglo
        81
    geeglo  
       2015-09-21 19:56:02 +08:00
    @aa45942 “不要把自己臆想的东西当成真理,其中既包括不要把未发生的当成既定事实,也同样包括不要把自己不知道未查验过的当成不存在、不可能”

    后半句可能在说我,那前半句难道不也是你自己现在正在坚持的么?
    aa45942
        82
    aa45942  
    OP
       2015-09-21 20:26:01 +08:00
    @geeglo

    “不要把自己臆想的东西当成真理,其中既包括不要把未发生的当成既定事实,也同样包括不要把自己不知道未查验过的当成不存在、不可能”

    你连这句话都没弄清楚

    你要实质性证据?
    已经被多次发现的伪造数字证书中间人攻击算不算证据?
    之前 V2 有人发现被中间人攻击算不算证据?
    php 的 hash 碰撞攻击算不算证据?
    如果这些都不算证据,那么我倒想请问你想要的证据是什么

    知不知道什么叫不要把自己不知道未查验过的当成不存在、不可能?

    你能区分什么叫猜测什么叫事实?

    本不想喷你,但还是忍不住,麻烦请先看懂了理解了我说的话,再来反驳我
    geeglo
        83
    geeglo  
       2015-09-21 21:23:13 +08:00
    @aa45942 你这智商真是交流不了,有能力就发两个 MD5 一样火狐安装包吧, 或者其他软件的安装包都行,发不出来就扯这扯那的,还扯到 中间人攻击去了,简直是笑话,我认为你自己该去查一下那句话的意思。

    另外,理论上存在,和已经有实际例子。这两个东西完全不同啊。。。。我猜你又又要扯那证书,又扯前面发的特殊构造的小程序了。

    请来点有意义的干货。
    geeglo
        84
    geeglo  
       2015-09-21 21:29:25 +08:00
    @aa45942 想了想,还是 Block 你了,已经没什么好说的了,真为你这种杞人忧天的傻逼而高兴。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4585 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 04:03 · PVG 12:03 · LAX 21:03 · JFK 00:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.