?

基于可追蹤環簽名的聯盟鏈身份隱私保護方法

2024-03-25 02:05任正偉余易晉
計算機技術與發展 2024年3期
關鍵詞:匿名性身份交易

任正偉,余易晉

(1.武漢科技大學 計算機科學與技術學院,湖北 武漢 430065;2.智能信息處理與實時工業系統湖北省重點實驗室(武漢科技大學),湖北 武漢 430065)

0 引 言

區塊鏈具有去中心化、不可篡改和不可偽造等特點,能夠應用于很多領域[1]。目前,根據中心化程度的不同,區塊鏈主要可分為三類,即公有鏈、聯盟鏈和私有鏈。其中,公有鏈也被稱為非許可鏈,用戶無需授權就可以參與其中。聯盟鏈和私有鏈也被稱為許可鏈,用戶需要通過驗證并獲得授權后才能加入到系統中[2]。相較于公有鏈,聯盟鏈具有處理事務快和隱私性強等優點;相較于私有鏈,聯盟鏈具有可擴展性強和適用范圍廣等優點。因此,聯盟鏈在商品溯源、供應鏈管理和公共慈善等場景下都有廣泛的應用[3]。

然而,在實際應用中,區塊鏈用戶的身份隱私保護是一個亟待解決的問題,雖然大部分區塊鏈都具有一定的匿名性,但是攻擊者仍能通過動態監聽和靜態分析等方式獲得用戶的身份隱私[4]。即使在隱私性較強的聯盟鏈中,內部的節點也可以使用地址聚類[5]等去匿名化方法獲得用戶的身份隱私。此外,在聯盟鏈中,由于用戶的身份驗證和授權是由中心機構負責的,中心機構完全掌握著用戶的身份信息,一旦中心機構受到攻擊,用戶的身份隱私就會被泄漏。

對上述問題,研究人員提出了一些方法以進一步保護用戶的身份隱私。這些方法主要分為三類:混合服務、環簽名和非交互式零知識證明[4]?;旌戏湛梢苑乐构粽咄ㄟ^分析將交易發送者或交易接收者相關聯,從而獲得用戶的身份,但是需要有足夠多的用戶參與其中。而環簽名無需其它用戶參與,簽名者就可以生成隱藏其身份的簽名,但環簽名為用戶提供完全匿名性的身份保護,這種完全匿名性會使得用戶的身份難以被追查。非交互式零知識證明可以在用戶不泄露額外信息的情況下證明自己的身份是有效的,其實現的也是用戶身份的完全匿名。

此外,研究者也提出了具有條件匿名性的群簽名方案。但是,在聯盟鏈中,群簽名的去匿名化依賴于中心機構,會使得用戶對于中心機構不具有匿名性并且聯盟鏈的運作依賴于中心機構,因此,群簽名也不能很好地保護聯盟鏈中用戶的身份隱私。

為此,該文提出了一種基于可追蹤環簽名的身份隱私保護方法,以保護聯盟鏈中用戶的身份隱私。該方法結合了可追蹤環簽名和實用拜占庭容錯協議,利用可追蹤環簽名實現用戶身份的條件匿名性,既能保證包括中心機構在內的其他參與方不能獲得用戶的身份,又能在出現糾紛時揭露不誠實方的身份。而且,在文中方法中,去匿名化是由聯盟鏈中的節點通過實用拜占庭容錯協議來實現的,一方面使得中心機構在此過程中也無法獲得用戶身份,另一方面也增加了系統的容錯性??偟膩碚f,該文基于上述問題能夠實現以下改進:

(1)利用可追蹤環簽名實現用戶身份的條件匿名性,并將中心機構去匿名化的權利交給聯盟鏈中的節點,使其無法將匿名交易和用戶的真實身份關聯起來。

(2)增加了檢測機制,保證了只有交易相關節點才能提出去匿名化請求,并且惡意的去匿化請求會被檢測,提高了方案的安全性。

