Torrent 是否可以安全地共享合法文件(文件验证)?它使用 SHA1 还是 SHA256?

信息安全 正直 激流
2021-08-25 08:07:11

让我们假设一个合法的 torrent 文件已通过 HTTPS 安全成功地下载,甚至可能使用 OpenPGP 验证来验证 torrent 文件的完整性。

Torrent 客户端对想要在下载中添加恶意内容的攻击者有多好?

洪流客户端是否仅因网络故障或任何类型的攻击而中断?

Torrent 客户端是否只使用 SHA1 或更强大的哈希算法,很少有人争论它是否仍然安全,例如 SHA256?

(我不是在这里询问任何隐私/盗版/法律方面的问题。)

2个回答

BitTorrent 使用一种称为分块的方法,其中文件被分成 64 KB – 2 MB 的片段。每个片段都经过哈希处理,哈希值(连同片段大小)存储在 torrent 的元数据(小.torrent文件,或您通过DHT接收的元数据)中。这与 . 一起info_hash使 BitTorrent 对故意篡改(中毒)具有很强的抵抗力。SHA-1 用于info_hash和 来验证块。

南加州大学对此课题进行了研究:

我们发现 BitTorrent 对内容中毒的抵抗力最强。

...

由于索引文件分布在 P2P 文件共享系统之外,因此可以使用元数据中包含的可靠哈希来验证每个块。此验证为 BitTorrent 协议提供了对内容中毒的高抵抗力。

简短回答
在大多数情况下,是的,但存在一些理论上的问题。

长答案
BitTorrent 将文件分成“片段”。种子文件包含一个列表,其中包含每个片段的 SHA1 哈希。与 torrent 文件中的哈希不匹配的数据将被丢弃,因此您最终得到的文件的每个部分都将具有与用于创建 torrent 的文件的相应部分相同的 SHA1 哈希。

所以问题就变成了 SHA1 是否足够安全,可以防止用“邪恶”数据代替“好”数据。有两种情况需要考虑:

  1. 攻击者无法控制“好的”数据。在这种情况下,攻击者需要对 SHA1 进行原像攻击。

  2. 攻击者有能力预测和控制“好的”数据。例如,他们可能会被要求提供一个新版本的文件以包含在新版本的 torrent 中,而不是对先前版本的其他修改或攻击者可以预测的修改。在这种情况下,他们可能会使用某种形式的碰撞攻击。

在可预见的将来,对 SHA1 的原像攻击似乎不太可能。碰撞攻击似乎更有可能发生。在人为的场景之外,“普通”碰撞攻击的效用可能有限,但“明显选择前缀”碰撞攻击(比普通碰撞攻击更难,但比原像攻击容易得多)更强大,因为它允许“好”数据看起来非常无害(只需在某处隐藏一小块看起来随机的数据),而坏数据可能是任意坏的。

碰撞攻击是主要威胁吗?这取决于,如果制作种子的文件是由受信任的一方手动收集的,那是不太可能的。攻击者很难在提交文件之前准确预测收集集合的人将要包含的内容。另一方面,如果在创建种子时涉及自动化,并且攻击者可以以相当直接的方式影响自动化,则碰撞攻击的风险要高得多。