国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于智能合約的雙因素身份認(rèn)證方案

2023-11-14 13:16:54鑫,柳
計(jì)算機(jī)與現(xiàn)代化 2023年10期
關(guān)鍵詞:私鑰默克爾合約

劉 鑫,柳 毅

(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣東 廣州 510006)

0 引 言

隨著區(qū)塊鏈和智能合約的普及,各種加密貨幣不斷涌現(xiàn),它們帶來諸多便利的同時(shí)也引起了資金被盜和隱私泄露等問題。例如,針對DAO 合約的攻擊導(dǎo)致超過360 萬個Ether 的損失[1]。黑客攻擊了美鏈(BEC)的Token合約,通過一個整數(shù)溢出安全漏洞,將大量Token 砸向交易所,導(dǎo)致BEC 的價(jià)格幾乎歸零。這些案例中許多都是由智能合約代碼漏洞引起的,例如重入和循環(huán)調(diào)用等。正是由于智能合約一經(jīng)部署就無法修改合約代碼的這一特性,不同于其他的中心化應(yīng)用軟件,在資金被盜時(shí)沒有應(yīng)急措施,而且在私鑰被盜或遺忘的情況下,資金便無法使用,區(qū)塊鏈也缺乏相應(yīng)的恢復(fù)機(jī)制。許多加密貨幣引入了自己獨(dú)有的加密代幣,用私鑰進(jìn)行身份認(rèn)證成功后即可交易。這些私鑰往往都是冗長且毫無規(guī)律性的字符串,由錢包軟件管理,并且此類軟件還為用戶提供了與加密貨幣交互的界面[2-3]。這類錢包管理軟件采用傳統(tǒng)的賬號密碼登錄方式,大多數(shù)用戶使用的密碼都是比較便于記憶的弱密碼,惡意軟件可能會引入鍵盤捕捉器截獲賬戶密碼從而盜取用戶私鑰[4]。PPSS 是Bagherzandi等人[5]引入的一個中心原語,它允許用戶在n個服務(wù)器之間存儲秘密,之后用戶可以通過與t+1(t<n)個服務(wù)器進(jìn)行交互,在擁有單個密碼的情況下重建秘密。與此同時(shí),攻擊者侵入這些服務(wù)器中的t臺,并控制所有通信信道,也無法截獲秘密。該方案的優(yōu)點(diǎn)是在重建秘密階段不依賴安全信道或公鑰基礎(chǔ)設(shè)施,但是在與服務(wù)器進(jìn)行多輪交互過程中可能會受到在線字典攻擊,一旦攻擊者破壞了t+1 臺服務(wù)器就能立刻獲得秘密。如果密鑰完全由服務(wù)器存儲,則稱為服務(wù)器端錢包。這類錢包的弊端是密鑰的安全性完全取決于服務(wù)器的誠實(shí)性,然而服務(wù)器總是好奇的,無法保證其安全性。由于這種服務(wù)器端錢包存在安全隱患,僅提供與區(qū)塊鏈交互界面(或僅存儲用戶加密私鑰)的托管錢包開始激增。在這種錢包中,包括私鑰存儲在內(nèi)的功能已轉(zhuǎn)移到客戶端,稱為客戶端錢包??蛻舳隋X包的一個例子是區(qū)塊鏈錢包[6],它是一種基于密碼的錢包,它基于密碼知識對服務(wù)器進(jìn)行單因素身份驗(yàn)證,并通過由Google 身份認(rèn)證器、電子郵件等組成的選項(xiàng)之一對服務(wù)器啟用雙因素認(rèn)證(2FA)。在創(chuàng)建事務(wù)時(shí),可以通過輸入第二密碼來驗(yàn)證身份[7]。另外,還有許多學(xué)者應(yīng)用閾值加密、多重簽名、硬件存儲等方法存儲用戶私鑰。Zhou等人[8]提出了一種基于無可信中心門限橢圓曲線數(shù)字簽名的方案。在該方案中,參與者合作生成公鑰和私鑰,并在不需要可信中心參與的情況下共享私鑰。超過閾值數(shù)的參與者可以通過恒定輪數(shù)對交易進(jìn)行簽名,有效抵御單點(diǎn)攻擊。多重簽名協(xié)議[9]最早由Itakura 和Nakamura 引入,允許一組簽名者(每個人都擁有自己的公私鑰對)在消息m上生成單個簽名。在給定消息和所有簽名者的公鑰集的情況下,可以公開驗(yàn)證簽名的有效性。將標(biāo)準(zhǔn)簽名方案轉(zhuǎn)換為多重簽名方案的一種簡單方法是讓每個簽名者使用其私鑰為m生成獨(dú)立簽名,并將所有單個簽名串聯(lián)起來。然而,在這種情況下,多重簽名的大小隨著簽名者的數(shù)量線性增長。Maxwell 等人[9]提出了一種新的基于Schnorr 的多重簽名方案(即允許一組簽名者在公共消息上產(chǎn)生短的聯(lián)合簽名的協(xié)議),該方案滿足普通公鑰模型安全性,這意味著簽名者只需要擁有公鑰,但不必在使用協(xié)議之前向某個認(rèn)證機(jī)構(gòu)或其他簽名者證明知道與其公鑰相對應(yīng)的私鑰。

然而上述的方案都無法實(shí)現(xiàn)私鑰丟失后的資金托管和賬戶恢復(fù)的功能。Moser 等人[10]設(shè)計(jì)的加密貨幣通過延遲接受交易來抑制密鑰盜竊,一旦非法交易發(fā)布在區(qū)塊鏈上,合法用戶有足夠的時(shí)間使用適當(dāng)?shù)幕謴?fù)密鑰來阻止交易。這種機(jī)制的目的是減少攻擊者竊取密鑰的動機(jī)。但是,它沒有解決在無意中丟失密鑰的情況下恢復(fù)對帳戶訪問的問題。Homoliak等人[7]設(shè)計(jì)了一個智能合約錢包框架,該框架由4 個組件組成(即認(rèn)證器、客戶端、硬件錢包和智能合約),并提供在與區(qū)塊鏈交互的2 個階段執(zhí)行的雙因素認(rèn)證2FA。該方案的優(yōu)勢是自主設(shè)定安全認(rèn)證規(guī)則,將智能合約和身份認(rèn)證綁定,一旦滿足某種條件時(shí)就會觸發(fā)雙因素身份認(rèn)證,但是硬件錢包不方便攜帶,一旦錢包丟失就會有安全風(fēng)險(xiǎn)。Breuer 等人[11]提出了一種系統(tǒng),將安全規(guī)則寫進(jìn)智能合約并部署,在檢測到有安全問題時(shí)智能合約可以暫時(shí)鎖定賬戶并托管賬戶資金,同時(shí)調(diào)用雙因素身份驗(yàn)證2FA程序。初始化時(shí),帳戶的所有者在用戶委員會中秘密共享一些安全問題的答案。當(dāng)2FA機(jī)制被觸發(fā)時(shí),用戶可以向智能合約提供預(yù)設(shè)問題的答案來實(shí)現(xiàn)身份認(rèn)證,認(rèn)證成功后才能解鎖賬戶。該方案可以在檢測到賬戶異常時(shí)實(shí)施額外的保護(hù),對于正常的交易也不會增加額外的驗(yàn)證時(shí)間,但是初始化之后若要再添加新的委員會成員,過程比較繁瑣。

1 預(yù)備知識

1.1 雙因素身份認(rèn)證2FA

雙因素身份驗(yàn)證2FA 是通過要求用戶提供額外的身份驗(yàn)證因素(例如,由安全令牌生成的代碼)來增強(qiáng)基于密碼的身份驗(yàn)證的彈性[12]。2FA 在許多領(lǐng)域都有應(yīng)用,最常見的是異地登錄應(yīng)用程序時(shí),通常需要用戶在輸入密碼后再輸入手機(jī)動態(tài)驗(yàn)證碼。這種方法可以有效阻止惡意用戶盜取密碼。如果將這一想法引入到去中心化環(huán)境中,首先出現(xiàn)的問題是在沒有可信權(quán)威的情況下,無法產(chǎn)生驗(yàn)證碼。顯然,智能合約無法存儲保密信息,智能合約本身不提供任何形式的隱私。

1.2 非交互零知識證明(NIZK)

