• 沒有找到結果。

基於多方安全計算之算術運算 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "基於多方安全計算之算術運算 - 政大學術集成"

Copied!
66
0
0

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

全文

(1)國立政治大學資訊科學系 Department of Computer Science National Chengchi University 碩士論文 Master’s Thesis. 立. 政 治 大. ‧ 國. 學 ‧. 基於多方安全計算之算術運算 Nat. n. al. er. io. sit. y. Arithmetic Operations for Secure Multi-party Computation. Ch. engchi. i Un. v. 研 究 生:蕭名宏 指導教授:陳. 恭. 中華民國九十九年七月 July 2010.

(2) 基於多方安全計算之算術運算 Arithmetic Operations for Secure Multi-party Computation. 研 究 生: 蕭名宏. Student:Ming-Hung Hsiao. 指導教授: 陳 恭. Advisor:Kung Cheng. 國立政治大學 資訊科學系 碩士論文. 學 ‧. ‧ 國. 立. 政 治 大. sit. y. Nat. n. er. io. A Thesis a lDepartment of Computer submitted to Science v i n C h Chengchi University National engchi U in partial fulfillment of the Requirements for the degree of Master in Computer Science. 中華民國九十九年七月 July 2010.

(3) 基於多方安全計算之算術運算. 摘要. 資訊安全的研究裡,運用安全多方計算的方法,可使得多方在不洩漏各 自私有資訊的條件下完成某種函式的計算。其中一種做法是利用 scalar. 政 治 大 product 來當作計算的基礎演算邏輯單元,並進而建構其他更複雜的安全多 立. ‧ 國. 學. 方計算。. ‧. 根據目前現有的安全多方運算協定,可再加以定義出一些基本的運算規. sit. y. Nat. 則,像是一般的程式語言中常用到的變數型態,如整數、浮點數、布林值,. n. al. er. io. 我們可定義出安全的秘密資料形態來,並且要能達到算數計算就必須擁有. iv. 數值處理的能力,如基本的四則運算等,所以提供了相關聯的安全計算協 C Un. hengchi. 定。根據安全多方計算的運算平台,可具有處理算術計算的能力,使得可 處理一般安全計算的問題。 我們並提供一個 script 轉譯工具,使得使用者可自行撰寫自己的安全多 方計算程式,並可利用此工具來自動將使用者寫的程式碼轉成安全多方運 算平台可接受的程式碼,如此一來,解決安全多方計算的問題將會變得更 為容易。.

(4) Arithmetic Operations for Secure Multi-party Computation. Abstract. Protocols for secure multi-party computation (SMC) allow participants to share a computation while each party learns only what can be inferred from their. 政 治 大. own inputs and the output of the computation. This thesis concerns the. 立. implementation SMC using of a set of information theoretically secure. ‧ 國. 學. protocols based on scalar product protocol. This main characteristic of this. ‧. approach is taking the scalar product computation as the basic building, and then use it to construct more complex computation protocols. We developed. y. Nat. er. io. sit. an SMC implementation framework for both integers and floating numbers which comprises a set of arithmetic operations that manipulate secret values. n. al. iv. n among involved parties usingCthe as the basis. Such a U protocol h scalar product engchi. library of arithmetic operations is call building blocks. Besides, to ease the writing of more complex user-defined protocols, we developed a simple scripting language and a translation tool that converts user script code to SMC code, which is code composed of the building blocks we developed..

(5) 致謝辭 研究所這兩年的學習對我而言意義非凡,由衷感謝我的指導教授陳恭老師這兩年來 對我辛勤的教導。在實驗室的生活中,老師總是耐性十足的對我做指導,並傳授自己的 經驗與我們分享。心中太多的感謝不知如何表達,僅在此祝福老師身體健康,事事順心。 另外要謝謝,這兩年陪我一貣走過,親愛的研究室夥伴,于育、尚倫、政宏、啟典、 文凱,使得在做研究的苦悶中,還有人可以一貣放鬆與歡樂,也一貣互相學習與進步。. 政 治 大 識,使得我有持續的動力可以完成此論文。 立. 更要感謝中研院的研究夥伴,一誠、振益、以及各位老師,幫助我學習研究各方面的知. ‧ 國. 學. 感謝我的家人,特別是我的父母,在我求學期間給予的支持與包容,還有生活上提. ‧. 供的幫助,使得我沒有經濟上的壓力,順利完成我人生中一個重要的求學階段,希望能 與他們一貣分享完成論文後畢業的喜悅。. sit. y. Nat. n. al. i Un. 家人給予我的幫助,在未來將繼續朝新的挑戰邁進。. Ch. engchi. er. io. 在此論文完成之時,將是下個人生階段的開始,我要再次感謝老師、同學、朋友、. v.

(6) 目錄 一、介紹 ...................................................................................................................................................... 1 1.1 背景 ............................................................................................................................................................. 1 1.2 目標 ............................................................................................................................................................. 2 二、文獻回顧 ............................................................................................................................................... 5 2.1 SECRET SHARING ............................................................................................................................................... 5 2.2 SCALAR PRODUCT PROTOCOL ............................................................................................................................... 6 2.3 A COMMODITY-BASED APPROACH TO SCALAR PRODUCT PROTOCOL ........................................................................... 7 2.4 INFORMATION-THEORY BASED SECURITY DEFINITION ................................................................................................ 8. 政 治 大 .............................................................................................................................................. 9 立. 2.5 THE COMPOSITIONAL THEOREM ........................................................................................................................... 9 2.6 BUILDING BLOCKS. ‧ 國. 學. 三、研究方法與系統架構 .......................................................................................................................... 11 3.1 SECURE DATA TYPE ........................................................................................................................................... 11. ‧. 3.2 SECURE SCALAR PRODUCT MODULE .................................................................................................................... 12 3.3 BUILDING BLOCK PROTOCOLS ............................................................................................................................. 14. sit. y. Nat. 3.4 SYSTEM ARCHITECTURE ..................................................................................................................................... 15. io. er. 四、演算法設計 ......................................................................................................................................... 20 4.1 PRELIMINARY .................................................................................................................................................. 20. n. al. i Un. v. 4.2 PRIMITIVE AND USEFUL BUILDING BLOCKS ............................................................................................................ 21. Ch. engchi. 4.2.1 zn_to_z2 Protocol................................................................................................................................ 21 4.2.2 z2_to_zn Protocol................................................................................................................................ 22 4.2.3 negative? , less_than, great_than Protocol ........................................................................................ 23 4.2.4 if_then_else Protocol .......................................................................................................................... 25 4.3 PROTOCOL FOR INTEGER CLASS ........................................................................................................................... 26 4.3.1 Plus ...................................................................................................................................................... 27 4.3.2 Minus .................................................................................................................................................. 28 4.3.3 Product ................................................................................................................................................ 28 4.3.4 Division ................................................................................................................................................ 29 4.4 PROTOCOL FOR FLOAT (DOUBLE) CLASS................................................................................................................ 31 4.4.1 Float Plus & Float Minus ..................................................................................................................... 33 4.4.2 Float Product ....................................................................................................................................... 34 4.4.3 Float Division ....................................................................................................................................... 35 4.5 A TRANSLATOR BASED PROTOCOL DEVELOPMENT TOOL ........................................................................................... 36.

(7) 4.5.1 Translation Tool ................................................................................................................................... 36 4.5.2 Operation Statement Translation........................................................................................................ 37 4.5.3 Constant Number Translation ............................................................................................................. 38 4.5.4 If Statement Translation ...................................................................................................................... 38 五、實驗與評估 ......................................................................................................................................... 41 5.1 實驗設計.................................................................................................................................................... 41 5.2 實驗數據.................................................................................................................................................... 42 5.3 實驗討論.................................................................................................................................................... 51 六、結論 .................................................................................................................................................... 54 6.1 貢獻 ........................................................................................................................................................... 54. 政 治 大 七、參考文獻 ............................................................................................................................................. 56 立 6.2 未來研究.................................................................................................................................................... 55. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v.

(8) 圖目錄 圖 1: SMC SCALAR PRODUCT PROTOCOL 的運算架構圖。 ........................................................................................... 13 圖 2: SMC 的系統架構圖。 ................................................................................................................................. 16 圖 3: FLOAT 型態的記憶體儲存方式。................................................................................................................. 31 圖 4: PRODUCT PROTOCOL TIME DATA .......................................................................................................................... 43 圖 5: NEGATIVE? PROTOCOL TIME DATA........................................................................................................................ 44 圖 6: SHIFT_LEFT PROTOCOL TIME DATA........................................................................................................................ 45 圖 7: SHIFT_RIGHT PROTOCOL TIME DATA ..................................................................................................................... 46 圖 8: ROTATE_LEFT PROTOCOL TIME DATA ..................................................................................................................... 47 圖 9: ROTATE_RIGHT PROTOCOL TIME DATA ................................................................................................................... 48. 政 治 大. 圖 10: POWER PROTOCOL TIME DATA ........................................................................................................................... 49 圖 11: DIVISION PROTOCOL TIME DATA ......................................................................................................................... 50. 立. 圖 12: SCALAR PRODUCT PROTOCOL TIME DATA IN DOMAIN = 2^16. ................................................................................ 52. ‧ 國. 學. 圖 13: SCALAR PRODUCT PROTOCOL TIME DATA IN DOMAIN = 2^32. ................................................................................ 53 圖 14: SCALAR PRODUCT PROTOCOL TIME DATA IN DOMAIN = 2^64. ................................................................................ 53. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v.

