• 沒有找到結果。

2. 背景知識與相關研究

2.3 祕密計算 (Secret Computation)

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

10

於面子關係不想讓別人知道自己的成績。有沒有一個辦法可以去解決這個問題呢?其實 解決的方法相當的簡單,可以用以下的方法輕鬆達到。

圖 1 簡單祕密計算例圖〈一〉

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

11

圖 2 簡單祕密計算例圖〈二〉

以上介紹的其實就是個簡單的祕密計算概念,一個安全的祕密計算必須可以保障被 運算資料的私密性,在不公開資料的情況下達到正確運算的目的。而 1982 年 Yao 在[24]

所提出的百萬富翁問題更是個在祕密計算上相當著名的問題。百萬富翁問題是在探討能 否在不透漏兩個富翁的真實財產情況下,透過祕密計算的協定去比較哪一個富翁較為富 有。本論文將在接下來的小節,分別介紹雙方架構下的祕密計算協定與藉由半誠實 (semi-trust)第三方的祕密計算協定,也將特別對 Yao 以及邱姓學者在雙方架構下所提出 的安全祕密計算協定分別作介紹。

Yao 的協定(雙方架構) 2.3.1

假設 a, b 分別為富翁 Alice 與富翁 Bob 的財產(私密資訊),Alice 跟 Bob 想比較彼此財產 的多寡。透過 Yao 提出的協定,可以在不洩漏 a 與 b 給對方的情況下,達到目的。協定

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

12

流程如下:

1. Bob 挑一個任意𝑁-bit 的整數𝑥,計算𝑘 = 𝐸𝑝𝑘𝐴(𝑥),其中𝐸𝑝𝑘𝐴是以 Alice 的公鑰𝑝𝑘𝐴採 用 RSA 加密系統的加密演算法。接著 Bob 將𝑘 − 𝑏 + 1傳給 Alice。

2. Alice 在收到 Bob 傳來的資訊後,對𝑘 − 𝑏 + 𝑢, 𝑢 = 1, … , 𝑚這𝑚個數值作解密,得到 𝑌𝑢 = 𝐷𝑠𝑘(𝑘 − 𝑏 + 𝑢), 𝑢 = 1, . . , 𝑚,其中𝐷𝑠𝑘𝐴是以 Alice 的私鑰𝑠𝑘𝐴採用 RSA 加密系統 的解密演算法。

