被載入史冊的炫富

炫富和鬥富,不僅僅是現代才有的,古代也有。並且有兩個人因為鬥富還被載入到《世說新語》裡了,史稱

石崇與王愷爭豪,翻譯成大白話就是

石崇和王愷非得比誰的錢更多。他們誓要在各個方面都表露出自己比對方有錢,甚至連飯後洗碗的水都要比。

假如他們都知道自己的財富有多少,但又不想透露具體的數字,那有沒有一種快捷的方式,能夠讓他們在互相不知道對方家底的前提下,得出誰更有錢呢?

看到這個問題,如果對密碼學有了解的人,這時應該會想到一個技術——MPC(安全多方計算)。

MPC是一種加密協議,允許多方在互不信任的情況下進行協同計算,輸出計算結果,並保證任何一方均無法得到除應得的計算結果之外的其他任何信息。

MPC如何幫助鑑別出誰更有錢呢?

解決方案

我們先做個假定:

1、兩人都值得信任,不會作假;

2、兩人都真情實感地想比較出誰的錢更多。

再來簡化下問題:

我們假設兩人的財產在一千金至一萬金之間,而且他們也只想做千金級的比較,即每個人只在乎在千金級別上是否我的錢比對方多。

問題簡化為:石崇和王愷都清楚自己有幾千金財產,即他們心裡清楚1-10中的一個數代表自己千金級的財富,他們想知道到底誰的數更大一些。

接下來,開始遊戲:

1、找10個一模一樣的箱子,按照1-10編好號。

2、石崇按照自己的財富值分別往每個箱子裡,放入蘋果、梨和香蕉。具體放法為:如果箱子編號小於自己千金級的財富則放蘋果;箱子編號和自己的財富相等,則放入梨;箱子編號大於自己的財富,放入香蕉。

4、將10個箱子上鎖,叫來王愷,讓他選擇跟自己財富金額對應的箱子,然後將其它箱子銷毀(這個過程由王愷獨立完成)。

5、兩個人都不知道這個箱子的編號,因為它們是一模一樣的。

6、打開箱子,就能知道誰的財富更多了:

· 如果是蘋果,石崇比王愷富有;· 如果是梨,兩人一樣有錢;

· 如果是香蕉,王愷比石崇富有。

以上這個簡單的例子就是MPC裡最基本的“百萬富翁問題”解決方案。 MPC是非常複雜的密碼學技術,對於非計算機背景的我們來說,了解它的一些相關知識,就能在每次提及MPC時,不至於兩眼一抹黑。而如果你有計算機背景,可以查閱專業的論文以加深理解。

MPC能夠安全地輸出約定好的數值,不僅可以用於不同組織間的敏感數據共享,也可以用在同一組織間不同團隊、不同部門間的數據共享。

此外,MPC的特性和原理,對於解決區塊鏈的兩大瓶頸問題,有一定幫助。

區塊鏈與MPC的結合

區塊鏈技術發展至今,面臨著兩大挑戰:一是公開數據帶來的隱私問題;二是鏈上無法進行高效計算處理的性能問題。

隱私問題不但包括區塊鏈上記錄的交易信息的隱私,還包括區塊鏈上記錄以及傳遞的其他數據的隱私,這一點在大數據時代尤為重要。而高性能計算一直都是區塊鏈發展的一個瓶頸,在公有鏈中,大量節點需要全部對計算任務進行處理,以保證計算任務處理結果的準確性和不可修改性。但這樣做造成了嚴重的資源浪費和低效,同時,為了取得去中心化的效果,搭建節點的要求又不能太高,這一點又進一步影響了單個節點處理任務的能力。

這時候,安全多方計算的輸入隱私性、計算正確性、去中心化等優點就可以很好地幫助解決這些問題。