比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > BTC > Info

基于 2-of-2 多方安全計算的 MACI 匿名化方案_ACT

Author:

Time:1900/1/1 0:00:00

這篇文章將展示基于2-of-2MPC技術的MACI匿名化方案的具體實現。本文核心內容主要分為三個部分:從任意算法到邏輯電路的實現;從邏輯電路到混淆電路的實現;利用不經意傳輸實現多方安全計算。最后,我們總結基于多方安全計算的匿名化方案。

感謝FelixCai對MACI和隱私投票中多個問題的討論。

這篇文章將展示基于2-of-2MPC技術的MACI匿名化方案的具體實現。本文核心內容主要分為三個部分:從任意算法到邏輯電路的實現;從邏輯電路到混淆電路的實現;利用不經意傳輸實現多方安全計算。最后,我們總結基于多方安全計算的匿名化方案。

算法

在MACI系統中,操作員Operator管理著一個數組,這個數組記為deactivate,其元素個數與registry數組中的元素個數相同。數組中每個位置的編號代表了key值,而每個位置存儲著對應的公鑰。為了更好地理解deactivate數組,可參考如下例子:在deactivate數組中,假設registry中的用戶1發起了deactivatekey操作,操作員O收到該操作請求后,如果操作的合法性被O承認,O在deactivate數組中的第一個位置填入registry數組中第一個位置所包含的value值。另外,假設用戶O沒有發起deactivatekey操作,那么deactivate數組中的第二個元素的值為0。這樣一來,deactivate數組的元素個數和registry數組中的元素個數相同就可以理解了。

現在,為了實現MACI系統對管理員的匿名性,需要設計一個2-of-2的MPC方案來實現以下兩個性質:

邏輯電路的生成原理

為了簡單起見,暫且假設一個公鑰由二位二進制數來表示。那么,現在就需要用用戶A的輸入公鑰,對比deactivate數組中的二把公鑰。因此,需要對比二次。

邏輯電路由邏輯門組成,邏輯電路中的邏輯門被分為?層,比如上面的電路是兩層。邏輯門第一層需要用戶來添加輸入,其他層是中間節點,最后是根節點。對于用戶輸入的邏輯門,有兩個輸入和一個輸出。其中一個輸入由用戶A完成。另外一個由O完成。這三個邏輯門組成了一個子邏輯電路。這個子邏輯電路負責一次公鑰的對比。

ZigZag 開始搭建基于 Mimblewimble 的 ZK rollup 支付系統:3月16日消息,ZigZag 開始搭建基于 Mimblewimble 的 ZK rollup 支付系統 ZigZag InvisibL3。該項目由 0xonurinanc 帶領,旨在突破零識技術的極限,包括將現有的隱私技術擴展到更廣泛的應用程序并構建 L3, 使現有的 ZK 支持系統更強大。

據悉,官方團隊表示,ZigZag InvisibL3 的最終目標是成為最好的隱私 DEX。[2022/3/16 13:59:25]

邏輯電路的生成工具

在現實中,為了讓一個固定的算法轉換成邏輯電路,需要用到一些工具,如

1.VerilogHDL和VHDL:這兩種硬件描述語言被廣泛用于數字電路的設計和仿真,可以使用它們來描述算法的行為,并將其轉換為邏輯電路的形式。這些語言都支持從高級語言轉換為硬件描述語言的形式。使用Verilog或VHDL需要一定的硬件設計和編程經驗。

2.XilinxVivadoDesignSuite:這是一款商業軟件,用于FPGA的設計和開發。它提供了一個綜合工具,可以將高級語言或RTL代碼轉換為邏輯電路的形式。它支持多種編程語言,包括C、C++、SystemC、Verilog和VHDL等。

3.Yosys:這是一款開源的EDA工具,用于數字電路的設計和仿真。它支持從Verilog和VHDL等硬件描述語言轉換為邏輯電路的形式。它也支持從高級語言轉換為RTL代碼,然后轉換為邏輯電路的形式。

混淆電路

邏輯門的加密

回到現在的例子中,因為我們的公鑰在deactivate數組中都是有序號的,且數組deactivate中的最大元素個數是有上限的。因此,假設最大元素個數是N,那么,就需要構建N個子電路,然后合成一個最終的邏輯電路。

RAHO將打造solana鏈上基于 Oracle 的 NFT 競技游戲:據官方消息,Radio-Hero 目前在Pinksale即將上線,RAHO上Solana鏈上基于 Oracle 的 NFT 競技游戲,Radio-Hero 包含Radio-Hero games、Metadata NFT 和Radio-Hero Metaverse對應了不同未來發展的分支。RAHO 采用DAO治理經濟模型實現GameFi+DAO融合。[2022/1/11 8:41:30]

由于邏輯電路在每一個epoch中是固定的,那么,所有用戶都可以使用這個早已經生成好的,并存儲在區塊鏈中的邏輯電路。在本文例子中,由于deactivate數組中只有兩個元素,因此子電路只有兩個。

