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

?

基于分布式密鑰生成和屬性基密碼的多方跨鏈交易方案

2023-11-24 05:25馬宇航吳星雨
計算機(jī)研究與發(fā)展 2023年11期
關(guān)鍵詞:代幣哈希合約

馬宇航 張 亮,2,3 吳星雨 李 鳴

1(海南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 海口 570228)

2(海南省Internet 信息檢索重點實驗室(海南大學(xué))海口 570228)

3(上海市智能信息處理重點實驗室(復(fù)旦大學(xué))上海 200433)

4(上海區(qū)塊鏈工程技術(shù)研究中心 上海 200433)

5(中國電子技術(shù)標(biāo)準(zhǔn)化研究院 北京 100007)

(1755918620@qq.com)

目前區(qū)塊鏈技術(shù)及其應(yīng)用正處于高速發(fā)展階段,在智慧金融、供應(yīng)鏈服務(wù)、數(shù)據(jù)共享、政府管理、數(shù)字醫(yī)療等領(lǐng)域的應(yīng)用逐漸加深[1-3].區(qū)塊鏈主要提供了一種去中心化的數(shù)據(jù)存儲機(jī)制,網(wǎng)絡(luò)中的每個節(jié)點都存儲著完整的數(shù)據(jù),少數(shù)節(jié)點被攻擊和失效不影響整個系統(tǒng)的安全[4].區(qū)塊鏈通過密碼學(xué)和計算機(jī)科學(xué)等技術(shù)實現(xiàn)了基于代碼的機(jī)器信任模式,使用技術(shù)來為信任做背書,在經(jīng)濟(jì)和文化方面都是一場深刻的變革.

在區(qū)塊鏈發(fā)展早期,信息的交互僅僅是在各自的鏈上進(jìn)行,大多數(shù)區(qū)塊鏈?zhǔn)且粋€個獨立的、封閉的體系,是一個個數(shù)據(jù)孤島[5].隨著時代的發(fā)展,單一的區(qū)塊鏈無法滿足復(fù)雜的業(yè)務(wù)需求.因此需要跨鏈技術(shù)來連接各個獨立的區(qū)塊鏈,來實現(xiàn)多個區(qū)塊鏈的數(shù)據(jù)共享、業(yè)務(wù)合作和價值流通,實現(xiàn)多方共贏.

跨鏈?zhǔn)沁B接2 個或者多個獨立區(qū)塊鏈實現(xiàn)數(shù)據(jù)流通和價值轉(zhuǎn)移操作的一種協(xié)議[6].以太坊創(chuàng)始人Vitalik 認(rèn)為跨鏈?zhǔn)且环N具體應(yīng)用能力,區(qū)塊鏈互操作主要指兩條區(qū)塊鏈之間進(jìn)行資產(chǎn)轉(zhuǎn)移、支付或信息交互的能力[7].目前跨鏈主要應(yīng)用在資產(chǎn)轉(zhuǎn)移、數(shù)據(jù)共享和服務(wù)協(xié)同這3 個方面.

在實現(xiàn)跨鏈業(yè)務(wù)時需要保證:信息的真實性、交易的原子性和事物的一致性[8].信息的真實性是指在交易時一條鏈傳入另一條鏈的信息是真實的.交易的原子性是指交易作為一個整體被對待,要么全部成功,要么全部失敗,不存在部分成功或部分失敗的情況.事物的一致性是指2 條鏈上的跨鏈執(zhí)行前后狀態(tài)保持一致.

目前主流的跨鏈技術(shù)有:

1)公證人機(jī)制.不同區(qū)塊鏈之間使用共同信任的第三方充當(dāng)公證人進(jìn)行跨鏈消息的驗證和轉(zhuǎn)發(fā).公證人機(jī)制的優(yōu)點是實現(xiàn)簡單和效率高,缺點是中心化的風(fēng)險[9].Ripple 的Interledger 協(xié)議,是公證人機(jī)制的代表項目[10].

2)哈希鎖定技術(shù).哈希時間鎖定采用了哈希鎖和時間鎖,迫使資產(chǎn)接收方在截止時間內(nèi)確定收款并產(chǎn)生收款證明給付款人,否則資產(chǎn)會歸還.收款證明能夠被付款人用來獲取接收人區(qū)塊鏈上的等價值資產(chǎn)或觸發(fā)其他事件[11].哈希時間鎖需要跨鏈雙方支持智能合約,支持相同的哈希算法,并且在時間上也要做到同步,所以哈希鎖定技術(shù)的適用性不強(qiáng),一般用來進(jìn)行相同區(qū)塊鏈不同數(shù)字資產(chǎn)的交易.

3)側(cè)鏈技術(shù)、中繼技術(shù).側(cè)鏈被定義為可以驗證來自其他區(qū)塊鏈數(shù)據(jù)的區(qū)塊鏈,是一種強(qiáng)耦合結(jié)構(gòu)的跨鏈模式.采用雙向錨定主鏈資產(chǎn)并使該資產(chǎn)可以在主鏈和側(cè)鏈之間進(jìn)行價值轉(zhuǎn)移.中繼在本質(zhì)上是公證人機(jī)制和側(cè)鏈機(jī)制的融合,使用中繼區(qū)塊鏈代替公證人.Cosmos,Polkadot,BTC-Relay 等是該機(jī)制的代表項目[12-13].