非交互式零知識證明系統(tǒng)只包含一條由證明者(Prover, P)發(fā)送給驗(yàn)證者(Validator, V)的消息。由于其良好的保密性、認(rèn)證性和較低的交互復(fù)雜度,它被廣泛用于構(gòu)建各種類型的密碼協(xié)議和密碼算法。Goldwasser 等人[13]對交互式證明系統(tǒng)進(jìn)行了研究,并分析了知識復(fù)雜度為零的交互式證明系統(tǒng),這開創(chuàng)了密碼學(xué)和計(jì)算復(fù)雜度理論的一個重要分支——零知識證明。Blum 等人[14-15]最早提出了非交互零知識NIZK 證明系統(tǒng),并引入了目前普遍應(yīng)用的公共參考串(CRS)模型。非交互式零知識證明系統(tǒng)[16]只包含由證明者發(fā)送給驗(yàn)證者的消息,這可以更好地用于構(gòu)建密碼協(xié)議。隨后,關(guān)于NIZK 證明系統(tǒng)的理論和應(yīng)用的研究層出不窮[17],包括NP 問題的NIZK 證據(jù)和非交互式統(tǒng)計(jì)(完美)零知識,以及NIZK 證明在CCA安全加密方案、匿名認(rèn)證、群簽名和環(huán)簽名構(gòu)造中的應(yīng)用。

在一個非交互零知識證明系統(tǒng)中,(P,V)是一對概率圖靈機(jī),P是指概率多項(xiàng)式時(shí)間(充當(dāng)承諾者),V是指決策多項(xiàng)式時(shí)間(充當(dāng)驗(yàn)證者),R是指非交互隨機(jī)數(shù)預(yù)言機(jī)[18],(P,V)則稱為語言L的非交互零知識證明系統(tǒng)。該系統(tǒng)遵循以下3個原則:

1)完整性(Completeness)。若P知道一個定理的證明方法,則P使V以絕對優(yōu)勢的概率相信它能證明。在多項(xiàng)式時(shí)間內(nèi),對于任何公共輸入x?L,都可以計(jì)算:

2)公正性(Soundness)。若P不知道一個定理的證明方法,則P使V相信它會證明定理的概率很低。在多項(xiàng)式時(shí)間內(nèi),對于任何公共輸入x?L,任何交互圖靈機(jī)P',都可以計(jì)算:

3)零知識性(Zero-knowledge)。對于任何公共輸入x?L,存在一個概率多項(xiàng)式時(shí)間算法滿足:

其中,R∈{0,1}c(|x|)代表在公共參數(shù)x區(qū)間內(nèi)產(chǎn)生隨機(jī)數(shù),cM(x)x?L表示一個概率多項(xiàng)式時(shí)間算法[19]。

遵循Schnorr 協(xié)議的NIZK 方案的實(shí)現(xiàn)依賴于證明者P 和驗(yàn)證者V。設(shè)(g,h)和(g',h')是p階素?cái)?shù)群Zp的2 對元素,要證明存在元素ω∈Zp,使得gω=g'、hω=h'同時(shí)成立,證明者P需要發(fā)送一條證明消息來說服驗(yàn)證者V,具體如下:

1)證明者P 從Zp中均勻采樣r并計(jì)算出承諾(commitment,com)com=(gr,hr),生成隨機(jī)挑戰(zhàn)c=Hash(com,M),M表示一串?dāng)?shù)據(jù),再計(jì)算z=ωc+r并生成證明π=(gr,hr,z)。

2)如果驗(yàn)證者V 計(jì)算得到g'c·gr=gz和h'c·hr=hz,則驗(yàn)證通過。

遵循Schnorr協(xié)議的NIZK方案包含以下算法:

1)Setup(1λ):在輸入安全參數(shù)1λ時(shí),算法返回公共參考字符串crs。

2)Prove(crs,stmt,wit):在輸入公共引用字符串crs、語句stmt和見證wit時(shí),算法返回證明π。

3)Verify(crs,stmt,π):在輸入公共引用字符串crs、語句stmt 和證明π時(shí),算法返回一個比特位{0,1}。0表示驗(yàn)證失敗,1表示驗(yàn)證成功。

1.3 基于離散對數(shù)困難問題的ElGamal算法