(3)匿名交易的去匿名化交由聯盟鏈中節點使用實用拜占庭容錯來完成,既讓中心機構減少了資源消耗,也保證了它無法發揮功能時系統能夠繼續運行,增加了系統的容錯性。

1 相關工作

由于區塊鏈給用戶身份隱私提供的保護是有限度的,已有研究工作提出了區塊鏈中用戶的身份隱私保護方法。例如,在近幾年被納入到區塊鏈體系中用來保護用戶的身份隱私的混合服務,主要分為兩類:集中式和分布式。在集中式混合服務方案中,混合服務是由混合服務提供商充當的混合器完成,Mixcoin[6]解決了混合服務提供商可能由攻擊者假扮來竊取用戶資產的問題,但是存在混合服務提供商會泄露用戶身份的問題。為此,Blindcoin[7]使用盲簽名來防止混合服務提供商獲得混合服務中輸入地址和輸出地址的關聯。盡管如此,集中式混合服務仍然存在需要等待足夠的用戶參與混合服務而導致交易延遲增加、混合服務提供商易受攻擊以及需要提交手續費等問題;在分布式混合服務中,交易的參與者之間自行協商混合服務的細節,Coinjoin[8]避免了集中式混合服務中混合服務提供商易受攻擊和需要支付手續費的問題,然而參與者知道混合服務中地址配對的詳細信息,并且其能夠通過提供虛假交易信息來妨礙混合服務的正常進行[3]。Coinshuffle[9]和XIM[10]以匿名通信的方式解決了地址配對泄露的問題,但是參與者仍可以妨礙混合服務的正常進行。最重要的是這些混合服務都需要等待定量的參與者才能進行。

而可以自主生成的環簽名[11]和非交互式零知識證明[12]能夠解決上述問題。文獻[13]使用環簽名來保護用戶的身份隱私,然而環簽名由于其不可鏈接性和完全匿名性容易產生一票多投和雙重花費等安全問題。使用非交互式零知識證明的區塊鏈Zerocoin[14],主要思想是用戶首先鑄造一枚硬幣,然后用一枚沒有歷史使用記錄的硬幣來代替,并使用非交互式零知識證明保證硬幣的有效性,但是Zerocoin局限于通過防止攻擊者分析用戶的資金流向來獲取用戶的身份。此外,由于環簽名和非交互式零知識證明為用戶提供完全匿名性,不適合需要監管的聯盟鏈。根據聯盟鏈所需的匿名程度來看,具有條件匿名性的群簽名比較適合。文獻[15]使用群簽名保護聯盟鏈中用戶的身份隱私,但是該方案中群簽名的驗證以及用戶的追蹤依賴于中心機構(群管理員),并且中心機構能夠自主對用戶的群簽名去匿名化,系統的容錯性和安全性較低。

與群簽名類似的還有可追蹤環簽名,其分為主動追蹤和被動追蹤。主動可追蹤環簽名以文獻[16]提出的自可追溯性為起點,用戶可以提供相關數據證明自己是真正的簽名者,也可以由可信第三方[17]或者接收者[18]收集環成員的相關數據來對可追蹤環簽名去匿名化。在區塊鏈身份隱私保護方案[19]中,去匿名化的請求由用戶提出,中心機構(審計節點)進行去匿名化,這可能導致用戶惡意提出去匿名化請求來暴露目標用戶的真實身份,而且如果中心機構受到攻擊或者產生錯誤,系統無法正常運行。在區塊鏈身份隱私保護方案[20]中,去匿名化的請求由第三方提出,中心機構(審計節點)進行去匿名化,雖然能夠防止用戶惡意提出去匿名化請求,但是系統的運行也依賴中心機構。此外,在文獻[19-20]方案中,中心機構也能夠自主對可追蹤環簽名去匿名化。被動可追蹤環簽名[21]在一定的條件下用戶的簽名會被鏈接或者被追蹤,支持多種電子貨幣的應用層協議Cryptonote[22]就使用了修改后的可追蹤環簽名來保護用戶的身份隱私。與之類似的還有使用多層可鏈接自發組簽名[23]的門羅幣[24],然而,針對這類被動可追蹤環簽名,惡意用戶可以針對同一事件發表多個具有相同意見的簽名來發起拒絕服務攻擊,使其它節點忙于驗證簽名,而惡意用戶的身份不會因此暴露[25]。

2 方案設計

2.1 系統架構

文中方案包括三個參與方,分別是用戶、中心機構和聯盟鏈節點,其架構以及主要流程如圖1所示。用戶在聯盟鏈中的活動以節點的身份進行,在聯盟鏈之外的活動以用戶的身份進行。

圖1 系統架構

(1)用戶。

用戶依據聯盟鏈的規則生成自己的公私鑰對,然后通過安全信道將自己的真實身份和公鑰提交給中心機構。當用戶通過中心機構的認證后,中心機構將給予用戶聯盟鏈中的虛擬身份,用戶則作為節點加入到聯盟鏈中。

(2)中心機構。

中心機構負責驗證用戶的真實身份,為合法用戶生成聯盟鏈中的虛擬身份,并將用戶的虛擬身份與公鑰對應后廣播至聯盟鏈中。此外,中心機構還需要定期從聯盟鏈中獲取節點信息表,并處理其中因失信行為而被注銷的用戶。

(3)節點。

節點負責維護聯盟鏈以及維護記錄了所有節點狀態的節點信息表。此外,節點之間通過可追蹤環簽名進行匿名交易,并在出現糾紛時對交易進行去匿名化。

2.2 安全假設

(1)文中方案安全性模型的成立依賴于離散對數問題(Discrete Logarithm,DL)和Computational Diffie-Hellman(CDH)問題。

(2)中心機構是不可信的。中心機構可能會被攻擊者利用來破壞用戶的身份隱私。

(3)用戶與中心機構之間,節點與節點之間存在由相互之間的公私鑰加解密建立的安全信道。

2.3 方案構造

文中方案包括四個階段:用戶注冊、匿名交易、糾紛解決和用戶注銷。

在注冊階段,用戶向中心機構提供真實身份和公鑰,并在通過驗證后加入到聯盟鏈中成為節點。在交易階段,節點通過可追蹤環簽名和實用拜占庭容錯協議進行匿名交易。在糾紛解決階段,節點通過實用拜占庭容錯協議進行去匿名化操作,以揭露和記錄失信節點。在注銷階段,節點廣播注銷消息以退出聯盟鏈。

2.3.1 注 冊

圖2 用戶注冊流程

中心機構在驗證用戶的真實身份和公鑰的合法性后,為用戶i生成虛擬身份vidi,并保存用戶i的真實身份和vidi的映射,然后為用戶的虛擬身份和公鑰生成簽名SigskCA(vidi‖pki)‖H(vidi‖pki),并將該簽名廣播到聯盟鏈中。

聯盟鏈中的各個節點在驗證上述簽名的有效性后,將(vidi,pki,online,null)加入到各自維護的節點信息表中。至此,用戶i加入聯盟鏈中成為節點i。

2.3.2 匿名交易

節點在聯盟鏈中實現匿名交易的過程如圖3所示。當節點a和節點b要進行匿名交易時,a和b首先通過安全信道協商交易m并交換各自對m的簽名,然后a計算M=RSigA(m)‖H(Sigska(m)‖Sigskb(m))。其中,RSigA(m)表示a在環A上用可追蹤環簽名對交易m的簽名,Sigska(m)為a對m的簽名,Sigskb(m)為b對m的簽名。接著,a使用實用拜占庭容錯協議將M上傳到聯盟鏈,并將實用拜占庭容錯預準備階段中的驗證簽名的步驟改為驗證可追蹤環簽名。

