• 沒有找到結果。

應用加法分持設計安全多方應用程式 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "應用加法分持設計安全多方應用程式 - 政大學術集成"

Copied!
55
0
0

加載中.... (立即查看全文)

全文

(1)國立政治大學資訊科學系 Department of Computer Science National Chengchi University 碩士論文 Master's Thesis. 應用加法分持設計安全多方應用程式 Developing Secure Multiparty Applications Using Additive Secret Sharing. 研究生 林子文 指導教授 陳恭. 中華民國一百零二年七月 July 2013.

(2) 應用加法分持設計安全多方應用程式 摘要. 資訊安全中,針對安全多方計算的問題已經發展了許多解法。其中一派以計 算上安全(Computationally Secure)出發,嘗試對安全計算提出通用性(general)的解 法 , 但 是 這 類 作 法 需 要 的 效 能 甚 鉅 。 另 外 一 派 是 以 資 訊 上 安 全 (Information -theoretically Secure)為前提,透過可信任的第三者公正伺服器來提供亂數資料輔 助實際運作的兩方計算,這個方法雖然需要的效能比前者低,但是擴充成多方計 算會造成設計的複雜度變高,一般實際的安全多方運用不見得需要這麼完整的解 法。. 為了進一步推廣安全多方計算的運用,需要一個設計上較簡單,執行效率較 高,在處理常用的安全多方計算時能套用或擴充的模型 (model),我們利用加法分 持的概念設計了一個安全多方應用程式的模型,適合解決保障隱私的選舉投票的 類似問題,並以安全會議排程為例,闡述如何考量安全多方計算的需求來應用這 個模型。.

(3) Developing Secure Multiparty Applications Using Additive Secret Sharing Abstract Secure multiparty computation (SMC) allows several untrusting parties to conduct certain computations over their private data jointly without compromising their privacy. Since Yao's pioneer work on secure two-party computation, there have been many proposals of protocols for specific problems as well as of general approaches for secure protocol development. However, those proposals, though general, are all very complex and take a lot of computation resources, thus making people consider them impractical for real-world applications. This thesis focuses on a simple approach to secure multiparty computation, namely additive secret sharing, and presents a framework for developing some real-world applications using it. We argue that, although this approach can solve only a limited scope of SMC problems, it is easy to apply and is computationally efficient. Besides showing some typical examples supported by our framework, we have developed a secure meeting time scheduler to demonstrate the feasibility of this approach..

(4) 誌謝辭. 感謝陳恭老師的悉心指導,讓我在研究所生活中獲得許多專業知識和面對萬 事保持盡心盡力的態度。感謝家人的支持,也感謝實驗室的大家,以及在政大這 段時間內所有朋友的陪伴。.

(5) 目錄 第一章 緒論.......................................................................4 1.1 研究背景、動機................................................................4 1.2 研究目標...................................................................5 1.3 研究貢獻...................................................................5 1.4 論文結構...................................................................5 第二章 相關研究與技術背景.........................................................6 2.1 安全多方計算研究背景.......................................................6 2.2 安全多方計算協定介紹與比較.................................................7 2.2.1 計算上安全的多方計算協定...............................................7 2.2.2 資訊理論上安全的多方計算協定...........................................8 第三章 系統架構..................................................................11 3.1 加法分持計算系統介紹......................................................11 3.2 加法分持系統執行範例......................................................15 3.2.1 百萬富翁問題..........................................................15 3.2.2 安全計算多人資產總和..................................................18 3.2.3. 保障隱私的權重投票...................................................21. 3.2.4 健保局與疾管局合作之登革熱研究........................................23 第四章 安全會議時間排程..........................................................27 4.1 使用情境..................................................................27 4.2 和其他排程網站的差異......................................................29 4.3 安全會議時間排程演算法....................................................29 第五章 成果與討論................................................................33 5.1 實作環境與成果............................................................33 5.2 適合用加法分持計算系統解決的問題..........................................33 第六章 結論......................................................................37. 1.

(6) 6.1 本研究貢獻................................................................37 6.2 未來研究..................................................................37 6.2.1 乘法分持..............................................................37 6.2.2 浮點數運算............................................................38 6.2.3 更複雜的計算步驟......................................................39 6.2.4 平行化的計算..........................................................40 附錄.............................................................................43 一、加法分持計算系統的範例....................................................43 1. 加法分持計算系統 — 兩方資料加總.........................................43 2. 加法分持計算系統 — 三方資料加總.........................................44 3. 加法分持計算系統 — 減法.................................................45 4. 加法分持計算系統 — 權重計算.............................................46 5. 加法分持計算系統 — And 邏輯運算 ........................................47 6. 加法分持計算系統 — Or 邏輯運算..........................................48 7. 加法分持計算系統 — XOR 邏輯運算.........................................49 二、實驗工具資訊..............................................................50.

(7) 圖目錄 2.1.1 安全多方計算的議題起源於百萬富翁問題........................................7 2.2.2.1 引入公正伺服器的安全多方計算協定..........................................8 2.3.2 將資訊(藏寶圖)拆分成多份..................................................9 3.1 加法分持計算系統三個階段.....................................................12 3.1.1 加法分持系統將原始資料值一拆分到 proxy server................................13 3.1.2 合併資料到 Merge server......................................................14 3.2.1 百萬富翁問題...............................................................17 3.2.2 不透露個人財產情況下,計算多人資產總和.....................................20 4.1.1 申請安全會議排程的起始頁...................................................28 4.1.2 安全會議時間排程的候選時段.................................................28 4.2.2 安全會議排程完整流程.......................................................32. 3.

(8) 第一章 緒論 1.1 研究背景、動機 安全多方計算(Secure Multi-party Computation,SMC)在密碼學中是一個非常重要的研究主題。 假設在一個多方計算上,有 N 個參與方:P1、P2、… PN ,這 N 位參與者各自擁有自己的私密資 訊,分別為 d1、d2、… dN,有一個公開的函式 F 使得這 N 筆(d1、d2、… dN)私有資訊做運算, 如果參與方只能透過自己對外的管道或從公開的函式來得知相關資訊,那麼我們說這個函式 F 是滿足安全多方計算需求的協定。 目前針對安全多方計算的問題已經發展了許多解法。其中一派以計算上安全 (Computationally Secure)出發,嘗試對安全計算提出通用性(general)的解法,但是這類作 法需要的效能甚鉅。另外一種設計是以資訊上安全(Information Secure)為基礎的 commodity-based approach,透過可信任的第三者公正伺服器來協助運算,此第三者稱為 commodity server,主要工作是提供亂數資料輔助實際運作的兩方計算,這個方法雖然需要的效 能比前者低,但是擴充成多方計算會造成設計的複雜度變高,一般實際的安全多方運用不見得 需要這麼完整的解法。 隨著資訊科技和網際網路的蓬勃發展,大量的資料與訊息交流使得機密資訊的保護更加 重要,為了進一步推廣安全多方計算在不同領域的運用,以及減少實際運作上的困難,需要一 個設計上相對較簡單、佈署系統較容易和執行效率較高,在處理常用的安全多方計算時能套用 或擴充的模型(model)。. 1.2 研究目標 本論文研究之目標在於以資訊安全中的一種加法分持加密方式,發展一套能適用在安全多方計 算領域的模型,在設計上希望能達到以下目標: 1. 設計一實用模型用來解決實際常見的安全多方計算的問題。 2. 能擴充解決相似問題。 3. 佈署容易。.

