• 沒有找到結果。

而不洩漏其他資訊,比如[2]利用 deterministic 的加密方法,deterministic 的方法會 將相同的明文加密成相同的密文,如此一來便可以透過密文來比較明文是否相等,進而

Range query:此資料表放在伺服器上,而當我想找成績大於 80 分的資料時,就傳送”

搜尋成績大於 80 的資料 ”這樣的 range query 給伺服器,伺服器就會去比較成績那欄,

2

並把大於 80 分的資料回傳。 又或者我想找成績落在 [50,60] 這個區間內的人名(也就 是成績大於 50,小於 60),一樣送出”搜尋成績落在[50,60]的資料 ”這個 query 給伺 服器後,便可收到阿克利這一欄的資料。

而對於 range query 來說,資料索引機制可大幅提升 query 執行的速度,所謂資料 索引機制是建立索引值,query 進來時跟索引值比較,再根據比較結果去讀取特定範圍 的資料,避免每次 query 時都讀取全部資料庫裡的資料,而建索引方法有很多,以下舉 例以二元搜尋樹建立索引。

首先伺服器可將資料排序和建立二元搜尋樹索引如表格 2 和圖 1:

名字 成績

香川真司 26

陽岱鋼 47

阿克利 56

中田翔 64

李大浩 77

杜蘭特 88

費南德斯 99

表格 2:排序後資料表

圖 1:二元搜尋樹索引

則 range query 傳進來只要跟這索引比對,比如說跟剛剛一樣搜尋大於 80 分的資 料,則只要比較 64、88 和 77 就可以搜尋出結果,比起之前需要全部比較快上許多,而

3

在此架構下,平均每次 query 所需比較次數為 O(log m),m 為資料總數,而不論索引架 構為何,若想在數字資料上若要建立有效索引就必須讓資料可以比較大小。

1.2 相關研究

而現存可以讓伺服器執行 range query 同時又保有一定的安全性的做法可分為 2 類,

一為 Non-Orderable Encryption(簡稱 NOE),一為 Efficiently Orderable

Encryption(簡稱 EOE),兩者以密文有無洩漏明文大小關係為分類依據,前者無後者有, 雲端知道,雲端可有效地建立索引,讓其處理 range query 的速度快上許多,在[10]這

4

篇提出有提出一種 EOE,其明文和密文皆為單一數字,此種明文和密文皆為一數字,並 且 W 是直接比較密文大小的方法又稱 Order Preserving Encryption (簡稱 OPE),OPE 在比較大小上和密文大小可謂最佳,但[10]加密需把明文的機率分布當成輸入,造成實

假設明文為{1000,2000,4000,8000},則此 hash 函數會把 1000->0 2000->1 4000->2 8000->3,除此以外的輸入皆輸出空元素,而 4000 的密文就為(2,AES(key,4000)),比 有更好的安全性,而後我們從[7]這篇中找到了一種 coding 技巧 HYL encoding([7]中的 0-1 encoding),將數字轉化成集合,並透過比較兩集合是否有交集來比大小,且集合

5

大小為 O(log n),比較時間為 O((log n)2),使用 bloom filter 加速後為 O((log n)*k) 個 hash 函數,符合我們對時間和空間的要求。

我們的貢獻在於提出以 HYL encoding 為主構成的加密技巧,此方法會洩漏明文大 小關係給雲端知道,方便讓其建立索引,使得每筆 query 平均比較次數為 O(log m),m 為資料總數,而密文為一集合和兩 bloom filter,集合大小為 O(log n),而比較大小 所需時間為 O((log n)*k)個 hash 函數,安全性比[1]篇好,最後我們還嘗試使用 RS encoding 技巧來對密文集合增加 r 個新元素以克服使用 HYL encoding 所造成的安全性 問題,再以實驗去顯示克服效果,而下表格 3 為比較。

密文形式 比較演算法複雜度 安全性

[1] 單一數字 O(1) 低

[6] 一集合,大小 O(n) O(𝑛2)個字串比對 高

我們的演算法 一集合,大小 O(log n+r),

兩 bloom filter

O((log n+ r)*k)個 hash 函數

介於[1]和[6]之間

表格 3: EOE 加密演算法比較

1.3 組織架構

本篇論文的組織架構如下,第二章介紹加密演算法會用到的技術,第三章介紹加密 演算法和 range query 轉換,第四章分析加密演算法的安全性並和[1]做比較,而也會 提出我們演算法的弱點,並提出依解決之道,第五章則做實驗分析解決的效果,第六章 是一些問題討論,而第七章是結論。

6

注 1

IND-OCPA:

IND-OCPA 是修改自 IND-CPA,而 IND-CPA 介紹如下:

全名 Indistinguishability under chosen-plaintext attack 主要透過一安全遊 戲來呈現,此遊戲有挑戰者和攻擊者,照以下步驟進行遊戲:

1. 攻擊者丟任意數量的明文對(M0,M1)給挑戰者

2. 挑戰者隨機選擇 1 數 b 為 0 或 1,並加密𝑀1𝑏, 𝑀2𝑏… ..並回傳

3. 攻擊者根據回傳的資訊,去猜 b 究竟是 0 還是 1,並傳回猜的結果𝑏

4. 挑戰者檢查 b 是否等於 𝑏

而我們定義攻擊者在這個遊戲裡,所能拿到的優勢為絕對值(攻擊者猜中 b 的機率 -0.5),而這個優勢若趨近到 0 的話就表示攻擊者沒辦法從密文中拿到有關密文的任何 資訊。

接者回來講 IND-O(Ordered)CPA,因為 EOE 會洩漏大小關係,所以若照上面的遊戲,

則攻擊者只需傳兩對明文組合(a,b)和(c,d),a>c 且 d>b,因其 a 和 c 的大小關係與 b 和 d 的到小關係不同,就可以從回傳的兩個密文彼此之間的大小關係來判斷 b 為 0 或 1,

所以在 IND-OCPA 裡面,我們限制攻擊者所傳的明文組合,條件為對任 2 個攻擊者所傳 的明文組合(𝑀𝑖0, 𝑀𝑖1)和 (𝑀𝑗0, 𝑀𝑗1) , 𝑀𝑗0 > 𝑀𝑖0 <=> 𝑀𝑗1 > 𝑀𝑖1。而其餘同 IND-CPA,則若 攻擊者在 IND-OCPA 這個遊戲中,所拿到的優勢趨近於 0,我們就可說此加密方法除了洩 漏明文大小關係外,並沒有洩漏其他有關明文的資訊。

7

相關文件