【问题标题】:Where to store encryption key?在哪里存储加密密钥?
【发布时间】:2011-08-12 14:25:59
【问题描述】:

我目前正在完成一个备份多个 Google 日历的 php 程序,该程序需要我存储电子邮件地址及其密码。我正在使用 AES 加密(我没有使用哈希,因为我需要双向加密),虽然所有密码都使用相同的密钥加密,但每个密码都有自己的 iv,它与它一起存储在数据库中。

我知道,如果有人可以完全访问我的系统,则没有 100% 保证数据安全的方法,但我希望能提供一些存储方法/存储位置的建议,这些建议会让潜在的黑客感到困难。目前,我考虑将密钥放入只有唯一管理员有权访问的文件中或设置环境变量。

【问题讨论】:

标签: php security encryption key


【解决方案1】:

我考虑过将密钥放入文件中,只有唯一的管理员 可以访问

如果系统受到威胁(或物理访问您的硬盘),那么攻击者就可以访问您的密钥。

我认为更好的解决方案是在 fs 中的某处保存您的密钥的加密版本,并使用每次需要您的密钥时手动输入的密码进行保护。类似 gpg 钥匙圈的东西。

【讨论】:

  • 如果有人可以访问 php 文件,他们是否仍然可以访问密钥?
  • 否..密钥必须始终以加密形式存储。访问未加密密钥的唯一方法是手动输入(需要用户交互)密码。通常这种机制由 gpg 使用。私钥(非对称)以加密方式存储(使用从密码短语派生的 simmetric 密钥)存储在 fs 中。
  • 在需要密钥时输入密码不太实用,因为用户可以随时在网页上输入他们的信息。因此,我将无法输入密钥来加密他们的信息。我在想我以半加密状态存储密码(几乎使用文件系统中可访问的密钥进行加密),并且在我可以的时候,自己输入一个密钥,该密钥将用于解密已经存储的密码并重新加密半加密密码
  • @RAD:好的..我不明白这一点。在此密钥中,您不能以加密形式存储密钥,因此密钥的所有安全性都取决于您的操作系统的安全性。
  • 我的意思是我无法控制用户何时输入他们的信息,因为它被输入到网页中(当它必须被加密时),所以我无法手动输入密钥进行加密。但是,我知道如何控制信息何时被解密。
猜你喜欢
  • 2011-04-30
  • 1970-01-01
  • 2016-11-22
  • 2019-03-10
  • 2012-09-06
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多