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

2015-09-19 17:24:07 +08:00
 aa45942

非 5 毛水军,就事论事

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

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

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

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

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

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

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

6697 次点击
所在节点    信息安全
84 条回复
imn1
2015-09-20 15:18:35 +08:00
1.大字节全文件 hash 是很惨的,做过大量 hash 的人都不会这么想
2.基于前一条,仅凭 url 怎么确保 hash ?

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

说一下,校园网,不是运营商缓存的事儿。
Kisesy
2015-09-20 17:19:02 +08:00
关于迅雷对文件 hash 的验证可以看看这篇文章
http://blog.binux.me/2012/03/hash_algorithm_of_xunlei/
wdlth
2015-09-20 17:30:28 +08:00
以前用 QQ 旋风离线下大压缩包,整天解压不了,用 WinHex 打开一看,有的文件中间全是空的,真是日了 Pony 了……
aa45942
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
2015-09-20 17:35:07 +08:00
手误,上面的“调整完之后”应为“碰撞完之后”
binux
2015-09-20 17:42:19 +08:00
@aa45942 MD5 碰撞指的是构造「两个」文件,使得他们的 MD5 相同,而不是已知一个 hash 值,构造「一个」文件使得它的 MD5 为 hash 值。前者即使是暴力产生也只需要 2^(n/2 ) 次计算,而后者理论上是 2^n
aa45942
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
2015-09-20 17:58:47 +08:00
是不是躺枪, 用过迅雷的人心里都明白. 一句"至今未看到有人能证明用迅雷拖官网链接下载的 XCode 被投毒 "就想洗白有点过于天真, 用"未知"来证明其"不存在"本来就站不住脚.

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

如果你想证明迅雷在这次事件中没被冤枉,请拿出证据打我脸。
binux
2015-09-20 18:06:11 +08:00
@aa45942 生日悖论啊生日悖论,一群人中,任意两个人生日相同的概率是多少,并不需要 365 个人,只要 23 个就能使碰撞概率超过 50%
juneszh
2015-09-20 18:20:38 +08:00
@aa45942 中国是一个"谁主张谁举证"的法治国家, 既然你提出迅雷是躺枪, 你能拿出有力证据来证明你的论点? 不能, 你也只是你口中说的那群"臆想"的家伙.
aa45942
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
2015-09-20 18:31:35 +08:00
@juneszh 我的证据就是,目前所有说迅雷下载的 XCode 带毒的人都没有确实的证据,而且
http://digi.163.com/15/0919/06/B3RUU5CM00162OUT.html
脸疼?
juneszh
2015-09-20 18:52:59 +08:00
@aa45942
你这种"别人无法证明他有罪所以他就无罪"的逻辑什么可笑;
我同样可以说"你无法证明他无罪所以他有罪".

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

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

你能证明吗? 当然不能.

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

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

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

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

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

然后你可以算一下事件发生的概率
alexapollo
2015-09-20 19:02:27 +08:00
md5 hack 是比较成熟的技术,没法避免的。
在一些核心路由器上就有算法防止 hash 碰撞,但说实话还是很难防住。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/222018

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX