根据输入生成公钥/私钥对

时间:2014-01-08 22:10:04

标签: cryptography openssl pki

OpenSSL提供了生成随机公钥/私钥对的工具。是否存在基于某些初始值确定性地生成一对的机制?

例如,给定字符串'abcd',生成公钥/私钥对,以便可以使用相同的字符串再次生成相同的公钥/私钥对。

1 个答案:

答案 0 :(得分:4)

当然,只需在PBKDF中使用密码即可生成像字节数组一样的密钥(需要随机盐和高迭代次数)。然后使用这个字节数组作为PRNG的种子。确保您始终使用相同的PRNG!然后使用该PRNG作为RSA_generate_key的输入。确保生成密钥实现不会更改。

请在crypto.stackexchange.com上阅读Initialize a PRNG with a password上的答案。注意,通常私钥是加密的,例如,使用PKCS#12容器。请注意,PKCS#12容器和上述方法都容易受到暴力攻击。大多数密码确实提供了非常有限的熵,使得这些暴力攻击更加可行。 PKCS#12容器的优点是您不必将其与密文一起存储,只有在签名生成或解密期间才需要它。使用128位十六进制值作为密码可以缓解暴力强制的问题,但您可能无法记住它。

请注意,RSA密钥对生成需要花费大量时间(并且查找大型素数具有不确定的运行时间,因此特定密钥对可能需要很长时间)。 EC F(p)键不那么麻烦。

可行否?当然。有用?有可能。充满危险?肯定。