(9) 表目錄 表 1: BUILDING BLOCK. ................................................................................................................................................ 2 表 2: SMC CLIENT 端之間的互動情形。 ................................................................................................................ 14 表 3:已完成的 PROTOCOLS & BUILDING BLOCKS. ......................................................................................................... 15 表 4: COMPUTING FLOW CHART. .................................................................................................................................. 18 表 5:實驗的系統環境。 ...................................................................................................................................... 42 表 6: PRODUCT PROTOCOL TIME DATA. ......................................................................................................................... 43 表 7: NEGATIVE? PROTOCOL TIME DATA........................................................................................................................ 44 表 8: SHIFT_LEFT PROTOCOL TIME DATA........................................................................................................................ 45 表 9: SHIFT_RIGHT PROTOCOL TIME DATA. .................................................................................................................... 46. 政 治 大. 表 10: ROTATE_LEFT PROTOCOL TIME DATA. .................................................................................................................. 47 表 11: ROTATE_RIGHT PROTOCOL TIME DATA. ................................................................................................................ 48. 立. 表 12: POWER PROTOCOL TIME DATA. .......................................................................................................................... 49. ‧ 國. 學. 表 13: DIVISION PROTOCOL TIME DATA. ........................................................................................................................ 50 表 14: 利用 SCALAR PRODUCT PROTOCOL 的個數來預估時間函數。 ...................................................................... 52. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v.

(10) 一、介紹 1.1 背景 安全多方計算是密碼學裡的一個重要研究主題,它不只可應用在資訊安全方面,更 可達到隱私保密的功能。這個研究議題,主要貣源於 1982 年 Andrew C.Yao 所發表論文. 治 政 大 中的百萬富翁問題[1],這個問題的假設是,目前有兩個富翁,兩人想比一比,究竟是誰 立 比較有錢,且又不想透漏自己的財產數據給對方知道,所以在這樣的情況之下,究竟要. ‧ 國. 學. 如何解決這個問題。Yao 在該論文中提出了一個演算法,可以在資訊分享受限制的情況. ‧. 下,能夠計算出該問題所要的結果,且達到資料保密的運算。. y. Nat. sit. 百萬富翁問題可說是安全多方運算這個研究主題上的最初問題,其中已經有不少人. n. al. er. io. 想出不同的解決辦法,現今已將此問題之解法一般化,其概念則為多方安全運算. i Un. v. (multi-party computation protocol)[2][3]。在多方安全計算的運算環境中,首先我們可以. Ch. engchi. 想像該情境裡面具有 N 位參與者:P1、P2、…、PN,這 N 位參與者各自擁有自己的私有 資訊,分別為 d1、d2、…、d N,這些參與者想透過公開的函數式 F,在不公開這 N 筆私 有資訊(d1、d2、…、d N)的條件下做相關的運算,以求得想要知道的結果。在次環境中, 依據特定的情況與使用的函數模型,各個參與者只能得知自己所擁有的私有資訊,以及 從公開的函數或是全域的計算結果中來得知相關資訊,其餘更多的資訊則一概不被允許 得知,這樣子的安全多方運算協定可被視為安全的。 中央研究院資訊科學所的巨量資料運算研究室近年來已發展出一套以資訊理論為基 礎的安全多方計算協定(secure multi-party computation protocols),近一兩年來已進入實 1.

(11) 作階段。這個計算方法的特色,是以 scalar product 的計算為基本演算邏輯單元(building block),並進而架構出更複雜的運算協定,例如基本的算術運算和邏輯運算…等。下表 為目前幾個已實作出來的 building block。 表 1: Building Block.. Primitive building blocks. Useful Building blocks. Zn-to-Z2 Z2-to-Zn Product Square. Comparison Zero If-Then-Else Shift Rotation Division/Remainder Square Root Exponent. 立. 政 治 大. ‧ 國. 學. ‧. 對於一般的程式語言來說,最基礎的算術運算是由運算子跟運算元所組合而來的, 在程式系統裡則是由變數以及函數所組成的。所以為了要達到資訊保密的目的,則必須. y. Nat. io. sit. 將原本所使用的變數型態轉換成以可保密的形式來表示,使得各個參與者無法獨立得知. n. al. er. 變數的實際內容。此種保密方式所採用的方法為資訊分持的概念,經由分持的方式,使. Ch. i Un. v. 得原本的算術運算變的更為複雜,增加了運算保密的安全性,同時也使得計算所花費的. engchi. 成本變高。為了因應分持的變數型態,所對應的函數也需要另外重新設計,以符合原始 未分持前的運算功能,例如算數運算裡最基礎的四則運算等等。. 1.2 目標 因此我們希望除了透過建立平行計算的基礎架構與演算邏輯單元庫外,同時也能採 用領域專用語言的方法與技術,並針對這些 secure multi-party computation protocols 的 特徵來進行歸納與分析,並找出其 linguistic 方面的適當抽象機制,發展出一套可用的 scripting 語言,再提供具適當抽象程度的工具,協助領域專家以更簡便的方式來設計與 2.

(12) 實驗更多的 secure multi-party computation protocols。 若是想讓使用者可以使用資訊保密的方式計算,則程式語言必須具備處理多方安全 計算的能力,這勢必要將原始的程式碼經過一道編譯的步驟,使得多台電腦可以協同合 作一貣執行多方安全計算的程式碼。而在尚未編譯前的程式碼,則可另外定義成一種領 域專用語言,透過編譯程式的轉換,可自動編譯出各個參與者所需執行的程式碼,再分 別同時執行運算。 目前中央研究院資訊科學所的巨量資料運算研究室所定義出來的計算功能,主要是. 治 政 大 應用在整數型態的運算上。是根據密碼學裡常用到的環(ring)的概念來表示一個分持數, 立 須要定義其值域(Domain)大小,並使用 mod 運算來控制數字的變化,使用者在決定好整. ‧ 國. 學. 數域的大小之後,直接的會影響到函數在計算時所使用到的整數域。所以在設計演算法. sit. y. Nat. 實際所表達的值。. ‧. 時要考慮到環(ring)所帶來的影響,如採用分持結果的加總再經過 mod 運算,才能得到. n. al. er. io. 由於是使用環的方式來紀錄數值,所以無法表達除了整數以外的型態,還需要透過. i Un. v. 另外的定義來表達出符合資料屬性的格式型態,才能完整記錄出非整數的型態資料。一. Ch. engchi. 般程式語言裡會用到整數通常是 short、int、long,可以直接使用不同大小的整數域來定 義出環的大小,這樣就可以正確表達出數字的值,而常用到的浮點數型態,則還要另外 去設計相應的格式型態。 為了完成普通的算術運算,則數值的資料形態就不再只能有整數運而已,有時還是 會碰到所謂的浮點數運算,像是使用除法運算時,原本舊有的除法運算只能處理輸入兩 個整數,並回傳結果商跟餘數。但是為了表達秘密的浮點數資料型態,就需要另外去設 計新的浮點數四則運算協定,以滿足安全的浮點數計算。 至於程式語言裡會使用到的迴圈跟條件判斷式,由於目前所有的變數值皆是以分持 3.

(13) 的整數值來表達,所以無法使用到 Boolean 型態來做為判斷式。而 if-then-else 的實作為 了不洩露出資訊,所以連條件判斷式的回傳內容都必須以分持的型態來表示,而為了達 到不洩密的前提,且不能讓人經由執行結果判斷出判斷條件的值,所以 then block 以及 else block 皆須要先行被計算出來,以達到混淆的目的。雖然增加了安全性,但也因此多 出了不少計算的成本。至於一般程式中常用到的迴圈如 while、for 等等,最好是使用明 確地給出執行的次數的 for 迴圈,因為這樣會比 while 使用條件判斷式來判斷還要好, 不但減少條件運算式用到的分持計算,還可降低運算成本。所以為了達成執行多方安全 計算的條件,並兼顧運算的效能,而規定使用者必須使用 for 迴圈來設計程式碼則算是 可被接受的考量。. 立. 政 治 大. ‧ 國. 學. 由於目前的計算要求所使用到的運算元功能較為簡單,所以使用者寫的 script 內容不 複雜,目前是採用 ruby 語法來做使用者的撰寫語法,雖然語法簡單,但根據使用者所. ‧. 寫的 script 裡面所用到的安全多方計算協定,是不可直接被接受並執行,中間還必須透. Nat. sit. y. 過一個語法轉譯的步驟,使得原本使用者的 script 變成具有多方安全運算協定的 script。. n. al. er. io. 雖然有關安全計算的 protocol 不多,但還是要設計出一個工具,可以自動幫忙使用者將. i Un. v. 寫好的 script 自動翻譯成 secure multi-party computation system 可接受的程式語法,就可. Ch. engchi. 經由各個執行者去執行。如此一來,降低了一般的使用者對於撰寫多方安全運算程式的 門檻,也提高了便利性。. 4.