在密碼學(xué)中,ElGamal 加密算法是一個基于Diffie-Hellman 密鑰交換的非對稱加密算法,它在1985 年由塔希爾·蓋莫爾提出。ElGamal 公開密鑰密碼體制是基于有限域中離散對數(shù)問題的難解性的。它所根據(jù)的原理是:求解離散對數(shù)是困難的,而其逆運(yùn)算可以應(yīng)用平方乘的方法有效地計(jì)算出來。在相應(yīng)的群G中,指數(shù)函數(shù)是單向函數(shù),即在有限的算力之下無法逆向求解。

2 方案設(shè)計(jì)

2.1 整體架構(gòu)

本文提出的方案主要結(jié)合了非交互零知識證明、Shamir 密鑰分割、ElGamal 算法、默克爾樹等多種方法,在智能合約的輔助下對區(qū)塊鏈交易實(shí)現(xiàn)實(shí)時(shí)監(jiān)控[20]保護(hù),在發(fā)生異常情況時(shí)及時(shí)啟動雙因素認(rèn)證,防止惡意交易的發(fā)生。本文方案由以下3個部分組成:

1)支持雙因素認(rèn)證的區(qū)塊鏈用戶(User,U):通過初始化,用戶可以自定義需要保護(hù)的交易類型并提交自己的安全驗(yàn)證密碼(該密碼可以是低熵的),在啟動雙因素認(rèn)證時(shí)提交密碼驗(yàn)證交易。

2)輔助驗(yàn)證組(Verification Group,VG):任何加入?yún)^(qū)塊鏈節(jié)點(diǎn)貢獻(xiàn)算力的礦工都可以加入驗(yàn)證組,在初始化階段,提交公鑰并獲得唯一的組內(nèi)ID,在雙因素認(rèn)證階段為用戶的身份認(rèn)證提供算力[21]。

3)智能合約:監(jiān)測用戶的交易地址變化、交易金額以及特定時(shí)間段內(nèi)的交易頻次,用戶自行設(shè)計(jì)具體的合約并部署。

本文的方案設(shè)定了3種強(qiáng)制調(diào)用2FA的異常情況:

Q1:交易地址不屬于預(yù)設(shè)的日常交易地址集合;

Q2:單次交易的金額超過閾值;

Q3:一定時(shí)間內(nèi)的交易次數(shù)超過閾值[22]。

一旦智能合約監(jiān)測到上述的3 種異常情況,立即觸發(fā)雙因素認(rèn)證。方案的實(shí)現(xiàn)步驟可分為初始化、調(diào)用雙因素認(rèn)證、智能合約判定,其中雙因素認(rèn)證分為默克爾樹認(rèn)證和非交互零知識證明。具體內(nèi)容下文將進(jìn)行詳細(xì)描述。

2.2 初始化

設(shè)(G1,G2,GT,p,g1,g2)是p階素?cái)?shù)非對稱雙線性映射群系統(tǒng),e:G1×G2→GT表示一個有效可計(jì)算的雙線性配對,g1、g2分別表示群G1、G2的生成元,gT=(g1,g2)表示GT的生成元。H:{0,1}*→{0,1}λ是抗沖突的哈希函數(shù)。初始化算法的具體實(shí)現(xiàn)如下:

輸入安全參數(shù)1λ,α=(α1,…,αlog(p))表示低熵秘密的二進(jìn)制表示,t表示驗(yàn)證組的秘密重構(gòu)閾值,n表示驗(yàn)證組大小,用戶運(yùn)行Setup 算法輸出唯一的全局標(biāo)識符IDi,并將哈希數(shù)據(jù)塊集合MH={H(α1),…,H(αlog(p))}在驗(yàn)證組內(nèi)廣播,用MH 構(gòu)建默克爾樹并在本地[23]存儲默克爾根R。之后Setup算法從Z*p均勻采樣一組元素(x,r,s,ρ),其中x作為用戶私鑰,公鑰設(shè)置為:

其中crs由NIZK.Setup(1λ)生成,c0、c1、u1、u2是用ElGamal算法加密的低熵秘密,參數(shù)具體表示如下所示:

驗(yàn)證組成員運(yùn)行Setup算法輸出組內(nèi)索引Yi和共享密鑰ski=xi,利用Shamir 秘密分割算法生成驗(yàn)證組的共享密鑰集:

