在 Kademlia 中,为什么建议使用 160 位节点 ID 和密钥而不是 128 位?

In Kademlia, why is it recommended to have 160-bit node IDs and keys and not 128-bit?

Kademlia 论文指出,节点被分配了随机的 160 位 ID 和密钥。这是一个严格的限制吗?如果我觉得 128 位键空间足够好,我还能继续使用吗?

选择长度是因为 SHA1 用作散列 table 键的散列函数,输出 160 位,这是当时使用最广泛的散列函数。

路由算法本身不需要特定的长度来工作,它所需要的只是密钥 space 足够大以避免 collisions in randomly chosen IDs. 128bit IDs would provide 64bits of collision space, which should be sufficient unless you intend to address grey goo.

但除了路由算法本身之外,密码问题也可能是相关的。使用加密的网络受​​益于节点 ID 加倍作为节点的 public 密钥,并且通常部署的 ECC 算法需要至少 256 位的 public 密钥。此外,对(目前假设的)量子攻击的抵抗力使推荐的散列函数大小膨胀到远远超过 128 位,因为它们会将碰撞抵抗力从 [=] 降低到 N/3 22=] 用于经典攻击。