4)分布式私鑰控制.該技術(shù)是基于密碼學(xué)中的多方計算和門限密鑰的一種技術(shù).它采用分布式節(jié)點來控制區(qū)塊鏈系統(tǒng)中各種資產(chǎn)的私鑰,將數(shù)字資產(chǎn)的使用權(quán)和所有權(quán)進(jìn)行分離,使得鏈上資產(chǎn)的控制權(quán)能夠安全地轉(zhuǎn)移到非中心化系統(tǒng)中,同時將原鏈上的資產(chǎn)映射到跨鏈中,實現(xiàn)不同區(qū)塊鏈系統(tǒng)間的資產(chǎn)流通和價值轉(zhuǎn)移[14].

跨鏈的數(shù)字資產(chǎn)交換主要依靠中心化交易所與去中心化交易所.

在中心化交易所,用戶需要將自己的資產(chǎn)充值到交易所的錢包,交易所對用戶的資產(chǎn)有絕對的控制權(quán),中心化交易所無法保證用戶資金的安全和透明.傳統(tǒng)的中心化交易所有:幣安(Binance)、火幣(Huobi)等[15].雖然中心化交易所的交易效率更高,但是數(shù)字資產(chǎn)的安全性不高.2022 年全球第二大交易平臺FTX 因挪用用戶資產(chǎn)造成資金流動性不足而倒閉[16].FTX 的破產(chǎn)不但給用戶造成了資產(chǎn)的損失,而且嚴(yán)重打擊了區(qū)塊鏈?zhǔn)袌龅男判?

現(xiàn)存的去中心化交易所有Uniswap、MDEX 等.Uniswap 是基于以太坊建立的分布式加密交易平臺,是去中心化的,它是一組部署到以太坊網(wǎng)絡(luò)的合約,交易都在區(qū)塊鏈上進(jìn)行[17].去中心化交易所大部分在公鏈上運行,受限于參與跨鏈的區(qū)塊鏈本身的出塊時間和確認(rèn)速度,影響了交易效率.這導(dǎo)致去中心化交易所更可能產(chǎn)生由于交換的加密貨幣價值的變化而造成的交易無法執(zhí)行的問題,并且去中心化交易所的訂單類型和功能較少.去中心化的交易大多數(shù)只能實現(xiàn)同一個區(qū)塊鏈上不同合約資產(chǎn)的交換,對異構(gòu)區(qū)塊鏈之間的資產(chǎn)交換不完善.去中心化交易所的流動性波動很大,嚴(yán)重依賴交易平臺的用戶活躍度.

本文方案為實現(xiàn)一個去中心化的多方交易平臺.該方案可以實現(xiàn)4 個目標(biāo):

1)去中心化資產(chǎn)存儲.基于分布式密鑰生成的跨鏈方式可以將異構(gòu)區(qū)塊鏈的數(shù)字資產(chǎn)質(zhì)押到一個分布式系統(tǒng)中,由分布式系統(tǒng)中的節(jié)點共同保護(hù)秘密,可以避免中心化的危險.

2)良好的互操作性.在使用本文方案時,用戶只需提供交易區(qū)塊鏈上的公鑰地址.本文方案可以屏蔽區(qū)塊鏈底層技術(shù)和協(xié)議,將異構(gòu)區(qū)塊鏈上的資產(chǎn)映射到交易區(qū)塊鏈上進(jìn)行交易,實現(xiàn)異構(gòu)區(qū)塊鏈的跨鏈資產(chǎn)交易.

3)支持智能合約.將分布式系統(tǒng)中的資產(chǎn)映射到支持智能合約區(qū)塊鏈上,這樣可以屏蔽異構(gòu)區(qū)塊鏈的底層技術(shù),它們的數(shù)字資產(chǎn)可以使用智能合約操作.

4)控制交易對象.使用屬性密碼進(jìn)行訪問控制,可以為用戶提供豐富的訪問控制策略,保護(hù)用戶數(shù)字資產(chǎn)交易的安全.

1 背景和相關(guān)知識介紹

1.1 區(qū)塊鏈與以太坊

2008 年,中本聰在比特幣白皮書中提出區(qū)塊鏈的概念.區(qū)塊鏈技術(shù)是基于密碼學(xué)、時間戳等技術(shù)來傳輸和驗證數(shù)據(jù),通過鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù),利用共識機(jī)制來生成和更新數(shù)據(jù),并通過設(shè)計可編程智能合約來實現(xiàn)的一種全新去中心基礎(chǔ)架構(gòu)與分布式計算范式[18].

以太坊是一個開源的有智能合約功能的公共區(qū)塊鏈平臺,通過其專用加密貨幣以太幣(Ether,ETH)提供去中心化的以太虛擬機(jī)(Ethereum virtual machine,EVM)來處理點對點合約.以太坊是一種用于在不受中心化監(jiān)管機(jī)構(gòu)管控的環(huán)境下構(gòu)建應(yīng)用程序和組織、持有資產(chǎn)、進(jìn)行交易和通信的技術(shù)[19].

以太坊智能合約是存放在以太坊區(qū)塊鏈具有特定地址的代碼(功能)和數(shù)據(jù)(狀態(tài))集合.智能合約可以定義規(guī)則并通過代碼自動執(zhí)行.智能合約以以太坊特定的二進(jìn)制字節(jié)碼通過以太坊虛擬機(jī)運行于區(qū)塊鏈上[20].

ERC-20 是在以太坊區(qū)塊鏈上創(chuàng)建同質(zhì)化代幣的技術(shù)標(biāo)準(zhǔn)[21].同質(zhì)化代幣是指可以互換的代幣,它們具有相同的類型和價值.ERC-20 允許開發(fā)者創(chuàng)建可以與其他產(chǎn)品和服務(wù)互操作的智能合約代幣.ERC-20 規(guī)定了一些智能合約代幣必須實現(xiàn)的函數(shù)和事件,以保證它們的可組合性和互操作性.

1.2 VSS 協(xié)議和分布式密鑰生成技術(shù)

可驗證的秘密分享是一種在密碼學(xué)中用于安全地分發(fā)和恢復(fù)秘密信息的技術(shù),它在普通的秘密分享的基礎(chǔ)上增加了驗證機(jī)制,以防止分發(fā)者或參與者作惡或出錯.可驗證的秘密分享有很多種方案,其中比較著名和廣泛應(yīng)用的是Feldman 方案,它是基于Shamir 方案構(gòu)造的非交互式可驗證秘密分享[22-27].

Feldman 方案的實現(xiàn)如下:

系統(tǒng)參數(shù)為:p是大素數(shù),q是p-1的大素數(shù)因子,g是中的一個q階元素,k是門限值,n是分享者數(shù)量.每一個參與者表示為Pj,其中j=1,2,…,n,門限值為t,且滿足 1 ≤t≤n≤q.

1)共享分發(fā).分發(fā)者D選擇一個t-1次多項式

將要分享的秘密作為a0=s的值.把sj=f(j)modq作為共享秘密發(fā)送給參與者Pj,j=1,2,…,n.另外計算承諾

2)共享驗證.每個參與者Pj檢驗收到的共享秘密,通過檢驗

如果等式成立,收到的sj有效.

3)密鑰恢復(fù).當(dāng)k個或者多于k個參與者恢復(fù)秘密時,每個參與者Pj向其他合作者廣播自己的sj,當(dāng)所有合作者的共享都被驗證為有效時,合作者可根據(jù)拉格朗日多項式插值的方法計算出秘密s.秘密s的計算公式為:

分布式密鑰生成(distributed key generation,DKG)是一種門限密碼學(xué)的技術(shù),可以讓多個參與方協(xié)作生成和分發(fā)一個共同的密鑰,而不需要任何可信的中心節(jié)點或者加解密操作[28-29].

DKG 通常包含3 個算法:共享算法、驗證算法和重建算法.

1)共享算法.每個參與方通過一個分布式協(xié)議(如VSS 或PVSS)向其他參與方發(fā)送自己選擇的秘密份額,并給出計算秘密的承諾.假設(shè)分布網(wǎng)絡(luò)中存在n個節(jié)點,分布式網(wǎng)絡(luò)中的第j個節(jié)點接收到質(zhì)押資產(chǎn)請求后,在本地使用一個VSS 算法,為這次請求產(chǎn)生一個秘密值sj,并生成一個多項式:

其中t=n/2.并計算fi(x),x=1,2,…,n.將計算的fj(x)給第x個節(jié)點,計算第i個節(jié)點的承諾值:

其中i=0,1,…,t-1.每個用戶驗證自己收到的秘密.第x個用戶收到第j個節(jié)點的值后,計算:

如式(7)成立,第x個用戶收到的信息正確.第x個用戶將收到的其他節(jié)點的正確信息保存下來,并發(fā)布驗證通過的節(jié)點名單.然后所有節(jié)點進(jìn)行投票選出存儲秘密的節(jié)點,被選中的節(jié)點把存儲秘密節(jié)點發(fā)送的值相加得到aj.使用橢圓曲線算法生成公鑰PK′:

其中P為常數(shù).

2)私鑰還原算法.每個存儲秘密節(jié)點將自己的秘密發(fā)送給用戶.私鑰S K′為

1.3 基于密文的屬性密碼

基于密文策略的屬性加密(CP-ABE)可以實現(xiàn)細(xì)粒度的數(shù)據(jù)訪問控制和保護(hù)用戶隱私.在CP-ABE 中,數(shù)據(jù)擁有者可以根據(jù)一些預(yù)定義的屬性來指定一個訪問策略,并將該策略嵌入到密文中.用戶的私鑰則與一組屬性相關(guān)聯(lián),只有當(dāng)用戶的屬性滿足密文的訪問策略時,才能解密出數(shù)據(jù).

數(shù)據(jù)擁有者不需要知道具體的接收者身份,只需要根據(jù)屬性加密數(shù)據(jù),降低了加密開銷和管理復(fù)雜度.數(shù)據(jù)接收者只能解密符合自己屬性的密文,保證了數(shù)據(jù)機(jī)密性和用戶隱私.用戶之間無法合謀攻擊,因為不同用戶的私鑰與隨機(jī)數(shù)和多項式相關(guān),無法聯(lián)合使用.數(shù)據(jù)擁有者可以靈活地指定基于屬性的訪問控制策略,支持與、或、非和門限等邏輯操作.

