【问题标题】:Encrypted Fields & Full Text Search, Best Approach?加密字段和全文搜索,最佳方法?
【发布时间】:2010-11-16 18:25:20
【问题描述】:

我有一些存储笔记和敏感信息的字段,我想在它们进入数据库之前对其进行加密。

现在,我使用 SQL 全文搜索来搜索这些字段。显然,加密这些数据会导致我的搜索结果丢失。

加密这些字段但仍允许搜索的最佳方法是什么?

【问题讨论】:

    标签: sql-server encryption full-text-search


    【解决方案1】:

    这并不容易。您所描述的内容很少在商业数据库中实现,尽管该领域有一些理论成果。我建议你去google scholar 并开始寻找有关该主题的论文。

    以下是一些帮助您入门的参考资料:

    【讨论】:

    【解决方案2】:

    没有数据库支持加密索引,所以你必须牺牲一些安全性来实现这一点。

    您可以清晰地索引部分数据并从您的应用程序中找到真实数据。例如,如果您想要存储信用卡号。您可以拥有最后 4 位的索引。共享相同最后 4​​ 位数字的卡片数量有限,因此您可以解密每张卡片并检查整个数字。

    【讨论】:

      【解决方案3】:

      另一种选择是存储加密数据的 soundex。然后,您可以搜索 soundex 值并在不解密数据的情况下接近。

      【讨论】:

        【解决方案4】:

        Oracle 的 10g 第 2 版(或更高版本)可能支持此功能。来自他们的网站:

        http://www.oracle.com/technology/oramag/oracle/05-sep/o55security.html

        “Oracle 数据库 10g 第 2 版中的一个新特性让您可以做到这一点:您可以将列声明为已加密,而无需编写任何代码。当用户插入数据时,数据库会透明地对其进行加密并将其存储在列。同样,当用户选择该列时,数据库会自动对其进行解密。由于所有这些都是透明地完成的,无需对应用程序代码进行任何更改,因此该功能具有适当的名称:透明数据加密(TDE)。”

        这个想法是没有人可以看到数据库中的明文,但选择语句可以正常工作。如果可以选择 Oracle,这可能有助于您进行搜索?

        更新:这里还有另一个选项:

        http://www.critotech.com/index.htm

        对于 MySQL 数据库,但似乎相当昂贵。

        【讨论】:

          【解决方案5】:

          我知道这是一个旧答案,但 SQL Server 和 Oracle 现在都有(昂贵的)透明数据加密产品,它基本上允许您的应用程序无需更改即可搜索,但实际的静态数据是加密的。更多信息在这里:

          SQL 服务器: https://msdn.microsoft.com/en-us/library/bb934049%28v=sql.120%29.aspx

          甲骨文: http://www.oracle.com/technetwork/database/options/advanced-security/index-099011.html

          【讨论】:

            猜你喜欢
            • 2019-01-03
            • 2015-04-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多