(14) 二、文獻回顧 於多方安全計算的回顧,首先說明一下既有的安全多方計算協定的相關理論,接著 介紹 scalar product protocol 相關的運算內容,之後再說明目前所使用的安全多方計算所 採取的 scalar product protocol 演算法。. 2.1 Secret Sharing. 立. 政 治 大. 對於一個不想公開的秘密資訊所採用的保密方法,屬於秘密隱藏的加密技術。最簡. ‧ 國. 學. 單的概念,就是藏寶圖的隱藏方式,將原本的秘密資料(寶藏地圖)給分割,使得原本的 藏寶圖化整為零的存在於多個人手裡,等到解密時就必須將所有分割過後的藏寶圖集合. ‧. 貣來,化零為整後才能得到原本的藏寶圖,此種方法可避免某部份的人私自取得完整的. al. er. io. sit. y. Nat. 藏寶圖。. v. n. 利用這樣的分持概念,設計出來的資料加密方式就屬於 secret sharing[7]。這裡的多. Ch. engchi. i Un. 方安全計算所計算的資料,皆經過了 secret sharing 的處理,使得各別的資料擁有者無法 得知手上所持有的資料的完整實質內容。所以說,此單一數值資料的 secret sharing 的方 法,是採用環(ring)的概念,將原本的處在值域為 D 的數值資料 X 給分割成 n 個部分, 並將之分配給 n 個人,此種資料型態稱之為 secret。如要取得完整的資料,就必須蒐集 所有 n 個部分資料,並將之加總後再做模(mod)運算,使得資料會回到原本的真實內容 X。. Specification: Secret type data X = (x0 + x1 + … xk) mod D, n = k+1, D = Domain. 5.

(15) 將數值資料 X 切割成 n 個部分(x0 , x1 , … , xk)並分配給 n 個人(p0 , p1 , … , pk),且(x0 , x1 , … , xk)皆存在於值域 D 內。亦即 pi 手上擁有 xi,i = 0 ... k。. 2.2 Scalar Product Protocol 中央研究院資訊科學所的巨量資料實驗室近年來發展出一套以資訊理論為基礎的多 方安全計算協定,而其中 scalar product protocol[6]是屬於最基礎的演算邏輯單元。其運 算所需的相關設定如下:假設目前的參與者有兩位,分別是 Ayaya 與 Boa,Ayaya 擁有. 政 治 大. 一個私有向量 XA=[xA1,…, xAn],Boa 擁有一個私有向量 XB=[xB1,…, xBn],這兩個 1×n 的私. 立. 有向量裡的所有元素,都是存在於整數域為 D 的範圍內。因此 scalar product protocol 運. ‧ 國. 學. 算所需之輸入參數即為 1×n 的私有向量(dimension),以及其運算時所存在的整數域範圍 為 D(Domain)。. ‧ sit. y. Nat. 在此前提之下,Ayaya 與 Boa 欲執行一個 scalar product protocol 運算,而期望計算得. al. er. io. 到的結果以分持的形式回傳給 Ayaya 與 Boa,也就是向量內積的部分結果。假設 Alive 會. v. n. 得到 yA、Boa 會得到 yB,因此一個 scalar product protocol 所要完成的運算可以用下列式 子來表示:. Ch. engchi. i Un. 在 scalar product protocol 裡的 Ayaya 與 Boa 自行所做的加法運算與乘法運算也都是 存在於整數域為 D 的運算,而 yA+yB 為 XA × XB 所得的內積的結果,且 yA+yB 也保持在 整數域 D 的範圍內。 上述式子是依循 O.Goldreich et al.所提出的原則,即為在一個 secure multi-party computation protocol 執行過程中,所產生的中介值也是以分持的形式存在著,也就是可 6.

(16) 以假設目前有一個 secure multi-party computation protocol π,它是由連續多個 scalar product protocols 所組成,而 π 中間所做之運算可將目前已完成的 scalar product protocol 的運算輸出結果,可直接當作下一個 scalar product protocol 運算的輸入參數。此外,由 於 secure multi-party computation protocols 運算在執行過程中所產生的中介值運算結果 是以加法分持的形式存在,而非以乘法分持的形式存在,在這部分若是以乘法分持形式 則會產生運算上的資訊安全疑慮。因為在整數域為 D 的環(ring)中,假如以乘法分持形 式來做相關運算,則當其中某個中介值運算結果為 0 時,則會把之前運算出中介值的相 關資訊給洩漏出來。若是以加法分持的形式來做相關運算,如此的分持型式已經由上述. 治 政 原則所驗證,不會產生上述所說的資訊安全疑慮,O.Goldreich et al.所提出的原則也同樣 大 立 適用於所有的 secure multi-party computation protocols。 ‧ 國. 學. 2.3 A Commodity-Based Approach To Scalar Product Protocol. ‧. sit. y. Nat. 中央研究院資訊科學所的巨量資料運算實驗室提出 commodity-based approach[4][5]. io. er. 演算法來實作出 scalar product protocol。藉由一個可信任的第三者來協助運算,此第三. al. 者稱為 commodity server,其主要是幫助兩個要做安全多方計算的人提供亂數資料,藉. n. iv n C 由提供亂數資料,可輔助其運算,並且具有較好的效能。其詳細運算內容如下:首先假 hengchi U 設目前的參與者有兩位,分別是 Ayaya 與 Boa,他們分別持有 1×n 的私有向量分別為 XA=[xA1,…, xAn]與 XB=[xB1,…, xBn],Ayaya 與 Boa 一貣將各自所持有之私有向量來做內積運 算,即為執行 scalar product protocol。關於 scalar product protocol 部分已在上一節做了 詳細的介紹,接下來將 commodity-based approach 相關步驟詳列如下: (1) Ayaya 與 Boa 兩者皆同意能夠有一個第三方 Chiling (semi-trusted commodity server)來參與 scalar product protocol 運算,而 Chiling 所要做的事情是先從整數 域 D 產生兩個 1×n 的向量 RA=[RA1,…, RAn]與 RB=[RB1,…, RBn],其中 RA 與 RB 向量 內的所有元素都是從整數域 D 中所產生之隨機亂數,接著 Chiling 再從整數域 D 7.

(17) 中產生一個隨機亂數 ra。 (2) Chiling 在計算好 rb =Ra × RBT-ra 後,分別將(RA, rA)與(RB, rB)分別傳送給 Ayaya 與 Boa。 (3) Ayaya 將 X’A=XA+RA 計算好後,將 X’A 傳送給 Boa。 (4) Boa 將 X’B=XB+RB 計算好後,將 X’B 傳送給 Ayaya。 (5) Boa 從整數域 D 中選擇一個隨機亂數 yB,然後將 t=X’A × XBT+rB-yB 計算好後, 將 t 傳送給 Ayaya。 (6) Ayaya 計算 yA=t-RA × X’BT+RA,得到 yA。. 立. 政 治 大. 經由上述六個步驟,Ayaya 與 Boa 就能將各自所持有之私有向量 XA=[xA1,…, xAn]與. ‧ 國. 學. XB=[xB1,…, xBn]一貣完成了一個 scalar product protocol 運算,最後 Ayaya 與 Boa 也各自持 有 scalar product protocol 運算的部分結果,分別為 yA 以及 yB。. ‧. sit. y. Nat. 2.4 Information-Theory Based Security Definition. n. al. er. io. 對於算術運算來說,任何運算皆可分解成許多基本運算的組合,像是乘法可由加法. i Un. v. 所組成等等,所以說,我們也希望能夠找出一個最基本的安全運算單元來,並利用這個. Ch. engchi. 基本的安全運算單元,組合出多種不同的複雜運算來。現在則是將一個 scalar product protocol 視為一個最基本的運算單元,並依此為基礎,建構出不同的安全運算協定。並 根據中研院資訊所提出的雙方安全計算的資訊安全理論[8][9],得以根據基本運算單元, 組合出不同的安全多方安全運算協定。 根據理論,首先假設 π 是一個 secure multi-party computation protocol,而 VIEWiπ 表 示為第 i 個參與者在進行 π 時的 VIEW,其中 VIEW 裡面包含著第 i 個參與者可得知的內 容,包括了初始的輸入、所有的區域變數、內部交互計算的次數、以及所接收到的輸入 資訊以及輸出結果。假設 xi 是第 i 個參與者的私有輸入資料。而當下列式子成立如下: 8.

(18) 此時 secure multi-party computation protocol π 是被視為具有資訊立論安全的 (information-theoretically secure)協定。. 2.5 The Compositional Theorem 資訊理論上的安全(information-theoretical security)其封閉性是建立在以下的假設,也 就是所有的參與者在進行子協定(sub-protocol)之外的時候,不會有任何參與者相互分享. 政 治 大. 個別所持有之私有資訊,因此我們可以確保所有的子協定在做結合時,不會有違反安全. 立. 性的資訊分享行為,所以關於這邊所提到的 composition theorem,其主要的精神就是能. ‧ 國. 學. 夠確保 secure multi-party computation protocols 在做運算結合的同時,也能夠維持資訊 理論安全的原則。因此我們能夠依據 compositional theorem 來將多個 building block 結合. ‧. 貣來做運算,目前是透過最基礎的演算邏輯單元 scalar product protocol 來建立出許多更. y. Nat. n. al. er. io. 2.6 Building Blocks. sit. 複雜的 secure multi- party computation protocols。. Ch. engchi. i Un. v. 在既有的安全多方計算協定知識背景之下,我們將較為複雜的安全多方計算協定做 模組化的處理,透過仔細的觀察可以發現,在這些計算之中都會有一些共同的基礎運算 式子,這些式子可利用 scalar product protocol 來實作完成。透過將這些較為複雜的安全 多方計算協定拆解為多個演算邏輯單元(building block),如此一來就可以方便的使用這些 building block。換句話說,使用 building block 的概念就像是堆疊積木一樣,將多個 building block 一個一個堆疊結合貣來,就能組成更為複雜的安全多方計算協定,同時這樣也相 當於創造出了一個新的較為複雜的 building block,可供之後的運算再次使用。 Secure multi-party computation protocols 運算的重點在於所有 building block 的輸入參 9.