圖3 基于可追蹤環簽名的匿名交易過程

b獲得聯盟鏈上的M后,驗證M的正確性,若驗證未通過,則終止與a的交易,若驗證通過,則計算M'=RSigB(m)‖H(Sigska(m)‖Sigskb(m)),表示b在環B上用可追蹤環簽名對交易m的簽名,并使用實用拜占庭容錯協議將M'上傳至聯盟鏈。至此,a和b分別以環A和環B的身份開始遵守交易m。

節點a生成RSigA(m)的具體過程如下:

(1)選擇環成員L={vid1,vid2,…,vidn}(包括vida)。

Ri=xiP(i=1,2,…,n,i≠a),Ti=tiP。

(4)計算hi=H(m,T,Ri)(i=1,2,…,n,i≠a)。

(6)計算ha=H(m,T,Ra),Z=(xa+ha)ska。

(7)RSigA(m)=(m,Z,Ri,TKi,T,L)(i=1,2,…,n)。

2.3.3 解決糾紛

當a和b產生爭議時,假設聯盟鏈有3f+1個節點,并且由a提出仲裁申請,a令N=Sigska(m)‖Sigskb(m)。整個解決糾紛的流程可以分為預準備階段、準備階段和確認階段,具體過程如下:

(1)預準備階段。

預準備階段主要分為預準備階段1和預準備階段2,預準備階段1主要是a向其它節點提出去匿名化請求的過程,預準備階段2主要是各個節點之間交換對可追蹤環簽名進行去匿名化所需信息的過程。

①預準備階段1。

a廣播<N>,其中,Pre-prepare-first表示預準備階段1,view是視圖編號,count是序列號。

a之外的節點在收到該預準備消息后,驗證視圖(view)、序列號(count)和H(N)的正確性,并且H(N)已記錄在聯盟鏈上,才會接受預準備消息。如果節點不接受第一階段的預準備消息則什么都不做。

②預準備階段2。

接受第一階段預準備消息的節點根據H(N)匹配聯盟鏈上的M和M',檢查M中的環成員L和M'中的環成員L'來判斷自己是否為環A或環B的成員。若節點既不是環A的成員也不是環B的成員,則什么都不做。

