• 沒有找到結果。

在資訊安全的範疇內,安全多方計算(Secure multi-party computation, SMC)是一個重要的研究 主題,它的目標是使得多個對彼此秘密充滿好奇心的參與方,在不洩漏各自私有資訊給其他參

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 的原始資料是m,加密後是c,c 和c 做安全運算的結果是c,和 m、m 做完運算再加密的結

圖 2.1.1 安全多方計算的議題起源於百萬富翁問題

果一樣,這類作法計算成本頗高,且有可能會洩漏部分資訊之虞。

c

1

= E(m

1

) c

2

= E(m

2

) c = c

1

⊗ c

2

c = E(m

1

⊙ m

2

) ⊗、⊙為某種運算 表 2.2.1 同代加密的密碼協定 2.2.2 資訊理論上安全的多方計算協定

第二類安全多方計算協定是從資訊理論上安全的角度出發(Information -theoretically Secure),

在資料擁有的各方之外,引入一個第三方的公正伺服器(commodity server)[14],在不介入各 方的計算的前提下,提供亂數的服務來協助各方隱藏其資料,進而完成安全的計算協定[15]。

圖 2.2.2.1 引入公正伺服器的安全多方計算協定

2.3 加法分持介紹

Shmair 在 1979 年提出了一個針對資訊安全上避免秘密資訊洩漏的保密方法,主要意義是將秘密 資訊以藏寶圖的隱藏方式,將原始的秘密資料(藏寶地圖)分割成數份,交付給所有安全多方

計算的參與者。參與者如果僅僅拿到其中一份藏寶圖,並不能解讀出原始資料(寶藏的藏身之 處)。需要解密(挖寶)時,必須拿到(加總)所有的分持過後的藏寶圖,此種方法可以避免 某部份的人得知完整的秘密資訊,利用這樣的分持概念,設計出來的資料加密方式叫秘密分持

(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 的範圍內,運算的步驟如下:

1. Alice 和 Bob 兩造皆能同意有一個 Commodity server(semi-trusted commodity

server)來提供亂數參與向量內積運算。首先這個 Commodity server 要做的工作是先從整 數域中產生兩個 1 * n 的隨機量數向量 RA = [ RA1, RA2, … , RAn ] 與 RB = [ RB1, RB2, … ,

Goldreich et al [8] 所提出的組合安全定理(compositionally secure theorem),也就是將運算 做結合時,中間的產生值會是下一次運算的輸入值,來確保所有過程中運算都能維持資訊理論 安全,進而來處理更複雜的安全多方計算問題。這個方法雖然可以從資訊理論上證明,不會外 洩資料,需要的效能也比前一小節介紹的協定低,但是從兩造運算擴充成多方計算會造成設計 上的複雜度變高。

相關文件