(19) 數即為多方各自所持有的私有資訊,通常這些資訊會以分持的型式儲存在各個運算參與 者的手裡,而經過所有的 building block 運算之後,其運算結果也會以分持的型式回傳給 多方參與者。輸入跟輸出保持相同型態,亦即可將 building block 串連貣來,使得 building block 的輸出值可為下個 building block 的輸入值。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 10. i Un. v.

(20) 三、研究方法與系統架構 為了設計出一個完整的多方安全計算環境,首先需建構出基本的 scalar product protocol,以此為基礎設計出合適的數值算術系統,並依所要使用的運算運算,定義出 SMC 所使用到的 protocols,接著設計出可用的專用領域語言,提供一般人使用。. 政 治 大. 3.1 Secure Data Type. 立. 對於多方安全計算來說,為了達到數值運算的基本目的,同時也要達到保密的效果,. ‧ 國. 學. 必須先將所要運算的資料定義出適合的型態來,此時數值的資料一般可分為三種型態, 分別為 public、private 和 secret。. sit. io. Public 所代表的意思,表示的數值通常為一個常數,為固定不變的一個數值,基. n. al. er. . y. ‧. Nat. 接著分別解釋一下數值資料的三種形態所表示的意義。. Ch. i Un. v. 本上在多方安全計算的環境中,此數只存在於單一持有人手裡,且無保密的特. engchi. 性,可被他人得知,無分持的概念。 . Private 所代表的意思,表示每人手上皆持有一個名為 X 的資料,而對於各自手 上的 X,分別為其所擁有的私人資料,並未分享給其他人知道,屬於無分持的概 念。. . Secret 所代表的意思,表示一個數值 X 存在於值域為 D 的 Domain,X 被切割開 來,每人分別持有其中一部分的內容,若要得知完整的訊息 X,須先收集所有人 手上的部分內容,合併貣來才是完整的內容,這就是分持的概念,類似藏寶圖 的作法。. 11.

(21) 這邊可以舉個例子來說明。假設 Ayaya 持有 X,Boa 持有 Y,希望求出究竟 X 跟 Y 哪 一個數值比較大。假如 X 跟 Y 的數值資料型態皆為 public,則 Ayaya 跟 Boa 可直接合作, 互相比較 X 和 Y 就可得出答案來。但是若為 private 的數值資料型態,則 Ayaya 跟 Boa 在互相不知道對方手上所持有的數值前,是無法直接做比較的,也就是說無法直接求出 究竟誰手上所持有的數值比較大。而若是 secret 的數值資料型態的話,則 X = (xA + xB) mod D,Y = (yA + yB) mod D,Ayaya 手上所持有的數值則為(xA, yA),而 Boa 手上所持有的數值 為(xB, yB),也就是說在 Ayaya 和 Boa 也不知道 X 和 Y 真實的數值內容的情況下,卻又想 合作解出究竟 X 和 Y 究竟哪一個比較大。. 立. 政 治 大. 這就是在多方安全計算的環境下,所會碰到的問題。為了保有數值資料的秘密性,. ‧ 國. 學. 且資料不願公開給負責運算的持有人知曉的情況下,還能夠達成互相合作,算出問題所 想知道的答案來,就必須透過資料分持的概念,來保證秘密資料的安全性。. ‧ sit. y. Nat. 3.2 Secure Scalar Product Module. n. al. er. io. 要建構出一個可以實際運作的 SMC 計算系統,首先需將多方安全運算的基礎單元. i Un. v. scalar product protocol 給實作出來。而這邊所採用的 scalar product protocol 部分,是以. Ch. engchi. commodity-based 為基礎的運算流程,使得第三方的 commodity server 可以提供各個參 與者所需的亂數向量資料,幫助完成 scalar product protocol 的運算。接著再將設計好的 scalar product protocol 以一個基本單元的方式,可被其他 protocol 所呼叫執行。目前的 設計是以同一時間只可執行一個 scalar product protocol 為主,若是日後有需要,可另行 採用同時多開幾個 scalar product protocol 執行緒的模式,以達到平行計算的要求。 分析 A Commodity-Based Approach To Scalar Product Protocol 的運作流程,可列出運算 的步驟,設定好執行的先後順序。 對於 SMC commodity server 來說,會接到要求提供所需的亂數向量資料的命令,命 12.

(22) 令的內容包括了此次執行的 scalar product protocol 所需的向量長度與值域,所以要將產 生出來的向量資料記錄下來,並依照要求回傳對應的資料給要求者。 至於擔任 SMC client 端的運算者來說,可分為 client1 跟 client2 兩人。client1 和 client2 分別對 SMC commodity server 送出取得亂數向量資料的請求,接著取得了 commodity server 回傳的亂數向量資料後,再跟各自手上所持有的 secret 資料作運算,之後再將所 得的中介資料做交換的動作,經過最後的算術運算後,client2 可直接產生 scalar product protocol 最後的部分結果,並且根據結果另行算出一個中介質,並將之傳送給 client1,. 政 治 大. client1 根據所接收到的中介質,可算出 scalar product protocol 的部分結果,如此一來就. 立. 完成了一次的 scalar product protocol 運算,並且 client1 與 client2 所各自持有的部分結. ‧ 國. 學. 果,合併後則為 scalar product protocol 運算完成後的答案。. ‧. 在多方安全計算環境中,為了確保資料傳輸之間的安全性,特別將傳輸的資料經過. sit. y. Nat. 加密的程序,以使得任何人在中間攔截或者是竊聽資料傳輸的內容,也無法得知究竟是. io. al. er. 傳了什麼資料。所以說即使是將 SMC commodity server 對 SMC client 的傳輸或者是 SMC. n. client 端對 SMC client 端的傳輸通通攔截竊聽下來,也無法解譯出 scalar product protocol 的運算內容。. Ch. engchi. i Un. v. 圖 1: SMC scalar product protocol 的運算架構圖。. 13.

(23) 在撰寫程式碼的時候,必須考慮到 SMC client 端的執行緒問題。為了能夠同時處理使 用者傳送進來的運算命令的 request,以及 SMC client 端之間的資料傳輸處理上,不可避 免的會出現至少兩個執行緒同時運作的情況。因為兩個執行緒會存取到同樣位址的數值 資料,所以為了解決兩個執行緒的合作運算,必須有規則的彼此互相等待,以解決 race condition 的衝突發生。 表 2: SMC client 端之間的互動情形。. Client1. step. Client2. thread. thread1. 1. 設定 X1. 2. 取得向量資料(R1, r1). 設定 X 治 政 取得向量資料(R , r大 ). 3. 向量相加 X1’ = X1+R1. 向量相加 X2’ = X2+R2. 4. 傳送 X1’,等待回應. 設定 X2’,等待 y2 設定. 2. 立. ‧ 國. 2. 計算 t = r2+X1’‧X2 – y2 回傳(X2’, t). y. Nat. 收到 X2’和 t. 10. 計算 y1 = t – R1‧X2’+r1. 11. 回傳答案 y1. io. 9. 設定 y2. n. al. 回傳答案 y2. Ch. sit. 8. 產生 y2. ‧. 7. 收到 X1’,並等待 X2’產生. er. 6. 2. 學. 5. thread2. i Un. v. 在 scalar product protocol 的運作過程中,client2 同時扮演兩個角色,以應付不同 socket 收送資. engchi. 料的需求,協調了資料運算之間互相等待的情形。. 3.3 Building Block Protocols 根據基本的安全多方計算單元 secure scalar product,我們可以利用其運算特性來建 構出較為複雜的運算功能,而依照不同的算數運算的需求,可分別定義出相對應的運算 協定,例如最基礎的加法和乘法計算,可透過 secure scalar product 的幫助,實現其安全 計算的目的。 如此一來,有了最基礎的運算能力之後,可以再組合出較為複雜的運算功能,例如 14.

(24) 說比大小的運算協定(<、=、>),就必須透過基礎的安全多方計算能力,加法與乘法,計 算出結果,並依然保持其安全計算的特性,接著並可依造這個流程,繼續建構出更為複 雜的安全運算協定。猶如堆積木般,將基礎的運算協定視為一個小積木(building block), 接著將小積木組合出新的大積木來,成為一個新的運算協定,依其保密的封閉性,組合 出來的新的運算協定也具有安全性。 以下是由基礎的 secure scalar product protocol 所建構出來的 protocols。接著並依此 在建構出較為複雜一些的 protocols。. 政 治 大. 表 3:已完成的 Protocols & Building Blocks.. 立. Useful building blocks. Add Subtract Product Zn -to-Z2. Comparison Zero If-Then-Else Shift Rotation. Z2-to-Zn. Division/Remainder Square Exponential. ‧. ‧ 國. 學. Primitive building blocks. n. er. io. sit. y. Nat. al. i Un. v. 這些 protocols 運算所處理的數值,是存在於值域為 D 的整數域裡,在運算時可給定. Ch. engchi. 不同的 Domain D,使得可應用在不同的運算需求上。而處理浮點數的 building block 還 需另外設計,像是浮點數的儲存資料結構、數字的儲存型態、浮點數計算的例外發生處 理機制等等。之後將會接著介紹有關浮點數的算術運算設計與實作。. 3.4 System Architecture 建立安全多方計算的系統,其包含了負責處理基本 secure scalar product protocol 的處 理單元,以及負責處理運算指令之控制元,此兩者相互合作,控制元依據運算之指令呼 叫相應的運算協定,運算協定內可呼叫執行 scalar product protocol。本系統根據使用者 所輸入的運算指令,經由執行各個對應的運算 protocol 來處理命令的運算內容,最後得 15.