CP-ABE 主要有4 種算法:

Setup:只接受隱式的安全參數(shù)作為輸入.輸出公共參數(shù)PK和主密鑰MK.

Encrypt(PK,M,A):輸入PK、消息M和訪問結(jié)構(gòu)A,對M進(jìn)行加密,產(chǎn)生密文CT.

Key Generation(MK,S):輸入主密鑰MK和描述密鑰的屬性集合S,輸出私鑰SK.其中,SK由屬性來確定.

Decrypt(PK,CT,SK):輸入公共參數(shù)PK、包含訪問結(jié)構(gòu)A的密文CT,以及私鑰SK.注意這里的私鑰由屬性集合S生成.如果S能夠滿足A,則對CT進(jìn)行解密并返回消息M.

我們選擇Bethencourt,Sahai and Waters(BSW)CPABE 作為底層原語[30].

2 系統(tǒng)模型與系統(tǒng)假設(shè)

2.1 系統(tǒng)模型

整個多方交易系統(tǒng)由分布式網(wǎng)絡(luò)、交易區(qū)塊鏈和用戶3 個部分組成,如圖1 所示.

Fig.1 System architecture and function圖1 系統(tǒng)架構(gòu)與功能

1)分布式網(wǎng)絡(luò).該網(wǎng)絡(luò)由一群分布式節(jié)點組成,這些節(jié)點有3 個特征:①分布式節(jié)點運行著分布式密鑰生成算法,分布式節(jié)點會為每筆交易產(chǎn)生一個單獨的秘密,節(jié)點之間不共享秘密.②每個節(jié)點需要向用戶和其他節(jié)點提供秘密驗證服務(wù),每個節(jié)點都可以驗證其他節(jié)點的秘密是否正確.③分布式節(jié)點可以通過驗證交易的哈希值檢驗交易的真實性.分布式網(wǎng)絡(luò)為用戶生成一對對應(yīng)的公私鑰匙對用來鎖定資產(chǎn),提供給用戶公鑰地址并保存私鑰.用戶請求提取資產(chǎn),驗證用戶提取資產(chǎn)的合法性,驗證通過后將私鑰交給用戶.分布式網(wǎng)絡(luò)為用戶在交易區(qū)塊鏈上生成代幣,將用戶資產(chǎn)映射到交易區(qū)塊鏈上.分布式網(wǎng)絡(luò)在用戶提取資產(chǎn)后,將用戶在交易區(qū)塊鏈上映射的代幣銷毀.

2)交易區(qū)塊鏈.其功能為:記錄用戶的數(shù)據(jù)和數(shù)字資產(chǎn)信息;為用戶提供一個交易的平臺,用戶在交易區(qū)塊鏈?zhǔn)褂么鷰胚M(jìn)行交易;為用戶提供智能合約功能;在分布式節(jié)點質(zhì)押的數(shù)字資產(chǎn)會映射到交易區(qū)塊鏈上生成等額的代幣,來供用戶交易;根據(jù)分布式節(jié)點的請求,銷毀代幣;為用戶在交易區(qū)塊鏈提供注冊服務(wù).

3)用戶.用戶將資產(chǎn)打到分布式節(jié)點產(chǎn)生的公鑰地址上,完成資產(chǎn)的質(zhì)押.用戶將交易驗證提交給分布式節(jié)點,接受并驗證分布式節(jié)點的秘密是否正確,如果秘密正確將秘密還原為數(shù)字資產(chǎn)對應(yīng)的私鑰.用戶通過CP-ABE 進(jìn)行訪問控制,只有符合用戶設(shè)定,訪問控制策略才能和用戶發(fā)生交易.

2.2 系統(tǒng)假設(shè)

分布式網(wǎng)絡(luò)中一半的節(jié)點是誠實的,并且節(jié)點之間的通訊使用安全信道.分布式網(wǎng)絡(luò)與用戶的通訊同樣使用安全信道.分布式網(wǎng)絡(luò)可以調(diào)用交易區(qū)塊鏈的智能合約接口.

交易區(qū)塊鏈?zhǔn)呛鸵蕴粎f(xié)議相同的公鏈,可以運行虛擬機(jī),支持智能合約.

交易幣是交易區(qū)塊鏈產(chǎn)生的數(shù)字貨幣.多方交易系統(tǒng)使用交易幣獎勵用戶存入數(shù)字資產(chǎn),交易幣還可以用來支付多方交易系統(tǒng)的服務(wù).

2.3 智能合約

交易區(qū)塊鏈上部署的智能合約主要包括代幣合約和交易合約,它們?yōu)橛脩籼峁┡c代幣相關(guān)的服務(wù).

1)代幣合約.代幣合約是符合ERC20 標(biāo)準(zhǔn)的合約.調(diào)用函數(shù)mint(uintamount),生成輸入數(shù)量的代幣.調(diào)用函數(shù)burn(uintamount),銷毀輸入數(shù)量的代幣.調(diào)用函數(shù)transferFrom(addresssender,addressrecipient,uintamount),將輸入數(shù)額的代幣從地址sender轉(zhuǎn)到地址recipient.

