陶保壯,劉福剛,李 迪
(淮南聯(lián)合大學(xué) 信息工程學(xué)院,安徽 淮南 232001)
隨著全球信息化浪潮的不斷推進(jìn),網(wǎng)絡(luò)技術(shù)日新月異,分布式可信軟件已成為軟件技術(shù)發(fā)展和應(yīng)用的重要趨勢(shì)和必然選擇。其中,區(qū)塊鏈技術(shù)是一種按時(shí)間順序?qū)?shù)據(jù)塊連接起來(lái)的P2P網(wǎng)絡(luò)系統(tǒng),是把日志記錄和數(shù)據(jù)庫(kù)統(tǒng)一分布式存儲(chǔ)在一起的“有痕數(shù)據(jù)庫(kù)”。由于區(qū)塊鏈中存儲(chǔ)、傳遞的信息具有“去中心化”“全透明”及“全程留痕”等特征[1],為黑客非法竊取私密信息提供了可乘之機(jī),數(shù)據(jù)的隱私安全的保護(hù)成為行業(yè)發(fā)展中不可回避的問(wèn)題。本文擬深入分析區(qū)塊鏈技術(shù)背景下智能合約信息安全的相關(guān)技術(shù),闡述隱私安全算法的相關(guān)理論知識(shí),以期進(jìn)一步揭示隱私問(wèn)題安全的相關(guān)解決方案,以滿足人們對(duì)區(qū)塊鏈信息傳輸中的數(shù)據(jù)安全性需求。
智能合約是以數(shù)字形式制定,以信息化方式傳播、驗(yàn)證的計(jì)算機(jī)協(xié)議,是交易雙方共同遵守的約定和準(zhǔn)則,具有“不可篡改性”[1]。出于“代碼即規(guī)則”原則,智能合約一旦部署就不能改動(dòng),即使有不良交易記錄也不能從區(qū)塊鏈中剔除。
區(qū)塊鏈下智能合約的傳遞是有痕操作,合約信息在各節(jié)點(diǎn)中是分散的、透明的、公開(kāi)的,因此智能合約在用戶的身份信息、執(zhí)行智能合約時(shí)的輸入與輸出、建設(shè)過(guò)程和最終結(jié)果的合約數(shù)據(jù)以及合約代碼中的私密性等方面都存在泄漏的可能,需要用隱私安全方法來(lái)保護(hù)合約中信息的安全。
1.2.1 “去匿名化”攻擊
首先,“假名”和“匿名”有著本質(zhì)區(qū)別。假名是是指在比特幣、以太坊等系統(tǒng)中不使用真名,而用錢(qián)包地址代表使用者的身份。如某人可同時(shí)開(kāi)多個(gè)錢(qián)包或賬戶,通過(guò)一些關(guān)聯(lián)后可把同一個(gè)用戶的地址關(guān)聯(lián)成一個(gè)地址簇,如圖1所示。
圖1 同一用戶的多個(gè)地址關(guān)聯(lián)到同一地址簇
而匿名是一種具備無(wú)關(guān)聯(lián)性特征的假名,因此區(qū)塊鏈不具備匿名性,并不能做到真正的“匿名”。比特幣中所謂去匿名化攻擊,實(shí)際上是指假名攻擊,“去匿名化”攻擊過(guò)程:
(1)根據(jù)大量交易記錄,通過(guò)如日常電子購(gòu)物信息的竊取、大數(shù)據(jù)的收集分析等手段對(duì)交易地址進(jìn)行關(guān)聯(lián),從而提取有價(jià)值的假名信息,得到大量的地址簇;
(2)根據(jù)其中已知地址信息,例如交易所、某些虛擬貨幣商家,對(duì)其進(jìn)行標(biāo)簽化;
(3)再結(jié)合現(xiàn)實(shí)中的背景知識(shí),得到交易分析圖進(jìn)行匿名化,包括比特幣財(cái)產(chǎn)數(shù)額、交易偏好等實(shí)施攻擊。
上述過(guò)程說(shuō)明去匿名攻擊其實(shí)質(zhì)是假名攻擊,是利用了統(tǒng)計(jì)規(guī)律和背景知識(shí)實(shí)施的攻擊。
1.2.2 合約代碼和數(shù)據(jù)的私密性攻擊
比如在以太坊中的智能合約編譯后生成的以太坊虛擬機(jī)字節(jié)代碼(EVM*)代碼是全網(wǎng)公開(kāi),因而可以通過(guò)反編譯的方法(反編譯工具)獲得智能合約的solidity*源碼;通過(guò)分析源碼和字節(jié)碼轉(zhuǎn)化為函數(shù)編程語(yǔ)言F*,找到存在的安全漏洞,并實(shí)施攻擊[2](P459-474)。
當(dāng)一個(gè)用戶租用或調(diào)用合約并且成功廣播到全網(wǎng)的時(shí)候,其調(diào)用的參數(shù)是明文傳輸?shù)?,是?dòng)態(tài)的,這對(duì)于用戶的數(shù)據(jù)安全是一種泄露。例如某程序員利用智能合約存儲(chǔ)了用戶口令的哈希值,再利用智能合約計(jì)算哈希值進(jìn)行用戶認(rèn)證,此時(shí)調(diào)用用戶合約的參數(shù)實(shí)際是明文,可以從交易的DATA字段直接讀取出來(lái),導(dǎo)致用戶隱私泄露。因而保護(hù)智能合約的安全性實(shí)際上就是保護(hù)輸入、輸出和計(jì)算中間狀態(tài)隱私數(shù)據(jù)的的機(jī)密性。
隱私計(jì)算可以讓使用者在數(shù)據(jù)本身不對(duì)外泄露的前提下,實(shí)現(xiàn)隱私信息全生命周期保護(hù)的一類(lèi)信息技術(shù),隱私計(jì)算的應(yīng)用場(chǎng)景十分廣泛,已經(jīng)和人們的生活息息相關(guān),比如政務(wù)機(jī)構(gòu)、支付平臺(tái)、金融機(jī)構(gòu)等。隱私問(wèn)題不容忽視,它不同于安全問(wèn)題,信息一旦泄露,就無(wú)法再次收回。圖2給出隱私計(jì)算的全生命周期工作流程鏈。
圖2 隱私計(jì)算的工作流程鏈
下面以區(qū)塊鏈上應(yīng)用智能合約進(jìn)行匿名競(jìng)標(biāo)為案例對(duì)智能合約的隱私安全防護(hù)方案進(jìn)行剖析與探討。其中,隱私數(shù)據(jù)的防護(hù)應(yīng)包括競(jìng)標(biāo)用戶的身份信息、合約數(shù)據(jù)、合約代碼等三方面,故應(yīng)在不泄露隱私的前提實(shí)現(xiàn)共享數(shù)據(jù)的價(jià)值。
在區(qū)塊鏈上應(yīng)用智能合約進(jìn)行匿名競(jìng)標(biāo)其規(guī)則應(yīng)包括:
1.智能合約執(zhí)行過(guò)程中參與應(yīng)標(biāo)的各方是匿名的;
2.應(yīng)標(biāo)者在不公開(kāi)報(bào)價(jià)的情況下,向招標(biāo)者報(bào)價(jià);
3.應(yīng)標(biāo)者各方出價(jià)是私密的。
2.2.1 零知識(shí)證明
零知識(shí)證明是指證明者能夠在不向驗(yàn)證者提供任何驗(yàn)證信息的情況下使驗(yàn)證者相信某個(gè)論斷使正確的加密方法[3](P781-796),比如智能合約系統(tǒng)僅能證明某用戶確實(shí)存在而不公開(kāi)該用戶的任何具體身份信息,達(dá)到在交易活動(dòng)中私人信息保密的目的,它主要關(guān)注的是信息是否泄漏。
零知識(shí)證明對(duì)應(yīng)的兩個(gè)安全加密協(xié)議是ZKSARK(交互式)和ZK-SNARK(非交互式)兩種。ZK-SARK協(xié)議數(shù)據(jù)傳遞量大,計(jì)算效率低,假若在雙方相互串通造假情況下會(huì)導(dǎo)致驗(yàn)證失誤;ZKSNARK協(xié)議取消了參與者各方的信息頻繁互動(dòng),在使用很少數(shù)據(jù)情況下使大家相信信息的真實(shí)性,該協(xié)議是智能合約中證明用戶身份匿名性的有效手段,能有效解決交易被追蹤從而暴露用戶隱私的問(wèn)題,效果優(yōu)于ZK-SARK協(xié)議。圖3給出了ZKSNARK協(xié)議的工作流程[3](P781-196)。
圖3 ZK-SNARK協(xié)議的工作流程
由于零知識(shí)證明算法簡(jiǎn)潔有效,過(guò)程計(jì)算量小,雙方交換的信息量少故適合在電子競(jìng)標(biāo)系統(tǒng)中有效證明參與方身份的合法性。
2.2.2安全多方計(jì)算
安全多方計(jì)算(SMPC)是指在一個(gè)分布式網(wǎng)絡(luò)中,將約定函數(shù)計(jì)算分布在多方之間,每個(gè)參與者除計(jì)算結(jié)果外均不能得到其他參與者的任何輸入信息的安全且私密的聯(lián)合計(jì)算,由多方共同對(duì)完成計(jì)算的正確性進(jìn)行驗(yàn)證[1]。其特征為“數(shù)據(jù)可用不可見(jiàn)”,即可以獲取數(shù)據(jù)使用價(jià)值,卻不泄露原始數(shù)據(jù)內(nèi)容。這是從技術(shù)角度針對(duì)數(shù)據(jù)孤島和數(shù)據(jù)隱私問(wèn)題提出的解決方案,對(duì)合約數(shù)據(jù)和代碼驗(yàn)證有一定的準(zhǔn)確性,如上述招標(biāo)系統(tǒng)中,應(yīng)標(biāo)者如何讓對(duì)手在不暴露真實(shí)數(shù)據(jù)標(biāo)的情況下比較誰(shuí)更有優(yōu)勢(shì)。針對(duì)此問(wèn)題,安全多方計(jì)算基本思想是允許多個(gè)應(yīng)標(biāo)者在互不信任的情況下進(jìn)行協(xié)同計(jì)算,輸出計(jì)算結(jié)果,并保證任何一方均無(wú)法得到除應(yīng)得的計(jì)算結(jié)果之外的其他任何信息從而達(dá)到數(shù)據(jù)安全和隱私目的,安全多方計(jì)算的技術(shù)架構(gòu)如圖4[4]所示。
圖4 安全多方計(jì)算的技術(shù)架構(gòu)
在競(jìng)標(biāo)系統(tǒng)中,應(yīng)標(biāo)方所報(bào)商品價(jià)格與招標(biāo)方的標(biāo)的價(jià)格都是機(jī)私密的,這可能就存在以下兩種情況:
(1)應(yīng)標(biāo)價(jià)格大于標(biāo)的價(jià)格,價(jià)格不合適進(jìn)行協(xié)商;
(2)應(yīng)標(biāo)價(jià)格不大于標(biāo)的價(jià)格,中標(biāo)。
在整個(gè)計(jì)算過(guò)程中,安全多方計(jì)算的本地?cái)?shù)據(jù)不能沒(méi)有泄露給其他任何參與方,工作流程如圖5所示。
圖5 安全多方計(jì)算工作流程
2.2.3 CoCo框架
由于在安全多方計(jì)算中參與方的非正常中途退出,如OS故障、PC宕機(jī)等,都將導(dǎo)致安全多方計(jì)算的失敗。另外,黑客可以通過(guò)反編譯等手段獲得合約代碼,故不能保證合約代碼的私密性,因而安全多方計(jì)算的效果有一定的局限性。
CoCo框架是企業(yè)級(jí)開(kāi)源區(qū)塊鏈基礎(chǔ)平臺(tái),由Microsoft公司發(fā)布。CoCo框架不同于區(qū)塊鏈協(xié)議,它整合了現(xiàn)有區(qū)塊鏈協(xié)議(如Ethereum、Quorum等)和分布式賬本技術(shù)(Corda),具有較強(qiáng)的機(jī)密性和擴(kuò)展性,理論上能滿足企業(yè)級(jí)用戶對(duì)系統(tǒng)安全性的剛性需求。圖6[5]為CoCo框架集成協(xié)議示意圖。
圖6 靈活集成各區(qū)塊鏈協(xié)議
由于在公鏈區(qū)塊鏈系統(tǒng)的地址不具備匿名性、個(gè)人信息容易暴露,CoCo框架中將區(qū)塊鏈和和可信的計(jì)算環(huán)境(TEE)高度集成,可信的計(jì)算環(huán)境是獨(dú)立于操作系統(tǒng)的計(jì)算,它使得區(qū)塊鏈的應(yīng)用可以在完全受信任的成員節(jié)點(diǎn)上高效運(yùn)行,從而確保保障區(qū)塊鏈協(xié)議關(guān)鍵代碼和數(shù)據(jù)的更高的隱私性以及靈活性?,F(xiàn)實(shí)中有具體體現(xiàn),例如芯片級(jí)inteL SGX、AMD SEV和軟件級(jí)Windows虛擬安全模式(VSM)[5]。
在區(qū)塊鏈系統(tǒng)中,交易的運(yùn)行結(jié)果必須是確定的,任何純隨機(jī)的運(yùn)算都會(huì)導(dǎo)致無(wú)法有效重現(xiàn)和驗(yàn)證。而Coco框架中的節(jié)點(diǎn)間運(yùn)算,無(wú)需驗(yàn)證結(jié)果,為非確定性的計(jì)算提供了支持,讓交易可根據(jù)應(yīng)用的需要和外界系統(tǒng)進(jìn)行交互,使應(yīng)用語(yǔ)義和場(chǎng)景更加豐富,同時(shí),還簡(jiǎn)化了一致性協(xié)議,提高了區(qū)塊鏈系統(tǒng)的性能。CoCo框架運(yùn)行的原理如圖7所示:
圖7 CoCo框架運(yùn)行的原理如下圖
本文借助區(qū)塊鏈分析軟件,使用不同區(qū)塊鏈技術(shù)分別對(duì)“每秒交易數(shù)”(TPS)及事務(wù)處理延遲兩個(gè)參數(shù)字段值進(jìn)行對(duì)比,其結(jié)果如表1所示。
表1 交易事務(wù)測(cè)試情況
可見(jiàn)基于可信的計(jì)算環(huán)境的Coco框架技術(shù),吞吐量和交易時(shí)間接近數(shù)據(jù)庫(kù)的速度,這極大增強(qiáng)了區(qū)塊鏈系統(tǒng)的性能,其安全性優(yōu)于傳統(tǒng)區(qū)塊鏈系統(tǒng)[6](P139-147)。如在電子競(jìng)標(biāo)系統(tǒng)中,利用Coco框架,將區(qū)塊鏈、安全和人工智能技術(shù)深度融合,建立共享數(shù)字賬本及自動(dòng)化智能合約,能更好解決競(jìng)標(biāo)過(guò)程中的隱私性、速度和管理問(wèn)題。
通過(guò)本文研究,可以發(fā)現(xiàn):其一,區(qū)塊鏈系統(tǒng)中由于受內(nèi)存和空間的制約而使得很復(fù)雜的密碼協(xié)議計(jì)算會(huì)導(dǎo)致系統(tǒng)性能下降,故在保證安全同時(shí)如何兼顧改進(jìn)提高算法效率是值得研究的方向。其二,集中式和分布式問(wèn)題,如傳統(tǒng)的密碼學(xué)算法使用的是集中式算法,如Hash算法、安全多方算法等,而區(qū)塊鏈又是典型的分布式計(jì)算,如何將區(qū)塊鏈進(jìn)行如何分布式改造,將高級(jí)的密碼學(xué)算法融合到區(qū)塊鏈中值得深思。其三,同步和異步網(wǎng)絡(luò)問(wèn)題,如安全多方算法用的是同步網(wǎng)絡(luò),而區(qū)塊鏈系統(tǒng)是異步網(wǎng)絡(luò),需通過(guò)何種手段能將二者有機(jī)融合。其四,區(qū)塊鏈隱私保護(hù)和可監(jiān)管性問(wèn)題,不能因加強(qiáng)隱私保護(hù)使區(qū)塊鏈成為犯罪分子的非法交易的天堂。
總之,本文通過(guò)對(duì)智能合約中隱私問(wèn)題解決方案的優(yōu)劣性進(jìn)行分析和對(duì)比,發(fā)現(xiàn)用隱私證明能保護(hù)用戶的身份隱私,安全多方計(jì)算能保護(hù)智能合約的數(shù)據(jù)隱私,可信計(jì)算環(huán)境能保證合約代碼的私密性。隨著區(qū)塊鏈技術(shù)、安全技術(shù)和人工智能的深度融合,數(shù)據(jù)隱私安全防護(hù)必將成為行業(yè)發(fā)展中不可回避的問(wèn)題,社會(huì)各界在共同享受區(qū)塊鏈技術(shù)發(fā)展帶來(lái)福利的同時(shí),需要更加注重保護(hù)智能合約數(shù)據(jù)的隱私安全。