(25) 出分持的運算結果。其中 scalar product protocol module 經由模組化,使得各個運算 protocol 可直接呼叫使用。. 立. 政 治 大. ‧ 國. 學. 圖 2: SMC 的系統架構圖。. 分別由 scalar product protocol module 以及各種 operation protocols 所組成,並且具備 解譯運算指令的功能,提供算術運算的服務。. ‧ sit. y. Nat. 此多方安全計算系統簡稱為 SMC 系統,其可接受已定義過的多方安全計算協定,依. n. al. er. io. 據不同的運算協定,循序執行使用者要求的指令。由於多方安全計算的運算問題可能並. i Un. v. 不只是簡單的算術運算,而是一些複雜的演算問題,所以說,一個運算問題裡面可能包. Ch. engchi. 含了多個運算指令,其可寫成一個 script,可被 SMC 系統解譯,並且被執行。 SMC 系統可接受的 script,此種 script 簡稱為 SMC code,使用者當要撰寫一個多方安 全計算問題的 script 時,並不需要寫出 SMC code,由於 SMC 系統接受的 script 撰寫貣來 較為繁雜,而使得學習撰寫多方安全計算程式難度提高,所以是希望能夠讓一般的使用 者能夠使用常用的算術運算符號取代較為繁雜的多方安全計算協定指令,此種較為簡單 的撰寫方式所寫出的 script,簡稱為 user code。 所以根據之前設計出來的 secure multi-party computation protocols,可定義出一個簡 單的 script 語法[10],由基本的 Ruby 語法再加以改進所形成的語法,經由編譯器的轉換, 16.

(26) 就可將 user code 轉譯為 SMC code,如此一來就具備簡單的程式運作能力,之後根據使 用者給的程式碼,經過編譯後可產生出給各個不同的參與者可執行的程式碼。 以下為 user code 和 SMC code 的例子,經由一個 translator 工具幫忙,將輸入的 user code 轉譯成系統可接受的 SMC code。其中 translator 工具的實作介紹將在以下第 4.5 節 加以介紹。. 立. Output: def test(m, n) b, x, y = true, m, n (cond_block = b t1_b, t1_x, t1_y = b, x, y t2_x, t2_y = x, y then_block = (for i in (0...1) do (t1_y = power(t1_y, 2) t1_x = plus(-t1_y, 10) t1_y = minus(15, t1_x) t1_y = product(t1_x, t1_y) t1_x = division(t1_y, t1_y) t1_x = shift_left(t1_x, 1) t1_y = shift_right(t1_y, 1) t1_b = less_than(t1_x, t1_y) t1_b = greater_than(t1_x, t1_y)) end) else_block = (t2_x, t2_y = 15, 25) b = if_then_else(cond_block, t1_b, b) x = if_then_else(cond_block, t1_x, t2_x) y = if_then_else(cond_block, t1_y, t2_y) if_then_else(cond_block, then_block, else_block)) end m, n = 1, 2; test(m, n). 政 治 大. ‧. ‧ 國. 學. Input: def test(m, n) b, x, y = true, m, n if b then for i in 0...1 y = y**2 x = -y + 10 y = 15 – x y=x*y x=y/y x << 1 y >> 1 b=x<y b=x>y end else x, y = 15, 25 end end m, n = 1, 2 test(m, n). n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 如此來看,在安全多方計算環境中,至少具有四個角色,分別是 commodity server、 SMC client 1、SMC client 2 和 user。其中 user 是提供運算 script 的角色,此為一般的使 用者。在一個運算流程中,user 將撰寫好的 user code 分別傳送給各個運算執行者,亦 即,SMC client 1、SMC client 2,接著各個運算執行者將接收到的 user code 利用 translator tool 轉譯成系統可接受的 SMC code,之後再將要運算的資料分別準備好之後,就可開始 17.

(27) 進行多方安全計算,最後等到做完所有安全計算之後,可分別得到最後的計算分持結果, 之後再將各個分持的結果回傳給 user,當 user 接收到所有的分持結果之後,即可合併出 多方安全計算問題的答案出來,此流程即為一次有效的安全多方計算。 表 4: Computing Flow Chart.. 1. 首先啟動好 commodity server、SMC client 1、SMC client 2。. 學. ‧ 國. 立. 政 治 大 2. 接著 user 寫好要計算的 script。. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 3. user 將寫好的 script 分別傳送給各執行 者 SMC client 1、SMC client 2。. 4. 各執行者分別將接收到的 user code 透過 translator 工具轉換成 SMC code。. 5. 開始執行多方安全計算。. 6. 執行完成,得到分持的運算結果。 18.

(28) 7. 將分持結果回傳給 user。. 立. 8. user 將得到的分持結果做合併的處理,將 會得到真正的運算結果。. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 19. i Un. v.

(29) 四、演算法設計 首先這邊將會簡單介紹一下 secure multi-party computation 其使用的前提與限制,接 著再介紹現有的 building block,以及有關數值運算會用到的不同數值型態的運算 protocols,像是一般常用到整數型態(Integer)以及浮點數(Float、Double)的數值運算等等。 基本上資料的運算形態主要是以 secret 為主要型態,以降低資料形態轉換所帶來的. 政 治 大. overhead。. 立. ‧ 國. 學. 由於此 secure multi-party computation system 是建構在有兩個 SMC client 的架構下所 組成的運算環境,所以演算法的設計內容將會使用到的運算者則為兩個,在以下介紹裡. ‧. 的演算法部分,在程式設計時,以變數@client_type 來判斷 protocol 執行者的屬性,以. sit. n. al. er. io. 4.1 Preliminary. y. Nat. 此區分是第一人或者是第二人。. Ch. engchi. i Un. v. 由於使用者設計出來的 script 所用到的輸入資料可能不是 secret,而有可能是以 public 型態或者是 private 型態的數值資料居多,所以當要將不同的形態的數值資料混在一貣 做運算時,就必須先將資料形態作統一化,以使得計算出來的結果具有正確的意義。 對於 public 型態的資料來說,若是要跟其他 secret 型態的資料做運算時,則可直接 做運算,不需考慮其分持的問題,因為通常要做此種運算的時候,此公開的數值資料已 經被所有的運算者知曉,所以各個運算者只需在本地端自行做運算即可,如在 SMC client 端直接自行做計算即可,不需要透過 SMC 系統就可完成計算,其計算結果則變為 secret 型態的資料,此為 secret 型態是為了讓人無法直接反推出原有資料的內容,保護原輸入 的數值資料不被洩漏。 20.

(30) 而對於 private 型態的資料來說,通常是用來記錄個人的私有資料,亦即是此資料的 真實內容指掌握在所有運算者的其中一人手中,所以當要將此資料跟其他 secret 型態的 資料做運算時,則必須先將原本的 private 型態轉為 secret 型態,其方法為將原本的 private 型態的資料視為 secret 型態資料的其中一份分持的部分資料,而其餘的運算者手中的分 持資料則以 0 表示之,所以說,將所有運算者手中所擁有的分持資料合併之後,還原出 來的真實內容將等於原來的 private 型態的資料的真實內容。 所以說,使用者寫好的 script 要執行之前,必須先將要使用到數值資料給準備好,亦. 政 治 大. 即要將使用者運算所需的資料做整理,以使得各個運算者所有要用來做運算的資料都保. 立. 持在分持的形態,這樣即使各個運算者也不知其運算所需的資料的真實內容,如此一來. ‧ 國. 學. 就可達成秘密運算的效果。. ‧. 4.2 Primitive and Useful Building Blocks. y. Nat. sit. 中研院方面已設計出來幾個基礎的 building block,其以堆積木的方式將已有的 secure. n. al. er. io. scalar product 當作一個基本 building block,接著以此堆疊出新的 building block 出來,根. i Un. v. 據不同的需求來完成算術運算所需的 protocol。以下簡單介紹其性質與格式。. Ch. engchi. 4.2.1 zn_to_z2 Protocol zn_to_z2 protocol 是將一個在 Domain 為 n 的分持的數轉換為 Domain 為 2 的分持陣 列,亦即陣列中的每個元素均為分持的型態,利用 2 進位加法的概念,來幫助完成分持 的數的 Domain 轉換。其所需花費的 secure scalar product 數目為 k 個。. Specification: Zn-to-Z2 zn_to_z2(x1 , x2 ) { k’ } → ((y01 , . . . , yk’1 ), (y02 , . . . , yk’2 )) such that (yk’ yk’-1 … y1 y0 ) 2 = x1 + x2 , where n = 2(k+1), k’ ≤ k, x1, x2 ∈ Zn , yi1 , yi2 ∈ Z2 , and yi = yi1 + yi2 (mod 2), for i = 0, 1, … , k. 21.