2)交易合約.使用哈希時間鎖來保證交易公平的合約.函數(shù)newContract(

輸入接收者地址receiver、哈希鎖hashlock、時間鎖timelock、代幣地址tokenContract和發(fā)送數(shù)量amount創(chuàng)建新交易,合約會返回一個contractId.在規(guī)定時間內(nèi),調(diào)用withdraw(

輸入對應(yīng)的contractId和preimage,如果驗證通過,交易合約將資金轉(zhuǎn)入地址receiver,在設(shè)定的時間內(nèi),用戶無法訪問自己的refund函數(shù)取走自己的資金.如果超過函數(shù)newContract設(shè)定的時間鎖的時間,調(diào)用函數(shù)refund(bytes32contractId)將資金返回給用戶.時間鎖是由newContract函數(shù)傳入的時間參數(shù)不同而設(shè)置的.參數(shù)preimage為一段字符串,在本文中作為哈希函數(shù)的原值.

發(fā)送方將原值的哈希值發(fā)給接收方,并設(shè)定接收方在時間鎖設(shè)定時間1 內(nèi)憑借哈希值的原值來解鎖發(fā)送方的合約.接受方設(shè)定在時間鎖設(shè)定時間2 內(nèi)憑借哈希值的原值來解鎖發(fā)送方的合約.此時,發(fā)送方雖然知道哈希值的原值,但由于時間鎖的緣故,他無權(quán)解鎖合約取走資金.這種設(shè)計可以避免發(fā)送方在給接收方共享了密鑰后取走自己資金的行為.一旦發(fā)送方在時間2 內(nèi)使用原值取走接收方的資金,接收方就知道了原值,就可以在時間1 內(nèi)取走發(fā)送方的資金.時間2 要小于時間1,為接收方留出充足的時間取走資金.若在時間鎖規(guī)定的時間內(nèi)雙方?jīng)]有用哈希值的原值進(jìn)行解鎖,那么在鎖定時間之后雙方無法解鎖,雙方通過refund函數(shù)取走自己的資金.通過哈希鎖和時間鎖的巧妙配合,保證了交易的原子性.

3 基于分布式密鑰生成和屬性密碼的多方跨鏈交易方案

多方交易系統(tǒng)就是一個去中心化的銀行,是一個去中心化的交易平臺.用戶在分布式網(wǎng)絡(luò)和交易區(qū)塊鏈上注冊相當(dāng)于在銀行開賬戶,將數(shù)字資產(chǎn)質(zhì)押到多方交易系統(tǒng)相當(dāng)于把錢存入銀行賬戶.用戶使用CP-ABE 設(shè)置訪問控制就是設(shè)置交易條件.用戶在多方交易系統(tǒng)中轉(zhuǎn)換數(shù)字資產(chǎn)種類,就相當(dāng)于銀行將本國貨幣兌換為外幣.用戶在數(shù)字資產(chǎn)繳納的服務(wù)費相當(dāng)于銀行兌換外幣時交的服務(wù)費和稅費.如圖2 所示,用戶3 將比特幣存入多方交易系統(tǒng)中,多方交易系統(tǒng)將資產(chǎn)轉(zhuǎn)換為火幣和以太幣;用戶1使用多方交易系統(tǒng)將火幣交換為用戶3 的比特幣;用戶2 使用多方交易系統(tǒng)將以太幣交換為用戶3 的比特幣.

Fig.2 Diagram of multi-party transactions圖2 多方交易示意圖

基于DKG 和屬性基密碼的多方跨鏈交易方案分為資產(chǎn)質(zhì)押、資產(chǎn)交易和資產(chǎn)提取.在資產(chǎn)質(zhì)押前首先進(jìn)行用戶注冊,用戶使用多方交易系統(tǒng)需要在交易區(qū)塊鏈上注冊賬戶.

3.1 資產(chǎn)質(zhì)押

資產(chǎn)質(zhì)押是用戶將資產(chǎn)鎖定到分布式網(wǎng)絡(luò)上的操作,如圖3 所示.

Fig.3 Diagram of asset pledge圖3 資產(chǎn)質(zhì)押示意圖

首先,用戶向分布式網(wǎng)絡(luò)提交質(zhì)押資產(chǎn)請求,將自己在交易區(qū)塊鏈上的賬戶地址、數(shù)字資產(chǎn)的種類、p、q和g發(fā)給分布式網(wǎng)絡(luò)(p是大素數(shù),q是p-1的大素數(shù)因子,g是中的一個q階元素).然后,分布式網(wǎng)絡(luò)使用DKG 的共享算法,為這個用戶生成公鑰PK′.

然后,用戶將數(shù)字資產(chǎn)轉(zhuǎn)入公鑰地址,將交易信息提供給分布式網(wǎng)絡(luò).如表1 所示,交易信息為交易哈希值、轉(zhuǎn)賬金額、轉(zhuǎn)賬發(fā)出地址、轉(zhuǎn)賬接收地址和轉(zhuǎn)賬時間.之后,分布式網(wǎng)絡(luò)查閱交易哈希值代表的交易信息,驗證轉(zhuǎn)賬接收地址是否為PK′、交易的金額是否與用戶請求金額一致、轉(zhuǎn)賬時間是否在分布式節(jié)點提供PK′之后,全部一致則代表驗證用戶提供的交易信息正確.驗證通過后節(jié)點將產(chǎn)生的秘密與用戶的信息存入節(jié)點數(shù)據(jù)表,節(jié)點數(shù)據(jù)表存儲數(shù)據(jù)的種類與類型,如表2 所示.

