制作一个经过修改的客户端来分发恶意软件而不是实际要发送的文件似乎很简单。BitTorrent 如何防御这种情况?
答案1
在 bittorent 中,传输的数据被分成“片段”。片段的大小是可变的,可由 torrrent 创建者调整。torrent 中的每个“片段”都包含其内部数据的 SHA1 哈希值。当 torrent 客户端下载“片段”时,它会检查 SHA1 哈希值以查看是否存在任何损坏或篡改。任何 SHA1 哈希值不匹配都会导致 torrent 客户端转储该片段。一些客户端/界面(RuTorrent 就是一个例子)会显示“浪费”了多少数据的统计数据 - 即 torrent 客户端发现包含 SHA1 哈希值不匹配的片段中包含的数据量。
因此,很难播种包含恶意文件的种子。你必须进行 SHA1 哈希碰撞,并进行修改,以便每个片段,并且在用恶意片段替换非恶意片段后,torrent 元数据的校验和正确无误。
附注:目前,SHA1 已被认为被削弱(见http://threatpost.com/microsoft-warns-customers-away-from-sha-1-and-rc4/102902) 以至于谷歌(Chrome)和其他一些公司也开始转向其他算法。