我有一个Web应用程序(Symfony 4),它需要符合HIPAA规范,(除其他外)这意味着我需要加密数据。最初,我只是想通过Halite用PHP加密数据并将其保存在数据库中,但是有些字段(姓,名,电话号码)无法加密,因为它们将用于搜索字段,因此我需要(?)MySQL才能使用where子句。
由于这个原因,我将使用AES_ENCRYPT
并将MySQL连接设置为通过本地端口转发隧道通过ssh,以便连接将是安全的并且没有人能够获取密码。 / p>
尽管AES_ENCRYPT
是一个糟糕的主意,但我一直在看文章,而这些东西应该只用PHP进行保护。如果这样做,我将需要拉下所有记录,解密它们,然后进行PHP搜索-肯定不是MySQL可以做到的那么快(?)。该表可以包含数千个条目。
对此有什么建议吗?我在想什么吗?如果我通过ssh进行连接,那么通过MySQL进行操作会有什么风险?
互联网上有很多建议,很难知道什么是对的= /提前谢谢!
答案 0 :(得分:2)
如果您愿意使用精确查找,则可以在不影响性能的情况下对加密字段实施查找。您绝对应该在PHP代码中实现加密逻辑。
如果您当前有桌子,请说:
(id, first_name, last_name, email)
我们首先为要加密的字段添加其他列,这样我们的表就会变成
(id, first_name, first_name_lu, last_name, last_name_lu, email)
当我们更新或插入一行时,我们做两件事:
*_lu
列中。当我们要执行查找时,我们:
*_lu
列。您可能想知道为什么HMAC绝对必要,为什么我们不能仅重新加密和比较?我们可以这样做,但这也意味着我们必须使用ECB模式进行加密,这是一个很大的安全漏洞。应该改用GCM或CBC。这就是使HMAC变得必要的原因。