(9) 4. 執行上保持一定的效率。. 1.3 研究貢獻 本研究發展了一套適用在安全多方計算領域的模型,並闡述如何考量安全多方計算的需求來進 行設計並解決問題。除了討論幾個可以套用該模型的實際例子,其中更實作出安全會議時間的 排程網站,示範如何套用這個安全多方計算模型,並提出可以擴充或套用此模型的安全多方問 題條件。 最後,也提出幾個未來研究可能方向,以及這些方向的困難點,希望能加強模型讓此模 型繼續保持簡單高效率,幫助各領域的專家來解決更複雜的安全多方計算問題。. 1.4 論文結構 本論文於第二章進行文獻回顧與技術背景介紹。第三章介紹加法分持計算系統的設計架構,以 及系統的幾個重要特色,並闡述使用加法分持計算系統達成機密運算時需要進行的步驟。最後 舉出數個範例來讓讀者檢視加法分持計算系統的流程以及了解適合套用此系統的安全多方運算。 第四章以安全會議時間的排程為例,闡述如何考量安全多方計算的需求來套用本研究的加法分 持計算模型。先從使用者的角度切入說完使用情境(User story),然後討論要如何將模型調整 並實現安全會議時間排程的架構,最後進一步討論時間排程的演算法細節。第五章本研究的實 作環境及研究成果,並討論哪些安全多方計算的問題適合套用加法分持計算系統。第六章做出 結論以及對未來研究的指引和線索。. 5.

(10) 第二章 相關研究與技術背景 本研究發展了一套適用在安全多方計算領域的加法分持系統模型,並闡述如何考量安全多方計 算的需求來擴展此模型,設計執行效率高而且容易佈署的系統來解決相關問題。在進行研究之 前需要先說明關於多方安全計算的背景知識、介紹和比較幾個主要的安全多方計算協定種類、 以及介紹加法分持的概念。. 2.1 安全多方計算研究背景 在資訊安全的範疇內,安全多方計算(Secure multi-party computation, SMC)是一個重要的研究 主題,它的目標是使得多個對彼此秘密充滿好奇心的參與方,在不洩漏各自私有資訊給其他參 與方的條件下,參與者僅能透過自己對外的管道,或從公開的計算結果來得知相關訊息,協同 完成某種函式(function)的計算,目前已經有許多研究者運用了不同的方法來達到這個目的, 並應用在許多領域之中。 百萬富翁問題可以說是安全多方計算的最初起源,中研院姚期智院士在 1982 年的論文中 提到[1]:假設有兩個個性好勝的富翁想比一比究竟是誰比較有錢?但又不想透露自己的財產的 具體數據給對方知道。Yao 在該論文中提出了一個演算法,可以在資訊分享受限制的情況下, 既能計算出該問題所要的結果,又能達到資料保密的運算。自此以後許多學者對此類問題投入 研究,不僅針對個別問題設計安全的多方計算協定,也將此問題的定義一般化(general),提 出通用性的解決方案[2][3][4]。這些解決方案大多應用於電子商務拍賣[5]、醫療資訊分類 [6]、臉部辨識 [7]與保障隱私的資料擷取[8]與探勘[9]等不同領域[10]。.

(11) 圖 2.1.1 安全多方計算的議題起源於百萬富翁問題. 2.2 安全多方計算協定介紹與比較 依照安全多方計算的問題要求設計出來的函數解法,稱為安全的多方計算協定(protocol)。本 小節概略介紹目前較常見的兩種安全多方計算協定。. 2.2.1 計算上安全的多方計算協定 第一類是從計算上安全的角度出發(computationally secure),著名的例子有 Yao 在 1986 年採 用混淆電路(garbled circuits)[3],舉例來說,假設 Alice 和 Bob 兩造要做某種安全計算,必 須讓輸入資訊和函式(function)轉成邏輯電路的形式,Bob 先輸入資料加密產生成某種混淆電 路,並把這個電路交給 Alice,Alice 獨立輸入她的資料時使得 Bob 不會得知,執行出的結果再 告知 Bob 讓兩造都知道計算結果。這種方式在計算的規模變大時,電路會變得巨大而設計複雜。 另外也有採用同代加密(homomorphic encryption)[11][12][13] 所設計的密碼協定 (cryptographic protocols),舉例來說(表 2.2.1)Alice 的原始資料是 m1,加密後是 c1,Bob 的原始資料是 m2,加密後是 c2,c1 和 c2 做安全運算的結果是 c,和 m1、m2 做完運算再加密的結. 7.

(12) 果一樣,這類作法計算成本頗高,且有可能會洩漏部分資訊之虞。. c1 = E(m1) c2 = E(m2) c = c1 ⊗ c2 ⊗、⊙為某種運算 c = E(m1 ⊙ m2) 表 2.2.1 同代加密的密碼協定 2.2.2 資訊理論上安全的多方計算協定 第二類安全多方計算協定是從資訊理論上安全的角度出發(Information -theoretically Secure), 在資料擁有的各方之外,引入一個第三方的公正伺服器(commodity server)[14],在不介入各 方的計算的前提下,提供亂數的服務來協助各方隱藏其資料,進而完成安全的計算協定[15]。. 圖 2.2.2.1 引入公正伺服器的安全多方計算協定. 2.3 加法分持介紹 Shmair 在 1979 年提出了一個針對資訊安全上避免秘密資訊洩漏的保密方法,主要意義是將秘密 資訊以藏寶圖的隱藏方式,將原始的秘密資料(藏寶地圖)分割成數份,交付給所有安全多方.

(13) 計算的參與者。參與者如果僅僅拿到其中一份藏寶圖,並不能解讀出原始資料(寶藏的藏身之 處)。需要解密(挖寶)時,必須拿到(加總)所有的分持過後的藏寶圖,此種方法可以避免 某部份的人得知完整的秘密資訊,利用這樣的分持概念,設計出來的資料加密方式叫秘密分持 (Secret sharing)。 最簡單的秘密分持方式就是加法分持,舉例來說,如圖 2.3.1,原始資料值「三十七」 被拆分成三份,「負六十一」、「負九十一」和「一百八十九」,如果僅僅得到其中的一份或 兩份資料(藏寶圖碎片),都解讀不出原始資料,只有三塊同時取得,才能「解密」得到原始 資訊,本研究利用這種加法分持的概念設計了一個安全多方應用程式的模型,適合解決保障 隱私的選舉投票的類似問題,並以安全會議排程(第四章)為例,闡述如何考量安全多方計算 的需求來應用這個模型實作。. 圖 2.3.2 將資訊(藏寶圖)拆分成多份 著名應用加法分持的例子有中央研究院資訊科學所的巨量資料運算實驗室[19][20],他 們依照資訊理論的基礎實作出向量內積運算(scalar product protocol):首先假設目前有兩個參 與方分別是 Alice 和 Bob,Alice 有一個私有向量 XA = [ xA1, xA2, … , xAn ],Bob 有一個私有向量 XB = [ xB1, xB2, … , xBn ],這兩個 1 * n 的私有向量就是向量內積運算的輸入,所有元素都是屬於 整數域為 N 的範圍內,運算的步驟如下:. 9.