Table 2 Table of Node Data表2 節(jié)點數(shù)據(jù)表

分布式網(wǎng)絡(luò)驗證用戶提供的交易信息,驗證通過后,使用代幣合約調(diào)用函數(shù)mint,在交易區(qū)塊鏈上生成ERC20 標(biāo)準(zhǔn)的等額代幣,調(diào)用函數(shù)transferFrom將代幣轉(zhuǎn)賬到用戶的賬號地址,將代幣合約的地址存入節(jié)點數(shù)據(jù)表.

最后,分布式網(wǎng)絡(luò)將代幣合約地址提供給用戶,用戶在交易區(qū)塊鏈上添加代幣.

3.2 資產(chǎn)交易

用戶可以通過設(shè)置訪問控制策略來控制與自己發(fā)生交易的用戶條件,只有滿足條件才能和用戶發(fā)生交易.

1)用戶1 調(diào)用Setup算法生成公共參數(shù)PK和主密鑰MK.

2)用戶1 設(shè)置訪問控制策略A,與滿足策略的人進(jìn)行交易.用戶可以將金額、幣種、匯率、時間設(shè)為屬性進(jìn)行訪問控制.匯率為用戶的代幣除以交易用戶的代幣.

如圖4 所示,Alice 擁有比特幣,她接受將自己的數(shù)字資產(chǎn)轉(zhuǎn)換為以太幣,轉(zhuǎn)換匯率為8~10,轉(zhuǎn)換金額為2~10 ETH,Alice 在2022 年10 月2 日到2022 年11月2 日期間接受資產(chǎn)轉(zhuǎn)換.

Fig.4 Access control policy of Alice圖4 Alice 的訪問控制策略

在實際情況下用戶可以設(shè)置多個幣種、匯率、金額和時間來實現(xiàn)多樣化的數(shù)字資產(chǎn)轉(zhuǎn)換.如圖5所示,Bob 支持將自己的數(shù)字資產(chǎn)轉(zhuǎn)換為以太幣和火幣.以太幣的匯率為8~10,轉(zhuǎn)換金額為2~10 ETH,轉(zhuǎn)換時間為2022 年10 月2 日到2022 年11 月2 日期間.火幣的匯率為2~4,轉(zhuǎn)換金額為5~8 HT,轉(zhuǎn)換時間為2022 年10 月2 日到2022 年11 月20 日期間.

Fig.5 Access control policy of Bob圖5 Bob 的訪問控制策略

用戶1 部署一個一號交易合約,使用Encrypt(PK,M,A)算法,加密一號交易合約的地址與preimage的哈希值,生成密文CT.然后將密文CT、公共參數(shù)PK和主密鑰MK上傳到數(shù)據(jù)庫.

3)用戶2 查詢數(shù)據(jù)庫,尋找符合條件的用戶.然后,下載符合條件用戶的數(shù)據(jù)包.用戶2 將自己的數(shù)字資產(chǎn)信息作為屬性集合S和下載的主密鑰MK,調(diào)用Key Generation(MK,S)為生成私鑰SK.其中,SK由屬性來確定.

4)用戶2 使用生成的私鑰SK、下載的公共參數(shù)PK和密文CT,調(diào)用Decrypt(PK,CT,SK)算法進(jìn)行解密.如果屬性集合S滿足訪問控制策略A,用戶2 就獲得用戶1 的一號交易合約地址和preimage的哈希值,就可以與用戶1 交易.用戶1 調(diào)用交易合約,將preimage的哈希值作為hashlock和將時間1 作為timelock,調(diào)用newContract函數(shù)將代幣存入一號交易合約.用戶2 驗證一號交易合約的信息后,部署二號交易合約,將preimage的哈希值賦值給hashlock和將時間2 賦值給timelock,調(diào)用newContract函數(shù)將代幣存入二號交易合約.二號交易合約中設(shè)定時間2 小于一號交易合約的時間1,這樣可以為用戶2 留下充足的時間取走用戶1 的數(shù)字資產(chǎn).如果用戶1 使用preimage取走二號交易合約資產(chǎn),用戶2 就收到了preimage的值,就可以取走一號交易合約的資產(chǎn).超過時間,雙方都通過refund函數(shù)取走自己的代幣.

3.3 資產(chǎn)提取

用戶將資產(chǎn)從分布式網(wǎng)絡(luò)中提取的操作,如圖6所示.

Fig.6 Diagram of asset extraction圖6 資產(chǎn)提取示意圖

用戶向分布式網(wǎng)絡(luò)提交資產(chǎn)提取申請,提取申請需要傳遞的數(shù)據(jù)如表3 所示.分布式網(wǎng)絡(luò)中的節(jié)點通過查詢代幣合約地址,驗證代幣的所有賬戶與申請賬戶是否一致,驗證資產(chǎn)種類與資產(chǎn)數(shù)量是否一致.節(jié)點驗證這筆數(shù)字資產(chǎn)的所有權(quán)通過后,分布式網(wǎng)絡(luò)中的節(jié)點將會把各自的秘密提供給用戶,用戶收集一半以上節(jié)點的秘密就可以使用DKG 的私鑰還原算法,還原出私鑰SK′,取走數(shù)字資產(chǎn).一半以上存儲秘密的節(jié)點向用戶分享秘密之后,分布式網(wǎng)絡(luò)調(diào)用代幣合約burn函數(shù)銷毀對應(yīng)資產(chǎn)的代幣,并從節(jié)點數(shù)據(jù)表中刪除相關(guān)信息.

