索尼的洪流“坏种子”攻击,它是如何工作的?

信息安全 哈希 点对点 激流
2021-08-16 12:40:04

索尼最近发现大量数据被盗。为了防止被盗数据通过种子传播,他们正在做所谓的不良种子攻击。这是什么攻击?这是已知的攻击还是他们为在这种特定情况下发生的事情而创造的一些术语?

以下是与攻击有关的文章的摘录:

(...) 从昨天开始,“突然间,我们看到与索尼种子的 SHA1 签名相匹配的文件开始在所有种子站点中填充。” (...) 文件被智能设计为具有与 GoP 文件种子相同的签名 (...) [SHA1 签名在种子提供的元数据中,而不是导致 SHA1“冲突”的文件的结果通过匹配文件的确切哈希值。]

据我了解,他们没有使用 SHA1 冲突;原始文件已被替换,他们只需重新计算随文件提供的哈希值。(或者哈希,这些是每个块还是每个文件?)客户端在下载一个块后检查它,意识到它是假的,并尝试从不同的种子重新下载它。这一直持续到下载所有正确的块为止。这个对吗?所以客户端仍然可以获取文件,只是因为不断下载虚假数据而需要更多时间?

1个回答

正确的。正如那篇文章中所解释的,种子使用 BitTorrent 协议来共享索尼被盗的数据。通过种子下载的每个片段都与文件中的索引链接,并检查和验证该部分的哈希值。但是,我不相信他们在那篇文章中提到的这个哈希值。下面我将描述通过 BitTorrent 下载文件的过程。

.torrent 文件 BitTorrent 协议本身表示 .torrent 文件包含两个信息字段

  1. announce: 跟踪器的 URL
  2. info: 映射到键的字典

字典中的每条数据都用于拼凑原始文件。这意味着一个文件被分成预定的部分,每个部分通常是 2 的幂。该字典包含有关每个片段、长度和每个片段的 SHA1 哈希的所有信息,以验证完整的下载。

Tracker
当您尝试使用 BitTorrent 下载文件时,它将尝试执行 Tracker GET 请求。作为回应,有很多关于当前可供下载的对等点的信息。通常是可用于下载文件的对等点列表的压缩版本。与对等点建立连接以下载每个片段,一旦收到所有片段,就会通知 Torrent 客户端。当验证数据的 SHA1 散列时,每个片段都被认为是完整的。如前所述,此哈希值在info字典中提供。

此 SHA1 哈希不是被欺骗的哈希。Tracker 响应中包含的另一条信息是一个名为 的字段info_hash

info_hash
元信息文件中信息值的编码形式的 20 字节 sha1 散列。请注意,这是元信息文件的子字符串。info-hash 必须是在 .torrent 文件中找到的编码形式的哈希,无论它是否无效。这个值几乎肯定会被转义。

记住这一点,我们会回来的。

Peer
Peer 协议是被欺骗的。每个对等点必须使用索引确定该对等点下载文件的哪一部分。建立此连接需要握手,它涉及发送 的值info_hash下载文件的客户端验证这是否与info.torrent 文件的 bencoded 字段的 SHA1 哈希匹配。

据称索尼所做的是使用正确的哈希值发布虚假文件,以建立与试图下载它们的客户端的连接。这些文件可能是伪造的,因为客户端必须下载整个文件才能验证该部分。如果检查失败,则必须重新启动该片段的下载。

正如您所看到的(并且在那篇文章中提到过),这可能是 Web 服务器的问题。不断下载文件的某些部分而没有尽头可能最终导致大量带宽使用。这可能导致 Web 服务器的 DDoS。