(14) 1. Alice 和 Bob 兩造皆能同意有一個 Commodity server(semi-trusted commodity server)來提供亂數參與向量內積運算。首先這個 Commodity server 要做的工作是先從整 數域中產生兩個 1 * n 的隨機量數向量 RA = [ RA1, RA2, … , RAn ] 與 RB = [ RB1, RB2, … , RBn ],再從整數域中產生一個隨機亂數 rA 2. Commodity server 計算好 rB = RA * RBT – rA 後,分別將(RA,rA)與(RB,rB)傳送給 Alice 和 Bob 3. Alice 將 XA' = XA + RA 計算好後,將 XA' 送給 Bob 4. Bob 將 XB' = XB + RB 計算好後,將 XB' 送 Alice 5. Bob 從整數域中選擇一個隨機亂數 yB,然後將 t = XA' * XBT + rB -yB 6. Alice 計算 yA = t - RA * XB'T + rA 做完這些步驟得到下列結果: n. yA + yB = XA * XBT =. ∑ x A⋅x B i=1. i. i. 其中 Alice 會得到 yA,Bob 會得到 yB,yA 和 yB 就是以加法分持的形式將向量內積運算的結果 紀錄下來。中研院以此向量內積運算當作是最基本的安全運算單元(building block),往上堆 疊組合出更複雜的運算單元,所有計算過程中的中介值也是以分持形式存在,滿足 O.. Goldreich et al [8] 所提出的組合安全定理(compositionally secure theorem),也就是將運算 做結合時,中間的產生值會是下一次運算的輸入值,來確保所有過程中運算都能維持資訊理論 安全,進而來處理更複雜的安全多方計算問題。這個方法雖然可以從資訊理論上證明,不會外 洩資料,需要的效能也比前一小節介紹的協定低,但是從兩造運算擴充成多方計算會造成設計 上的複雜度變高。.

(15) 第三章 系統架構. 此章介紹加法分持計算系統的設計架構,以及系統的幾個重要特色,並闡述使用加法分持計算 系統達成機密運算時需要進行的步驟。最後舉出三個範例,第一個是姚期智院士提出的安全計 算的經典問題「百萬富翁問題」,第二個範例是「安全計算多人資產總和」,第三個範例是 「保障隱私的權重投票」,用這三個範例來讓讀者淺嚐加法分持計算系統的流程以及了解適合 套用此系統的安全多方運算。. 3.1 加法分持計算系統介紹 一般而言,安全多方計算最重要的是保障秘密資料不會洩漏出去,而資訊安全中有一個針對秘 密資訊的保密方法,是將秘密資訊以藏寶圖的隱藏方式,將原始的秘密資料(藏寶地圖)分割 成數份,打散在不同角落,單單取得其中一份藏寶圖,並不能解讀出完整或部份的原始資料 (寶藏的藏身之處)。需要解密(挖寶)時,必須同時拿到(加總)所有的分持過後的藏寶圖, 此種方法可以避免某部份的安全多方計算參與方得知完整的秘密資訊。利用這個性質,我們設 計了加法分持計算系統,讓參與方的隱私資料在加法分持的情況下,也能完成安全多方計算。 該系統運作流程主要分成三個階段(圖 3.1 ): 1. 做安全多方計算的所有參與方(End User),為了達到資訊的保密性,先將私密資料作 加法分持,分持後的資料送到各個 Proxy server,這是參與方唯一需要做的工作。另外, 除非在把拆分後的資料傳送出去時,一口氣把所有資料攔截下來並合併回原始資料,否 則不會造成安全上的顧慮。 2. Proxy server 的工作是將參與方送來的資料做第一次合併,合併完的資料送到 Merge server。注意這邊的 Proxy server 只有兩個,Proxy server 數量愈多雖然代表私密資訊被拆 分成更多份,但是事實上拆分成兩份已經足夠滿足機密計算的需求,不造成機密的洩露, 後面例子會有更詳細的說明。 3. Merge server 的工作是將 Proxy server 送來的資料做最後合併,得到安全多方計算的結果,. 11.

(16) 注意這邊 Merge server 僅僅只會得知安全計算的結果,沒辦法由 Proxy server 送過來的資 料推算回原始的參與方私密資料。. 圖 3.1 加法分持計算系統三個階段. 以下進一步舉例說明:使用加法分持計算系統需要將秘密資料(藏寶地圖)以加法分持 的方式拆分到不同的 Proxy server,如圖 3.1.1,假設使用者擁有原始資料的值是「一」,先產 生一個亂數的值「負七十五」,那麼另外一個數值將因應「負七十五」使得兩值加起來是 「一」的「七十六」,將原始值「一」拆分成兩份送到各個 Proxy server,以各個 Proxy server 的角度來說,不論是拿到「負七十五」或者是拿到「七十六」,都看不出原始資料是「一」, 因此兩個 Proxy server 已經足夠達到對隱私保障的要求。.

(17) 圖 3.1.1 將原始資料值「一」拆分到 proxy server. 加法分持計算系統使用一個 Merge server 將拆分計算後的值(藏寶地圖)合併回來,如 圖 3.1.2,假設 「Proxy server 1」 計算的結果是「負七十五」,「Proxy server 2」 計算的結 果是「七十六」,那麼送到 Merge server 時,合併的就是加總的計算結果值「一」,跟最初始 參與方的資料沒有出入。接下來討論如果變成兩個參與方,目標是希望將兩邊的隱私資料變數 X 和 Y (皆屬於自然數)做安全計算加總起來,第一個階段參與方 X 和 Y 在 End User 階段做 加法分持,X 拆分為 x1 和 x2 ,Y 拆分為 y1 和 y2 ,然後送到第二階段的 Proxy server。 「Proxy server 1」取得 x1 和 y1 合併成 A,「Proxy server 2」取得 x2 和 y2 合併加總成 B,A 和 B 再被送到 Merge server 做最後的合併,加總結果即為 X 和 Y 做加總計算,整個計算過程可以整 理成表 3.1.1。. 13.

