2

我有一个网站,用户向它提交敏感数据,然后一个 php 脚本使用 rijndael 256 加密这些敏感数据并将其存储在 mysql 数据库中

问题是我想将密钥存储在一个安全的地方,只能由 php 脚本访问,而其他任何人都看不到

4

3 回答 3

2

取决于您对数据需要多高的安全性。您可以考虑为每个用户使用不同的安全密钥,可能会加密识别该特定客户的数据并将其附加到 256 位加密密钥上。但最好还是将密钥拆分并在整个密钥中插入加密数据。使破译变得更加复杂。这意味着如果程序员可以访问密钥,则程序员不能简单地解密每个人的数据,而无需访问客户加密的数据,这对于每个用户来说都是不同的。

是的,程序员仍然可以将密钥回显到屏幕上,但他们还需要为每个他们想要解密数据的客户提供客户加密数据。

如果适用,您也可以考虑使用公钥和私钥加密。客户/用户可以生成他们自己的密钥。客户将公钥放入网站上的表格中,该表格存储在数据库中,然后客户/用户将拥有私钥来解密数据。您使用公钥加密数据。这意味着每个用户/客户都将拥有自己的一组密钥。私钥甚至可以放在钥匙卡上并连接到计算机以验证访问权限。

更多信息@http: //en.wikipedia.org/wiki/Public-key_cryptography

于 2012-01-22T12:28:22.417 回答
0

一种替代方法是让 PHP 脚本调用可以访问密钥的外部脚本(不一定是另一个 PHP 脚本;它可以是任何东西)。只要没有人对外部脚本具有写访问权,或者如果您将密钥硬编码到其中,则对其具有读访问权,那么它应该是相对安全的。如果您将密钥存储在单独的文件中,则该文件只需要外部脚本的所有者可读/可写。

于 2012-01-22T14:21:14.570 回答
0

您可以使用证书加密/解密,并让服务器在启动时为证书请求密码。

好消息是您的密钥仅在内存中,并且对于每个安装/服务器都可能不同。

但是,这种方法非常痛苦,并且通常仅在您拥有自己的系统管理员/不依赖第三方托管服务提供商时才有效。


在数据库中为每个部分/用户/客户端生成一个加密密钥并使用每个客户端密钥加密敏感数据的中间解决方案。这些每个客户端的密钥使用主密钥加密并存储在您的数据库中,而主密钥存储在磁盘上的某个位置,具有最小的权限。
当您的服务器完全受到威胁时,这不会保护您,但会限制在例如数据泄漏/部分妥协的情况下的风险。

如果问题是您不信任 a) 程序员或 b) 系统管理员,那么您就不走运了。

于 2012-01-23T11:54:49.227 回答