我们使用的是Ed25519签名方案(它使用Curve25519)。密钥对由随机数据生成密钥,然后从所述秘密密钥计算32字节(256位)公钥。
问题是公钥的熵(随机性)。我们目前使用公钥的前4个字节作为公钥的“合理唯一”ID。我们的空间非常有限,不能超过4个字节。如果我们以不同的方式生成ID,我们会改进它的唯一性吗?例如,ID可以由公钥的Bytes 0-3和Bytes 4-7之间的XOR生成?或者使用公钥的前4个字节的sha-512。不然呢?
发布于 2019-03-23 08:10:57
如果32位If是独立分配的,那么通过统一随机分配if所能得到的最好结果是n^2/2^{32},如果n是小的,则n是您拥有的if的数量;一旦n超过2^{16},碰撞的概率就会迅速接近1。这就是标准生日悖论。
在ids上使用非均匀分布甚至更糟。均匀随机曲线点编码中比特的分布是不可检测的不均匀的--在每个人都意识到有后门之前,这已经是报告的第一个问题_EC_DRBG之一了。在这种情况下,低阶32位可能非常接近于均匀,不会影响碰撞概率;为了缓解这种担忧,您可以首先通过像SHAKE128-32这样的哈希传递编码的曲线点。
但是,您应该更加关注您希望在第一时间使用32位in实现的目标!在OpenPGP中,这一直是一个麻烦的来源,例如,欺诈性密钥被伪造,并被上传到密钥服务器,每32位密钥可能。为了避免这种麻烦,您从根本上需要:
https://crypto.stackexchange.com/questions/45291
复制相似问题