摘 要 基于以太坊智能合約平臺(tái),提出了一種新的公鑰證書發(fā)放方案。本方案使用智能合約實(shí)現(xiàn),用戶和證書發(fā)放機(jī)構(gòu)將自己的數(shù)據(jù)以智能合約的形式存放到區(qū)塊鏈上,其他人可以公開驗(yàn)證。本方案利用智能合約全網(wǎng)公開的安全特性有效降低了在不安全信道上簽署和發(fā)放公鑰證書的安全風(fēng)險(xiǎn)。依托于以太坊區(qū)塊鏈,本方案具有防篡改,防拒絕服務(wù)式攻擊等特點(diǎn)。
【關(guān)鍵詞】區(qū)塊鏈 智能合約 公鑰證書 以太坊
1 前言
公鑰證書是當(dāng)前一種應(yīng)用廣泛的公鑰分配解決方案,最早由Kohnfelder提出。由于公鑰證書方案不需要維護(hù)含有姓名和公鑰的目錄,從而成為一種較為安全的公鑰分配方式。公鑰證書中最重要的包含公鑰和公鑰擁有者的標(biāo)志,為了保證證書的真實(shí)有效性,則證書內(nèi)容必須由可信第三方進(jìn)行簽名。在這個(gè)過程中,用戶必須以一種安全的方式將他的公鑰信息傳遞給可信第三方機(jī)構(gòu)。但是,因?yàn)闆]有絕對(duì)安全的通信信道,則用戶將公鑰信息傳遞給可信機(jī)構(gòu)的過程中極易被攻擊者攔截,則用戶最后得到的公鑰證書極有可能被攻擊者篡改。怎樣保證用戶公鑰信息傳遞過程的安全是當(dāng)前亟待解決的一個(gè)問題。與此同時(shí),可信機(jī)構(gòu)的數(shù)據(jù)處理量又是有限的,攻擊者在獲取可信機(jī)構(gòu)真實(shí)網(wǎng)絡(luò)位置的情況下,可以發(fā)動(dòng)拒絕服務(wù)式攻擊。因此,隱藏可信機(jī)構(gòu)的真實(shí)的網(wǎng)絡(luò)位置是保障公鑰證書系統(tǒng)正常工作的關(guān)鍵。
區(qū)塊鏈技術(shù)隨著比特幣的出現(xiàn)而逐漸被人們所知。區(qū)塊鏈網(wǎng)絡(luò)沒有中心節(jié)點(diǎn),所有節(jié)點(diǎn)地位均等,采用工作量證明,權(quán)益證明等共識(shí)機(jī)制將區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的交易數(shù)據(jù)打包寫入到區(qū)塊中。在這個(gè)去中心化網(wǎng)絡(luò)中,所有的節(jié)點(diǎn)保存著全網(wǎng)的數(shù)據(jù)備份。區(qū)塊鏈采用的共識(shí)機(jī)制保障了在不可信信道上的信息傳遞的真實(shí)有效性。區(qū)塊鏈網(wǎng)絡(luò)中的巨大算力使得攻擊者想要篡改區(qū)塊鏈中的交易數(shù)據(jù)需要付出巨大的代價(jià)。區(qū)塊鏈的這些特性既能防止數(shù)據(jù)在傳輸過程中遭到篡改,又能防止防止節(jié)點(diǎn)遭受拒絕服務(wù)式攻擊。
以太坊是2013年由Vitalik Buterin提出的一種開源的公共區(qū)塊鏈平臺(tái),它基于區(qū)塊鏈技術(shù)建立,最大特點(diǎn)就是支持智能合約。以太坊智能合約(以下簡稱智能合約)與比特幣腳本類似,但是智能合約具有圖靈完備性,可以完成更加復(fù)雜的任務(wù)。用戶可以將編寫的智能合約編譯成以太坊特有的以太坊虛擬機(jī)代碼,即EVM代碼。EVM代碼可以訪問發(fā)送者和接收到的消息中的數(shù)據(jù),代碼還可以返回?cái)?shù)據(jù)的字節(jié)隊(duì)列作為輸出。用戶在與智能合約交互的過程中需要消耗一定量的燃料,燃料需要使用以太幣兌換。這種機(jī)制就保證了攻擊者想要通過短時(shí)間內(nèi)與智能合約的大量交互進(jìn)行拒絕服務(wù)式攻擊需要耗費(fèi)巨大的以太幣資源。同時(shí),智能合約靈活的數(shù)據(jù)訪問特性能夠保障公鑰信息的公開透明訪問以及數(shù)據(jù)完整性。
根據(jù)以上所述,我們提出了一種基于基于智能合約的公鑰證書發(fā)放方案。本方案充分利用了區(qū)塊鏈技術(shù)的去中心化和全網(wǎng)公開訪問賬本等特點(diǎn)保障了公鑰證書在不可信信道上的安全簽署,防范了攻擊者對(duì)用戶和可信機(jī)構(gòu)的拒絕服務(wù)式攻擊。
2 總體設(shè)計(jì)結(jié)構(gòu)
本方案的總體設(shè)計(jì)框架如圖1所示,各個(gè)部分功能如下。
2.1 用戶User
該用戶可以是任何需要申請(qǐng)公鑰證書的實(shí)體結(jié)構(gòu)。
2.2 區(qū)塊鏈
表示以太坊區(qū)塊鏈,區(qū)塊鏈上面的信息全網(wǎng)公開可見,任何人都可以查看合約的執(zhí)行情況。
2.3 證書發(fā)布機(jī)構(gòu)Ca
表示對(duì)用戶的證書進(jìn)行認(rèn)證簽名的機(jī)構(gòu),這個(gè)結(jié)構(gòu)的公鑰可以被所有人驗(yàn)證合法。之后,經(jīng)過該結(jié)構(gòu)簽署的公鑰證書可以被全網(wǎng)驗(yàn)證。
2.4 用戶合約Contract-user
表示用戶User發(fā)布的合約,該合約存儲(chǔ)用戶User的公鑰證書信息。實(shí)際上,用戶的公鑰證書信息就是用戶合約的核心內(nèi)容。
2.5 證書發(fā)布機(jī)構(gòu)合約Contract-ca
表示簽證機(jī)構(gòu)Ca處理其他用戶認(rèn)證請(qǐng)求的合約。用戶通過改變?cè)摵霞s的一些數(shù)據(jù)內(nèi)容向簽證機(jī)構(gòu)傳遞信息。
我們使用區(qū)塊鏈代替?zhèn)鹘y(tǒng)不可信信道,同時(shí)將公鑰證書以智能合約的形式發(fā)布出來。這里的合約Contract-user和合約Contract-ca都屬于區(qū)塊鏈的一部分,為了清楚地說明整個(gè)系統(tǒng)的工作過程,將這兩個(gè)合約獨(dú)立于以太坊區(qū)塊鏈表示。而在實(shí)際中,這兩個(gè)合約均存在于以太坊區(qū)塊鏈中。而用戶User和簽證機(jī)構(gòu)Ca都是匿名連接以太坊區(qū)塊鏈的各個(gè)實(shí)體結(jié)構(gòu),即他們均不需要公布自己的真實(shí)的網(wǎng)絡(luò)位置。
3 具體方案設(shè)計(jì)
簽證機(jī)構(gòu)Ca需要將自己的合約Contract-ca發(fā)布到以太坊區(qū)塊鏈上,然后全網(wǎng)用戶可以獲取簽證機(jī)構(gòu)的合約Contract-ca的合約地址。之后用戶User將自己的公鑰證書以智能合約的形式發(fā)布到以太坊區(qū)塊鏈上。此時(shí)的合約Contract-user不能被用作公鑰證書,因?yàn)榇藭r(shí)的公鑰證書還沒有被簽證機(jī)構(gòu)Ca簽署生效。用戶User可以將合約Contract-user的地址通過區(qū)塊鏈傳遞給合約Contract-ca,請(qǐng)求簽證機(jī)構(gòu)Ca對(duì)合約User進(jìn)行認(rèn)證。簽證機(jī)構(gòu)Ca從合約Contract-ca中獲取需要請(qǐng)求的合約Contract-user的地址,然后在區(qū)塊鏈上查詢到合約Contract-user的相關(guān)信息,簽證機(jī)構(gòu)Ca在后臺(tái)數(shù)據(jù)庫中查到合約Contract-user合法后就可以通過區(qū)塊鏈向合約Contract-user發(fā)送一個(gè)交易,對(duì)合約Contract-user的相關(guān)數(shù)據(jù)狀態(tài)進(jìn)行更改。最終合約Contract-user得到簽證機(jī)構(gòu)Ca的簽署,整個(gè)過程并不在傳統(tǒng)信道上傳遞公鑰信息和簽署信息。
3.1 證書發(fā)布機(jī)構(gòu)合約
證書發(fā)布機(jī)構(gòu)合約的編寫與發(fā)布過程:
(1)初始化:Ca與以太坊節(jié)點(diǎn)連接;生成以太坊賬戶地址Addr-ca,公私鑰對(duì)Pk-ca和Sk-ca。
(2)編寫智能合約Contract-ca,合約包含表1所列內(nèi)容。endprint
(3)將編寫的合約Contract-ca編譯發(fā)布到以太坊區(qū)塊鏈上,返回Contract-ca的合約地址Addr-contract-ca。
上述過程中使用的變量如表1。
3.2 用戶合約的編寫與發(fā)布
用戶合約的編寫與發(fā)布:
(1)初始化:User與以太坊節(jié)點(diǎn)連接;生成以太坊賬戶地址Addr-user,公私鑰對(duì)Pk-user,Sk-user。
(2)編寫智能合約Contract-user,合約包含表2所列內(nèi)容。
(3)將編寫的合約Contract-user編譯發(fā)布到以太坊區(qū)塊鏈上,返回合約地址Addr-contract-user。
上述過程中使用的變量如表2。
3.3 證書發(fā)布機(jī)構(gòu)簽署用戶合約
證書發(fā)布機(jī)構(gòu)簽署用戶合約的步驟:
(1)User修改區(qū)塊鏈中Contract-ca合約中的Addr-contract-user為自己的證書合約的地址;
(2)Ca從合約中獲取Addr-contract-user;
(3) Ca查詢以太坊區(qū)塊鏈上Addr-contract-user所處合約;
(4) Ca計(jì)算合約Contract-user中Cert(Id-user,Pk-user,Addr-user,Pk-ca,Addr-ca,Addr-contract-ca)的Signature-hash值;
(5)Ca使用自己的私鑰Sk-ca對(duì)Signature-hash進(jìn)行簽署;
(6)被Ca簽署的用戶合約可以被User使用。
3.4 用戶使用證書合約
用戶使用證書合約的步驟:
(1)User向其它用戶公布自己的合約證書地址;
(2)驗(yàn)證者訪問以太坊區(qū)塊鏈獲取合約證書內(nèi)容;
(3) 驗(yàn)證者通過證書內(nèi)的Addr-contract-ca找到認(rèn)證機(jī)構(gòu)的地址;
(4)驗(yàn)證者通過Addr-contract-ca查找到認(rèn)證機(jī)構(gòu)的合約;
(5)驗(yàn)證者在認(rèn)證機(jī)構(gòu)的合約中查找到認(rèn)證機(jī)構(gòu)的公鑰;
(6)驗(yàn)證者使用公鑰解開Signature-hash,獲取證書信息的Hash值;
(7)驗(yàn)證者將得到的Hash值與自己計(jì)算的Hash值比較,如果兩者相同,則User的證書信息真實(shí)有效。
4 總結(jié)
本文提出的方案充分利用了智能合約的特點(diǎn)解決了公鑰證書發(fā)放過程中的問題。區(qū)塊鏈的去中心化特點(diǎn),使得全部節(jié)點(diǎn)地位相等,依靠P2P技術(shù)傳播的交易信息在每個(gè)節(jié)點(diǎn)都能夠完全驗(yàn)證。在不可信信道上傳播的公鑰證書信息因?yàn)樵诿總€(gè)節(jié)點(diǎn)傳播的時(shí)候都能夠被驗(yàn)證,就極大地降低了被攻擊者篡改的可能性。攻擊者想要篡改證書信息,則必須擁有一半以上的全網(wǎng)算力才能保證供給成功。而實(shí)際上,當(dāng)前以太坊區(qū)塊鏈的全網(wǎng)總算力遠(yuǎn)遠(yuǎn)超過全球超級(jí)計(jì)算機(jī)總算力之和。攻擊者想要攻擊成功,則需要付出極大的代價(jià)。區(qū)塊鏈節(jié)點(diǎn)與用戶或者可信機(jī)構(gòu)進(jìn)行的是匿名鏈接。因?yàn)樵趨^(qū)塊鏈上,任何擁有與機(jī)構(gòu)地址相對(duì)應(yīng)的私鑰的實(shí)體,即被認(rèn)為是機(jī)構(gòu)本身。因此,用戶和可信機(jī)構(gòu)只需保留相應(yīng)的公私鑰對(duì)即可,可以隱藏或者變換網(wǎng)絡(luò)地址,這樣攻擊者就極難發(fā)現(xiàn)真實(shí)的實(shí)體位置。綜上,本方案既可以在不可信信道上保障公鑰信息的完整性,又能防止攻擊者對(duì)某個(gè)機(jī)構(gòu)進(jìn)行拒絕服務(wù)式攻擊。
然而,區(qū)塊鏈在完美解決拜占庭問題的同時(shí)也帶來了整體效率低下的問題。最突出的問題就是以太坊作為一個(gè)公有鏈,當(dāng)前使用的是工作量證明作為共識(shí)機(jī)制。工作量證明機(jī)制是要求礦工完成一定的工作量才能取得記賬權(quán)。在以太坊區(qū)塊鏈中,礦工新建立一個(gè)區(qū)塊需要大概15秒鐘的時(shí)間,而一個(gè)新的區(qū)塊容納的交易數(shù)量是有限的。實(shí)際上,在智能合約的狀態(tài)量改變過程中,每個(gè)狀態(tài)量的改變都需要全網(wǎng)節(jié)點(diǎn)的共同確認(rèn)才算合法。因此,我們就可以發(fā)現(xiàn),智能合約在執(zhí)行過程中的效率是很低的。但是,在隨后的以太坊大都會(huì)階段,以太坊執(zhí)行分片,則智能合約的執(zhí)行效率就會(huì)大大地增加。在未來的工作中,如何提高公鑰證書合約的靈活性,使之適應(yīng)越來越復(fù)雜的網(wǎng)絡(luò)狀況是我們的關(guān)注重點(diǎn)。
參考文獻(xiàn)
[1]Kohnfelder L M. Towards a practical public-key cryptosystem[D].Massachusetts Institute of Technology,1978.
[2]唐明,李莉,杜瑞穎.William S.密碼編碼學(xué)與網(wǎng)絡(luò)安全——原理與實(shí)踐(第六版)[M].北京:電子工業(yè)出版社,2015.
[3]Satoshi N.Bitcoin:A peer-to-peer electronic cash system[EB/OL]. [2009-03-25].https://bitcoin.org/bitcoin.pdf.
作者簡介
張成成(1991-),男,安徽省阜陽市人。碩士學(xué)位。西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院學(xué)生。研究方向?yàn)樾畔踩?/p>
作者單位
西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院 四川省成都市 610039endprint