如何最好地保管解密密钥以解密加密的数据库?

3
我有一个加密数据库和解密密钥。如何防止解密密钥被黑客攻击(包括数据库攻击和未经授权访问PC)?
  1. 硬编码在汇编中。
  2. 保存在注册表中。
  3. 保存在RAM中。
此外,我需要加密数据的算法。在安全性和解密时间方面,哪种算法最好?
  1. RSA
  2. AES
  3. Twofish
RSA vs AES 谢谢。
4个回答

4
你正在提出错误的问题:首先你需要决定你需要多安全。然后你需要决定是否要对称加密(例如DES,共享密钥)或非对称加密(例如RSA,公钥和私钥),并且要认真考虑密钥管理,因为这通常是弱点所在。
非对称算法比对称算法慢几个数量级;它们经常用于保护对称密钥,而不是整个数据。

3
如果您将解密密钥与加密数据一起存储,就无法“使解密密钥远离黑客”。这是不可能的。关键管理通常是任何安全策略中最难的部分。
至于加密算法,RSA是一种非常不同类型的算法,与AES和twofish不同(请参见http://en.wikipedia.org/wiki/Symmetric-key_algorithm#Symmetric_vs._asymmetric_algorithms)。
要回答这两个问题需要更多信息。您为什么要尝试加密数据库?您要管理哪些威胁?

1

它永远不会完全安全,特别是在物理访问机器的情况下,但你可以使其变得困难。

使用3DES加密要保护的数据库字段。请注意,您不需要加密每个字段,也不应该这样做(因为速度和如果丢失密钥,您至少会知道需要做什么)。

不要将密钥存储在数据库服务器上。如果必须这样做,请将其存储在与数据库或Web应用程序不同的驱动器上。

在拇指驱动器或其他设备上备份密钥。不要跳过此步骤。

将密钥文件分成几个不同的文件,散布在不同的文件夹和不同的驱动器中。不要使用指示文件目的的名称。将位置存储在注册表中。

使用代码读取注册表,获取密钥的各个部分并组装它们。自己编写此代码,并不要使用指示程序目的的名称。


我还看到过的是,用于加密数据库条目的密钥每天、每小时或其他时间都会更改。该密钥由上述密钥加密,并与加密的条目一起存储在同一行中。要解密,您需要获取该行,解密密钥字段,然后使用它来解密条目。这并没有增强加密强度,但确实使其更难以理解正在发生什么。 - R Ubben

0

我理解您的描述是需要在数据库机器上某处保存解密密钥以完成工作。

如果拥有足够的专业知识和硬件访问权限,您无法保护数据库,因为无法突破加密。

对于所有其他情况,如果没有物理访问权限,您应该参考加密指南,这些指南适用于使用大多数平台特定技术的所有主要数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接