其中任意t個共享密鑰可以重建秘密。每個組內(nèi)成員在本地創(chuàng)建一個搜索表,如表1所示。

表1 驗(yàn)證組成員搜索表

2.3 調(diào)用雙因素認(rèn)證

智能合約監(jiān)測用戶的賬戶資金動向[24],一旦有預(yù)設(shè)的異常情況出現(xiàn),智能合約就會暫停用戶當(dāng)前交易并啟動雙因素認(rèn)證。第一因素的認(rèn)證過程如圖1所示。

圖1 第一因素認(rèn)證過程

首先暫停用戶交易,啟動第一因素認(rèn)證,用戶需要向智能合約提交全局標(biāo)識符IDi、隨機(jī)數(shù)e、默克爾根R和隨機(jī)數(shù)e產(chǎn)生的H(R/e)。然后智能合約向驗(yàn)證組發(fā)布IDi的查詢交易任務(wù),查詢完成后,驗(yàn)證組成員提交IDi和哈希數(shù)據(jù)塊集合MH(用于生成默克爾樹),具體表示如下:

最后由智能合約判定最終結(jié)果,判定過程將在智能合約判定階段詳細(xì)說明。若驗(yàn)證通過,則繼續(xù)進(jìn)行第二因素認(rèn)證,否則拒絕交易并鎖定24 h。

第二因素認(rèn)證由NIZK 和ElGamal 算法共同實(shí)現(xiàn),用戶本地運(yùn)行計(jì)算出低熵秘密的密文塊和對應(yīng)的密文塊證明,提交給驗(yàn)證組進(jìn)行分布式驗(yàn)證,并由驗(yàn)證組向智能合約集中反饋驗(yàn)證結(jié)果,最終由智能合約判定驗(yàn)證是否通過。具體步驟分為用戶提交驗(yàn)證申請和驗(yàn)證組反饋驗(yàn)證結(jié)果:

1)用戶提交驗(yàn)證申請:用戶執(zhí)行申請算法,輸入公鑰pk、用于驗(yàn)證的低熵秘密γ(驗(yàn)證γ是否與初始化的α相等):

在群G1中均勻采樣ri計(jì)算密文塊(c0,i,c1,i),并產(chǎn)生密文塊對應(yīng)的證明πi,具體計(jì)算步驟如下所示:

最后申請算法會返回一個驗(yàn)證列表L:

2)驗(yàn)證組反饋驗(yàn)證結(jié)果:驗(yàn)證組成員執(zhí)行反饋算法,輸入公鑰pk、共享私鑰ski、驗(yàn)證列表L,驗(yàn)證組成員在本地計(jì)算:

對于L中的所有密文塊對應(yīng)的證明πi都滿足上述等式,等式成立,則繼續(xù)驗(yàn)證,若不滿足則立即拒絕交易,且24 h 內(nèi)不可再發(fā)起雙因素認(rèn)證。下一步,生成用于雙線性配對的參數(shù)k←H(pk,L),并進(jìn)行以下計(jì)算:

其中b0、b1反饋給智能合約進(jìn)行對比驗(yàn)證[25],每個驗(yàn)證組成員隨機(jī)生成一個群元素δ和拉格朗日系數(shù)λi,生成0、進(jìn)行雙線性配對驗(yàn)證:

最后,每個驗(yàn)證組成員向智能合約發(fā)送一個驗(yàn)證反饋Ri:

Ri=(c(i)0,λi,b1,k(i),k)

2.4 智能合約函數(shù)的設(shè)計(jì)與判定過程

本文方案部署的智能合約包括createVerification-Group()、firstVerification()、secondVerification()、first-Broadcast()、secondBroadcast()等幾個合約函數(shù),它們的具體功能如下:

1)createVerificationGroup():礦工提交合約地址,用戶提交低熵秘密的二進(jìn)制表示α以及哈希數(shù)據(jù)塊集合MH,每個礦工會得到一個密鑰份額ski、組內(nèi)索引Yi和單個哈希數(shù)據(jù)塊H(αi),該函數(shù)用于生成驗(yàn)證組的初始化。

