張啟超 張興
(廣州粵建三和軟件股份有限公司,廣東廣州 510640)
非對稱加密,也稱為公開密鑰加密,是密碼學(xué)的一種算法,它在應(yīng)用時(shí)會(huì)生成兩個(gè)密鑰,一個(gè)是公有密鑰,另一個(gè)是私有密鑰。顧名思義,公鑰是公開可見的,能夠恣意對外公布;而私鑰,顧名思義必須由用戶自行嚴(yán)密保存,絕不透過任何途徑向任何人提供,也不會(huì)泄露給要通迅的另一方,即便他是可信的。
區(qū)塊鏈系統(tǒng)中使用的橢圓曲線密碼學(xué)(ECC),是一種建立公開密鑰加密的算法,基于橢圓曲線數(shù)學(xué),在1985年由Neal Koblitz和Victor Miller分別獨(dú)立提出。
ECC的主要優(yōu)勢是在某些情況下它比其余的加密算法使用更小的密鑰——比方說RSA加密算法——提供相同的或更高級別的安全。ECC的另一個(gè)優(yōu)勢是能夠定義群之間的雙線性映射,基于Weil對或是Tate對;雙線性映射已經(jīng)在密碼學(xué)中發(fā)現(xiàn)了批量的運(yùn)用,比如基于身份信息的加密。而其不足是相同長度密鑰下加密和解密操作的實(shí)現(xiàn)比其他機(jī)制花費(fèi)的時(shí)間長,但因?yàn)榭梢允褂酶痰拿荑€達(dá)到同級的安全程度,所以同樣的安全程度下速度會(huì)更快。通常160比特的橢圓曲線密鑰提供的安全強(qiáng)度與1024比特RSA密鑰相當(dāng)。
通過對非對稱加密算法的使用,引申出一個(gè)問題,是否能夠在數(shù)據(jù)沒有解密的情況下,實(shí)現(xiàn)對數(shù)據(jù)的運(yùn)算,得出結(jié)果后再使用私鑰解密呢?既能解決數(shù)據(jù)隱私問題,有可以實(shí)現(xiàn)數(shù)據(jù)不泄露運(yùn)算。
在2008年由中本聰(Satoshi Nakamoto)發(fā)表在比特幣論壇中的論文《Bitcoin:APeer-to-Peer Electronic Cash System》提出了區(qū)塊鏈的概念。文中提及區(qū)塊鏈技術(shù)是構(gòu)建比特幣數(shù)據(jù)結(jié)構(gòu)與交易信息加密傳輸?shù)幕A(chǔ)技術(shù),利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)了比特幣的挖礦與交易(比特幣挖礦原理)。中本聰?shù)闹饕^點(diǎn)如下:第一,通過第三方來處理信息的模式擁有點(diǎn)對點(diǎn)交易之間缺乏信任的弱點(diǎn),商家為了提防自己的客戶,有時(shí)會(huì)向客戶索取完全不必要的信息,但仍然不能避免一定的欺詐行為;第二,中介機(jī)構(gòu)的存在,增加了交易的成本,限制了交易規(guī)模;第三,數(shù)字簽名能夠解決電子貨幣的身份問題,但是如果還需要第三方參與支持才能防止雙重消費(fèi),那么系統(tǒng)將失去其價(jià)值。
從另一個(gè)角度來說,區(qū)塊鏈技術(shù)在比特幣出現(xiàn)之前就是存在的,只是還沒有被大眾廣泛熟悉。可以說,隨著云計(jì)算、大數(shù)據(jù)的興起,為區(qū)塊鏈的發(fā)展提供了機(jī)會(huì)。區(qū)塊鏈就是一項(xiàng)計(jì)算機(jī)存儲軟件技術(shù)。
雖然區(qū)塊鏈的去中心化和公開透明為分布式協(xié)議的設(shè)計(jì)提供了有力的支持,但是用戶信息及交易的安全和隱私問題保護(hù)比較欠缺。由于區(qū)塊鏈的不可篡改性,所有的交易都是公開,可追溯的,并且存儲在公鏈網(wǎng)絡(luò)中不可篡改。而地址是定義公鏈中代幣的分配和傳送終點(diǎn)所需的唯一信息。這些地址由用戶自己本地的錢包匿名產(chǎn)生。這就代表著一旦地址被使用,與其有關(guān)的所有交易歷史便破壞了地址的保密性,所有人都能夠查看任意地址的余額和交易。因?yàn)橛脩舯仨氁嘎端麄兊淖约旱纳矸萦脕斫邮辗?wù)或貨物,所以比特幣地址就無法保持完全的匿名。由于區(qū)塊鏈?zhǔn)菬o法篡改永久保存的,所以一些遺留的可以被追蹤的東西可能很容易被追溯。故而在這些用戶數(shù)據(jù)隱私容易被泄露的場景中,保護(hù)交易金額和賬戶余額在區(qū)塊鏈系統(tǒng)涉及金額交易不被泄露尤為重要[1-6]。
同態(tài)加密是一種對稱加密算法,由Craig Gentry在2009年發(fā)明提出[7]。同態(tài)加密方案包括密鑰生成算法、加密算法、解密算法和額外的評估算法。全同態(tài)加密包括兩種基本的同態(tài)類型,即乘法和加法同態(tài),加密算法分別對乘法和加法具備同態(tài)特性。
基于同態(tài)加密的特性,使得全同態(tài)加密在區(qū)塊鏈中有著廣泛的應(yīng)用場景。個(gè)人用戶或某公司,將自身的隱私數(shù)據(jù),進(jìn)行同態(tài)加密后,上傳到區(qū)塊鏈節(jié)點(diǎn)處,然后區(qū)塊鏈節(jié)點(diǎn)相應(yīng)的智能合約根據(jù)要求,對加密后的數(shù)據(jù)進(jìn)行相應(yīng)的計(jì)算,并返回結(jié)果給數(shù)據(jù)原始提供方。數(shù)據(jù)原始提供方再利用同態(tài)解密算法將數(shù)據(jù)結(jié)果進(jìn)行還原處理,得到最終結(jié)果。這個(gè)期間,同態(tài)加密函數(shù)和解密函數(shù),完全由用戶自己掌握。否則云平臺或服務(wù)器,完全可以利用解密函數(shù),進(jìn)行解密得到原始數(shù)據(jù),利用這種方式,區(qū)塊鏈上的交易及數(shù)據(jù)信息可以避免被同一網(wǎng)絡(luò)中成員獲取及泄露的可能,保護(hù)了用戶隱私,拓寬了區(qū)塊鏈的應(yīng)用場景。
(1)如果滿足f(X)+f(Y)=f(X+Y),這種加密函數(shù)叫做加法同態(tài)。
(2)如果滿足f(X)×f(Y)=f(X×Y),這種加密函數(shù)叫做乘法同態(tài)。
(3)如果一個(gè)算法能同時(shí)滿足加法同態(tài)和乘法同態(tài)。那么,稱之為全同態(tài)算法。
也就是說,如果同時(shí)滿足加法和乘法同態(tài),就被稱為全同態(tài)加密。圖1為加法同態(tài)加密應(yīng)用場景流程圖。
圖1 加法同態(tài)加密應(yīng)用場景流程圖Fig.1 Application scenario flow chart of additive homomorphic encryption
有一些應(yīng)用場景需要用到同態(tài)加密計(jì)算,如在聯(lián)盟鏈中,不同的業(yè)務(wù)場景需要配套不同的隱私保護(hù)策略。對于強(qiáng)隱私的業(yè)務(wù),比如金融機(jī)構(gòu)之間的對賬,對資產(chǎn)數(shù)據(jù)進(jìn)行加密是很有必要的。在hyperledger fabric、bcos中,用戶可以調(diào)用同態(tài)加密庫對數(shù)據(jù)進(jìn)行加密,共識節(jié)點(diǎn)執(zhí)行交易的時(shí)候調(diào)用同態(tài)加密預(yù)編譯合約,得到密文計(jì)算的結(jié)果。
同態(tài)技術(shù)在該方面的應(yīng)用可以使得我們在云環(huán)境下,充分利用云服務(wù)器的計(jì)算能力,實(shí)現(xiàn)對明文信息的運(yùn)算,而不會(huì)損害數(shù)據(jù)的私密性。例如醫(yī)療機(jī)構(gòu)往往數(shù)據(jù)處理能力較弱,這時(shí)候就需要從第三方來購買數(shù)據(jù)處理分析服務(wù)以達(dá)到更好的數(shù)據(jù)分析結(jié)果,通過這樣的方式他們就需要委托有較強(qiáng)數(shù)據(jù)處理能力的云計(jì)算中心實(shí)現(xiàn)數(shù)據(jù)處理,但是醫(yī)院需要保護(hù)患者隱私,不能直接將未加密的數(shù)據(jù)交給第三方。在同態(tài)加密技術(shù)的支持下,醫(yī)療機(jī)構(gòu)就可以將通過自身掌握的秘鑰加密后的數(shù)據(jù)發(fā)送至第三方,待第三方處理完成后,使用私鑰解密得到數(shù)據(jù)。整個(gè)數(shù)據(jù)處理過程、數(shù)據(jù)內(nèi)容對第三方是完全透明的。
用戶可以將自己的數(shù)據(jù)加密后存儲在一個(gè)不信任的遠(yuǎn)程服務(wù)器上,日后可以向遠(yuǎn)程服務(wù)器查詢自己所需要的信息,存儲與查詢都使用密文數(shù)據(jù),服務(wù)器將檢索到的密文數(shù)據(jù)發(fā)回。用戶可以解密得到自己需要的信息,而遠(yuǎn)程服務(wù)器卻對存儲和檢索的信息一無所知。此種方法同樣適用于搜索引擎的數(shù)據(jù)檢索。
所謂安全多方計(jì)算就是分別持有私有數(shù)據(jù)x1,x2,…,xn的n個(gè)人,在分布式環(huán)境中協(xié)同計(jì)算函數(shù)f(x1,x2,…,xn)而不泄露各方的私有數(shù)據(jù)。以同態(tài)技術(shù)加密的密文數(shù)據(jù)計(jì)算不僅可以滿足安全多方計(jì)算協(xié)議設(shè)計(jì)中保護(hù)各方隱私的需要,還能避開不經(jīng)意傳輸協(xié)議而大大提升協(xié)議效率。
基于同態(tài)加密技術(shù)設(shè)計(jì)的電子選舉方案,統(tǒng)計(jì)方可以在不知道投票者投票內(nèi)容的前提下,對投票結(jié)果進(jìn)行統(tǒng)計(jì),既保證了投票者的隱私安全,有能夠保證投票結(jié)果的公證。
一個(gè)建筑工程項(xiàng)目從開工到竣工驗(yàn)收,往往會(huì)產(chǎn)生大量的數(shù)據(jù),例如試驗(yàn)數(shù)據(jù),檢測報(bào)告等,通常這些數(shù)據(jù)大多保存在系統(tǒng)后臺,這種數(shù)據(jù)保存和管理技術(shù),在數(shù)據(jù)的查詢和使用時(shí)存在問題,存在修改和丟失數(shù)據(jù)的可能;例如合同簽訂的過程存在真實(shí)性不可控的缺點(diǎn),利用區(qū)塊鏈技術(shù)可以保證數(shù)據(jù)的真實(shí)性,但是又引入了另外一個(gè)問題,由于數(shù)據(jù)保存在區(qū)塊鏈中,是公開的或者局部公開的,這就會(huì)導(dǎo)致用戶隱私泄露的問題,如果引入同態(tài)加密技術(shù),將加密后的密文進(jìn)行上鏈,然后智能合約對密文進(jìn)行相應(yīng)的計(jì)算和處理,這樣就可以既保證數(shù)據(jù)的真實(shí)性又可以保證用戶的隱私不被泄露[8]。
在一個(gè)區(qū)塊鏈網(wǎng)絡(luò)上,一個(gè)客戶端對區(qū)塊鏈網(wǎng)絡(luò)發(fā)起交互需求時(shí)應(yīng)該先調(diào)用同態(tài)加密接口,然后將加密后的密文發(fā)送到區(qū)塊鏈節(jié)點(diǎn),經(jīng)過智能合約計(jì)算然后發(fā)送到全網(wǎng)確認(rèn),智能合約擁有對密文進(jìn)行運(yùn)算的能力,該方法的步驟具體為:同態(tài)密鑰生成,由一個(gè)被區(qū)塊鏈網(wǎng)絡(luò)中所有參與者信任的第三方節(jié)點(diǎn)生成一對同態(tài)密鑰作為全區(qū)塊鏈組網(wǎng)的同態(tài)密鑰,將同態(tài)公鑰公開,私鑰保存在第三方節(jié)點(diǎn)中。發(fā)送交易的客戶端在進(jìn)行發(fā)送交易之前,先將明文數(shù)據(jù)這里記為Mx1,經(jīng)過調(diào)用全同態(tài)加密接口后加密生成密文My1,將加密后的密文my1以交易的形式發(fā)送給區(qū)塊鏈節(jié)點(diǎn),調(diào)用智能合約對密文My1進(jìn)行計(jì)算,計(jì)算后得到Mz1然后將My2進(jìn)行全網(wǎng)共識后記錄在區(qū)塊中,此方法利用加密技術(shù)隱藏區(qū)塊鏈的整個(gè)過程中的敏感信息,有效的保護(hù)了用戶的隱私,實(shí)現(xiàn)了區(qū)塊鏈網(wǎng)絡(luò)的隱私保護(hù)功能。