注:在一個epoch中,registry數組中元素個數是固定的,因此用戶的輸入和數組中的元素的對比次數是固定的,因此邏輯子電路的個數是確定的,且邏輯子電路是事先可以確定好的,因此整個邏輯電路是唯一確定的。

接下來,就是將邏輯電路的每一個輸入進行加密,然后將每一個邏輯門進行混淆。

先考慮加密。加密這個動作是由用戶A完成的。他對每一個輸入和輸出的0和1用加密值表示。注意,最終的根邏輯門的輸出不需要進行加密,在本案例中,就是0,和1。如圖所示:

邏輯電路中的每一條引線的0和1都用加密值代替。同時,每一個邏輯電路都有一個固定的編號。例如,編號1、2、5就構成了一個子電路1。

基于此,將邏輯電路的每一個邏輯門的輸入和輸出進行加密后,在Operator的視角里,對于加密后的邏輯電路,他就不知道每個邏輯門的輸入數字對應的明文。

輸入加密的方法

基于 Solana 的 Messenger Secretum 支持 OTC 和 NFT 功能:10月31日消息,Secretum是一個完全去中心化的即時通訊應用程序,它利用區塊鏈節點來解決這一領域最危險的瓶頸。此外,它還通過 OTC 功能和不可替代的代幣存儲和交易模塊豐富了 Messenger 的使用體驗。(u.today)[2021/10/31 6:22:11]

在混淆電路中,為每個輸入值生成兩個隨機key的過程通常是使用偽隨機數生成器來實現的。常用的生成隨機key的實現和庫有很多,例如OpenSSL、Crypto++、libsodium等。

輸出加密的方法

基于偽隨機函數PRF的方法是Yao的混淆電路中實現對輸出二進制數0和1的加密的主要方法之一。具體來說,這種方法可以實現對每個邏輯門的輸出進行加密,保證了數據的機密性和可靠性。

在基于PRF的方法中,每個邏輯門的輸出都被混淆成為一組包含多個label的二元組,其中每個label都是一個隨機的01字符串。在生成每個label時,可以使用偽隨機函數來實現。具體來說,可以使用一個密鑰和輸入值作為PRF的輸入,然后得到一個隨機的01字符串作為label。由于PRF是一種可以模擬真正隨機數的算法,因此生成的label具有高度的隨機性和不可預測性,保證了數據的機密性和安全性。

在混淆輸出時,可以將每個邏輯門的輸出表示為一個包含兩個label的二元組。其中,當輸入為0時,使用label0作為輸出;當輸入為1時,使用label1作為輸出。在將邏輯門的輸出發送給下一個參與方時,只發送一個包含正確label的二元組,保證了數據的機密性和保密性。常見的PRF包括HMAC、SHA、AES等。

需要注意的是,對邏輯門的輸出采用上述方法的目的是為了便于不經意傳輸的實現。

基于 Terra 的固定利息產品 Saturn Money 啟動:基于 Terra 的固定利息產品 Saturn Money 啟動,根據官方描述,這是一款簡單易用的消費級應用,用戶可通過刷臉直接登入,從銀行賬戶中取出英鎊和歐元存入到 Saturn Money 中,獲得高于銀行存款利率的年化收益。[2021/2/21 17:36:16]

這里其實就可以推導不經意傳輸過程了。比如,用戶A將這四個輸出——

用戶A輸入的生成

現在,我們繼續假設,用戶A公鑰的編號是1,數值是10,而數組中的二把公鑰的數值分別是11,10。也就是說用戶A的公鑰在數組中。

接著,用戶將自己的輸入,分別輸入到兩個子電路中。用戶在第一個邏輯子電路中進行輸入。他的輸入是:在編號為1的邏輯門輸入2674;在編號為2的邏輯門輸入8798。用戶在第二個邏輯子電路中進行輸入。那么,他的輸入是:在編號為3的邏輯門中輸入9809;在編號為4的邏輯門中輸入3453。

電路混淆

接下來的步驟就是將邏輯電路進行混淆。

這樣一來,根據這個表格的排序可能性,O想通過表三還原成真正的表一,會碰到4種可能性。那么,如果在一次證明中涉及到N個邏輯門,每個邏輯門用戶A都做上述操作,那么就有4N種可能性。這樣,通過排序任意顛倒,使得O很難推斷出每個數字到底代表0還是1。

第一次通信

不經意傳輸

此時,我們需要回顧兩個一定要保證的性質:

上述三個步驟,滿足了第二個性質,但是沒有滿足第一個性質,也就是說,O在解密了其中一個加密值后,得到了明文1,但是,也暴露了另一個明文0。這樣一來,混淆邏輯門表就暴露了很多信息給O,這樣讓O有機會破解A的秘密,從而使得性質1無效。

從對一個邏輯門的OT通信可以看出整個OT通信的全貌,即每個邏輯門的OT通信都是如此,且在一次OT通信過程中全部完成。這樣,O就能得到所有葉子邏輯門的輸出,這樣他就能進一步得到分支邏輯門的輸出,從而最終得到根邏輯門的輸出。

方案改進

