我一直致力于Shamir的秘密共享的实现,并且想知道所选择的素数是否会对安全性产生影响。这主要是因为我在GitHub上看到过一些使用257的实现,以及一些使用大梅森素数的实现,如2^53 - 1。
感谢输入,谢谢!
从数学的角度来看,这个秘密是完美的:只要你至少比阈值低一个份额,每个可能的秘密都是等概率的,而你什么也不知道。
选择更大质数的主要原因是为了分享更大的秘密。您需要将密钥转换为小于质数的数字,如果您的密钥是一个大的计算机文件,那么这显然会失败。如果共享密钥是对实际消息进行加密的对称密码的密钥,那么您就失去了完美的保密性,并且密码被破解的风险与密钥的大小密切相关。
在实际应用中还需要注意的是,如果你在秘密后面选择质数,你的选择可能会揭示秘密的大小。还要注意的是,对于较小的素数,单个共享可能只需要看一眼就会受到损害,而对于较大的素数,共享可能包含太多的细节,人类无法快速记住。
当然,你总是可以将一个大秘密分成许多小秘密,并使用一个小素数独立地对每个秘密进行编码。这样一来,质数的大小就不那么重要了,但具体的选择可能仍然决定了分割秘密和表示股份的难易程度。