如何将密码安全存储在mysql中,以便稍后在php中解密,而不是散列


How to safety store passwords in mysql to decrypt them later in php, not hash?

需要将其他服务的密码存储在mysql中。哈希不起作用,我需要解密密码。如何做到安全?只有我认为安全的方法是使用硬件令牌和解密密钥?还有其他问题吗?对不起,我的英语不好。

您询问如何以可以自动解密的方式将加密数据安全地存储在MySQL中。

事情是这样的:加密和解密本身很容易。Php提供mcrypt软件包。http://php.net/manual/en/mcrypt.examples.php

然而,这种程序的安全性取决于安全的密钥管理。如果你在MySQL中使用的应用程序能够解密数据,并且密钥对它可用,那么渗透你系统的网络罪犯将可以访问它。网络罪犯可以读取你的php代码,看看你如何解密这些数据,并自己动手。因此,这个过程的安全性取决于你的对手获得你的钥匙的难度。

我想您可以创建一个接受加密数据并返回解密数据的web服务。这个网络服务可以把钥匙放在里面。你可以用几种方法来保护它:

  1. 把它放在防火墙后面
  2. 速率限制为每秒几十次解密操作
  3. 把解密密钥放在里面
  4. 记录所有操作(但不记录解密的数据),并认真监控日志

另一种可能性是做一些客户端的事情。名为Keepass的开源密码保险箱http://keepass.info/Bruce Schneier的密码管理器就是一个很好的例子。https://www.schneier.com/blog/archives/2014/09/security_of_pas.html

单向密码哈希(http://php.net/manual/en/book.password.php)阻止解密,但仍然允许密码验证。窃取单向散列的密码要困难得多。

恕我直言,如果密码保护了宝贵的资产,那么对于一个缺乏经验的人来说,这不是一个合适的项目。网络罪犯远远领先于我们。