Table 3 Extraction Application Information表3 提取申請信息

3.4 激勵與付費機(jī)制

用戶可以在多方交易系統(tǒng)上選擇符合自己需求的數(shù)字資產(chǎn)類型進(jìn)行交易.用戶質(zhì)押和提取自己的數(shù)字資產(chǎn)不需要付費,而用戶交換其他種類的數(shù)字資產(chǎn)需要付一定的服務(wù)費.這筆服務(wù)費一部分會給多方交易系統(tǒng)用來維護(hù)交易系統(tǒng),另一部分會獎勵給數(shù)字資產(chǎn)在交易中被使用的用戶.

多方交易系統(tǒng)鼓勵用戶將自己的數(shù)字資產(chǎn)存入多方交易系統(tǒng)中,多方交易系統(tǒng)中的數(shù)字資產(chǎn)的數(shù)額大小和種類影響用戶的交易效率.用戶進(jìn)行數(shù)字資產(chǎn)轉(zhuǎn)換的選擇越多,交易越容易發(fā)生,所以用戶存入的數(shù)字資產(chǎn)金額越大、存儲時間越長和設(shè)置交換的數(shù)字資產(chǎn)策略越多,多方交易系統(tǒng)給予用戶的獎勵越多,獎勵為交易區(qū)塊鏈的交易幣.另一方面,多方交易方案會給服務(wù)提供者獎勵.分布式網(wǎng)絡(luò)中的節(jié)點成功完成資產(chǎn)質(zhì)押、資產(chǎn)提取等服務(wù),多方交易系統(tǒng)都會給分布式節(jié)點獎勵交易幣.

用戶進(jìn)行數(shù)字資產(chǎn)轉(zhuǎn)換時需要根據(jù)交易的數(shù)字資產(chǎn)金額付一定比例的服務(wù)費,一部分服務(wù)費用來獎勵用戶,另一部分兌換為交易區(qū)塊鏈的交易幣付給多方交易系統(tǒng)的服務(wù)者.

4 實驗結(jié)果與分析

實驗在VMware Workstation 16 的Ubuntu 22.04.2 LTS 虛擬機(jī)上進(jìn)行,Intel?Core? i5-8300H CPU @2.30 GHz × 2,8 GB RAM.實驗的區(qū)塊鏈平臺為以太坊的Go 語言平臺(Go-Ethereum).此外,我們通過啟動多個節(jié)點來模擬不同的客戶端,同時將交易發(fā)送到區(qū)塊鏈上.

開展實驗研究的主要目的有3 個:

1)研究CP-ABE 運行時間與策略數(shù)量的關(guān)系、CP-ABE 運行時間與日期設(shè)定的關(guān)系.

2)研究分布式節(jié)點數(shù)量與私鑰還原時間的關(guān)系、分布式節(jié)點數(shù)量對共享算法的影響.

3)部署和使用代幣合約所需要的gas 消耗,部署和使用交易合約所需要的gas 消耗.

如圖7 所示,策略數(shù)量的增加影響CP-ABE 解密算法的運行時間,加密與私鑰生成算法的運行時間會增加,其中私鑰生成算法的運行時間增加得最多.

Fig.7 Effect of access control policy on running time of CPABE圖7 訪問控制策略對CP-ABE 運行時間的影響

如圖8 所示,隨著日期的變化,CP-ABE 的加密時間、解密時間和私鑰生成時間幾乎不變,所以日期的變化不影響CP-ABE 的運行時間.

Fig.8 Effect of data changes on running time of CP-ABE圖8 日期變化對CP-ABE 運行時間的影響

如圖9 所示,隨著節(jié)點的增加,DKG 共享算法與私鑰還原算法的時間都會增加.但是隨著節(jié)點數(shù)量的增加,私鑰還原算法的時間增長速率加大.本文的DKG 算法是基于可驗證的秘密分享設(shè)計的,所以DKG 算法的私鑰還原效率受拉格朗日插值法的限制.盡管私鑰還原的速度隨節(jié)點增長的速度變化較快,但是節(jié)點數(shù)為300 時DKG 算法也僅需0.07 s,性能足以滿足要求.

Fig.9 Effect of node number on running time of DKG圖9 節(jié)點數(shù)量對DKG 運行時間的影響

如圖10 所示,分布式節(jié)點部署ERC20 標(biāo)準(zhǔn)代幣合約時消耗的gas 值最大,而使用mint函數(shù)生成代幣和用burn函數(shù)銷毀代幣的gas 值消耗較小.

Fig.10 Gas consumption of ERC20 token contract圖10 ERC20 代幣合約的gas 消耗

如圖11 所示,分布式節(jié)點部署交易合約時消耗的gas 值最大,使用newContract函數(shù)鎖定代幣和使用refund函數(shù)取回代幣的gas 值消耗較小,使用withdraw函數(shù)交易代幣的gas 消耗也不大.

