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

?

公有鏈上數(shù)據(jù)如何保護(hù)?

2019-01-02 08:24:52賈音
信息安全與通信保密 2018年12期
關(guān)鍵詞:合約比特密鑰

賈音

(摩石實(shí)驗(yàn)室技術(shù)專家)

1 引言

2017年對(duì)于區(qū)塊鏈技術(shù)來(lái)說(shuō)是不平凡的一年。人們通過(guò)ICO對(duì)區(qū)塊鏈項(xiàng)目募集了數(shù)百億資金,極大地壯大了數(shù)字貨幣的規(guī)模。隨著它被廣泛應(yīng)用,區(qū)塊鏈技術(shù)在金融、醫(yī)療等諸多應(yīng)用場(chǎng)景下都顯示出了它的價(jià)值和優(yōu)勢(shì),尤其是公有鏈。然而,區(qū)塊鏈技術(shù)尚不成熟,公有鏈在應(yīng)用時(shí)還有很多缺陷和問題,如可擴(kuò)展性、數(shù)據(jù)的隱私性、鏈上數(shù)據(jù)來(lái)源的可靠性、智能合約的安全性等,這些問題極大地阻礙了公有鏈技術(shù)的進(jìn)一步發(fā)展。本文主要對(duì)公有鏈上的數(shù)據(jù)如何保護(hù)的問題進(jìn)行探討,參考學(xué)術(shù)界提出的尚未落地的解決思路,結(jié)合工業(yè)界目前已得到應(yīng)用的解決方案,對(duì)該問題進(jìn)行總體的介紹。

在公有鏈技術(shù)中,每個(gè)節(jié)點(diǎn)都可以按照自己的意愿隨時(shí)地加入、退出區(qū)塊鏈網(wǎng)絡(luò),網(wǎng)絡(luò)中的全節(jié)點(diǎn)都可以獲得一份完整的賬本數(shù)據(jù)。這就意味著,公有鏈上的所有數(shù)據(jù),如普通的轉(zhuǎn)賬交易、部署的智能合約、合約的內(nèi)部存儲(chǔ)等都是公開的。無(wú)論是企業(yè)還是個(gè)人,他們都不會(huì)樂意將自己的重要數(shù)據(jù),如電子醫(yī)療記錄、交易記錄、業(yè)務(wù)往來(lái)信息等公開到區(qū)塊鏈上。因此,如何對(duì)公有鏈上的數(shù)據(jù)進(jìn)行保護(hù),成為公有鏈技術(shù)發(fā)展所面臨的一個(gè)重要問題。

根據(jù)公有鏈上保存的數(shù)據(jù)類型,我們把需要保護(hù)的數(shù)據(jù)分為以下兩類:無(wú)格式數(shù)據(jù)以及需要進(jìn)行邏輯運(yùn)算的數(shù)據(jù)。下面我們將分別介紹針對(duì)這兩類數(shù)據(jù)的保護(hù)方案。

2 無(wú)格式數(shù)據(jù)及其保護(hù)

無(wú)格式數(shù)據(jù)是指保存在區(qū)塊鏈上的,對(duì)數(shù)據(jù)格式無(wú)要求、無(wú)需進(jìn)行有效性驗(yàn)證的數(shù)據(jù)。這類數(shù)據(jù)在公有鏈上僅僅是作為交易數(shù)據(jù)中的一個(gè)額外字段而存在,如Zcash中的memo域以及Neo中的交易屬性字段。這些字段可以保存一些附加的信息,如交易的備注、發(fā)送方想要告知接收方并將其保存在區(qū)塊鏈上以作存證的信息等。由于這類信息無(wú)具體的格式要求、有效性要求,并且面向的群體比較有限,因此可以直接加密,并通過(guò)在群體之間共享密鑰的方法來(lái)保證消息的可用性。由于這類方案的思路大致相同,我們以Zcash為例來(lái)詳細(xì)地論證方案的實(shí)施過(guò)程。

Zcash中的貨幣以票據(jù)Note的形式存在,Note=(apk,v,ρ,r),其中v表示金額,ρ,r 是兩個(gè)隨機(jī)數(shù)。交易的發(fā)送方A在向接收者B轉(zhuǎn)賬的時(shí)候,需要為接收者B生成新的隨機(jī)數(shù)ρ',r',同時(shí)需要將這兩個(gè)隨機(jī)數(shù)告知B,并且不能被其他無(wú)關(guān)人員得到。因此,發(fā)送方A會(huì)根據(jù)以下方案與接收方B共享密鑰,并使用密鑰來(lái)對(duì)隨機(jī)數(shù)ρ',r',以及備注信息memo進(jìn)行加密,其具體過(guò)程如下:

