我有一个Web应用程序(Symfony 4),需要符合HIPAA标准,其中(除其他外)意味着我需要加密数据。最初我只是通过Halite加密PHP中的数据并将其保存在数据库中,但是有些字段(姓氏,名字,电话号码)我无法加密,因为它们将用于搜索字段,因此我需要(?)MySQL才能使用where子句。
出于这个原因,我将使用AES_ENCRYPT
并设置MySQL连接以通过本地端口转发隧道转发ssh,以便连接是安全的,没有人能够获得密码。
我一直看到文章,虽然AES_ENCRYPT
是一个坏主意,这些东西应该只是用PHP保护。如果我这样做,我需要将所有记录拉下来,解密它们,然后进行PHP搜索 - 当然不会像MySQL那样快(?)。这个表可能有数千个条目。
对此有什么建议吗?我是否在思考它?如果我通过ssh建立连接,那么通过MySQL做什么会有什么风险呢?
在互联网上有这么多的建议,很难知道什么是对的= /非常感谢提前!
如果您乐意使用精确查找,则可以在加密字段上实现查找,而无需降低性能。您绝对应该在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必要的原因。