加密数据,仍然可以进行文本搜索

信息安全 加密
2021-09-02 14:24:01

如果我使用rot13加密,我仍然可以进行文本搜索。例如:

Query:           John
Encrypted Query: WBUA

Database Entries: John Smith => WBUA FZVGU
                  Jon Babe   => WBA ONOR

Result: WBUA matches WBUA FZVGU

是否有更安全的加密方法(例如使用安全密钥),我也可以进行文本搜索?

谢谢

3个回答

不,这在安全加密中是不可能的。原因其实很简单。

您所做的要求您能够创建一小段纯文本 λ 的密文 ξ(λ),然后可以在更大的纯文本 Λ 中找到 λ 出现的任何地方的密文。

当人们进行加密时,他们试图达到所谓的保护目标。其中之一通常是外部观察者无法确定同一条文本是否在同一条消息中出现两次,或者甚至两条消息是否源自同一个纯文本。因此,不能保证 ξ(Λ) 包含 ξ(λ),并且在 ξ(Λ) 中找到 ξ(λ) 并不能告诉您任何信息,因为它可以出现在任何地方。

我相信您正在寻找的技术称为全同态加密

这样的系统允许您使用加密输入对加密数据执行任意操作,同时返回加密输出。

当前的问题是 FHE 系统上的操作非常缓慢。

另一种方法是使用搜索索引(倒排索引)。

加密前的数据索引。然后加密索引。

您必须在执行搜索之前解密索引,但索引可能比数据小得多。此外,根据索引技术,可能只有部分索引需要解密。

(如果数据库中的文本经常更新,这种方法可能效率不高。)

样本索引(抽象):

Word    Record#
----    --------
anders  245,354
babe    181
bill    133,354
david   201,245
john    139
jon     181,310
niven   201
smith   133,139,310