Searchable-Encryption

為什麼使用索引進行可搜尋加密?

  • September 15, 2019

可搜尋加密可以分為順序掃描和索引。除了提高搜尋速度之外,為什麼我們在可搜尋加密中使用索引?

作為最終使用者,我們通常不會為文件製作關鍵字列表。那麼,如果我們不為我們的文件建立索引,是否有一種方法可以進行可搜尋加密(考慮全文)?

主要是為了讓搜尋操作更有效率。在可搜尋加密中,主要使用反轉索引。它是一種資料結構,儲存從單詞到文件或文件集的映射,即引導您從單詞到文件,例如:

單詞 1: {doc1, doc2, doc3}

字 2:{doc1,doc3}

字 2:{doc1}

最早的可搜尋加密方案通過順序掃描所有加密文件來搜尋數據。這是不可擴展的。例如,如果您有 10 個文件,每個文件中有 10,000 個單詞,那麼您需要掃描 100,000 個加密單詞。對於每個加密字,比較操作是加密的並且速度很慢(與明文相比)。如果您有大量數據,您可能會在送出查詢數小時後獲得結果。

但是,文件中不同單詞的數量可能不是很大(比如 5,000),並且不會隨著數據量的增加而增加。因此,使用索引是一個很自然的選擇,因為現在你只需要通過索引進行搜尋,並在不同單詞的數量(甚至更少)上進行比較操作,找到索引中的哪個條目對應於你的查詢,然後你就可以通過檢索和解密列表找到包含您查詢的單詞的文件列表(這部分需要額外的加密操作,數字與列表大小成線性關係)。但無論如何,這更具可擴展性,並允許可搜尋的加密處理非常大的數據集

如今,主流的可搜尋加密方案都使用某種索引。當然,不同方案的索引結構和密碼比較操作差異很大,但核心思想是使搜尋時間在加密數據的大小上是次線性的。

引用自:https://crypto.stackexchange.com/questions/74236