(1)加密

A隨機(jī)生成一對(duì)密鑰協(xié)商方案的密鑰(epk,esk),然后根據(jù)以下公式生成一個(gè)共享秘密,其中pkB為B的公鑰:

接著,根據(jù)共享的秘密,B的公鑰和一些其他信息,利用密鑰提取函數(shù)KDF生成加密密鑰K,最后使用對(duì)稱加密方案來(lái)對(duì)P進(jìn)行加密。

最終傳輸?shù)拿芪募礊?epk,C)。

(2)解密

B收到密文(epk,C)之后,首先計(jì)算出共享的秘密,其中skB為B的私鑰:

然后,利用相同的方法計(jì)算解密密鑰K,最后使用解密算法對(duì)密文C解密:

由上述過(guò)程可以看出,對(duì)于鏈上保存的無(wú)格式數(shù)據(jù),使用基本的密鑰協(xié)商、加密方案就可以滿足數(shù)據(jù)保護(hù)的要求。接下來(lái)我們主要介紹需要進(jìn)行邏輯運(yùn)算的數(shù)據(jù)在公有鏈上如何保密。

3 邏輯運(yùn)算的數(shù)據(jù)及其保護(hù)

保存在公有鏈上的,需要進(jìn)行某種邏輯運(yùn)算的數(shù)據(jù)包括:普通的交易數(shù)據(jù)、智能合約的輸入、存儲(chǔ)以及合約本身。對(duì)于這類數(shù)據(jù),需要網(wǎng)絡(luò)上的節(jié)點(diǎn)根據(jù)預(yù)先定義的規(guī)則對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證或運(yùn)算,如對(duì)交易數(shù)據(jù)的有效性進(jìn)行驗(yàn)證,對(duì)智能合約進(jìn)行驗(yàn)證、對(duì)發(fā)送給智能合約的數(shù)據(jù)進(jìn)行運(yùn)算,并對(duì)存儲(chǔ)進(jìn)行更新等。對(duì)于這類數(shù)據(jù)而言,不能通過(guò)簡(jiǎn)單的加密來(lái)達(dá)到保護(hù)的目的。依照區(qū)塊鏈技術(shù)的不同發(fā)展階段,我們將這部分?jǐn)?shù)據(jù)分為兩類,第一類是以比特幣等數(shù)字貨幣為代表的交易數(shù)據(jù),第二類是以以太坊等平臺(tái)為代表的智能合約的相關(guān)數(shù)據(jù),接下來(lái)分別介紹這兩類數(shù)據(jù)的保護(hù)方式。

4 比特幣等數(shù)字貨幣的基本交易數(shù)據(jù)

區(qū)塊鏈技術(shù)發(fā)展初期,主要應(yīng)用集中在以比特幣等為代表的數(shù)字貨幣。對(duì)于這類區(qū)塊鏈應(yīng)用,鏈上數(shù)據(jù)主要是一些基本的交易數(shù)據(jù)。以比特幣的UTXO模型為例,其基本數(shù)據(jù)格式如圖1所示:

圖1 比特幣的數(shù)據(jù)格式

可以看出,一條基本的交易數(shù)據(jù)包含了上一次未花費(fèi)輸出的交易號(hào)、序號(hào),以及發(fā)送者的完整公鑰,發(fā)送金額,為接收者設(shè)置的鎖定腳本,以及對(duì)整筆交易的簽名。由于網(wǎng)絡(luò)上的其他節(jié)點(diǎn)在收到這筆交易后需要對(duì)交易進(jìn)行有效性驗(yàn)證,即驗(yàn)證交易的輸入是否合法,簽名是否有效,輸入輸出是否平衡等,簡(jiǎn)單地對(duì)交易數(shù)據(jù)加密后會(huì)造成交易有效性無(wú)法得到驗(yàn)證。因此,需要一些其他的方法,從不同角度、不同程度上對(duì)數(shù)據(jù)進(jìn)行保護(hù)。