(31) Protocol: Zn-to-Z2 1. Party j sets c0j = 0, and y0j = x0j , for j = 1, 2. 2. For i = 0, … , k’ − 1, repeat Step 2A to Step 2B. A.. The two parties jointly execute the binary Scalar-Product protocol ((ci1, xi1 , xi1 ), (xi2 , ci2 , xi2 )) → (ti1 , ti2), where ti1 + ti2 (mod 2) = ci1xi2 + xi1ci2 + xi1xi2 (mod 2).. B.. For j = 1, 2, Party j computes c(i+1)j = cij xij + tij (mod 2), y(i+1)j = x(i+1)j + c(i+1)j (mod 2).. Algorithm: Zn-to-Z2 bits: find 2^(bits) = n. 政 治 大. carry, v = 0, [] (bits-1).times do |i|. 立. v[i] = (x[i] + carry) % 2. ‧ 國. 學. carry = case(@client_type). when 1 then carry * x[i] + scalar_product([carry,x[i],x[i]], 2) when 2 then carry * x[i] + scalar_product([x[i],carry,x[i]], 2). y. Nat. end. ‧. end. n. al. er. io. v. sit. v[bits - 1] = (x[bits-1] + carry) % 2. 4.2.2 z2_to_zn Protocol. Ch. engchi. i Un. v. z2_to_zn 是將原本 domain 為 2 的分持陣列轉換為 Domain 為 n 的分持數。由於是將 各個分持的陣列元素做還原並加總的運算,所以說需要花費的 secure scalar product 數目 為只需 1 個,但是 secure scalar product 的運算參數 Dimension 長度為 k。. Specification: Z2-to-Zn z2_to_zn ((x01 , … , xk’1), (x02 , … , xk’2)) { k’ } → (y1 , y2) such that y1 + y2 = (xk’ x(k’-1) … x1x0)2 , where n = 2(k+1) , k’ ≤ k, y1 ,y2 ∈ Zn , xi1, xi2 ∈ Z2 , and xi = xi1 + xi2 (mod 2), for i = 0, 1, … , k’.. 22.

(32) Protocol: Z2-to-Zn 1.. Party 1 and Party 2 jointly run the Scalar-Product protocol ((2x01 , … , 2(k’+1)xk’1),. (x02 , … , xk’2))→(t1 , t2) such that t1 + t2 = 2x01x02 + … + 2(k’+1)xk’1 xk’2. 2.. Party j computes yj =. , for j = 1, 2.. Algorithm: Z2-to-Zn v: input binary array bits: find binary array’s length as bits vector = [] case(@client_type) when 1 then vector = v. 立. 政 治 大. when 2 then bits.times{|i| vector[i] = 2**(i+1) * v[i] }. ‧ 國. 學. t = scalar_product(vector, domain). ‧. bits.times{|i| y += v[i] * (2**i) }. y. Nat. (y - t) % d. io. 4.2.3 negative? , less_than, great_than Protocol. al. sit. y=0. er. end. n. iv n C h e n g c h i U ring 的數字域內,經過模(mod) 一個分持的數是無法直接判斷正負號,因為在一個. 運算後,會形成繞回來的現象,像是程式語言中常遇到的 overflow 以及 underflow 這兩 種情形。所以說,我們必須自行定義負數的表示形態,亦即我們將 MSB 為 1 的分持數 表示為負數,反之則為正數。而為了對判斷的結果保密,所以必須也將判斷的結果使用 分持型態的數值來表示。根據判斷的結果,protocol 回傳值為 1 表示結果為 true、0 表 示結果為 false,且存在於 Domain 為 Z2 內。 以 negative? protocol 來判斷一個分持的數是否為負數,亦即判斷是否小於零;以 less_than protocol 來判斷一個分持的數是否小於另外一個分持的數,且兩數必須在相同 的 Domain 內。great_than protocol 則是跟 less_than protocol 相反。以下簡單介紹其性質 23.

(33) 與格式。. Specification: negative? negative? (x1 , x2) → (y1 , y2) y1 + y2 =. 1. , if x1 + x2 < 0,. 0. , otherwise.. Protocol: negative? 1.. Two parties collaboratively execute the Zn-to-Z2 { k } protocol (x1 , x2) → ((b01 , … ,. bk1), (b02 , … , bk2)), such that bi = bi1 + bi2 (mod 2), and (bk … b0)2 = x1 + x2. 2.. 政 治 大. Party 1 and Party 2 collaboratively execute yi = bki , for i = 1, 2, such that y1 + y2 =. 立. (bk)2 and bk= bk1 + bk2 (mod 2).. ‧ 國. 學. Algorithm: negative? # Return the MSB of input x.. ‧. zn_to_z2(x).last. sit. y. Nat. er. io. Specification: less_than Less_than? ((x1 , x2) , (y1 , y2)) → (z1 , z2). al. n. z1 + z2 =. 1. , if (x1 + x2)< (y1 , y2),. 0. , otherwise.. Ch. engchi. i Un. v. Protocol: less_than Two parties collaboratively execute the negative? protocol (y1- x1, y2- x2) → (z1 + z2), z= z1 + z2 (mod 2).. Algorithm: less_than negative?(x - y). 24.

(34) Specification: great_than Less_than? ((x1 , x2) , (y1 , y2)) → (z1 , z2) z1 + z2 =. 1. , if (x1 + x2) > (y1 , y2),. 0. , otherwise.. Protocol: great_than Two parties collaboratively execute the negative? protocol (y1- x1, y2- x2) → (z1 + z2), z= z1 + z2 (mod 2).. 政 治 大. Algorithm: great_than negative?(y - x). 立. ‧ 國. 學. 4.2.4 if_then_else Protocol. ‧. 由於目前的多方安全計算系統只能表示數值型態,所以對於處理 IF 函數的條件值,. sit. y. Nat. 就無法以 Boolean 型態去存取,所以為了對條件值也達到保密的效果,所以依舊是以. io. n. al. er. secret 數值型態的分持數 1 與 0 來表示 true 與 false。. i Un. v. 而條件成立與否後所需執行的運算,也必須以 secret 數值型態來表示,亦即,對於. Ch. engchi. protocol if_then_else 來說,所需輸入的三個參數,其最終的型態都必須為 secret 的數值 型態內容。而回傳的結果為其中一個執行的分支結果。. Specification: if_then_else if_then_else ((b1 , x1 , y1), (b2 , x2 , y2)) → (z2 , z2) such that z1 + z2 =. x1 + x 2. , if b1 + b2 = 1,. y1 + y2. , if b1 + b2 = 0.. z1 + z2 = (b1 + b2)(x1 + x2) + (1 - b1 - b2)(y1 + y2) = (y1 + y2) + (b1 + b2)(x1 + y1 + x2 - y2). 25.

(35) Protocol: if_then_else 1.. Two parties collaboratively execute the Z2-to-Zn { k } protocol ((b1), (b2)) → (b’1 ,. b’2), such that b = b1 + b2 (mod 2), and (b)2 = (b’1)2 + (b’2)2 in Z2. 2.. Party j individually computes sj = xj − yj , for j = 1, 2.. 3.. Party 1 and Party 2 collaboratively execute a Product protocol ((b’1 , s1), (b’2 , s2)). → (t2 , t2) such that t1 + t2 = (b’1 + b’2)(s1 + s2). 4.. Party j individually computes zj = tj + yj , for j = 1, 2.. Algorithm: if_then_else #~ b: 1 or 0 in Z2 , return x or y in domain # if_then_else (b, x, y) b = z2_to_zn([b]). 立. 政 治 大. tmp = product(b, (x - y) % d). ‧ 國. 學. (tmp + y) % d. ‧. 4.3 Protocol for Integer Class. y. Nat. sit. 在多方安全計算的環境下,對於整數運算來說,首先就是必須確定運算所在的值域. n. al. er. io. 大小(Domain),有了 Domain 才具有處理運算的能力,因為 secret 型態的數值資料是處. i Un. v. 於保密狀態的,所以說即使是負責處理運算的 SMC client 端也是無法知曉數值的真實內. Ch. engchi. 容,而因為 secret 型態的數值資料會具有循環的特性,所以要得知 secret 數值資料的真 實內容,必須先將所有的分持資料加總後,再去做 mod 運算,才能得到答案,所以說 所有的整數都處於值域為 Domain 的環(ring)內。 對於一般的程式語言來說,通常定義的 integer 型態的資料,是使用 4 byte 去儲存的, 也就是說整數的範圍為 0 ~ (232-1),通常可表示的範圍會分一半給負數使用,也就是說 在 MSB 為 0 的狀態下為正整數,反之則為負整數,而且採用的是 2 的補數的加減法。 所以再來看多方安全計算下的 secret 數值資料型態,我們一樣可以定義說 MSB 為 0 代表正整數,反之則為負整數。而其 MSB 為第幾個 bit 完全取決於 Domain 的大小,基 26.

