• 沒有找到結果。

以下是由基礎的 secure scalar product protocol 所建構出來的 protocols。接著並依此 在建構出較為複雜一些的 protocols。

表 3:已完成的 Protocols & Building Blocks.

Primitive building blocks Useful building blocks

Add 不同的 Domain D,使得可應用在不同的運算需求上。而處理浮點數的 building block 還 需另外設計,像是浮點數的儲存資料結構、數字的儲存型態、浮點數計算的例外發生處 理機制等等。之後將會接著介紹有關浮點數的算術運算設計與實作。

3.4 System Architecture

建立安全多方計算的系統,其包含了負責處理基本 secure scalar product protocol 的處 理單元,以及負責處理運算指令之控制元,此兩者相互合作,控制元依據運算之指令呼 叫相應的運算協定,運算協定內可呼叫執行 scalar product protocol。本系統根據使用者 所輸入的運算指令,經由執行各個對應的運算 protocol 來處理命令的運算內容,最後得

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

16

出分持的運算結果。其中 scalar product protocol module 經由模組化,使得各個運算 protocol 可直接呼叫使用。

此多方安全計算系統簡稱為 SMC 系統,其可接受已定義過的多方安全計算協定,依 據不同的運算協定,循序執行使用者要求的指令。由於多方安全計算的運算問題可能並 不只是簡單的算術運算,而是一些複雜的演算問題,所以說,一個運算問題裡面可能包 含了多個運算指令,其可寫成一個 script,可被 SMC 系統解譯,並且被執行。

SMC 系統可接受的 script,此種 script 簡稱為 SMC code,使用者當要撰寫一個多方安 全計算問題的 script 時,並不需要寫出 SMC code,由於 SMC 系統接受的 script 撰寫貣來 較為繁雜,而使得學習撰寫多方安全計算程式難度提高,所以是希望能夠讓一般的使用 者能夠使用常用的算術運算符號取代較為繁雜的多方安全計算協定指令,此種較為簡單 的撰寫方式所寫出的 script,簡稱為 user code。

所以根據之前設計出來的 secure multi-party computation protocols,可定義出一個簡 單的 script 語法[10],由基本的 Ruby 語法再加以改進所形成的語法,經由編譯器的轉換,

圖 2: SMC 的系統架構圖。

分別由 scalar product protocol module 以及各種 operation protocols 所組成,並且具備 解譯運算指令的功能,提供算術運算的服務。

SMC client 1、SMC client 2 和 user。其中 user 是提供運算 script 的角色,此為一般的使 用者。在一個運算流程中,user 將撰寫好的 user code 分別傳送給各個運算執行者,亦 即,SMC client 1、SMC client 2,接著各個運算執行者將接收到的 user code 利用 translator tool 轉譯成系統可接受的 SMC code,之後再將要運算的資料分別準備好之後,就可開始 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

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

18

進行多方安全計算,最後等到做完所有安全計算之後,可分別得到最後的計算分持結果,

之後再將各個分持的結果回傳給 user,當 user 接收到所有的分持結果之後,即可合併出 多方安全計算問題的答案出來,此流程即為一次有效的安全多方計算。

表 4: Computing Flow Chart.

1. 首先啟動好 commodity server、SMC client 1、SMC client 2。

2. 接著 user 寫好要計算的 script。

3. user 將寫好的 script 分別傳送給各執行 者 SMC client 1、SMC client 2。

4. 各執行者分別將接收到的 user code 透過 translator 工具轉換成 SMC code。

5. 開始執行多方安全計算。 6. 執行完成,得到分持的運算結果。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

19

7. 將分持結果回傳給 user。 8. user 將得到的分持結果做合併的處理,將 會得到真正的運算結果。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

20

四、演算法設計

首先這邊將會簡單介紹一下 secure multi-party computation 其使用的前提與限制,接 著再介紹現有的 building block,以及有關數值運算會用到的不同數值型態的運算

protocols,像是一般常用到整數型態(Integer)以及浮點數(Float、Double)的數值運算等等。

基本上資料的運算形態主要是以 secret 為主要型態,以降低資料形態轉換所帶來的 overhead。

由於此 secure multi-party computation system 是建構在有兩個 SMC client 的架構下所 組成的運算環境,所以演算法的設計內容將會使用到的運算者則為兩個,在以下介紹裡 的演算法部分,在程式設計時,以變數@client_type 來判斷 protocol 執行者的屬性,以 此區分是第一人或者是第二人。

相關文件