目前的保護(hù)方法可以分為兩類:一類是從工程角度出發(fā),采用一些原理簡(jiǎn)單、便于實(shí)現(xiàn)和應(yīng)用的方法,如比特幣的Coinjoin機(jī)制,達(dá)世幣的匿名發(fā)送機(jī)制,以太坊的狀態(tài)通道機(jī)制等;另外一類是基于一些比較高級(jí)的密碼學(xué)工具,如環(huán)簽名、零知識(shí)證明、同態(tài)加密,以及一些困難問題如橢圓曲線離散對(duì)數(shù)問題等從本質(zhì)上對(duì)數(shù)據(jù)保護(hù)方式進(jìn)行改進(jìn),同時(shí)又不影響交易的可驗(yàn)證性,但這類方案實(shí)現(xiàn)成本較高,同時(shí)也帶來(lái)了效率方面的損失。

4.1 工程方面的解決思路

工程方面的解決思路著重于考慮方案的易用性和應(yīng)用效率,因此往往會(huì)在其他方面有一些犧牲,如保護(hù)強(qiáng)度、去中心化等。

比特幣的Coinjoin機(jī)制的基本思想是,如果你想要發(fā)起一筆支付,那么就去找一些跟你一樣的人,然后做一筆聯(lián)合支付。

如圖2所示,聯(lián)合交易的輸入來(lái)自三個(gè)人,輸出也由這三個(gè)人組成,同時(shí)他們先后對(duì)于這筆聯(lián)合交易進(jìn)行簽名,保證了沒有人能夠改變交易的輸入輸出。并且,根據(jù)這筆交易,任何無(wú)關(guān)方無(wú)法推斷出哪個(gè)地址屬于哪個(gè)參與方,保證了資金的不可追蹤性,并為交易帶來(lái)了一定的匿名性。

圖2 比特幣的Coinjoin機(jī)制

達(dá)世幣的匿名發(fā)送是基于比特幣的Coinjoin機(jī)制構(gòu)造的,只是增加了一層主節(jié)點(diǎn)幫助需要參與方進(jìn)行聯(lián)合交易。同時(shí)引入了“鏈?zhǔn)交煜?,即允許經(jīng)過(guò)最多8個(gè)主節(jié)點(diǎn)來(lái)對(duì)資金進(jìn)行多次混淆,降低單一主節(jié)點(diǎn)作惡對(duì)交易匿名性的影響。

以太坊的狀態(tài)通道技術(shù)是為了解決以太坊的網(wǎng)絡(luò)處理能力而存在,隱私保護(hù)只是它的一個(gè)附加功能。它的主要思想是把大量高頻、小額的交易放到鏈外處理,只有初始創(chuàng)建通道和最終結(jié)算的交易需要在鏈上進(jìn)行。這樣就保證了只有初始狀態(tài)和最終狀態(tài)為無(wú)關(guān)方所知,而中間狀態(tài)只能被交易參與方所掌握。

4.2 密碼學(xué)工具的運(yùn)用

與工程方面的解決思路不同,利用密碼學(xué)工具來(lái)實(shí)現(xiàn)數(shù)據(jù)保護(hù)的方案則力求對(duì)數(shù)據(jù)實(shí)現(xiàn)本質(zhì)的保護(hù),因此往往能夠提供較好的保護(hù)強(qiáng)度,但對(duì)方案的效率、易用性影響較大。

CryptoNote協(xié)議引入可鏈接性環(huán)簽名和一次性地址技術(shù)來(lái)力求增強(qiáng)比特幣的匿名性,后來(lái)一些數(shù)字貨幣如ByteCoin,門羅幣等都是基于該協(xié)議構(gòu)建的。

環(huán)簽名方案最早由Rivest等人提出,他們將可能的簽名者集合定義為一個(gè)環(huán)。環(huán)簽名的好處在于,簽名者只要拿到所有環(huán)成員的公鑰及自己的私鑰即可產(chǎn)生環(huán)簽名,而無(wú)需其他成員主動(dòng)配合。同時(shí)驗(yàn)證者拿到該簽名,只能判斷該簽名是由這個(gè)環(huán)產(chǎn)生的,但不能定位到具體的簽名者??涉溄有原h(huán)簽名則是指如果一個(gè)人先后用自己的同一個(gè)公私鑰進(jìn)行了兩次環(huán)簽名,那么這兩次簽名就可以被鏈接起來(lái),指向同一個(gè)人。在CryptoNote協(xié)議中,可鏈接環(huán)簽名既可以將交易的發(fā)送地址隱藏在一個(gè)環(huán)里,讓人無(wú)法根據(jù)區(qū)塊鏈上的交易數(shù)據(jù)判斷交易的發(fā)送方,同時(shí)也通過(guò)可鏈接性來(lái)防止雙花。