(36) 本上 Domain 的大小定義為 2n,n = k+1,也就是說最高位(MSB)為第 k+1 個 bit 且編號為 k,而最低位(LSB)為第 1 個 bit 且編號為 0。 不同 Domain 下的數值資料想要做運算的話,不可直接執行運算 protocol,必須先經 過 Domain 轉換的動作,使得所有數值資料皆在相同 Domain 下才能做運算。而做 Domain 轉換會呼叫到 zn_to_z2 和 z2_to_zn 這兩個 protocol,由於 protocol 的內層會呼叫到 scalar product protocol,使得需要耗費網路傳輸的時間,造成的 cost 會較高,所以能夠盡量減 少 Domain 轉換,就可降低時間複雜度,在設計演算法時,如何減少 Domain 轉換的次 數將會是決定效能好壞的關鍵。. 立. 政 治 大. 對於整數的基本四則運算,皆可實現在多方安全計算的環境中。假設有兩個 secret. ‧ 國. 學. 型態的數值資料 X = x1 + x2 和 Y = y1 + y2,且分持於 client1 和 client2 兩人手裡,即 client1. ‧. 手中擁有的資料為(x1, y1),client1 手中擁有的資料為(x2, y2),且整數運算所採用的. sit. y. Nat. Domain 為 d,數值範圍為 0 ~ (232-1)。. n. al. er. io. 現在要對 X 和 Y 做四則運算,以下為詳細的設計規則以及相關的演算法與程式碼。. 4.3.1 Plus. Ch. engchi. i Un. v. 要求得 X + Y 的結果,只需要將各自手上所持有的部分結果做相加再做 mod 運算,即 為結果。因為根據 mod 運算的定理,. 。. Specification: Plus X + Y = (x1 + x2) + (y1 + y2) = (x1 + y1) + (x2 + y2). Protocol: plus Party 1 and Party 2 individually computes (xi + yi) mod d, for i = 1, 2. No need scalar product protocol. Trivial.. 27.

(37) Algorithm: plus (x + y)%d. 4.3.2 Minus 要求得 X - Y 的結果,只需要將各自手上所持有的部分結果做相減再做 mod 運算,即 為結果。因為根據 mod 運算的定理,. Specification: Plus. 。. 政 治 大. X - Y = (x1 + x2) - (y1 + y2) = (x1 - y1) + (x2 - y2). 立. ‧ 國. 學. Protocol: plus. Party 1 and Party 2 individually computes (xi - yi) mod d, for i = 1, 2. No need scalar product protocol. Trivial.. ‧. Nat. sit. io. n. al. er. (x - y)%d. y. Algorithm: plus. 4.3.3 Product. Ch. engchi. i Un. v. 要求得 X × Y 的結果,必須要先將各自手上所持有的部分結果做相乘,以及做一次 scalar product protocol 所得的結果,將兩結果相加之後再做 mod 運算,即為最後結果。 可直接使用之前已定義好的 product protocol。 使用者必須保證相乘之後的結果依然處於 Domain 之內,否則會造成 overflow 的情形, 且經由 mod 運算完之後的結果將會輸出非預期的結果。. 28.

(38) Specification: Prodoct X × Y = (x1 + x2) × (y1 + y2) = (x1 × y1) + (x1 × y2) + (x2 × y1) + (x2 × y2) product((x1 , y1), (x2 , y2)) → (z1 , z2) such that z1 + z2 = (x1 + x2)(y1 + y2). z1 + z2 = x1y1 + x2y2 + (x1y2 + y1x2). Protocol: Prodoct 1. Party 1 and Party 2 jointly execute the Scalar-Product protocol ((x1 , y1), (y2 , x2)) → (t1 , t2) such that t1 + t2 = x1y2 + y1x2 . 2. Party j individually computes zj = tj + xjyj , for j = 1, 2.. Algorithm: product. 立. t = (x × y)%d. 政 治 大. ‧ 國. 學. s = case(@client_type) when 1 then scalar_product(x, y, d) when 2 then scalar_product(y, x, d). io. sit. y. Nat. 4.3.4 Division. er. (t +s)%d. ‧. end. al. n. iv n C 要求得 X÷Y 的結果,必須決定好輸出的數值型態。整數的除法運算結果會得到商跟 hengchi U 餘數,若是想求得具有小數點的數值時,要使用浮點數的除法運算 protocol,且還要先 經過整數轉浮點數的型態轉換才行。這裡將使用的是整數的除法輸出。 由於是分持的被除數與除數,所以無法直接得知其值,而若是要做長除法,需先將 被除數與除數由 10 進位轉換成 2 進位,之後再開始做除法的動作。除數先對齊被除數, 被除數減除數後的結果若是小於 0,則被除數不變繼續往下做並記錄 0,若是大於 0,則 記錄 1 並將結果設為被除數,接著重新跑上述的流程,直到跑完最後一個位元為止。最 後再將記錄的結果由二進位轉為十進位,則為商,而之前剩餘的被除數則為餘數。. 29.

(39) 其中 Domain 轉換的功能,使用到 z2_to_zn 以及 zn_to_z2 這兩個 protocol,而比大小 的功能,此使用到的 protocol 為 negative?,這是用來判斷一個分持的數是否小於零,主 要是利用 MSB 是否為 1 來判斷結果。且還會使用到 if_the_else 這個 protocol,利用 negative? 的結果以取得該往哪一步去做的結果。由於使用到了 if_the_else 這個 protocol,所以底 下的兩個 block 都會被執行,且除法也使用到了迴圈,所以整數範圍因為是 0 ~ (232-1), 以至於說上述的流程將會是執行 32 次,執行時間上所花費的時間較多。. Specification: division. 治 政 使用長除法的方式來處理 secret 型態的數值資料。 大 立 bit 的值為比較對象,兩數相減判斷是否小於 0,若是 由除數對被除數每 shift 一個 X ÷ Y=Q…R. ‧ 國. 學. 小於就填 0 並將被除數重新設定為相減完的數,反之則填 1,這樣依序檢查完所有 的 bits,最後將結果從二進位轉乘十進位即為商,剩下的被除數即為餘數。. ‧. Protocol: division. y. Nat. sit. 1. Two parties collaboratively execute the z2_to_zn(zn_to_z2 { k’ }) {2k’} protocol ((x1,. io. er. y1), (x2, y2)) → ((b01 , . . . , bk’1 ), (b02 , . . . , bk’2)) → ((u1, v1), (u2, v2)), such that bi = bi1 + bi2, for i = 0 … k’ and (x1 + x2) = (u1 , u2), (y1 , y2) = (v1 , v2).. al. n. iv n C h e ncomputes Party 1 and Party 2 individually (u - v * 2 ) % d, for j = 1, 2. g c h ti = U. 2. For i = k’ − 1, … , 0, repeat Step 2A to Step 2D. A. B.. j. j. j. i. Two party collaboratively execute the negative? protocol (t1 , t2) → (b1 , b2), such that b = b1 + b2(mod 2).. C.. Party 1 set qi1 = (1-b1) mod 2 and Party 2 set qi2 = b2.. D.. Two party collaboratively the if_then_else protocol ((s1, u1, t1) , (s2, u2, t2)) → (u1 , u2), such that u has been resettled.. 3. Two party collaboratively the z2_to_zn {k’} protocol ((q01 , . . . , qk’1 ), (q02 , . . . , qk’2)) → (q1, q2) and (r1, r2) = (u1, u2). 4. Party 1 and Party 2 individually has ((q1, r1) , (q2 , r2)).. 30.

(40) Algorithm: division u = z2_to_zn(zn_to_z2(x)) v = z2_to_zn(zn_to_z2(y)) q = [] 31.downto(0) do |i| t = (u - v * 2**i) % d s = negative?(t) q[i] = case(@client_type) when 1 then (1+s) %2 when 2 then s end u = if_then_else(s, u, t). 立. end [z2_to_zn(q), (u % d)]. 政 治 大. ‧ 國. 學. 4.4 Protocol for Float (Double) Class. ‧. sit. y. Nat. 目前處理浮點數的加減乘除運算,目標是模仿 IEEE 754,以達到可表示 IEEE 754 所定. io. n. al. er. 義的浮點數表達範圍。目前先以單精度浮點數為目標,建構出 Float 型態的浮點數。. Ch. engchi. i Un. v. 圖 3: Float 型態的記憶體儲存方式。. 浮點數的資料形態是由三個部分所組成的,分別是 sign、exponent、mantissa,且三 者的值域分別為 Z2、Z2^8、Z2^23,但是為了往後設計演算法上的方便,決定在資料結構 內部,改以 Z2^26 來定義 mantissa 的值域,這是為了使得當初 IEEE 754 表示法所省略的 整數位數 1 也給放進來,使得第 24bit 不為 0,且當 mantissa 執行加法的運算時,可能 會造成進位的情形,所以多保留了第 25bit 來儲存進位的 1,以此為緩衝,而當 mantissa 執行減法的運算時,不但可能造成進位的情形,還有可能出現負數的狀況,所以又多增 31.