(18) 圖 3.1.2 Merge server 將拆分計算後的值合併回來. 圖 3.1.2 Merge server 將拆分計算後的值(藏寶地圖)合併回來. X, Y ∈. ℤ. Stage:. X+Y=. (X) + (Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 3.1.1 加法分持計算系統 — 兩方資料加總.

(19) 3.2 加法分持系統執行範例 這小節講述數個例子,分別是「百萬富翁問題」、「計算多人資產總和」、「保障隱私的權重 投票」和「健保局與疾管局合作之登革熱研究」,藉由了解這幾個例子的情境,讓讀者了解如 何套用加法分持計算系統的流程以及能達成的運算。. 3.2.1 百萬富翁問題 百萬富翁問題是假設目前有兩個個性好勝的富翁,在不想透露自己身家財產的具體數據的給對 方的情況下,這兩個富翁想知道兩人之中誰比較有錢?假設男參與方擁有的金額數目是「六十 六」元,而女參與方擁有的金額是「五十五」元。一般情況下,在沒有資訊洩露的考量時,想 知道誰比較有錢,就是兩方財產資料做相減的動作,最後以計算結果的正負值來判斷。而考慮 資訊可能洩露時,就是安全多方計算的問題,可以套用加法分持計算系統,分成三個計算階段 (如圖 3.2.1): 1. 女方先乘上「負一」,然後兩方各自將私密資料「六十六」和「五十五」做加法分持傳 到中間的 Proxy server,「Proxy server 1」取得兩個值「十五」和「負十」,「Proxy server 2」取得兩個值「負七十」和「七十六」。 2. Proxy server 將參與方送進來的值加總,加總後的值「五」和「六」再送到尾端 Merge server。 3. Merge server 計算得到總和值,此例最後的計算結果為「十一」,即男方較為有錢(正 值代表男方較有錢,反之女方),注意在計算過程中任何一方,包括各階段的 server 都 不同時知道雙方私有資產值。 整個計算流程可以整理成表 3.2.1。. 15.

(20) Stage: 66 - 55 =. 66 + (-55). ↕ End User: Input. =. (-10 + 76) + (15+ -70 ). ↕ End User: Input. =. (-10 + 15) + (76 + -70). ↕ Proxy server: Collection. =. 5+6. ↕ Proxy server: Collection. =. 11. ↕ Merge server: Compute. 表 3.2.1 百萬富翁問題. X, Y ∈. ℤ. Stage:. X-Y=. X + (-Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 3.2.1 百萬富翁問題.

(21) 圖 3.2.1 百萬富翁問題. 17.

(22) 3.2.2 安全計算多人資產總和 假設有一個情境是,在一場飯局上有三個人甲乙丙,他們想用口袋裡的零錢合力買個禮物送給 做東的屋主,但又不願意彼此計較誰出比較多錢。這是一個常見的安全多方計算問題,調查多 人資產總和,由於個人財產身家的資訊多半不願意透露太多給別人知道,而且樣本數大的時候 容易有計算上的效率考量,特別適合套用加法分持計算系統。如圖 3.2.2,三個人在不透露個 人財產情況下,計算資產(零錢)總和: 1. 每個人將自己的原始資料(零錢)拆分到 Proxy server,甲原本有「八」元,拆分成 「七」元和「一」元,乙原本有「九」元,拆分成「負二」元和「十一」元,丙原本有 「五」元,拆分成「四」元和「一」元。 2. 「Proxy server 1」收到「七」元、「負二」元和「四」元,合併為「九」元。「Proxy server 2」收到「一」元、「十一」元和「一」元,合併為「十四」元。兩筆都送到 Merge server。 3. Merge server 取得「九」元和「十三」元加總得到結果「二十二」元,即為三人資產 (零錢)總和。 過程中互相不會知道對方口袋裡的金額多寡,整個計算流程可以整理成表 3.2.2。.

(23) X, Y, Z ∈. ℤ. Stage:. X+Y+Z=. (X) + (Y) +(Z). ↕ End User: Input. =. (x1+x2) + (y1+y2) + (z1+z2). ↕ End User: Input. =. (x1+y1+z1) + (x2+y2+z2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 3.2.2 加法分持計算系統 — 三方資料加總. 19.

(24) 圖 3.2.2 不透露個人財產情況下,計算多人資產總和.

(25) 3.2.3. 保障隱私的權重投票. 假設有一個公司股東想進行新一屆的領導人選舉,公司股東非常希望能選出一個有能力、有智 慧的領導人,來帶領大家走出目前的經營困境,尋求更好的企業環境。但是大家又不希望他人 知道自己的投票情況,以免遭到不同部門其他候選人上任後的排擠,其中大家都有共識,投票 的權重由股東手中的股份多寡來決定,也就是說手上股份愈多的的投資者,決定領導人的權力 愈大。 套用加法分持計算系統來解決這個問題,首先要先確認參與方的權重,假設有 n 個參與 者 X1,X2,…,Xn ,他們的權重分別是 w1,w2,…,wn,所以每一個候選人的最後得票是: (w1X1)+ (w2X2)+ … +(wnXn) 這個式子要套用加法分持計算系統來安全計算這個式子,分成三個步驟: 1. 讓每個參與者先對原始資料做加法拆分,比如將 w1X1 拆分成 ( x1 1 + x1 2 ) : w1X1 = x1 1 + x1 2 其中 x1 1 由整數域選取一個亂數產生,至於 x1 2 只要確保和 x1 1 相加等 w1X1 即可,x1 1 傳 送到「Proxy server 1」,x1 2 傳送到「Proxy server 2」,以此類推。 2. 接下來「Proxy server 1」 將送進來的值加總:(X1 1) + (X2 1) + … + (Xn 1) 合併得到 A, 「Proxy server 2」 將送進來的值加總:(X1 2) + (X2 2) + … + (Xn 2)合併得到 B,A 和 B 最後 送到 Merge server。 3. Merge server 拿到從 Proxy server 來的 A 和 B 後,加總兩筆資料得到總和值,即為每個 候選人的最後得票(w1X1)+ (w2X2)+ … +(wnXn)。 計算過程中投票者彼此不會知道誰投給誰,整個計算流程可以整理成表 3.2.3,假設有三個候 選人,這樣的表就計算三次。. 21.

(26) X1,X2,… ,Xn ∈{1,0}. Stage:. w1,w2,…,wn ∈ ℤ w1X1 + w2X2 + … + wnXn =. (w1X1)+ (w2X2)+ … +(wnXn). ↕ End User: Input. = (x1 1 + x1 2) + (x2 1 + x2 2) + … + (xn 1 + xn 2) ↕ End User: Input ((X1 1) + (X2 1) + … + (Xn 1)) + =. ↕ Proxy server: Collection ((X1 2) + (X2 2) + … + (Xn 2)). =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 3.2.3 每一個候選人的最後得票.

(27) 3.2.4 健保局與疾管局合作之登革熱研究 這個範例修改自中央研究院資訊科學所以及衛生署疾病管制局關於登革熱疾病的實際調查計劃 [21][22],健保局的資料庫擁有全台灣人的看診及住院資訊。而疾管局的資料庫紀錄有全台灣 人哪些人罹患登革熱、哪些人 罹患出血性登革熱。只要連結兩局之資料庫,就能了解台灣整體 登革熱病患的就醫狀況。但是礙於法規以及保障個人資訊安全,這兩方不能直接告知對方資料 庫資料。在此限 制之下試著使用加法分持計算系統來了解罹患登革熱或出血性登革熱的人有沒 有就醫紀錄。 人. 看診或住院資訊. A000000001. o. A000000002. x. A000000003. o .... 表 3.2.4.1 健保局看診紀錄. 人. 登革熱. 出血性登革熱. A000000001. x. x. A000000002. o. x. A000000003. o. x .... 表 3.2.4.2 疾管局登革熱紀錄 表 3.2.4.1 和 表 3.2.4.2 分別是健保局看診紀錄和疾管局對登革熱病患的紀錄,目標 將兩者合併成像表 3.2.4.3,第一欄是健保局和疾管局共同有的人口紀錄,以身份證字號來表 示身份,第二欄是健保局資料庫的看診紀錄,有看診過的紀錄為「o」,反之則紀錄為「x」, 第三和第四欄是疾管局對登革熱病患的紀錄,有罹患過的紀錄為「o」,反之則紀錄為「x」也 就是說原本的資料是垂直分割(vertical division),希望從兩個參與方的原始資料計算出第五欄, 統計有罹患登革熱或出血性登革熱是否有就醫紀錄,一樣是有看診過的紀錄為「o」,反之則紀 錄為「x」。. 23.

(28) 人. 看診或住院資訊. 登革熱. 出血性登革熱. 罹患登革熱或出血性登革熱且有 就醫紀錄. A000000001. o. x. x. x. A000000002. x. o. x. x. A000000003. o. o. x. o. ... 表 3.2.4.3 登革熱就醫紀錄調查. 這個案例的計算相當於對所有台灣人口的看診或住院資訊(HOS),罹患登革熱(DF) 或出血性登革熱(HDF)三者做邏輯運算 And: HOS ∧ DF ∧HDF。這邊必須先透過數學上的 德摩根定理(De Morgan's Theorem)轉變成加法分持計算系統可處理的形式:. ¬(P ∧ Q) ⇔ (¬P)∨(¬Q) ¬(P ∨ Q) ⇔ (¬P)∧(¬Q) 德摩根定理(De Morgan's Theorem) ¬( HOS ∧ DF ∧HDF ) = ( ¬HOS ) ∨ ( ¬DF ) ∨( ¬HDF ) 其中左式的反向 inverse 移到右式: HOS ∧ DF ∧HDF = ¬ ( ( ¬HOS ) ∨ ( ¬DF ) ∨( ¬HDF ) ) 如此一來就可以套用加法分持計算系統,共分成三個步驟: 1. 以每一列代表一個人(身份證)為單位先對原始資料做加法拆分,比如將 (¬HOS) 拆分 成 (x1 + x2): (¬HOS) = (x1 + x2) 其中 x1 由整數域選取一個亂數產生,至於 x2 只要確保和 x1 相加等於(¬HOS) 即可, x1 傳送到「Proxy server 1」,x2 傳送到「Proxy server 2」,(¬DF) 和 (¬HDF) 也是用這.

(29) 個方式拆分到 Proxy server。 2. 接下來「Proxy server 1」 將送進來的值加總:( x1 + y1 + z1 ) 合併得到 A,「Proxy server 2」 將送進來的值加總:( x2 + y2 + z2 ) 合併得到 B,A 和 B 最後送到 Merge server。 3. Merge server 拿到從 Proxy server 來的 A 和 B 後,加總兩筆資料並對資料做 inverse,注 意這裡的 inverse 操作只有資料為「零」時才會反轉成「一」,即該人有罹患登革熱或出 血性登革熱且有就醫紀錄(HOS∧DF∧HDF),其他還有可能出現「一」、「二」或 「三」的值,應反轉為「零」,即該人不確定有沒有罹患登革熱或出血性登革熱且有就 醫紀錄。 整個計算流程可以整理成表 3.2.4.5。. 25.

(30) HOS ,DF ,HDF. Stage:. ∈ { 1,0 } HOS∧DF∧HDF =. ¬ ( (¬HOS) ∨ (¬DF) ∨(¬HDF) ). ↕ End User: Input. =. ¬ ( (x1 + x2) + (y1 + y2) +(z1 + z2) ). ↕ End User: Input. =. ¬ ( ( x1 + y1 + z1 ) + ( x2 + y2 + z2 ) ). ↕ Proxy server: Collection. =. ¬(A+B). ↕ Proxy server: Collection. =. ¬ ( Answer' ). ↕ Merge server: Compute. =. Answer. ↕ Merge server: Compute. 表 3.2.4.5 罹患登革熱或出血性登革熱且有就醫紀錄.

(31) 第四章 安全會議時間排程 這個章節以安全會議時間的排程為例,闡述如何考量安全多方計算的需求來套用本研究的加法 分持計算模型。首先從使用者的角度切入說完使用情境(User story),然後討論實作的排程網 站和其他網站最大的區隔,以及最後一節闡述要如何將模型調整並實現安全會議時間排程的架 構,最後進一步討論時間排程的演算法細節。. 4.1 使用情境 當一群人決定在某個時間點聚在一起開會,首先要決定的是開會時間。每個人都有自己的行程 規劃,然而大部份人傾向拒絕透露自己的行程表給大家,因應這種情況,一般的作法是大家將 時間表統一告訴給某一個規劃者(或者某個網站),但是這樣一來該規劃者勢必知道大家的部 份私密資訊(規劃者至少可以得知大家什麼時間有空、什麼時間沒空),而且溝通訊息(信 件)來來回回沒有效率,所以需要實作一個會議時間排程網站,目標是使得決定開會時間變得 安全又有效率。執行流程有三個步驟: 1. 發起會議 負責規劃時間的人(通常是主持人),首先到我們的網站開啟一個會議的新事件並填入 參與者的信箱,如圖 4.1.1。注意這個負責規劃時間的人,通常是會議中非出現不可的 人,換句話說是大家必須配合他時間的人。. 27.

(32) 圖 4.1.1 申請安全會議排程的起始頁. 2. 填寫時段. 圖 4.1.2 安全會議時間排程的候選時段. 接下來規劃者提出幾個可能的時段供參與者填寫,然後系統送出邀請信給參與者,其中 包含像圖 4.1.2 的表格,假設計有四天共六個候選時段(time slot),都確定是規劃者 (主持人)有空的時間。參與者收到系統發的邀請信,信件內容包含會議的主題、說明.

(33) 和候選時間表連結,點擊連結連到網站就會看到候選的時間表表格,每個時段是一筆資 料,打勾代表填入值是「一」,該時段有空、沒打勾代表填入值是「零」,該時段沒空, 有十個參與者,就表示每個時段經由系統計算出的最大可能值是「十」,即所有參與者 都有空,最小可能值是「零」,即該時段沒有參與者有空。為了加強此會議時間排程應 用的方便性,也提供了讓有 Google calender 帳戶的人,可以匯入行事曆的事件到候選月 曆以方便察看的功能。參與者填入自己有空的時間,送出資料後便開始安全會議排程計 算。 3. 開始計算開會時間 使用者填好有空的時間,按下送出後,就可以等著 email 通知開會時間計算結果。系統 會在時間限制內或所有使用者都填好通知時開始計算,計算完發 email 通知排程結果。. 4.2 和其他排程網站的差異 目前上已經有許多約會排程網站,本研究實作的排程網站,和其他網站最大的區隔是保障隱私, 也就是不會洩露排程參與者的時間表,一般的排程網站程度上會將使用者的部份時間表資訊紀 錄在站方的系統裡,而參與者將資料送到本研究的排程網站是以分持的形式進行,所以不會有 原始資訊的紀錄。. 4.3 安全會議時間排程演算法 延續前一小節的情境來討論,參與者將以加法分持的型式送出資料。以圖 4.1.2 為例,每個時 段是一筆資料,「一」代表該時段有空,「零」代表該時段沒空。運算分成三個步驟: 1. 所有要可能參加開會的被邀請者(End user) 將會各送六筆拆分後的資料送到 「Proxy server 1」和「Proxy server 2」。表 4.2.1 是先說明假設只有兩個參與方同一時段 (X 格 和 Y 格)如何做機密運算,X 分持成 x1 和 x2 各送到「Proxy server 1 」和 「Proxy server 2」。而這次舉的例子有十個參與者,如表 4.2.2 2. 「Proxy server 1 」接受從 End user 送過來的 x1 和 y1 後算出結果 A,然後將 A 送到 Merge server,「Proxy server 2」接受從送過來的 x2 和 y2 後算出結果 B, 然後將 B 送 到 Merge server。. 29.

(34) 3. 最後 Merge server 將得到的 A 和 B 加總算出答案,套用加法分持系統。注意這是單 指某一格時段的運算,以本例子來說,會有六個時段一起運算,表 4.2.2 十個人的某一 格時段如何做運算。 圖 4.2.2 為安全會議排程完整流程。. X, Y ∈{1,0}. Stage:. X+Y=. (X) + (Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 4.2.1 計算兩個人在某一格時段的決定.

(35) X1,X2, … ,X10. Stage:. ∈{1,0} X1+X2+ … +X10 =. =. =. (X1) + (X2) + … + (X10). ↕ End User: Input. (x1 1 + x1 2) + (x2 1 + x2 2) + … + (x10 1 + x10 2). ↕ End User: Input. ((X1 1) + (X2 1) + … + (X10 1)) + ((X1 2) + (X2 2) + … + (X10 2)). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 表 4.2.2 計算十個參與者在某一格時段的決定. 31.

(36) 圖 4.2.2 安全會議排程完整流程.

(37) 第五章 成果與討論. 這個章節描述本研究的實作環境及研究成果,並討論哪些安全多方計算的問題適合套用加法分 持計算系統。. 5.1 實作環境與成果 本研究的加法分持計算系統及安全會議時間排程系統皆是由 Ruby 程式語言來撰寫,利用 Ruby 語言的開發方便性,增加開發的速度,也因為 Ruby 程式語言的簡潔語法,使得系統的程式碼 不但易讀性高也容易維護和改寫成新用途。其中安全會議排程網站後端使用了 Sinatra 這個輕 量級網站開發框架,簡明地寫出了加法分持計算系統中 Proxy server 和 Merge server 如何回應 網路服務請求,將末端的使用者藉著網路送來的加法分持過後的資料做處理,前端以 Fullcalender 套件來表現候選和計算結果的開會時間在月曆上。查詢 Google calender 的功能,則 以 google-api-ruby-client 這個 RubyGems 來使用相關的 Google api,詳細的實作工具資訊請參考 附錄二。. 5.2 適合用加法分持計算系統解決的問題 本研究發展了一套適用在安全多方計算領域的模型,並闡述如何考量安全多方計算的需求來進 行設計並解決問題。我們以安全會議排程為例,示範如何套用這個安全多方計算模型,而適合 此加法分持計算系統的問題,主要有以下特徵: 1. 需要多方參與且保障隱私的計算 安全多方計算中,最重要的功能便是要確保機密資訊在計算過程中不會被洩漏,加法分 持計算系統不管哪個計算階段都不會有任何資訊的洩露。而且注意下面兩個表「兩方資 料加總」和「三方資料加總」的差異部份:僅在 End User 輸入資料拆分,以及 Proxy server 需要拿到更多資料再做加總處理,也就是說加法分持計算系統在參與方增加時, 並不會顯著增加運算成本。. 33.

(38) X, Y ∈. ℤ. Stage:. X+Y=. (X) + (Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 加法分持計算系統 — 兩方資料加總.

(39) X, Y, Z ∈. ℤ. Stage:. X + Y + Z=. (X) + (Y) +(Z). ↕ End User: Input. =. (x1+x2) + (y1+y2) + (z1+z2). ↕ End User: Input. =. (x1+y1+z1) + (x2+y2+z2). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 加法分持計算系統 — 三方資料加總. 2. 需要簡易佈署 本研究加法分持計算系統主要由 Ruby 程式語言實作,裝好 Ruby interpreter,再安裝相關 的 RubyGems 就算完成運算環境,在佈署上不會有太大的困難,相關工具請參考附錄二。 3. 執行上需要保持一定的效率 由於加法分持計算系統各個運算階段步驟十分固定,即使是安全計算的參與方變多的時 候,扣掉資料輸出入等等傳送資料所需的成本花費,每次執行時的預估成本也不會有太 大的偏差。 4. 能將計算轉換成加法分持模式 前面章節已經介紹許多例子的安全多方計算能轉成加法分持計算系統,包括第三章提過 的「百萬富翁問題」、「計算個人資產總和」、「保障隱私的權重投票」、「健保局與 疾管局合作之登革熱研究」以及本研究實作的「安全會議時間排程」,可以發現要套用 此系統,重點在於能將計算轉換成加法分持模式,比如在「健保局與疾管局合作之登革. 35.

(40) 熱研究」的例子中,透過德摩根定理(De Morgan's Theorem),將邏輯運算的 And 轉 成加法。詳細的例子請參考附錄一。. ¬(P ∧ Q) ⇔ (¬P)∨(¬Q) ¬(P ∨ Q) ⇔ (¬P)∧(¬Q) 德摩根定理(De Morgan's Theorem).

(41) 第六章 結論 6.1 本研究貢獻 安全多方計算的研究主要是針對在分散環境下的兩造(或多方)之間,如何在不透露彼此私有 的資料的情況下,計算一個約定函數的問題,並要確保除了計算結果及其可能推導出的資訊, 不會洩漏額外的私有資料。本研究發展了一套適用在安全多方計算領域的加法分持計算模型, 並闡述如何考量安全多方計算的需求來進行設計並解決問題。我們以安全會議排程為例,示範 如何套用這個安全多方計算模型,並提出可以擴充或套用此模型的安全多方問題條件。在設計 上達成了以下目標: 1. 設計一實用模型用來解決實際常見的安全多方計算的問題。 2. 能擴充解決相似問題。 3. 佈署容易 4. 執行上保持一定的效率。 希望此系統能協助領域專家得以用更簡便的方式來設計與實驗更多的安全多方計算應用。. 6.2 未來研究 在完成了加法分持計算系統的設計後,本節列出乘法分持、浮點運算、讓加法分持處理更複雜 的計算步驟等幾個未來可發展的相關研究目標。. 6.2.1 乘法分持 將資料以加法分持的形式打散以後,能用加總的方式將資訊還原回來,以此類推,也能將原始 資料以乘法分持的形式打散,任何整數即使是質數都能拆成成兩個有理數相乘(如表 6.2.1.1). 37.

(42) 13=(. 29×6 9×13×5×7 )×( ) 5×7×9 6×29 ↓ 174 4095 ) ×( ) 315 174 ⏟ ⏟. 13= (. proxy server 1. proxy server 2. 表 6.2.1.1 任何整數即使是質數都能拆成成兩個有理數相乘. 這樣一來能將分持計算系統擴展出也能處理乘法和除法的功能。儘管如此,對資料做乘 法分持的關鍵是在於處理原始資料為「零」的情況,將「零」打散時,勢必會出現分散的資料 中有「零」的出現,就可以推估出原始資料為「零」的情況(如表 6.2.1.2)。. 0=(. 29×6×0 9×13×5×7 )×( ) 5×7×9 6×29 ↓ 0=. 0 ⏟. ×(. proxy server 1. 4095 ) 174. 表 6.2.1.2 分散的資料中有「零」的出現,就可以推估出原始資料為「零」的情況. 6.2.2 浮點數運算 當原始資料為浮點數時,由於目前的加法分持計算系統並不能直接處理浮點數拆分,所以不支 持做浮點數運算,因此需要增加這部份的功能。關於處理原始資料為浮點數的拆分方式,可以 先參考讓原始浮點數資料先轉成 IEEE 754(IEEE Standard for Floating-Point Arithmetic)的形式.

(43) 後(表 6.2.2.1),這樣一來,等於處理 Sign、Exponent 和 Mantissa 三段 bits 值做整數加法分 持,以各段 bits 的值轉成加法分持做安全運算後,要合併回原始資料則是對分開的各段做加 法總和。. Sign. Exponent. Mantissa. 1. 8. 23. 表 6.2.2.1 IEEE Standard for Floating-Point Arithmetic. 原始資料. 分持後. S= E= M=. S1 + S2 E1 + E2 M1 + M2. Sign Exponent Mantissa. 表 6.2.2.2 浮點數分持. 6.2.3 更複雜的計算步驟 目前加法分持計算系統的運算步驟上比較單調,大部份是先將原始資料做加法分持後,馬上開 始做安全運算,未來可以考慮研究讓 server 加入更複雜的運算步驟, 在次序上,甚至運算上 混合不同手段,以求解決更多安全多方計算問題。比如現在已經有邏輯運算 And,要修改成邏 輯運算中的萬用閘 NAND 並不算困難,一般而言,組合數個萬用閘 NAND,將可以實現更多不 同且複雜的功能運算。. 39.

(44) 6.2.4 平行化的計算 以第三章「健保局與疾管局合作的登革熱研究」的例子來說,台灣人口有兩千三百萬人,目前 的加法分持計算是針對每個人在健保局和疾管局的資料做一次 And 邏輯運算,換句話說要一次 計算完可能需要同時丟進兩千三百萬筆資料做處理,如果變成平行化的計算,比如分成二十三 筆資料,每一百萬到一組機器做計算,對機器的負荷比較少。.

(45) 參考文獻 [1] A. C. Yao. Protocols for secure computation. SFCS 1982: Proceedings of the 23rd Annual IEEE Symposium on Foundations of Computer Science; 1982 Nov 3-5; 1982. p. 160-4. [2] Goldreich O, Micali S, Wigderson A. How to play ANY mental game. Proceedings of the 19th Annual ACM Symposium on Theory of Computing; 1987. p. 218-29. [3] A. C. Yao. How to generate and exchange secrets. In IEEE Symposium on Foundations of Computer Science (FOCS’86), pages 162–167. IEEE, 1986. [4] Goldreich O, Secure multi-party computation (working draft). Available from http://www.wisdom.weizmann, ac.il/home/oded/public_html/foc.html, 1998. [5] M. Naor, B. Pinkas, and R. Sumner. Privacy preserving auctions and mechanism design. In ACM Conf. on Electronic Commerce, pages 129–139, 1999. [6] M. Barni, P. Failla, V. Kolesnikov, R. Lazzeretti, A.-R. Sadeghi, and T. Schneider. Secure evaluation of private linear branching programs with medical applications. In European Symposium on Research in Computer Security (ESORICS’09),volume 5789 of LNCS, pages 424–439. Springer, 2009. [7] A.-R. Sadeghi, T. Schneider, and I. Wehrenberg. Efficient privacy-preserving face recognition. In 12th International Conference on Information Security and Cryptology (ICISC ’09), LNCS. Springer, 2009. [8] B. Chor, O. Goldreich, E. Kushilevitz, and M. Sudan. Private information retrieval. In Proceedings of IEEE Symp. on Foundations of Computer Science, Milwaukee, WI USA, October 23-25 1995. [9] Y. Lindell and B. Pinkas. Secure multiparty computation for privacy-preserving data mining. J. of Privacy and Confidentiality, 1(1):59–98, 2009. [10] Du and M. J. Atallah. Secure multi-party computation problems and their applications: A review and open problems. In New Security Paradigms Workshop, pages 11-20, Cloudcroft, New Mexico, USA, September 11-13 2001. [11] P. Paillier. Public-key cryptosystems based on composite degree residuosity classes. In Advances in Cryptology – EUROCRYPT’99, volume 1592 of LNCS, pages 223–238. Springer, 1999. [12] I. Damgard and M. Jurik. A generalisation, a simplification and some applications of paillier’s probabilistic public-key system. In Public-Key Cryptography (PKC’01), volume 1992 of LNCS, pages 119–136. Springer, 2001. [13] M. Dijk, C. Gentry, S. Halevi, and V. Vaikuntanathan. Fully homomorphic encryption over the. 41.

(46) integers. In Advances in Cryptology –EUROCRYPT’10, LNCS, pages 24–43. Springer, 2010. [14] Beaver D. Commodity-based cryptography (extended abstract). STOC 1997: Proceedings of the 29th Annual ACM Symposium on Theory of Computing; 1997 May 4-6; El Paso, Texas, USA. New York, NY, USA: ACM Press; 1997. p. 446-55. [15] Du W, Zhan Z. A practical approach to solve Secure Multi-party Computation problems. NSPW 2002: Proceedings of the 2002 Workshop on New Security Paradigms; 2002 Sep 23-26; Virginia Beach, Virginia USA. New York, NY, USA: ACM Press; 2002. p. 127-35. [16] Da-Wei Wang, Chrun-Jung Liau, Yi-Ting Chiang, Tsan-sheng Hsu, "Information Theoretical Analysis of Two-Party Secret Computation," Data and Application Security, Lecture Notes in Computer Science, number 4127, Springer, pages 310-317, July 2006. [17] Chih-Hao Shen, Justin Zhan, Da-Wei Wang, Tsan-Sheng Hsu, Churn-Jung Liau, "Information-Theoretically Secure Number-Product Protocol," 2007 International Conference on Machine Learning and Cybernetics, volume 5, pages 3006-3011, August 2007. [18] Wang IC, Chih-Hao Shen, Tsan-sheng Hsu, Churn-Jung Liau, Da-Wei Wang, and Justin Zhan, "Towards Empirical Aspects of Secure Scalar Product," IEEE Transactions on Systems, Man, and Cybernetics, volume 39, pages 440-447, July 2009. [19] Wang IC, Shen CH, Kung Chen, Tsan-sheng Hsu, Liau CJ, Da-Wei Wang. An empirical study on privacy and secure multi-party computation using exponentiation. Secure- Com 2009: International Symposium on Secure Compu- ting; 2009 Aug 29-31; Vancouver, Canada. 2009. p. 182- 8. [20] Wang IC, Kung Chen, Tsan-sheng Hsu, Liau CJ, Shen CH, Da-Wei Wang. Protocols for secure multi- party computation: design, implementation and performance evaluation. Institute of Information Science, Academia Sinica, Taiwan; 2009 Report No.: TR-IIS-09-005. [21] Wang IC, Kung Chen, J.H. Chuang, C.H. Lee, Tsan-sheng Hsu, Liau CJ, P.Y. Wang, and Da-Wei Wang, “On Applying Secure Multi-party Computation: A Case Report”, Proc. of Asia-Pacific Association Medical Informatics (APAMI 2009), Hiroshima, Japan, Nov. 22-24, 2009. [22] 疾病管制局,登革熱疾病飯擔之估計與應用,行政院衛生署疾病管制局 97 年度科技研究發 展計畫。 [23] Shamir, Adi (1979), How to Share a Secret, Communications of the ACM, Vol.22(11), 612-613.

(47) 附錄 一、加法分持計算系統的範例 1. 加法分持計算系統 — 兩方資料加總 X, Y ∈. ℤ. Stage:. X+Y=. (X) + (Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 43.

(48) 2. 加法分持計算系統 — 三方資料加總 X, Y, Z ∈. Stage:. ℤ X+Y+Z=. (X) + (Y) +(Z). ↕ End User: Input. =. (x1+x2) + (y1+y2) + (z1+z2). ↕ End User: Input. =. (x1+y1+z1) + (x2+y2+z2). ↕ Proxy server: Collection. =. A+B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute.

(49) 3. 加法分持計算系統 — 減法 X, Y ∈. ℤ. Stage:. X-Y=. X + (-Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 45.

(50) 4. 加法分持計算系統 — 權重計算 X, Y, a, b ∈. aX + bY =. ℤ. (a,b 為權重). Stage:. (aX) + (bY). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute.

(51) 5. 加法分持計算系統 — And 邏輯運算 X, Y ∈ { 1,0 }. Stage:. X∧Y=. ¬( (¬X) ∨ (¬Y) ). ↕ End User: Input. =. ¬( (x1 + x2) + (y1 + y2) ). ↕ End User: Input. =. ¬( (x1 + y1) + (x2 + y2) ). ↕ Proxy server: Collection. =. ¬( A + B ). ↕ Proxy server: Collection. =. ¬( Answer' ). ↕ Merge server: Compute. Answer. ↕ Merge server: Compute. 47.

(52) 6. 加法分持計算系統 — Or 邏輯運算 X, Y ∈ { 1,0 }. Stage:. X∨Y=. (X) ∨ (Y). ↕ End User: Input. =. (x1 + x2) + (y1 + y2). ↕ End User: Input. =. (x1 + y1) + (x2 + y2). ↕ Proxy server: Collection. =. A+ B. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 註:最後計算出的 Answer 值可能有「零」、「一」、「二」,大於等於「一」的 Answer 值應視為「一」,以吻合原始(X ∨ Y)∈ { 1,0 }.

(53) 7. 加法分持計算系統 — XOR 邏輯運算 X, Y ∈ { 1,0 }. Stage:. X xor Y =. (X) xor (Y). ↕ End User: Input. =. ( (x1 + x2) + (y1 + y2) ) % 2. ↕ End User: Input. =. ( (x1 + y1) + (x2 + y2) ) % 2. ↕ Proxy server: Collection. =. (A + B)%2. ↕ Proxy server: Collection. =. Answer. ↕ Merge server: Compute. 49.

(54) 二、實驗工具資訊 Ruby http://www.ruby-lang.org/en/ Ruby 由日本人松本行弘開發,是一個強調讓寫程式的人覺得快樂的程式語言, 主要特色有: 完全物件導向程式設計,任何東西都是物件 單件方法 (singleton methods) 提供模組(module)「混入」(mixin) 來取代多重繼承 迭代器 (iterators) 及閉包 (closures) 能直接產生作業系統呼叫 方便的字串處理 (string operations) 及正規表示式 (regular expressions) 屬於直譯式腳本語言 (interpreted scripting language) 不需要變數宣告 (variable declarations),變數不需要型別 (typed) 自動管理記憶體 多精確度整數 (multiple precision integers) 方便的例外處理 (exception processing) 動態載入 (dynamic loading).

(55) Sinatra http://www.sinatrarb.com/about.html Sinatra 是一個輕量級的 Lightweight Web Framework,使用 Sinatra 通常不是為了 開發大型的商務網站應用,適合用來搭建簡單快速的小型程式完成任務,是個用 最少的開發時間快速建立 Web 應用的 Domain-specific language。. Fullcalender http://arshaw.com/fullcalendar/ FullCalendar 是個提供「拖」、「拉」行事曆事件功能的 jQuery 套件,可以簡單 使用 AJAX 到後端抓取事件加到月曆上,並提供客製化選項來讓網站符合需求。. 51.

(56)

數據

圖 2.1.1 安全多方計算的議題起源於百萬富翁問題
圖 3.1 加法分持計算系統三個階段
圖 3.1.1 將原始資料值「一」拆分到 proxy server
圖 3.1.2 Merge server 將拆分計算後的值(藏寶地圖)合併回來
+7

參考文獻

相關文件

● 應用 Greedy choice,將問題劃分成子問題,根據 optimal. substructure,可以持續應用

● 應用 Greedy choice ,將問題劃分成子問題,根據 optimal su bstructure ,可以持續應用 Greedy choice

微算機原理與應用 第6

應用閉合電路原理解決生活問題 (常識) 應用設計循環進行設計及改良作品 (常識) 以小數加法及乘法計算成本 (數學).

張庭瑄 華夏技術學院 數位媒體設計系 廖怡安 華夏技術學院 化妝品應用系 胡智發 華夏技術學院 資訊工程系 李志明 華夏技術學院 電子工程系 李柏叡 德霖技術學院

在新學校感到安全 感到學校的支持 因應能力適當調適課程 提升自信心 加強家長的信心 運用家長作為.

• 訓練課程之設計格式,請參用 本分署規範之課程申請相關表件-學、術科

(2) 讚美︰小明是個電腦程 式設計愛好者。最近他參 加義工活動,為安老院設 計了一款自動開門感應