3. 接著 Alice 挑選一個任意的質數𝑝,其長度為𝑁2-bit,且必須慎選𝑝使得𝑝與𝑍𝑢至少相差 2,計算𝑍𝑢 = { 𝑌𝑢 𝑚𝑜𝑑 𝑝, 𝑢 = 1, … , 𝑎

𝑌𝑢 𝑚𝑜𝑑 𝑝 + 1, 𝑢 = 𝑎 + 1, … , 𝑚,並且將𝑝與𝑍𝑢傳送給 Bob。

4. Bob 在收到 Alice 傳來的資訊後,計算𝐺 = 𝑥 𝑚𝑜𝑑 𝑝,若{𝑍𝑏 = 𝐺 ⇒ 𝑎 ≥ 𝑏

𝑍𝑏 ≠ 𝐺 ⇒ 𝑎 < 𝑏,最後 Bob 告知 Alice 判斷結果。

圖 3 Yao協定流程圖

接著從邱學者在[6] [7]所中舉的簡單例子便能更清楚的了解 Yao 所提出的協定運作 以及是否可以利用祕密計算解決百萬富翁的問題。首先,假設 Alice 有 500 萬,Bob 有 600 萬,則a = 5, b = 6。Alice 的公鑰為(𝑒, 𝑁) = (5,119),私鑰為(𝑑, 𝑁) = (77,119)。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

15

半誠實的第三方 D 顧名思義並不是個完全誠實的第三方,D 只保證會按照協定的規則進 行通訊和計算,但是會試著從協定的缺失獲取額外的資訊。換句話說,假使協定是沒有 漏洞的,D 不會從協定中獲得任何額外的資訊。

在李姓及武姓學者所提出的協定中,除了想要比較雙方資訊的 Alice 跟 Bob 外,存 在一個半誠實的第三方 Cathy。Cathy 在協定開始前會生成自己的公鑰跟私鑰(𝑝𝑘, 𝑠𝑘),

而 Alice 跟 Bob 共同決定一個亂數𝑟𝑎𝑏 ∈ [0,2𝑘− 1], 𝑘 ≥ 80,整個協定中的加解密採用 Paillier 加解密演算法,接著協定開始:

1. Alice 以 Cathy 的公鑰加密自身的私密訊息 a,𝑥 = 𝐸𝑝𝑘(𝑟𝑎𝑏𝑎),並將𝑥傳送給 Bob。

2. Bob 以 Cathy 的公鑰 加密自身的私密訊息 b ,𝑦 = 𝐸𝑝𝑘(−𝑟𝑎𝑏𝑏),並且計算𝑦 = 𝐸𝑝𝑘(𝑟𝑎𝑏𝑎) × 𝐸𝑝𝑘(−𝑟𝑎𝑏𝑏),後將𝑦傳送給 Cathy。

3. Cathy 以自己的私鑰對𝑦做解密,由於 Paillier 的加解密演算法是符合加法同態性質,

因 此 得 到𝑧 = 𝐷𝑠𝑘(𝑦) = 𝐷𝑠𝑘(𝐸𝑝𝑘(𝑟𝑎𝑏𝑎) × 𝐸𝑝𝑘(−𝑟𝑎𝑏𝑏)) = 𝐷𝑠𝑘(𝐸𝑝𝑘(𝑟𝑎𝑏𝑎−𝑟𝑎𝑏𝑏)) = 𝐷𝑠𝑘(𝐸𝑝𝑘(𝑟𝑎𝑏(𝑎 − 𝑏))),若{𝑧 = 0, 𝑎 = 𝑏 ⇒ 𝑧′ = 0

𝑧 ≠ 0, 𝑎 ≠ 𝑏 ⇒ 𝑧′ = 1,接著 Cathy 將𝑧′傳送給 Alice 跟 Bob。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

16

圖 4 李姓及武姓協定流程圖

這個協定雖然可以以一個相當簡單的步驟比較雙方資訊是否相等,但是存在一個只 要有第三方的協定就會產生的問題,那就是共謀(collusion)的顧慮。假使 Cathy 跟 Alice 或 Bob 其中一個人產生共謀,那對於另一方來說就顯得相當不公平,除非協定中存在能 夠阻止共謀的因子,否則多了第三方便是多了風險,於是本論文還是以雙方架構下的協 定為主軸。於是將在下一個小節,對邱姓學者在[6][7]所提出的雙方相等性驗證協定做 詳細的介紹。

邱姓學者的協定(雙方架構) 2.3.3

由於 Yao 的協定無法達到雙方驗證,而李姓及武姓學者所提出的協定則需要半誠實的第 三方幫助雙方做相等性的判斷。於是邱姓學者在 2012 年提出了具隱私保護功能之兩方 相等性驗證機制之提案[6][7],所提出的協定可以在不需要第三方的條件底下,讓雙方

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

17

都能夠驗證彼此的私密資訊是否相同。由於邱姓學者在此提案中所使用的加密演算法須 符合兩個較特別的性質,一個是可換式加密(Commutative Encryption),另一個則是雙重 同態加密(Doubly-homomorphic Encryption)。於是在介紹提案之前,先介紹這兩個相關 的知識,以便於進一步了解邱姓學者的提案。

 可換式加密(Commutative Encryption)

若一個加密演算法對一個訊息𝑚加密兩次以上,並滿足下列三個條件,則稱作可換 式加密:

1. 假設 Alice 的公私鑰為(pkA, skA),Bob 的公私鑰為(pkB, skB),則EPKA(EPKB(m)) =

EPKB(EPKA(m))

2. 加密所用公鑰pki所對應的解密私鑰ski在多項式時間內可計算。

3. 利用pkA或pkB所加密產生的密文,其值域相同。

 雙重同態加密(Doubly-homomorphic Encryption)

若一個加密系統同時滿足加法同態性質以及乘法同態性質,即可稱此加密系統為雙 重同態加密。換句話說,一個符合雙重同態加密的加密演算法,給定𝐸(𝑥)跟𝐸(𝑦),在不 知道𝑥, 𝑦的情況下,任何人都可以計算出𝐸(𝑥 + 𝑦)和𝐸(𝑥 × 𝑦)。

在介紹完可換式加密與雙重同態加密之後,接著開始對邱姓學者所提出的雙方相等 性驗證機制協定做介紹。首先,先介紹一些協定中所用的符號:𝑎, 𝑏分別為 Alice 與 Bob 的私密資訊。𝐸𝐴, 𝐷𝐴分別為使用 Alice 公鑰𝑃𝐾𝐴與私鑰𝑆𝐾𝐴所做的加解密演算法,𝐸𝐵, 𝐷𝐵分 別為使用 Bob 公鑰𝑃𝐾𝐵與私鑰𝑆𝐾𝐵所做的加解密演算法。邱姓學者所採用的是 Gentry 的 演算法,但由於此演算法只符合雙重同態加密,並沒有滿足可換式加密,所以邱姓學者

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

19

{𝑎|𝑞(𝑎𝑟𝑋𝑟+𝑏𝑟𝑦)⇒ 𝑎 = 𝑏 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 ⇒ 𝑎 ≠ 𝑏 。

圖 5 邱姓協定流程圖

在邱姓學者的方案中,Alice 跟 Bob 可以利用協定在不洩漏彼此私密資訊的情況下,

達到雙方相等性的驗證,而且不需要任何第三方的協助。如此一來,便不需要擔心第三 方與 Alice 或 Bob 其中任何一方做出共謀的動作。儘管如此,但邱姓學者的協定卻需要 使用到滿足可交換式與雙重同態的加解密演算法。

對於雙重同態的加解密演算法來說,2005 年 Boneh 在[2]所提到的加解密演算法可 以做多次的加法運算跟一次的乘法運算,所以並不能算是完整的雙重同態加密。而邱姓 學者所採用的演算法,是 Gentry[12]在 2009 年所發表的全同態加密演算法,雖然可以做 任意次數的加法與乘法同態,但是所需的時間成本太高,在實作上有一定的困難性。而 對可交換式加解密演算法來說,目前的文獻中除了邱姓學者提到的 Gentry 加密演算法外,

並沒有其他符合可換式加密的演算法,多半都是更改既有的加密演算法使其符合可換式

相關文件