是否有实现以下场景的算法?
发布于 2018-04-07 23:00:53
你在寻找“密钥托管”,这通常是一个非常糟糕的想法。即使这符合您的用例,您也会创建一个单一的失败点。
我确信有更复杂的方法,但这里有一个非常简单的方法:
您需要伪随机函数(PRF)和公钥加密方案。
为PRF绘制一个随机密钥$k$,并使用它作为主密钥。然后,每当生成公钥/私钥对时,采用唯一的位字符串$id$,计算$PRF(k,id)$,并将结果作为公钥加密方案密钥生成算法的随机性,该算法为您提供了一个私钥$sk$和一个公钥$pk$。存储一个将$pk$映射到$id$的表。
这满足了您想要的一切:只要密钥$k$不被泄露,公钥加密方案就会按预期工作,并且是安全的。但是如果我知道$k$,我可以在表中查找$id$,重新计算$PRF(k,id)$,派生$sk$和解密。
在这里,$id$是一个弱意义上的现在:它既可以是完全随机的,也可以是由计数器实现的;您“只是”需要确保它永远不会重复。(如果它是一个计数器,您也不能首先存储表,只要尝试足够的计数器值,直到找到正确的计数器值,如果您需要使用主密钥解密很少)。
https://crypto.stackexchange.com/questions/58177
复制相似问题