【发布时间】:2011-09-10 13:00:05
【问题描述】:
我有一个私钥,我使用用户的密码解密,但我需要经常使用这个私钥,我不想将它解密在内存中。
我想到的一个方案是用一个随机生成的一次性密码对私钥进行加密,每次使用都要更换密码,但一次性密码仍然保存在内存中。
我想到的另一个选择是使用 OpenSSL 内存 BIO。据我了解,它可以保护其中的数据(我不知道它是如何做到的,但这是我听说的)。
你觉得哪个更好?有没有更好的选择? 谢谢! :-)
附言 我正在使用本机 C++ 和 OpenSSL。
【问题讨论】:
-
除非您拥有专用的安全硬件,否则无法以某种方式将密钥保存在内存中。您肯定会想要研究各种安全内存 API,这些 API 可以让您访问不可分页的内存并保证覆盖。为密钥添加另一层加密是可能的,但它本身很容易受到攻击……这实际上取决于您的威胁模型。
-
为什么需要多次输入密码?是要重新认证吗?真的需要认证吗?
-
@Kerrek:你知道 OpenSSL 的 BIO 是不是这样安全的内存 API 吗?
-
@Preet:我需要使用该私钥实时解密数据,所以我需要将私钥保存在内存中。
-
您想抵抗哪些可能的攻击?
标签: c++ security cryptography openssl