一次性地址技術(shù)則利用了橢圓曲線上離散對(duì)數(shù)的困難問題。在交易時(shí),發(fā)送者A可以為接收者B隨機(jī)生成一個(gè)隨機(jī)數(shù)r,并根據(jù)B的地址計(jì)算出一個(gè)一次性的交易地址,同時(shí)將R=rG(橢圓曲線上的點(diǎn))隨交易信息一起發(fā)送給B。這時(shí),B收到該筆信息,可以利用自己的私鑰以及R的信息將一次性地址對(duì)應(yīng)的私鑰計(jì)算出來(lái),從而隱藏了真實(shí)的接收地址。

零知識(shí)證明系統(tǒng)即為知識(shí)復(fù)雜度為零的證明系統(tǒng)。簡(jiǎn)單來(lái)說(shuō),這種證明系統(tǒng)所具有的功能有兩個(gè),一是證明者能夠向驗(yàn)證者證明某個(gè)斷言(如果它為真),二是在整個(gè)證明過(guò)程中,證明者沒有向驗(yàn)證者泄露任何額外的信息。因此,從驗(yàn)證者的角度出發(fā),該系統(tǒng)想要實(shí)現(xiàn)的功能是,驗(yàn)證者所接收到的零知識(shí)證明的效果等同于一個(gè)可信第三方直接告訴驗(yàn)證者該斷言為真,如圖3所示。

圖3 零知識(shí)證明的一個(gè)圖解

早些的零知識(shí)證明系統(tǒng)都是基于交互式證明系統(tǒng)的模型,即證明者和驗(yàn)證者之間必須經(jīng)過(guò)至少一輪的交互。然而隨著研究的深入,在1988年,Blum等人指出,通過(guò)在證明者和驗(yàn)證者之間共享一個(gè)公共字符串,就可以在無(wú)交互的情況下實(shí)現(xiàn)計(jì)算性的零知識(shí)證明系統(tǒng)。Zcash所使用的zk-snark即是基于這種公共字符串模型,它允許在證明者和驗(yàn)證者無(wú)交互的條件下,通過(guò)由第三方預(yù)先生成的系統(tǒng)參數(shù)(包括證明密鑰、驗(yàn)證密鑰等信息),來(lái)實(shí)現(xiàn)零知識(shí)證明。

在Zcash中,保護(hù)交易的數(shù)據(jù)格式有所變化,一筆資金使用票據(jù)Note=(apk,v,ρ,r) 來(lái)表示。在花費(fèi)時(shí),發(fā)送方只是公布由Note單向計(jì)算出來(lái)的否決值,以及為接收方新生成的票據(jù)的承諾值。同時(shí),他還需要提供一個(gè)證據(jù),來(lái)證明所花費(fèi)的資金之前已被正確構(gòu)造,同時(shí)他擁有相應(yīng)的花費(fèi)權(quán)限,并且他為接收者生成的新票據(jù)也是按照規(guī)則合法構(gòu)造的。這個(gè)證據(jù)由zk-SNARK方案產(chǎn)生,可以幫助網(wǎng)絡(luò)上的其他節(jié)點(diǎn)在不知道詳細(xì)交易信息的情況下驗(yàn)證交易的有效性。

同態(tài)加密是指,對(duì)明文進(jìn)行某種運(yùn)算后的結(jié)果,等同于對(duì)相應(yīng)密文進(jìn)行某種運(yùn)算后再解密的結(jié)果。因此,同態(tài)加密方案允許對(duì)交易金額進(jìn)行加密,同時(shí)通過(guò)在密文上進(jìn)行運(yùn)算來(lái)判斷交易的輸入輸出是否平衡,也即輸入輸出的金額是否相等。這種同態(tài)性思想在門羅幣的環(huán)形機(jī)密交易中得到應(yīng)用,能夠較好地保護(hù)交易的金額。

5 以太坊等智能合約平臺(tái)的相關(guān)數(shù)據(jù)

隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,比特幣基于腳本語(yǔ)言所提供的可編程性給其上應(yīng)用程序的開發(fā)帶來(lái)了限制,以太坊是第一個(gè)圖靈完備的分布式智能合約系統(tǒng)?;诖讼到y(tǒng),企業(yè)和愛好者可以構(gòu)造各種各樣的智能合約應(yīng)用,如市場(chǎng)預(yù)測(cè)、供應(yīng)鏈等。此時(shí)由于區(qū)塊鏈上的數(shù)據(jù)不僅包括普通的交易數(shù)據(jù),還包括智能合約相關(guān)的輸入、存儲(chǔ)以及合約本身,因此隱私保護(hù)就變得更加困難。

Hawk率先從理論層面對(duì)這個(gè)問題進(jìn)行了解決,它仿照Z(yǔ)erocash協(xié)議,使用零知識(shí)證明來(lái)進(jìn)行構(gòu)造。該系統(tǒng)由三部分組成,用戶、程序員以及代理人。程序員無(wú)需具有專門的密碼學(xué)知識(shí),Hawk編譯器會(huì)將程序員編寫的程序編譯成用戶與區(qū)塊鏈之間交互的密碼協(xié)議。代理人不是一個(gè)可信第三方,他只需要被信任不會(huì)泄露用戶的隱私數(shù)據(jù),并且當(dāng)他有惡意行為時(shí),系統(tǒng)會(huì)對(duì)其進(jìn)行懲罰并對(duì)相關(guān)用戶進(jìn)行補(bǔ)償。

Hawk在Zerocash基本的鑄幣、消費(fèi)過(guò)程的基礎(chǔ)上,加入了合約的計(jì)算過(guò)程。當(dāng)用戶需要執(zhí)行某一計(jì)算時(shí),會(huì)將加密后的輸入數(shù)據(jù)、金額,以及一個(gè)相關(guān)證明發(fā)給代理人。代理人解密后,按照合約的定義計(jì)算輸出,并將輸出再次加密,同時(shí)提供一個(gè)該過(guò)程被正確計(jì)算的證明,最終記錄在區(qū)塊鏈上,實(shí)現(xiàn)資金、存儲(chǔ)狀態(tài)的記錄。

6 總結(jié)

本文針對(duì)區(qū)塊鏈上數(shù)據(jù)如何保護(hù)的問題,對(duì)現(xiàn)有的解決方案進(jìn)行了梳理,并對(duì)方案中所涉及的密碼學(xué)知識(shí)進(jìn)行了簡(jiǎn)單的介紹。區(qū)塊鏈技術(shù)由于它自身提供的不可篡改、不可偽造、去中心化等優(yōu)勢(shì),近幾年吸引了社會(huì)各行各界的廣泛關(guān)注,在金融、能源、供應(yīng)鏈等領(lǐng)域也逐漸有了應(yīng)用案例。然而,區(qū)塊鏈技術(shù)在發(fā)展過(guò)程中也暴露出了一些問題,如可擴(kuò)展性、合約的形式化驗(yàn)證、隱私保護(hù)等,這些問題在一定程度上制約著區(qū)塊鏈應(yīng)用的蓬勃發(fā)展。同時(shí),業(yè)內(nèi)學(xué)者和工程師們也在不斷摸索著前進(jìn),相信未來(lái)這些問題得到進(jìn)一步的解決之后,區(qū)塊鏈技術(shù)一定能得到更好的應(yīng)用和發(fā)展。

猜你喜歡
合約比特密鑰
探索企業(yè)創(chuàng)新密鑰
密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
比特幣還能投資嗎
海峽姐妹(2017年10期)2017-12-19 12:26:20
比特幣分裂
基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
比特幣一年漲135%重回5530元
銀行家(2017年1期)2017-02-15 20:27:20
蘋果封殺比特幣應(yīng)用另有隱情?
合約必守,誰(shuí)能例外!——對(duì)“情勢(shì)變更”制度不可寄于過(guò)高期望
灵武市| 长汀县| 新乡市| 金昌市| 滨海县| 贵阳市| 通榆县| 永泰县| 平江县| 天峻县| 特克斯县| 桦南县| 武汉市| 玉门市| 乃东县| 丹巴县| 宜都市| 吉安县| 教育| 咸丰县| 巴彦淖尔市| 浦城县| 图木舒克市| 潼关县| 淮阳县| 阿坝| 滁州市| 盐池县| 昌图县| 宜昌市| 灵武市| 临江市| 胶州市| 郁南县| 平塘县| 泸西县| 财经| 景谷| 江口县| 郯城县| 铜陵市|