(41) 加了第 26bit,以此為 MSB 來判斷 mantissa 的正負號,之後再做 sign 與 exponent 的調整。 IEEE 754 裡定義的浮點數表示法,其所能表達的數值範圍是有其限制的,根據不同精 度的浮點數表示法,可表示的數值範圍也不同,這裡將以單精度浮點數 Float 型態做為 多方安全計算裡浮點數運算設計的參考。Float 可表示的有效範圍以二進位表示為± (2-2-23) × 2127,十進位表示法約為 ± 1038.53 左右。而在可表示範圍外的數則可分為五類, 分別為以下幾種情形: 1. Negative numbers less than -(2-2-23) × 2127 (negative overflow) 2.. 治 政 Negative numbers greater than -2 (negative 大 underflow) 立 -149. 4. Positive numbers less than 2-149 (positive underflow). 學. ‧ 國. 3. Zero. ‧. 5. Positive numbers greater than (2-2-23) × 2127 (positive overflow). y. Nat. sit. IEEE 754 將此種極值定義為 Infinity 或 NaN,亦即是遇到 E 為 0 或者是 255 的情形,. n. al. er. io. 若是此數值為 Infinity 的運算,則有可能的輸出為 Infinity 或 NaN,分別表示極值跟不存. i Un. v. 在。而 Zero 則是另外定義其值,亦即將 S、E、M 的值皆設為 0,以此來表示零。. Ch. engchi. 而在 secure multi-party computation 的計算中,皆是以分持的數值型態來做運算,當 遇到此種極值的狀態時,由於分持數是以環的概念來表示的,所以當運算中有 overflow 或 underflow 的情形發生時,經過模(Mod)運算之後,依然會處在 Domain 可表示的範圍。 所以說經過 secure multi-party computation 之後所得的值,在例外情形出現後有可能得 到非預期的結果,亦即計算完得到不正確的答案,並且不提出例外情形的警告,以避免 被有心人士依此來猜測其運算所輸入的數值內容,所以使用者在使用浮點數運算來設計 script 時就必須自己把握好計算時可能產生的例外情形。 在設計浮點數的四則運算時,會需要用到之前所定義好的 building blocks,例如整數 32.

(42) 的四則運算,利用現有的基礎運算單元,來組合出更複雜的 building block。 首先假設浮點數的型態為 S×M×baseE,則我們定義一個浮點數的物件型態為 F,其中 包含了三個 secret 型態的數值資料,分別為 S、M、E 的分持型態的數值,S 表示 sign、 E 表示 exponent、M 表示 mantissa,則浮點數 F 的值為 S×M×baseE 運算所得的結果。現 在我們可以來定義出 F1 = S1 × M1 × 2E1、F2 = S2 × M2 × 2E2,想求得 F1+F2、F1-F2、F1 × F2、 F1 ÷ F2 的四則運算結果。. 4.4.1 Float Plus & Float Minus. 立. 政 治 大. 浮點數的加減法運算,可視為同一個要解決的問題,因為透過 sign bit 可決定數值的. ‧ 國. 學. 正負,可利用相同的演算流程解出答案來,其中還必須要解決數值型態的轉換問題以及 小數點對齊的處理,都要解決分持形態所帶來的計算上的困難。. ‧. io. sit. y. Nat. 演算流程如下所示:. er. Specification: float plus & float minus. n. al. v. 2.. C mantissa M1 and M2.U n i According the E to alignmenth engchi Adding sign to change the mantissa’s sign.. 3.. M = M1 ± M2. 4.. Checking the result M’s sign and changing the M’s sign as new sign S.. 5.. According the sign S to alignment the new mantissa by 1 bit.. 6.. Select exponent E1 or E2 as E, and according the sign S to modify the new. F1 ± F2 = S × M × 2E 1.. exponent by 1 bit. 7.. Return (S, E, M). 33.

(43) Algorithm: float plus & float minus F1 ± F2 = S × M × 2E 1.. e = E1 – E2 = E1 + (–E2) 1.1. m1 = Shift-right(((S1 == 0) ? M1 : -M1), △e) If (△e < 0). 1.2. m2 = Shift-right(((S2 == 0) ? M2 : -M2), △e) If (△e > 0). 2.. m1 , m2 = s × m1 , s × m2. 3.. M = m 1 ± m2. 4.. S = (M < 0) ? 1 : 0. 5.. M = (M < 0) ? Shift-Right(M, 1) : M. 6.. E = (M < 0) ? E+1 : E. 7.. Return (S, M, E). 立. 4.4.2 Float Product. 政 治 大. ‧ 國. 學. 浮點數的乘法運算則較為單純一些,因為小數部分不需做對齊的動作,所以可以直. io. sit. y. Nat. 免的,也是會遇到數值型態的轉換。演算流程如下所示:. n. al. er. Specification: float product F1 × F2 = S × M × 2E. ‧. 接做相乘的動作,且指數部分做相對應的加減法就可得到新的浮點數答案。其中不可避. i Un. 1. Ch Check the sign of new result.. 2. Compute the new exponent E.. 3. Change M’s domain from Z(2^26) -> Z(2^52).. 4. M = M1 × M2. 5. According the MSB of M to alignment the mantissa M.. 6. Return (S, E, M).. engchi. 34. v.

(44) Algorithm: float product 1. S = (S1 + S2) mod 2. 2. E = (E1 + E2) mod 28. 3. M = (M1 × M2) mod 248. 4. M = M.to_a. 5. M = (MSB of M is 0) ? (M[1, 24].to_i) : (M[0,24].to_i). 6. Return (S, M, E). 4.4.3 Float Division. 政 治 大 法運算。而這個地方又會遇到當初整數值做除法所遇到的問題,而要處理未能整除的部 立 浮點數的除法運算有些類似乘法運算,差別在小數部分的地方要改為分持數值的除. ‧ 國. 學. 分,則是改利用將被除數放大的辦法,將被除數往左 shift,使得當做完除法時,小數位 數的部分可變成整數除法的商,如要用偵測是否除盡的方式來檢查,這將會造成不可接. ‧. 受的計算成本,所以直接使用整數除法的概念來處理即可。而由於做了被除數往左移的. sit. y. Nat. 動作,所以會造成有一半的除法所做的運算結果均為零,所以可以省略掉,只需做一半. n. al. er. io. 的除法運算,其餘剩下的就是處理浮點數的 S、E、M 的調整。 演算流程如下所示:. Ch. engchi. i Un. v. Specification: float division F1 ÷ F2 = S × M × 2E 1. M1, M2 change domain from Z(2^26) -> Z(2^52), and M1 shift left 24 bits.. 2. Division: q = M1 / M2. 3. According the MSB of q to alignment mantissa by 1 bit.. 4. Check the sign of new result.. 5. Compute the new exponent E.. 6. Return (S, E, M).. 35.

(45) Algorithm: float division 1. M = (M1 × 224 )÷ M2 mod 248. 2. M = M.to_a. 3. Flag = (MSB of M is 0)? 1 : 0. 4. M = (MSB of M is 0) ? (shift-left(M[1, 24]).to_i) : (M[0,24].to_i). 5. S = (S1 + S2) mod 2. 6. E = (E1 - E2 + flag) mod 28. 7. Return (S, M, E). 4.5 A Translator based Protocol development Tool. 治 政 大 研究的議題是放在算術計算上,所以必須要提供使用者一個使用的介面,這裡就要 立. 提出一種語法,使得使用者可簡單寫出簡單的 script,且是以熟悉的方式來撰寫,其中. ‧ 國. 學. 的四則運算表達式,主要是以“+”、“-”、“×”、“÷”為運算符號 ,如此一來,. ‧. 就可簡單的寫出運算式來。且還支援一般程式可用到的迴圈及 if 判斷式,增加了此語法. sit. y. Nat. 的表達能力。使用者用此種語法寫出來的 script 將稱之為 user code。至於說要如何轉換. io. n. al. er. 為 secure multi-party computation 可接受的 SMC code,則是此翻譯工具工作。. i Un. v. Translator 主要是針對四則運算在做轉譯的動作,而寫程式常用到 loop 以及 if 當然也. Ch. engchi. 必須提供轉換上的支援,對於 loop 的使用上,目前還不支援迴圈內的條件判斷式以多 方安全計算之 protocol 來實作,所以說,這點必須使用者設計 script 時要多注意。 且關於 if 的使用,使用者設計 script 時也要知道,由於是多方安全計算的關係,會將 if 內的兩個 branch 皆執行過,才會跟據條件判斷式得出最後的結果,所以說,如何減少 多餘的計算則必須靠調整使用者寫 script 的邏輯來幫忙。. 4.5.1 Translation Tool Secure Multi-party Communication System 使用 Ruby 為開發的語言,Ruby 提供了不少 36.

數據

表  1: Building Block.
圖  1: SMC scalar product protocol 的運算架構圖。
表 3:已完成的 Protocols &amp; Building Blocks.
圖  2: SMC 的系統架構圖。
+7

參考文獻

相關文件

路徑 I 是考慮空氣的阻擋效應所算出的運動路徑。球在真 空中的運動路徑 II 是以本章的方法計算出的。參考表 4-1 中的資料。 (取材自“ The Trajectory of a Fly Ball, ” by

各國的課程綱要均強調運算的概念性了解。我國 2009 年課程綱要談到所謂

•至最近連續居留港澳或 海外期間之計算,係以 本簡章申請時間截止日 為計算基準日往前回溯 推算6年或8年。但計算 至西元2015年8月31

• 至最近連續居留港澳或 海外期間之計算,係以 本簡章申請時間截止日 為計算基準日往前回溯 推算6年或8年。但計算

預算科目部分,總預算、特別預算及政事型特種基金填至業務(工作)計畫;業權型基金填至損益表(收支餘絀表)3級科目(xx成本或xx費用);財團法人填至收

(二)計算方式:雇主繼續僱用於前款計算期間內,預估成就勞動基準

明龍計算一題兩個數相加的數學題目,不小心算成了相減,所得到的答

 法國農業四個機構跨業合作研發成功的 Pl@ntNet App, 目 前已經可以辨識八百多種歐洲植物,中長期目標希望