-1

有没有办法将敏感的用户数据存储在数据库中,这样即使服务器和数据库受到威胁,攻击者也无法读取原始数据?您显然可以加密数据,但是服务器必须可以访问密钥以进行解密,并且会与服务器一起受到损害。

编辑:我将使用 linode 等 vps 托管。假设攻击者可以在一小时内获得对服务器(也有数据库和源代码)的 root 访问权限。

4

2 回答 2

3

从管理员用户处获取密钥

仅将密钥存储在服务器的内存中。仅内存副本用于根据需要对数据进行解密。当服务器启动时,它必须从管理员那里获取密钥信息。当然,这有一些变化。管理员可以暂时插入 USB 驱动器。管理员可以提供一个密码,以提供对另一台机器的瞬时访问权限,其中密钥位于数据库或其他任何地方。管理员可以输入密钥库文件的密码,该文件将在服务器上响应控制台上的提示。在管理员登录并选择“输入密钥”选项之前,该网站将无法运行。

这使得攻击者必须先在内存中找到密钥,然后才能解密数据。

第二台机器上的键

使用的第二种方法不如依赖管理员安全,但仍然更安全。将密钥放在网络上某处的第二台机器上。确保它没有与服务器相同的用户帐户。当服务器启动时,它必须以某种方式连接到另一台机器并获取密钥,并将它们仅存储在内存中。同样,您可以依靠管理员为另一台机器上的帐户提供密码,或者在 Linux 中,使用带有存储密钥的 SCP。确保通信安全非常重要,这样攻击者就不能只看到穿过网络的密钥。

在这种情况下,攻击者必须破坏两台机器才能从其中一台机器获取数据并从另一台机器获取密钥。所以它比在同一台机器上拥有钥匙更安全。

其他要点

您可以在网络上找到所有这些以及更多信息。谷歌是你的朋友。

但是请记住一些明显的安全预防措施,以使坏人更难:

  1. 从物理上保护系统。不要让坏人把手放在键盘上。
  2. 使用具有良好安全功能的操作系统并利用这些功能。
  3. 禁用 root 密码并要求所有用户通过其可识别的帐户登录,然后在需要时执行某些操作以获得 root 权限。(然后记录所有登录和对 root 的访问权限,以便您知道谁做了什么。)
  4. 监控机器上发生的事情。这可能意味着视频监控或只是检查日志。
  5. 保持备份“磁带”的安全。它们包含与磁盘驱动器相同的秘密。
  6. 不要将内存转储放在他们可以放弃秘密的地方。
  7. 考虑那些有权访问的人。他们可靠吗?他们可以被贿赂吗?你能检查他们的行为吗?他们是低薪还是不满?
于 2013-06-26T19:06:09.933 回答
1

您可以尝试使用密钥卡/USB 来保存相关的加密数据,但通常如果物理安全受到损害,所有赌注都将失败。

于 2013-06-26T19:00:49.970 回答