2)firstVerification():用戶提交全局標(biāo)識符IDi、隨機(jī)數(shù)e、默克爾根R和隨機(jī)數(shù)e產(chǎn)生的H(R|e),驗(yàn)證組成員提交對應(yīng)的H(αi),最終由智能合約判定驗(yàn)證結(jié)果,該函數(shù)用于執(zhí)行第一因素認(rèn)證。

3)firstBroadcast():該函數(shù)用于廣播第一因素認(rèn)證結(jié)果。

4)secondVerification():用戶在本地計(jì)算出低熵秘密的密文塊和對應(yīng)的密文塊證明并向智能合約發(fā)起查詢,驗(yàn)證組進(jìn)行組內(nèi)驗(yàn)證,并由驗(yàn)證組向智能合約集中反饋驗(yàn)證結(jié)果,最終由智能合約判定驗(yàn)證結(jié)果。該函數(shù)用于執(zhí)行第二因素認(rèn)證。

5)secondBroadcast():該函數(shù)用于廣播第二因素認(rèn)證結(jié)果。

對于第一因素的認(rèn)證,智能合約主要的任務(wù)是收集驗(yàn)證組提交IDi和哈希數(shù)據(jù)塊集合MH,用MH 生成默克爾根R~,接著計(jì)算H(R~|e),判定等式:

是否成立,若成立,則驗(yàn)證通過,進(jìn)入第二因素認(rèn)證,否則驗(yàn)證失敗。

智能合約收集驗(yàn)證組成員的反饋Ri,并查驗(yàn)以下等式是否成立:

若對于收集到的Ri都滿足上述等式,則驗(yàn)證通過,否則驗(yàn)證不通過。

3 性能對比分析

3.1 安全性分析

本文提出的雙因素認(rèn)證包括默克爾樹認(rèn)證和非交互零知識證明。默克爾樹認(rèn)證的安全性主要依賴于哈希函數(shù)的抗碰撞性和不可逆性,本文采用的哈希函數(shù)是SHA-256,由于其不可逆的性質(zhì),只要SHA-256 不被破解,惡意用戶就不能截獲用戶的低熵秘密,并且在驗(yàn)證階段,用戶傳遞的是H(R|e),而非默克爾根R,并且每次隨機(jī)產(chǎn)生隨機(jī)數(shù)e,這整個過程都不會泄露默克爾根R。在非交互零知識證明階段,驗(yàn)證組成員向智能合約反饋的信息是零散的密文塊[26]以及對應(yīng)密文塊的證明。假設(shè)惡意用戶截獲了所有信息,也無法獲得真正的低熵秘密,可以抵御驗(yàn)證組成員的合謀攻擊。在雙因素認(rèn)證的過程中,只要遇到驗(yàn)證失敗,智能合約就會拒絕交易,在24 h之后才能再次發(fā)起雙因素認(rèn)證,這里可以抵御惡意用戶的猜測攻擊。

3.2 方案對比分析

本文方案引入智能合約監(jiān)測用戶的交易狀態(tài)和賬戶資金,以便于及時(shí)攔截異常交易,強(qiáng)制用戶調(diào)用2FA 進(jìn)行身份認(rèn)證,只有在通過驗(yàn)證之后交易才能通過。本文方案與文獻(xiàn)[7]、文獻(xiàn)[11]、文獻(xiàn)[17]相比有許多優(yōu)勢,具體如表2所示。

表2 方案性能對比

文獻(xiàn)[17]在身份認(rèn)證過程中需要多個服務(wù)器提供計(jì)算量,而且服務(wù)器和用戶之間還需要多輪交互才能完成驗(yàn)證,這既增加了服務(wù)器租用費(fèi)也可能泄露用戶的密碼。而文獻(xiàn)[7]需要通過多輪交互,并且生成一次性密碼都需要可信第三方,這也會增加認(rèn)證過程中許多額外開銷。相比之下,文獻(xiàn)[11]無需服務(wù)器輔助驗(yàn)證,也減少了交互次數(shù),但是與本文方案相比,鑒別惡意用戶的時(shí)間更長,計(jì)算開銷也更大,具體在實(shí)驗(yàn)驗(yàn)證部分詳細(xì)描述。

4 實(shí)驗(yàn)驗(yàn)證

