兩位富翁想要一較高下,比比誰更加富有,同時,也不讓對方知道真實資產數額。在沒有任何可信第三方的情況下,他們應該怎麼做呢?
作者:何劍虹,Safeheron 首席科學家
安全多方計算的誕生
1982 年,姚期智先生,圖靈獎獲得者,在他的論文中提出了安全多方計算這一重要概念。為了形像地介紹安全多方計算這個概念,他提出了著名的 “百萬富翁問題”。
兩個百萬富翁在街頭碰面,為了爭一口氣,希望 PK 出誰更加富有,同時希望能讓對方不知道自己資產的真實數額。
這篇論文開創了一個重要的領域——安全多方計算領域。下面我們介紹一下安全多方計算的概念。
什麼是安全多方計算
安全多方計算(Secure Multi-Party Computation)的研究主要是針對在無可信第三方的情況下,如何安全地計算一個約定函數的問題。安全多方計算是電子投票、門限簽名以及網上拍賣等諸多應用得以實踐、落地的密碼學基礎。安全多方計算通常縮寫為 SMPC 或者 MPC。
關於安全多方計算的安全性:一個安全多方計算協議,如果對於擁有無限計算能力攻擊者而言是安全的,則稱作是信息論安全的或無條件安全的;如果對於擁有多項式計算能力的攻擊者是安全的,則稱為是密碼學安全的或條件安全的。
關於安全多方計算涉及到的技術種類很多。比如姚先生提出的混淆電路(Garbled circuits)、不經意傳輸(Oblivious Transfer)、零知識證明(Zero Knowledge Proof)、同態加密(Homomorphic Encryption)等等,未來會通過 Blog 逐篇介紹。
安全多方計算的主要特點
輸入隱私性
安全多方計算研究的是各參與方在協作計算時如何對各方隱私數據進行保護,重點關注各參與方之間的隱私安全性問題,即在安全多方計算過程中必須保證各方私密輸入獨立,計算時不洩露任何本地數據。
計算正確性
多方計算參與各方就某一約定計算任務,通過約定 MPC 協議進行協同計算,計算結束後,各方得到正確的數據反饋。
去中心化
傳統的分佈式計算由中心節點協調各用戶的計算進程,收集各用戶的輸入信息,而在安全多方計算中,提供一種去中心化的計算模式,各參與方地位平等,不存在任何有特權的參與方或第三方。
多方簽名中的安全多方計算場景
分佈式私鑰分片生成
在傳統的私鑰生成中, 生成一個公私鑰對,其中公鑰公開,對應著資產賬戶,私鑰由特權人員管理。分佈式私鑰分片生成,與傳統的私鑰生成完全不同。私鑰並不是由單個人在本地獨自生成,而是所有參與者根據預先指定的門限 t 和參與人數 n,執行一個 MPC 密鑰生成協議。當協議結束以後,所有人都能得到自己的私鑰分片,以及一個共同的公鑰。這個公鑰對應著資產賬戶,對應私鑰從未出現過。因此,公鑰對應的資產由所有參與者共同管理。當密鑰分片完成後,每個人都只掌握一個私鑰分片,為了獲取真正的私鑰,攻擊者需要獲取不低於門限數的私鑰分片,才能恢復真正的私鑰。
分佈式私鑰刷新
為了進一步提高安全性,一套密鑰分片每隔一段時間會執行一次密鑰刷新協議。協議結束後,每個人會得到一份新的私鑰分片,同時舊的私鑰分片全部作廢。這種操作能有效的防止攻擊者分別竊取每個人的私鑰分片從而恢復私鑰。因為,每次密鑰刷新後,舊的私鑰分片全部作廢,導致攻擊者前功盡棄,必須重新開始竊取攻擊,從而指數級的提升了攻擊難度。
分佈式私鑰分片簽名
為了獲得有效的簽名,生成有效的單簽名交易,必須由滿足門限數的參與者共同運行 MPC 多簽協議。協議結束以後,所有人將獲得一個相同的、有效的簽名。在協議運行期間,所有參與者的私鑰分片都不會洩漏。
常見的 MPC 多簽協議
在 MPC 多方簽名領域中,根據應用場景的不同,我們需要實現各種各樣的 MPC 協議,包括但不限於:
- MPC-ECDSA 協議
- MPC-Eddsa 協議
- MPC-BLS 協議
- MPC-Schnorr 協議
- MPC-HMAC 協議
首先要提到的是 MPC-ECDSA 協議。由於大多數區塊鏈都使用了基於橢圓曲線 Secp256k1 的 ECDSA 作為其簽名算法,因此 MPC-ECDSA 始終是關注度最高的 MPC 協議。因為 ECDSA 的多方協議的研究難度要明顯高於其他簽名,因此 MPC-ECDSA 協議是經過了很長的時間研究出來的。
最快取得突破的是兩方 ECDSA 協議。Lindell 提出了一個不錯的兩方 MPC 協議,參考論文 《Fast Secure Two-Party ECDSA Signing》,這裡付諸實用的比較有代表性的是 ZenGo 的無私鑰錢包。
另一個設計兩方 MPC-ECDSA 協議的方向是使用姚期智先生提出的混淆電路,Unbound Security 實現和落地了這樣的方案。
緊接著,在通用門限簽名領域的 MPC-ECDSA 協議也取得了進展,做出重要貢獻的有 Gennaro and Goldfeder、Lindell、Doerner、Canetti 等人。基於以上幾人的貢獻,有密碼學科研實力的公司開始實現他們自己的算法,正式開啟了新的時代。
由於越來越多的、新的區塊鏈的推出和應用,人們開始對更多的 MPC 多簽協議有了需求,包括但不限於 MPC-EdDSA 協議、MPC-BLS 協議、MPC-Schnorr 協議。相比於 ECDSA,儘管 EdDSA、BLS、Schnorr 等簽名算法對應的 MPC 協議要容易一些,在實現算法時依然要小心謹慎,因為需要避免很多的安全陷阱。
此外,如果需要在同一個地方管理不同平台上的資產,人們還需要實現更多的協議,比如 MPC-HMAC 協議。MPC-HMAC 協議的實現面臨很嚴重的性能問題,需要對其多次優化。
Safeheron 與 MPC
為了滿足區塊鏈領域對各種各樣 MPC 多簽協議的需求,為了滿足算法適應於多平台(Windows、Linux、macOS、Intel SGX、Android、iOS、WASM)的需求,Safeheron 開發了一系列的基礎密碼學算法庫和多種應用級 MPC 協議。
在不遠的未來,Safeheron 會逐步開源自己的算法庫,各方可以檢視算法的安全性。
結論
基於安全多方計算的多方簽名技術,在鏈上只有一個私鑰存在,通過密碼學技術,徹底去除了私鑰單點風險。從始至終,單點私鑰都未出現。通過多個私鑰分片,不同參與方在簽名時通過 MPC 協議計算出最終簽名,且此簽名能通過對應的單個公鑰的驗簽。這一類技術稱為 MPC 多簽。
作為最新一代的簽名技術,MPC 多籤的地位變得越來越重要,Safeheron 將繼續在該領域開展研究,並做出自己應有的貢獻。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。