Fig.11 Gas consumption of trading contract圖11 交易合約的gas 消耗

5 系統(tǒng)分析

5.1 安全性分析

影響本方案交易的安全主要有3 個方面:DKG算法、屬性基密碼和交易合約.

DKG 算法是基于Feldman 方案,F(xiàn)eldman 方案是基于Shamir方案構(gòu)造的非交互式可驗證秘密分享.DKG 算法可抵抗(n-1)/2 個惡意的參與者,由于秘密被公開,所以該方案只是計算安全的(根據(jù)密碼學(xué)中的計算離散對數(shù)的困難性所得).每個節(jié)點的秘密是由本地隨機(jī)生成的.在節(jié)點都獨立的情況下,節(jié)點無法獲得其他節(jié)點的秘密值,因為節(jié)點之間分享的承諾值 αi是基于離散對數(shù)困難問題的.另外DKG 算法還原私鑰是使用秘密分享還原的,可以抵抗(n-1)/2個惡意節(jié)點的合謀攻擊.DKG 算法假設(shè)一半的節(jié)點是誠實的,在這個假設(shè)下系統(tǒng)是安全的.

在屬性密碼方面,我們選擇Bethencourt,Sahai and Waters(BSW)CP-ABE 作為底層原語.這個方案如果沒有多項式時間內(nèi)的攻擊者,則被證明是安全的.

交易合約采用的哈希時間鎖機(jī)制可以保證交易雙方的原子性,即一連串不可再分的交易,即要么全部發(fā)生,要么全部不發(fā)生.使用交易合約的雙方在設(shè)定的時間未結(jié)束之前無法取走自己的資金,只能使用對方設(shè)定的哈希鎖的原值取走對方的資金,一旦發(fā)送使用哈希原值取走發(fā)送方的資金,接收方馬上就可得到哈希原值取走資金.中間的時間差,保證了接收方有充足的時間取走資產(chǎn).設(shè)定的時間結(jié)束后,交易未發(fā)生,雙方都可以取走自己的資金,實現(xiàn)了交易的原子性.

5.2 效率分析

影響整體方案交易效率的因素主要是區(qū)塊鏈交易效率和DKG 算法.在資產(chǎn)質(zhì)押與資產(chǎn)提取時,本文方案速度受到參與跨鏈的區(qū)塊鏈的出塊時間和確認(rèn)速度的限制.其余交易都是在交易區(qū)塊鏈上使用代幣交易,交易速度僅與交易區(qū)塊鏈的出塊時間與確認(rèn)速度有關(guān).DKG 算法的效率影響總的跨鏈交易效率.基于Feldman 方案可驗證秘密分享方案的DKG 算法,在保證信息可驗證的同時兼顧了效率.雖然DKG 算法存在隨節(jié)點數(shù)量增加導(dǎo)致秘密還原時間增加的問題,但是基本滿足方案設(shè)計需求.未來,優(yōu)化DKG 算法可以提升整體方案的效率.

6 結(jié)語

本文使用分布式密鑰生成與CP-ABE 實現(xiàn)了去中心化的數(shù)字資產(chǎn)交易方案.本方案具有4 個特點.

1)去中心化存儲資產(chǎn).本文方案使用分布式網(wǎng)絡(luò)存儲資金,單個節(jié)點保存一部分秘密,獲得一半節(jié)點的秘密才可以還原出私鑰.同時分布式網(wǎng)絡(luò)將用戶資產(chǎn)映射到交易區(qū)塊鏈賬戶上.

2)提供智能合約服務(wù).在本文方案中,用戶在交易區(qū)塊鏈上進(jìn)行交易.不支持智能合約操作的數(shù)字資產(chǎn),也可以在多方交易系統(tǒng)上使用智能合約.

3)互操作性.本文方案只需用戶提供交易區(qū)塊鏈上的公鑰地址、屏蔽區(qū)塊鏈底層技術(shù)和協(xié)議,將異構(gòu)區(qū)塊鏈上的資產(chǎn)映射到交易區(qū)塊鏈上進(jìn)行交易,實現(xiàn)異構(gòu)區(qū)塊鏈的跨鏈資產(chǎn)交易.

4)使用CP-ABE 實現(xiàn)交易控制.用戶將自己的資產(chǎn)存入多方交易系統(tǒng)中,通過使用CP-ABE 設(shè)置訪問策略來保護(hù)自己的數(shù)字資產(chǎn)不被交換為其他種類的資產(chǎn),同時還控制數(shù)字資產(chǎn)交換的金額、匯率和時間.

作者貢獻(xiàn)聲明:馬宇航提出算法思路,完成實驗并撰寫論文;張亮指導(dǎo)研究方案,設(shè)計并修改論文;吳星雨與李鳴參與方案修改和論文修改.

猜你喜歡
代幣哈希合約
首次代幣發(fā)行監(jiān)管的行為經(jīng)濟(jì)學(xué)路徑
央行等七部門叫停各類代幣發(fā)行融資
央行等七部門叫停各類代幣發(fā)行融資
央行等七部門叫停各類代幣發(fā)行融資
基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
基于維度分解的哈希多維快速流分類算法
基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
一種基于Bigram二級哈希的中文索引結(jié)構(gòu)
合約必守,誰能例外!——對“情勢變更”制度不可寄于過高期望