gpt4 book ai didi

mysql - 如何使用 AES_DECRYPT 在大表中进行搜索?

转载 作者:行者123 更新时间:2023-11-29 00:13:35 28 4
gpt4 key购买 nike

我使用 AES_DECRYPT 将敏感数据存储在 mysql 表中。现在该表大约有 50 Mb。

我有一个 Web 界面(使用 PHP),访问者可以在其中搜索数据。我执行了一个 LIKE 搜索:

SELECT AES_DECRYPT(content,'salt') FROM table
WHERE CONVERT(AES_DECRYPT(content,'salt') USING utf8) LIKE '%search%'

它工作正常,但变得非常非常慢。您对如何将良好的安全性和良好的搜索功能结合起来有什么想法吗?

最佳答案

MySQL 无法有效地搜索包含在函数中的列。不能在 MySQL 中为函数求值创建索引,就像在 PostgreSQL 中那样。

由于必须为此类查询向 MySQL 提供解密内容所需的 key ,我看不出为什么数据库服务器应该加密内容。从安全角度来看,AES 加密在这个阶段是无用的。 key 在进程的内存中,因此数据在理论上不再安全。 (如果攻击者可以接管进程的内存,他就拥有 key 和数据 => 不安全)。

如果遵循这种观点,那么以这种方式使用 MySQL 的 AES 函数就没有意义了。尽管如此,如果你想继续这样做,你必须将未加密的数据保存在某个地方,以便 MySQL 能够对其进行索引。

为了保护数据不被外界访问,加密 MySQL 的存储可能是有意义的。这可以(或多或少)通过设置一个加密卷并将 MySQL 的数据目录移动到这个位置来轻松实现。 (参见示例 Ubuntu Tutorial for encrypted filesystems。)出于性能原因,应该只移动那些包含敏感信息的文件。

这是一个更简单的解决方案,但存在一些性能和管理风险。有 a question在 serverfault 上,您可能想阅读它的答案。

关于mysql - 如何使用 AES_DECRYPT 在大表中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23777674/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com