上述方案中,需要且可以改進的地方有很多。例如,改進算法設計,降低算法的復雜度;改進邏輯電路的設計,讓邏輯電路變得更加簡單;增加方案的安全性,加大破解方案的計算復雜度;讓交互變成非交互。

算法和邏輯電路的改進

但是,如果采用MerklePatriciaTree的數據結構的話,對比的次數要少很多。那么,一旦算法計算復雜度下降了,邏輯電路的設計也就要簡單很多。

邏輯電路的設計也有化簡的可能性。

A的每個輸入都不同,O也是。實際上,可以進行化簡。變成如下圖所示。

這樣的化簡可以讓輸入變少。

增加安全性

如果O想輸入的是0,那么他得到的結果必然是0,也就是說,他天然知道輸出0的加密值,那么他就天然知道了1的加密值。同時,由于A的輸入已經是確定的,那么他可以根據A的輸入值,和1的輸出的加密值所在的行,去分析,如果1的輸出的加密值所在的行,不包含A的輸入加密值,那么A的輸入就是0,否則就是1。

為了解決這類問題,我們需要對輸出全部進行加密。比如使用該種方法:上表中的四個輸出值0、0、0、1分別加密為——

——這樣一來,輸出的四個值分別對應為四個不同的密文。因此,在此環境下,無法通過上述推斷來反推出A的輸入值是0還是1。但是,這種方法使得輸出加密值的個數從二變成了四。通信復雜度會增大。

此外,非交互式的不經意傳輸協議也值得研究。

總結

上述方法首先不考慮需要實現MACI匿名化的兩個目標,即在明文下設計一個算法,讓O能夠正確判斷是否執行用戶A的請求。基于此,再將所設計的算法轉化成邏輯電路。再將邏輯電路轉化成混淆電路。需要注意的是,邏輯電路在每一個區塊鏈的epoch中是固定的且能夠從區塊鏈中直接獲取的。用戶A獲取該epoch的邏輯電路,利用相應工具將邏輯電路轉化成混淆電路。同時,用戶A將每一個混淆電路的輸入進行加密,并將加密好的信息發送給O。此時,O由于不知道加密后的輸入對應的明文是什么,O也就不知道用戶A具體的輸入是什么了,這樣就實現了匿名化的第一個性質。

進而,使用不經意傳輸是實現第二個目的的方法。通過不經意傳輸,用戶A并不知道O具體采用了哪些加密值進行進一步的輸入,因此用戶A無法推斷出deactivate數組中的其他元素信息。同時,由于O通過不經意傳輸獲得了足夠的有效輸入,因此O將這些有效輸入輸入到被加密的混淆電路中,最終能夠得到正確的輸出,該輸出和明文下執行第一節的算法所得到的輸出是相同的。因此,O就能夠根據輸出來判斷是否要執行用戶A的請求。

最終,O將上述所有操作利用零知識證明生成操作的proof。區塊鏈對proof進行驗證,驗證通過后,區塊鏈將根據deactivate數組中的元素和registry數組中的元素來更新registry數組并結束epoch和開啟下一個epoch。

Tags:ACTVATEACDEAData TransactionPrivateum InitiativePeace Doge XDEAR幣

BTC
金色觀察 | 詳解美國財政部的DeFi風險評估報告_EFI

文/?TRMInsights,譯/金色財經xiaozou近日,美國財政部發布了《去中心化金融非法金融風險評估》.

1900/1/1 0:00:00
香港加密貨幣市場的未來走向:從監管咨詢文件看港府的雄心與平衡_OIN

香港證監會于2023年2月20日發布了關于加密貨幣交易的《咨詢文件》,這是港府在開放加密貨幣市場方面的重要舉措。該文件從框架藍圖、機遇與挑戰三個方面對香港加密貨幣市場進行了全面的規劃和分析.

1900/1/1 0:00:00
DeFi 危機四伏 無信任橋如何維護用戶安全?_EFI

來源:CoinTelegraph編譯:Dali@Web3CN.Pro跨鏈橋允許去中心化金融用戶在多個區塊鏈上使用相同的代幣。雖然這些協議對DeFi用戶來說可能很便利,但它們存在安全風險.

1900/1/1 0:00:00
Do Kwon時代徹底結束_WON

3月23日,黑山內政部長FilipAdzic在其社交平臺宣布,TerraformLabs創始人DoKwon在黑山被捕。黑山當局稱,DoKwon當時試圖使用偽造的哥斯達黎加旅行證件飛往迪拜.

1900/1/1 0:00:00
獵殺時刻:繼狙擊印度首富之后 做空“新星”盯上加密市場_BLO

來源:21tech 作者:李強 編輯:張偉賢盧陶然 圖源:圖蟲 繼狙擊印度首富之后,做空“新星”興登堡研究又將狩獵目標轉向Twitter創始人JackDorsey旗下的支付公司Block.

1900/1/1 0:00:00
ETHBeijing初選結果公布 大學生們如何參與Web3技術開發_GAS

金色財經記者Jessy 4月5日至4月8日,為期四天的以太坊黑客馬拉松“ETHBeijing”在北京舉行.

1900/1/1 0:00:00
ads