通过将私钥分散到多个地方来保护私钥

信息安全 密钥管理
2021-08-15 21:04:14

拆分私钥文件并将其放在不同的位置是否安全?我的意思是有人真的可以只用钥匙的一部分做任何事情吗?

2个回答

只是将文件拆分不会产生预期的效果(正如 A.Hersean 在他们的回答中解释的那样)。

我认为您正在寻找的是“秘密共享”算法,最著名的是Shamir 的秘密共享算法(感谢 @heinrich5991),其中秘密被分成 N 部分并提供给不同的人以进行安全保管。为了重建秘密,需要将所有 N 个片段(或在某些变体中,只有 k 个片段)放在一起。除非他们拥有所有的碎片,否则攻击者不会获得任何信息。

虽然在许多应用程序中使用,但我不相信它在 openssl 或 CAPI 中可用。有许多强大的开源实现——请参阅这个问题,但您需要做一些功课来确定您是否相信该实现不会被后门。


还有“多方加密”的相关概念;您使用多个人的公钥加密秘密,然后所有人都需要参与解密。这是一个关于它的步骤:

加解密涉及3方

您可以通过链接 RSA 加密仅使用您已有的 RSA 实现来做一个穷人的版本:

RSA(key1, RSA(key2, RSA(key3, secret) ) )

如果您希望 3 人加密,但只需要其中 2 人在场即可解密,那么您可以存储 3 个版本的密文:

RSA(key1, RSA(key2, secret) )
RSA(key2, RSA(key3, secret) )
RSA(key1, RSA(key3, secret) )

私钥或秘密密钥不应该被剪切。例如,如果有人获得了 128 位对称密钥的一半,则密钥的强度不会被除以 2,而是会减少 18446744073709551616 (= 2⁶⁴)。钥匙的剩余部分可能会很快被破坏。这同样适用于非对称密钥(由 CA 使用),但数学更复杂。

所以不要这样做。这将增加您的解决方案的复杂性,同时降低其安全性,因为您将至少有两个地方需要保护,而不仅仅是一个。