當e(J,pki)=e(T,P)時,各個節點可以得出pka,當e(K,pkj)=e(T',P)時,各個節點可以得出pkb,然后節點根據聯盟鏈上的m判斷是b違約還是a惡意提出去匿名化請求,最后將判斷結果記錄為E。

(1)

(2)

(2)準備階段。

如果節點不接受預準備消息則什么都不做,而接受了預準備消息的節點k向其它節點廣播<Sigskk(E)‖H(E)‖pkk>。由于預準備階段被用來收集去匿名化所需的數據,a無法在預準備階段就表達自己的意見,所以a參與發送準備消息。其中,Prepare表示準備階段,Sigskk(E)表示k使用私鑰skk對E進行簽名,pkk為k的公鑰。

收到準備消息的節點驗證視圖(view)、序列號(count)和H(N)的正確性以及簽名Sigskk(E)的合法性。當節點在收到2f個與其接受的預準備消息對應的準備消息后(相同的視圖(view)、序列號(count)和H(N)),將這2f+1個準備消息(包括自己)寫入臨時日志中,在2f+1個準備消息中至少有f+1個(包括自己)相同的為真。

(3)確認階段。

如果節點不接受預準備消息則什么都不做,接受了準備消息的節點k向其它節點廣播自己準備階段判斷為真的消息對應的確認消息<Sigskk(E)‖H(E)‖pkk>。其中,Commit表示確認階段,Sigskk(E)表示k使用私鑰skk對E進行簽名,pkk為k的公鑰。

收到確認消息的各個節點驗證視圖(view)、序列號(count)和H(N)的正確性以及簽名Sigskk(E)的合法性。當節點在收到2f個與其接受的準備消息所對應的確認消息后,將這2f+1個確認消息(包括自己)寫入臨時日志中,在2f+1個確認消息中至少有f+1個(包括自己)相同的為真。

最后,每個節點根據臨時日志中的內容對各自的節點信息表進行修改,如果是b違約,則修改節點信息表中b所對應的映射為(vidb,pkb,offline, default),如果是a惡意提出去匿名化請求,則修改節點信息表中a所對應的映射為(vida,pka,offline, default),其中offline表示用戶從聯盟鏈中注銷,default表示用戶因為失信行為而注銷。整個解決糾紛階段的流程如圖4所示。

圖4 用戶解決糾紛流程

2.3.4 注 銷

當節點k退出聯盟鏈,則廣播Sigskk(logout‖vidk)‖H(logout‖vidk)‖pkk,其中,Sigskk(logout‖vidk)表示k用私鑰skk對logout‖vidk簽名,logout表示注銷消息,vidk表示k的虛擬身份,pkk表示k的公鑰。

其它節點在驗證上述簽名的合法性后,將節點信息表中k對應的映射由(vidk,pkk,online,null)改為(vidk,pkk,offline,null)。

因為節點信息表由聯盟鏈中的節點共同維護,所以中心機構只需要定期向一定數量的隨機節點請求節點信息表,并通過對比節點信息表和自己本地保存的用戶真實身份和虛擬身份的映射,找到該節點對應用戶的真實身份。

如果表中節點是正常注銷,中心機構將刪除該節點對應用戶;如果表中節點是因為違規行為而注銷,中心機構將通過該節點對應用戶的真實身份來對用戶進行處罰。

3 方案分析

首先對文中方案進行了正確性分析、可追蹤性分析和安全性分析,然后將文中方案與其它方案進行對比。

3.1 正確性

以驗證RSigA(m)為例,在交易階段中,各個節點通過公式3來驗證可追蹤環簽名的合法性。

(3)

若公式3成立,則驗證通過,判斷的過程如下所示:

在解決糾紛的預準備階段2中,每個節點驗證Ti的有效性,具體過程如下所示:

e(TKi,P)=e(tiriP,P)=e(tiP,riP)=e(Ti,pki)

3.2 可追蹤性

以得出環A中真正簽名者節點a的公鑰為例,在解決糾紛中的預準備階段2中,節點使用環中成員的公鑰pki驗證等式e(J,pki)=e(T,P),其中T由公式4給出,該公式再生成RSigA(m)的第3步。

(4)

當i=a時,上式成立,pka即為可追蹤環簽名中真正簽名者的公鑰,具體過程如下所示:

3.3 安全性

文中方案使用已經被證明能夠增加用戶匿名性的可追蹤環簽名[17-18]來防止地址聚類等分析方法的去匿名化攻擊,并且通過新增檢測機制和結合實用拜占庭容錯得到以下兩種新的安全特性。

(1)防止節點惡意提出去匿名化請求。

為了防止交易無關節點惡意提出去匿名化請求,在交易階段,節點通過安全信道交換各自對交易的簽名,即只有交易相關節點擁有對交易的簽名。在解決糾紛階段,申請對可追蹤環簽名去匿名化的節點必須提交所有交易相關節點的簽名,聯盟鏈中的其它節點才會接受該節點的去匿名化請求。

為了防止交易相關節點惡意提出去匿名化請求,在解決糾紛階段,去匿名化將會應用于所有交易相關節點,如果交易相關節點惡意提出去匿名化請求,將會被其它節點通過交易內容判斷為失信節點并記錄在節點信息表中,最后受到中心機構的處罰。

(2)對中心機構匿名。

由于文中方案使用可追蹤環簽名并且限定只有交易相關節點才能提出去匿名化請求,中心機構沒有權利自主對用戶的可追蹤環簽名進行去匿名化操作,也無法向環成員提出去匿名化請求,所以用戶對于中心機構是匿名的。

3.4 方案對比

文中方案將可追蹤環簽名與實用拜占庭容錯結合,既能保護用戶的身份隱私,也能保證較好的容錯性和安全性。

總的來說,相較于文獻[13,22]的方案,文中方案具有條件匿名性,可以防止雙花攻擊和拒絕服務攻擊;相較于文獻[15,19-20]的方案,文中方案能同時滿足防止節點惡意提出去匿名化請求和對中心機構(群管理員和審計節點)匿名兩種安全特性,并且擁有較高的容錯率。表1是文中方案與其它身份隱私保護方案的對比。

表1 文中方案與其它方案的對比

4 實驗及分析

4.1 實驗環境

文中方案的實驗環境:CPU為Intel(R) Core(TM) i7-7700HQ,主頻為2.80 GHz,2.00 GB內存,操作系統為Ubuntu 21.10,編程語言為C語言,使用的PBC庫版本號為0.5.14。

4.2 實驗結果及分析

本節測量了四種具有條件匿名性的身份隱私保護方案中系統初始化的時間以及在不同節點數量的環或群中,系統初始化、生成簽名、驗證簽名和追蹤簽名所需的總時間。

現定義符號TE表示模冪運算的時間,TM表示模乘運算的時間,TZr表示初始化模r整數環的時間,TG表示初始化G1群的時間。

(1)系統初始化。

表2展示了在系統初始化階段,各個方案所需的理論時間和具體時間。

表2 系統初始化所需的時間

其中,文中方案和文獻[15]方案由用戶根據系統生成的公共參數自行生成公私鑰,其理論時間是固定不變并且所需時間較少,而文獻[19-20]方案由用戶根據系統使用秘密共享生成公共參數來生成公私鑰,其所需時間與秘密共享參數(t,n)的設置有關,秘密共享參數(t,n)表示n個節點的系統中需要t個節點合作才能共享秘密。此次實驗中,為了便于測量文獻[19-20]方案的秘密共享參數設置為(3,5),遠小于實際情況下的參數設置。

(2)總時間。

圖5展示了文中方案、文獻[15,19-20]方案這四個具有條件匿名性的身份隱私保護方案在不同數量的環(群)節點的情況下,系統初始化、生成簽名、驗證簽名和追蹤簽名所需的總時間。

圖5 具有條件匿名性的四個方案的總時間

雖然文中方案與文獻[19-20]方案使用的都是可追蹤環簽名,但是文中方案在系統初始化時間上小于文獻[19-20]方案,所以文中方案所需的總時間較小,而且文中方案相較于文獻[19-20]方案新增了防止節點惡意提出去匿名化請求的安全特性。

雖然文中方案相較于文獻[15]方案需要花費較多時間,但是文中方案對中心機構具有匿名性,并減少了中心機構的任務,具有更高的安全性和容錯性。

5 結束語

針對聯盟鏈中現有的用戶身份隱私保護方案不夠完善的問題,將可追蹤環簽名和實用拜占庭容錯結合并運用于聯盟鏈中用戶的身份隱私保護上,不僅能夠保證聯盟鏈中的用戶對于其它用戶和中心機構都具有條件匿名性,還添加了防止節點惡意提出去匿名化請求的特性,增加了系統的安全性,并且通過結合實用拜占庭容錯,增加了系統的容錯性。理論和實驗表明,該方案既能夠保護用戶的身份隱私,又能保證較高的安全性和容錯性,并且時間開銷較為合理。

猜你喜歡
匿名性身份交易
跟蹤導練(三)(5)
去個體化心理分析
微信彈性社交中的失范行為分析
他們的另一個身份,你知道嗎
交易流轉應有新規
大宗交易
《吃飯的交易》
互換身份
驚人的交易
放松一下 隱瞞身份
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合