本文實(shí)驗(yàn)硬件環(huán)境為Intel Core i7-6700 CPU 3.40 GHz,8 GB RAM 和Intel Core i5-1240p CPU 4.40 GHz,16 GB RAM;操作系統(tǒng)為Ubuntu 20.04;編譯器為IntelliJ IDEA 和Remix,通過web3.js 實(shí)現(xiàn)與區(qū)塊鏈的交互。本文方案的基礎(chǔ)實(shí)驗(yàn)平臺是以太坊,在以太坊虛擬機(jī)上部署智能合約,每項(xiàng)操作都有計(jì)算量和Gas 值的限制,所以主要的計(jì)算任務(wù)都分配給了驗(yàn)證組成員。

與文獻(xiàn)[7]和文獻(xiàn)[11]相比,由于無需與服務(wù)器交互,本文方案的初始化時(shí)間更短。但與文獻(xiàn)[11]相比,本文方案在初始化開銷方面會略高一些,由于初始化階段,用戶需要生成低熵秘密的默克爾樹并保存默克爾根,驗(yàn)證組成員需要保存低熵秘密的哈希數(shù)據(jù)塊,但這在驗(yàn)證階段將會提高驗(yàn)證速率。具體對比如圖2所示。

圖2 初始化時(shí)間對比

在雙因素認(rèn)證階段,文獻(xiàn)[7]和文獻(xiàn)[17]都需要借助第三方服務(wù)器生成隨機(jī)的一次性密碼OTP,所以驗(yàn)證時(shí)間會比認(rèn)證過程完全依賴智能合約的方案花費(fèi)更多。本文方案和文獻(xiàn)[11]的方案驗(yàn)證時(shí)間有所優(yōu)化。具體的對比如圖3所示。

圖3 驗(yàn)證時(shí)間對比

經(jīng)過實(shí)驗(yàn)認(rèn)證,本文方案面對在惡意用戶企圖非法轉(zhuǎn)移賬戶資金時(shí),第一因素默克爾認(rèn)證可以成功識別并攔截73%的惡意用戶,攔截后惡意用戶便無法接觸到后續(xù)的非交互零知識證明,在用戶恢復(fù)[27]賬戶使用權(quán)后也只需要支付默克爾認(rèn)證的費(fèi)用,這也可以減少惡意用戶攻擊的頻率。具體對比如圖4所示。

圖4 惡意用戶的雙因素認(rèn)證開銷對比

5 結(jié)束語

本文提出的雙因素認(rèn)證方案結(jié)合了非交互零知識證明、默克爾樹、ElGamal 算法等方法,并將認(rèn)證過程寫進(jìn)智能合約中。當(dāng)智能合約捕捉到了異常交易,強(qiáng)制用戶進(jìn)行雙因素認(rèn)證以恢復(fù)交易,若是認(rèn)證失敗,異常交易將會被鎖定24 小時(shí)。從實(shí)驗(yàn)驗(yàn)證的結(jié)果來看,面對惡意用戶的攻擊,本文方案的認(rèn)證開銷更小,并且合法用戶有較長的時(shí)間來恢復(fù)賬戶,可避免許多的經(jīng)濟(jì)損失。

猜你喜歡
私鑰默克爾合約
比特幣的安全性到底有多高
基于改進(jìn)ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
一種基于虛擬私鑰的OpenSSL與CSP交互方案
特蕾莎·梅——英國版“默克爾”
海外星云(2016年15期)2016-12-01 04:18:14
德國總理默克爾參加節(jié)日聚會 開懷暢飲
合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望
LeeB私鑰分發(fā)協(xié)議的改進(jìn)方案
默克爾即將訪美
罗源县| 黎川县| 枝江市| 安阳县| 广灵县| 临洮县| 孝感市| 龙岩市| 吴忠市| 晋中市| 高密市| 泸水县| 客服| 龙江县| 洛宁县| 壤塘县| 蓝田县| 资兴市| 望谟县| 佛山市| 六安市| 紫金县| 乐昌市| 太仓市| 东乌| 靖远县| 凤山县| 睢宁县| 喀什市| 巩义市| 吉水县| 锦屏县| 启东市| 治县。| 彩票| 上虞市| 信宜市| 临高县| 田阳县| 沈丘县| 伊川县|