本發(fā)明涉及交易,具體涉及基于零知識(shí)證明與智能合約的數(shù)據(jù)公平交易方法。
背景技術(shù):
1、隨著信息化時(shí)代的發(fā)展,數(shù)據(jù)無處不在,并且在人們的生活中扮演者越來越重要的角色:比如搜索引擎的歷史記錄,智能設(shè)備的收集記錄等,并返回來提供更好的服務(wù),比如商家平臺(tái)能夠根據(jù)用戶的數(shù)據(jù)提高商品推薦的準(zhǔn)確性等。大數(shù)據(jù)價(jià)值的快速增值導(dǎo)致數(shù)據(jù)交易的市場(chǎng)高速發(fā)展。數(shù)據(jù)交易也被稱為數(shù)字資產(chǎn)的交易。即賣方以一定的價(jià)格將一些數(shù)據(jù)賣給買方。在一次交易中,當(dāng)買方收到想要的數(shù)據(jù),賣方得到相應(yīng)的購買金。那么該數(shù)據(jù)交易被認(rèn)為是公平的。然而數(shù)據(jù)交易會(huì)涉及到參與者之間的不信任,這種不信任可能會(huì)導(dǎo)致數(shù)據(jù)交易進(jìn)入僵局。比如買方在賣方發(fā)貨之前不愿意付款,而賣方在買方付款前不愿意發(fā)送數(shù)據(jù)等。
2、傳統(tǒng)的可信第三方的數(shù)據(jù)公平交易方案往往面臨著單點(diǎn)故障、數(shù)據(jù)泄露,甚至是第三方本身就會(huì)作惡等問題,使得交易方案的安全性大大降低。隨著中本聰于正式提出比特幣之后,區(qū)塊鏈技術(shù)迅速發(fā)展,許多學(xué)者聚焦于結(jié)合區(qū)塊鏈的分布式賬本特性來代替?zhèn)鹘y(tǒng)可信第三方實(shí)現(xiàn)公平交易。一種通過加密數(shù)據(jù)鏈下傳輸,數(shù)據(jù)交易鏈上進(jìn)行,結(jié)合區(qū)塊鏈實(shí)現(xiàn)公平數(shù)據(jù)交易的模式被廣泛運(yùn)用,這一模式主要包括數(shù)據(jù)協(xié)商、數(shù)據(jù)驗(yàn)證與原子交換等三個(gè)階段,其中數(shù)據(jù)驗(yàn)證階段與原子交換階段決定了數(shù)據(jù)交易能否成功。具體來說,在數(shù)據(jù)協(xié)商階段買賣雙方就數(shù)據(jù)的價(jià)格協(xié)商一致,賣方將數(shù)據(jù)加密后的對(duì)應(yīng)密文發(fā)送給買方;在數(shù)據(jù)驗(yàn)證階段買方進(jìn)行數(shù)據(jù)的正確性檢驗(yàn);在原子交換階段,買賣雙方就解密密鑰與購購買金要么同時(shí)交換,即買方獲得解密密鑰,打開數(shù)據(jù)密文,獲得數(shù)據(jù),同時(shí)賣方獲得協(xié)商階段的購購買金,交易成功;要么不發(fā)生交換動(dòng)作,此次交易宣告失敗。在此模式的基礎(chǔ)上,提出一種基于區(qū)塊鏈的公平數(shù)據(jù)交易方案;例如《一種基于區(qū)塊鏈的數(shù)據(jù)交易方法》,申請(qǐng)?zhí)枺篶n202211192099.0,該發(fā)明提供了一種基于區(qū)塊鏈的數(shù)據(jù)交易方法,屬于涉及區(qū)塊鏈數(shù)據(jù)交易技術(shù)領(lǐng)域,其技術(shù)方案為:
3、步驟一:構(gòu)建不需要第三方參與的分布式數(shù)據(jù)交易方法,將數(shù)據(jù)交易雙方進(jìn)行匿名,用戶可以作為數(shù)據(jù)擁有者出售數(shù)據(jù)獲得收益,也可以作為數(shù)據(jù)消費(fèi)者購買他們所需的數(shù)據(jù);
4、步驟二:使用私有區(qū)塊鏈登記用戶的驗(yàn)證記錄交易記錄和數(shù)據(jù)的評(píng)分,進(jìn)行數(shù)據(jù)購買者在購買數(shù)據(jù)之前的參考提供;
5、步驟三:通過哈希的方式獲取公平的隨機(jī)數(shù);
6、步驟四:使用以太坊智能合約交易解密數(shù)據(jù)的密鑰,在以太坊合約中加入一個(gè)驗(yàn)證解密密鑰的過程,只有當(dāng)數(shù)據(jù)擁有者提供正確的解密密鑰時(shí),才可以得到交易貨幣,數(shù)據(jù)消費(fèi)者通過計(jì)算得到私鑰和數(shù)據(jù)明文。
7、針對(duì)上述的申請(qǐng),存在以下問題:
8、1.方案效率低。賣方除去對(duì)原始數(shù)據(jù)加密外,還需對(duì)切割的數(shù)據(jù)塊進(jìn)行加密,賣方進(jìn)行加密的次數(shù)隨著分塊的數(shù)量增加而增加,當(dāng)進(jìn)行細(xì)粒度的分塊時(shí),方案效率會(huì)非常低下。
9、2.安全性低,可能會(huì)造成交易數(shù)據(jù)泄露。買方在數(shù)據(jù)驗(yàn)證階段,通過賣方提供的密鑰解密部分?jǐn)?shù)據(jù)塊,可獲得部分原始數(shù)據(jù)。買方隨機(jī)挑選的加密數(shù)據(jù)塊數(shù)量過多,數(shù)據(jù)的真實(shí)性會(huì)提高,但是數(shù)據(jù)信息也會(huì)泄露更多;買方隨機(jī)挑選的加密數(shù)據(jù)塊數(shù)量過少,雖然會(huì)減少數(shù)據(jù)的信息泄露,但數(shù)據(jù)的真實(shí)性會(huì)降低,無法解決信任問題。
10、3.公平性低。①在數(shù)據(jù)驗(yàn)證階段,買方在解密驗(yàn)證部分?jǐn)?shù)據(jù)塊后,獲取部分?jǐn)?shù)據(jù),可單方面退出交易,造成交易失敗,此外惡意的賣方可重復(fù)多次上述過程,每一次都能獲得部分?jǐn)?shù)據(jù),從而能夠獲得大部分的原始數(shù)據(jù),造成數(shù)據(jù)的泄露。
11、為解決上述方案中存在的安全問題與公平性低下問題,本發(fā)明提出了一種基于零知識(shí)證明與智能合約的公平數(shù)據(jù)交易方案,使得在整個(gè)交易過程中,安全可靠性更高。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供基于零知識(shí)證明與智能合約的數(shù)據(jù)公平交易方法。本發(fā)明通過零知識(shí)證明技術(shù)在不泄露數(shù)據(jù)信息的情況下買方完成對(duì)數(shù)據(jù)真實(shí)性的驗(yàn)證;通過智能合約實(shí)現(xiàn)數(shù)據(jù)密文的解密密鑰與數(shù)據(jù)購購買金的同時(shí)交換。提高了交易的公平性、安全性和交易效率。
2、本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:包括以下步驟:
3、s1:基于secp256k1橢圓曲線,生成公共安全參數(shù);橢圓曲線上的離散對(duì)數(shù),可描述為在橢圓曲線上給定點(diǎn)p和另一個(gè)點(diǎn)q,找到整數(shù)n,使得np=q是困難的,具有很高的安全性保證。secp256k1為基于fp有限域上的橢圓曲線,由于其特殊構(gòu)造的特殊性,其優(yōu)化后的實(shí)現(xiàn)比其他曲線性能上可以提高30%,有以下兩個(gè)優(yōu)點(diǎn):①占用很少的帶寬和存儲(chǔ)資源,密鑰的長(zhǎng)度很短。②讓所有的用戶都可以使用同樣的操作完成域運(yùn)算。為一類比較安全的橢圓曲線,所以本發(fā)明使用的是橢圓曲線secp256k1;
4、基于secp256k1橢圓曲線的公共安全參數(shù)具體包括:
5、p:素?cái)?shù),表示有限域fp的模數(shù),p=2^256-2^32-977;
6、a、b:有限域fp中的常數(shù),定義橢圓曲線的方程,其中secp256k1曲線的方程為y^2=x^3+7;
7、g:基點(diǎn),一個(gè)橢圓曲線上的點(diǎn),通過基點(diǎn)構(gòu)造公鑰和私鑰,在secp256k1曲線上,g的坐標(biāo)為:
8、gx=0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798;
9、gy=0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8;
10、n:g點(diǎn)在橢圓曲線上的階;
11、n=0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141;
12、h:有限域fp中的常數(shù),h=1。
13、s2:交易雙方就交易數(shù)據(jù)的售價(jià)進(jìn)行協(xié)商,交易雙方約定標(biāo)記一份數(shù)據(jù)的唯一特征,數(shù)據(jù)買方購買的數(shù)據(jù)與標(biāo)記的數(shù)據(jù)的特征一一對(duì)應(yīng),其中特征記作mark.mark,并將特征記為公開信息,賣方對(duì)數(shù)據(jù)進(jìn)行加密,將密文通過鏈下傳輸給買方;對(duì)數(shù)據(jù)按照國密算法sm2標(biāo)準(zhǔn)進(jìn)行編碼,轉(zhuǎn)化成有限域上的整數(shù)形式,記該整數(shù)為m,買方收到數(shù)據(jù)后,根據(jù)sm2標(biāo)準(zhǔn)對(duì)m進(jìn)行解碼恢復(fù)原始數(shù)據(jù)。
14、s3:通過setup,選定零知識(shí)證明協(xié)議的公共參數(shù);零知識(shí)證明是證明者能夠在不向驗(yàn)證者提供任何有用的信息的情況下,使驗(yàn)證者相信某個(gè)論斷是正確的,實(shí)現(xiàn)了信息的零泄露。隨著區(qū)塊鏈技術(shù)的發(fā)展與成熟,零知識(shí)證明技術(shù)在區(qū)塊鏈領(lǐng)域得到了大量的應(yīng)用,包括隱私保護(hù)、身份驗(yàn)證、可驗(yàn)證計(jì)算等方面。
15、s4:通過prover生成一個(gè)隨機(jī)密鑰;
16、s5:買方驗(yàn)證密文的真實(shí)性,進(jìn)行數(shù)據(jù)驗(yàn)證;
17、s6:數(shù)據(jù)驗(yàn)證通過后,買賣雙方進(jìn)行數(shù)據(jù)交易。具體按以下步驟執(zhí)行:
18、s6.1:首先進(jìn)行密鑰拆分,賣方提供解密密鑰k或者使用買方計(jì)k的信息;
19、賣方將密鑰k分成k1,k2兩部分,其中k=k1+k2;賣方先通過安全通道將k1發(fā)給買方;
20、s6.2:買方收到k1后,開始在網(wǎng)絡(luò)上部署智能合約;部署智能合約時(shí),包括input表示輸入變量,當(dāng)input滿足input*g=k-k1*g時(shí),買方將購買金m發(fā)送至賣方的賬戶中;
21、其中當(dāng)交易時(shí)間超時(shí)時(shí),買方將購買金m發(fā)送回買方自己的賬戶中。
22、其中智能合約是一種基于區(qū)塊鏈技術(shù)的編程范式,可以實(shí)現(xiàn)去中心化的可信計(jì)算。智能合約是一段被編寫成代碼的程序,可以被部署到區(qū)塊鏈網(wǎng)絡(luò)上,自動(dòng)執(zhí)行協(xié)議、交易和其他操作,而不需要人為干預(yù);
23、其中智能合約中的加密采用承諾方案,其中承諾方案是一種加密技術(shù),用于向其他人承諾一個(gè)值,而不暴露該值的具體內(nèi)容。可以看作是一個(gè)數(shù)字信封,其中包含一個(gè)秘密信息,但是只有在公開秘密的密鑰之后,才能打開信封并公開該信息。
24、s6.3:在智能合約的判斷下,進(jìn)行原子交易。買方通過監(jiān)測(cè)網(wǎng)絡(luò)得到k2,與手中的k1即可恢復(fù)出解密密鑰k,通過密鑰k解密e(m),獲得原始數(shù)據(jù)m,則交易成功;
25、在交易超時(shí)前,賣方發(fā)送的密鑰k2仍無法通過智能合約驗(yàn)證,則交易失敗。
26、進(jìn)一步的,在步驟s3中,公共參數(shù)具體包括:
27、g:曲線secp256k1的基點(diǎn);
28、mark:用于表示數(shù)據(jù)m的唯一特征,滿足mark不等于g或k或r,其中,g、mark的生成方式如下:
29、生成g:從secp256k1曲線的參數(shù)中獲??;
30、生成mark:將數(shù)據(jù)m映射到橢圓曲線上,得到點(diǎn)mark=m*g;
31、setup階段生成的參數(shù)g、mark為公開已知的。
32、進(jìn)一步的,在步驟s4中,生成一個(gè)隨機(jī)密鑰k,(0=<k<n),其中n為橢圓曲線的階,通過隨機(jī)密鑰k對(duì)數(shù)據(jù)m加密,采用一次一密的加密方式:e(m)=k+m;
33、生成k:然后隨機(jī)密鑰k映射到橢圓曲線上,得到點(diǎn)k=k*g;
34、對(duì)數(shù)據(jù)m采用一次一密進(jìn)行加密的優(yōu)點(diǎn)是安全性高,因?yàn)槊荑€是完全隨機(jī)的,并且只使用一次,使得密碼分析者很難通過分析密文來破解加密信息;
35、生成proof=(e(m),k),將proof發(fā)送給數(shù)據(jù)買方;prover階段生成的proof,該proof包括e(m)與k兩個(gè)參數(shù)。
36、進(jìn)一步的,在步驟s5中,具體按以下步驟執(zhí)行:
37、s5.1:買方驗(yàn)證等式e(m)*g=mark+k是否成立;其中mark與e(m)進(jìn)行對(duì)應(yīng),其中mark是數(shù)據(jù)m對(duì)應(yīng)的唯一標(biāo)識(shí),e(m)是數(shù)據(jù)m的加密算法,通過式(1)實(shí)現(xiàn)在不泄露數(shù)據(jù)明文m的情況下,證明一次一密的加密算法e(m)的加密對(duì)象為m,完成了數(shù)據(jù)真實(shí)性檢驗(yàn)過程;
38、e(m)*g=(k+m)*g=k*g+m*g=mark+k式(1)
39、同時(shí)在不泄露密鑰k的情況下,證明了e(m)的加密密鑰為k,在后續(xù)交易過程中,當(dāng)賣方提供k,買方就能解密e(m),獲得數(shù)據(jù)m;
40、s5.2:買方收到proof后,對(duì)上述等式進(jìn)行驗(yàn)證,等式成立,則代表驗(yàn)證通過,賣方發(fā)送的加密數(shù)據(jù)是正確的,買方同意交易進(jìn)入下一階段;
41、等式不成立,則證明數(shù)據(jù)賣方發(fā)送的加密數(shù)據(jù)有誤,交易宣告失敗。
42、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果包括:
43、1、通過承諾方案實(shí)現(xiàn)零知識(shí)證明,零知識(shí)證明即證明者能夠在不向驗(yàn)證者提供任何有用的信息的情況下,使驗(yàn)證者相信某個(gè)論斷是正確的,實(shí)現(xiàn)了信息的零泄露,保證了數(shù)據(jù)明文在完成數(shù)據(jù)交易之前不會(huì)暴露,同時(shí)結(jié)合智能合約實(shí)現(xiàn)了解密密鑰與購買金同時(shí)交換,實(shí)現(xiàn)數(shù)據(jù)的公平交易。
44、2、買家得到的數(shù)據(jù)是協(xié)商階段協(xié)商好的數(shù)據(jù),數(shù)據(jù)的交付動(dòng)作與購買金的交付動(dòng)作需同時(shí)發(fā)生,即保持原子交換,數(shù)據(jù)明文在交易完成前不會(huì)發(fā)生任何泄露,賣方提供的解密密鑰一定是真實(shí)有效的,提高交易過程的公平性。
45、3、買方只需一次驗(yàn)證,判斷e(m)*g=k+m是否成立即可完成驗(yàn)證過程,大大降低了買方的計(jì)算開銷,提高了方案效率。