學術研究 密碼學

MPC-in-the-head 是什麼東西?

最近一直看到 MPC-in-the-head,但沒有找到一個比較滿意的介紹,今天應該是看懂了,特撰此文留念。

MPC 是什麼

為了避免有人不知道 MPC 是什麼(雖然我猜能看到 MPC-in-the-head 的人應該都至少知道 MPC 了),這邊請 ChatGPT 回答。

MPC 是「Multi-Party Computation」(多方計算)的縮寫,它是一種保護數據隱私的密碼學技術。MPC 允許多個參與方在不公開其私人數據的情況下進行計算,並最終獲得計算結果。這種技術的主要目標是在不揭示數據的情況下,讓多個參與方進行合作計算。

而要解釋 MPC-in-the-head,還需要更深入的說明會發生什麼。MPC 的主要目的是讓一群人在彼此都有隱私資訊的狀況下,共同執行某些運算。舉例而言,想要計算公司內所有人的薪資,但不希望讓大家直接說出自己的薪資,就可以通過 MPC 來達成。

而因此,我們可以列出幾個步驟:

  1. 初始設置:主要是為了實際計算時需要用到的數學工具進行提前約定
  2. 本地運算:參與方自行運算,產生用於交換的資訊,該資訊無法回推原本的輸入值
  3. 資訊交換:參與方互相交換結果
  4. 合併結果:將交換出來的結果合併,產生最終值

安全性需求上,我們需要確保參與方的輸入是隱私的,以及產生出來的結果是正確的。具體而言,正確性的需求是指攻擊者無法使誠實方產生不正確的結果(例如薪資總和中,不應該讓攻擊者可以貢獻負值)。

也就是說,如果 MPC 在蒐集了所有參與者的輸入後產生了值,我們可以信任如果把所有人的輸入都蒐集起來我們自己執行也會得到相同結果。

MPC-in-the-head 又是什麼

In the head 顧名思義,就是在腦內。
在一開始看到 In the head 的時候我確實不懂這想幹嘛,畢竟多方運算如果在一個人腦內執行的話那幹嘛不直接計算,而這也是(我認為)最有趣的地方。

前面有提到 MPC 的特性:輸入和輸出有正確性保證,輸入有隱私保證。那我們有沒有可能把這兩個性質抽出來利用呢?MPC-in-the-head 的意思就是某個角色自行執行所有 MPC 的流程,並將其中一部分資訊抽出來利用。

例如零知識證明(糟了,我零知識證明的文章沒寫完),我們需要做到的三個性質:正確性(Correctness)、健全性(Soundness)、零知識(Zero Knowledge),就可以對應到 MPC 的正確性與隱私保證。

在一個零知識證明過程中,我們可以讓證明者執行 MPC 的所有步驟。證明者將 Witness 拆分成許多個碎片,接著執行一個 MPC 協議,將每個碎片作為一個參與者,而共同計算的內容便是將所有參與者的輸入混合後放入零知識證明的電路的結果(零知識證明的電路只會有成功或失敗兩種狀態)。

詳細地說,在 MPC 當中會有一個名為「視圖」(View)的產物,內容包含輸入、隨機輸入、來自其他參與者的資訊。知道輸入和其他參與者傳出的資訊後,藉由 MPC 的正確性保證我們就可以計算出結果,同時這些資訊並無法得知其他的輸入。因此我們可以確認證明者的輸入是否真能產生「成功」的結果。

也就是說,在這個零知識證明方案裡,證明者執行 MPC 的步驟來獲取視圖,從中獲得 MPC 的正確性與輸入隱私的保證,滿足了零知識證明的正確性與零知識性的要求。驗證者執行 MPC 的部分步驟來檢查結果,以此滿足零知識證明的健全性。

因此,在零知識證明的挑戰階段中,我們就可以隨機抽選部分的參與者,將這些參與者的視圖當作證明,進而構建一個零知識證明系統。如此一來,只要我們有一個安全的 MPC,我們就有可能構建安全的零知識證明系統。

結尾

MPC-in-the-head 好像從很久以前就一直看到,但由於 MPC 確實有點遙遠,就一直沒有了解到底是什麼。最近可能 MPC 又熱門起來,這個詞出現的頻率高到無法不去理解那是什麼,因此有了這篇文的誕生。

我想 MPC-in-the-head 對我而言最大的價值是如何在其他 Primitive 中抽出想要的性質,確實一開始完全不能想像 MPC 和 Zero-Knowledge 要怎麼有關聯,看完之後不經「還有這招啊?」。

參考

https://web.cs.ucla.edu/~rafail/PUBLIC/77.pdf
https://www.youtube.com/watch?v=-HbqdiCzqE4

在〈MPC-in-the-head 是什麼東西?〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *