黃小菊 徐文起 章濤 宮學(xué)慶
摘 要:現(xiàn)有的個(gè)人私密信息管理工具一般基于獨(dú)立的軟件或云服務(wù),存在著數(shù)據(jù)難以共享、易被泄露等問題。區(qū)塊鏈技術(shù)具有去中心化、數(shù)據(jù)難以篡改、可追溯等特點(diǎn),能用于數(shù)據(jù)管理,但目前缺乏成熟的應(yīng)用模式。本文對利用以太坊智能合約存儲(chǔ)和管理數(shù)據(jù)的特點(diǎn)進(jìn)行了分析,設(shè)計(jì)了一個(gè)基于區(qū)塊鏈技術(shù)的個(gè)人信息管理系統(tǒng)。其不依賴于任何服務(wù)商實(shí)現(xiàn)個(gè)人信息數(shù)據(jù)的存儲(chǔ)和分享,能夠有效解決數(shù)據(jù)丟失、數(shù)據(jù)泄露和數(shù)據(jù)濫用的問題,同時(shí)也為區(qū)塊鏈技術(shù)應(yīng)用于數(shù)據(jù)管理提供了一種可行的解決方案。
關(guān)鍵詞:區(qū)塊鏈;智能合約;個(gè)人信息管理
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:The existing personal private information management tools are generally based on independent software or cloud services,and there are problems such as difficulty in sharing data and being easily leaked.Blockchain technology has the characteristics of decentralization,falsified data prevention,and traceability.It can be used for data management,but currently there is no mature application mode.We analyze the characteristics of using Ethereum smart contracts to store and manage data,and design a block-chain-based personal information management system.It does not rely on any service provider to store and share personal information,and can effectively solve the issues of data loss,data leakage,and data abuse.Furthermore,it provides a feasible solution for blockchain technology applied to data management.
Keywords:blockchain;smart contract;personal information management
1 引言(Introduction)
隨著互聯(lián)網(wǎng)和智能手機(jī)應(yīng)用的普及,大量的數(shù)字化個(gè)人信息已經(jīng)成為人們最重要的個(gè)人資產(chǎn),如個(gè)人聯(lián)系方式、通訊錄,以及在各種APP中的用戶名和密碼等?,F(xiàn)有用于個(gè)人信息管理的工具難以在保證數(shù)據(jù)安全性的前提下實(shí)現(xiàn)便利的數(shù)據(jù)共享。
區(qū)塊鏈?zhǔn)腔赑2P網(wǎng)絡(luò)、共識(shí)機(jī)制和加密算法等技術(shù)的新型應(yīng)用模式,具有去中心化、數(shù)據(jù)難以篡改和可追溯等特點(diǎn)。區(qū)塊鏈技術(shù)的研究是當(dāng)前學(xué)術(shù)界和工業(yè)界共同關(guān)注的一個(gè)熱點(diǎn)問題,相關(guān)研究工作不僅包括共識(shí)算法[1]和智能合約[2]等區(qū)塊鏈實(shí)現(xiàn)技術(shù),還包括如何將區(qū)塊鏈技術(shù)應(yīng)用于各個(gè)領(lǐng)域,如物聯(lián)網(wǎng)[3]、金融[4]和醫(yī)療[5]等。作為一種新興的技術(shù),其應(yīng)用模式還沒有公認(rèn)的成熟方案,有待于進(jìn)一步研究。
本文設(shè)計(jì)了一個(gè)基于以太坊[6]的個(gè)人信息管理解決方案,將個(gè)人信息數(shù)據(jù)通過以太坊的智能合約保存到區(qū)塊鏈中,不僅能夠?qū)崿F(xiàn)數(shù)據(jù)的可靠存儲(chǔ)、同步和分享,還能夠避免數(shù)據(jù)泄露和數(shù)據(jù)濫用的問題。
2 區(qū)塊鏈技術(shù)(Blockchain technology)
區(qū)塊鏈技術(shù)是綜合共識(shí)機(jī)制、加密算法、智能合約、P2P網(wǎng)絡(luò)等技術(shù)的新興技術(shù)框架,應(yīng)用范圍廣泛,但目前尚沒有公認(rèn)的成熟應(yīng)用模式。以太坊作為最主流的去中心化區(qū)塊鏈應(yīng)用開發(fā)平臺(tái),現(xiàn)有的開發(fā)框架和開發(fā)語言都相對較成熟,并且支持智能合約。本文構(gòu)建的個(gè)人信息管理系統(tǒng)基于以太坊實(shí)現(xiàn)。
以太坊網(wǎng)絡(luò)是由運(yùn)行著以太坊客戶端的節(jié)點(diǎn)組成的P2P網(wǎng)絡(luò),結(jié)構(gòu)如圖1所示。以太坊客戶端中存儲(chǔ)著以太坊區(qū)塊鏈和以太坊的狀態(tài),同時(shí)也運(yùn)行著EVM(Ethereum Virtual Machine)。以太坊區(qū)塊鏈?zhǔn)前存湵斫Y(jié)構(gòu)組織的區(qū)塊集合,區(qū)塊中存儲(chǔ)著時(shí)間戳、隨機(jī)數(shù)、前一區(qū)塊數(shù)據(jù)的Hash值,以及大量的交易。交易中記錄著以太坊賬戶發(fā)生的狀態(tài)變化。以太坊狀態(tài)是區(qū)塊鏈中特定時(shí)間點(diǎn)上所有賬戶和數(shù)據(jù)的快照[7]。賬戶分為外部賬戶和合約賬戶兩類,賬戶地址為20字節(jié)的16進(jìn)制字符串。外部賬戶類似現(xiàn)實(shí)世界的銀行卡賬戶,其中存儲(chǔ)著賬戶余額等信息。合約賬戶即智能合約,存儲(chǔ)著合約數(shù)據(jù)和合約代碼。EVM是能執(zhí)行交易、修改以太坊狀態(tài),其為智能合約提供了完全隔離的運(yùn)行環(huán)境。
智能合約是一段運(yùn)行在以太坊網(wǎng)絡(luò)中的腳本,可通過變量賦值、函數(shù)調(diào)用來存儲(chǔ)、操作數(shù)據(jù)。其中的數(shù)據(jù)存儲(chǔ)在以太坊節(jié)點(diǎn)中,具有四個(gè)重要特點(diǎn):(1)公開性。任何連接到以太坊網(wǎng)絡(luò)的節(jié)點(diǎn)均可自由讀取以太坊區(qū)塊鏈中的所有數(shù)據(jù)。(2)數(shù)據(jù)管理成本較高。調(diào)用智能合約來存儲(chǔ)、操作數(shù)據(jù)會(huì)消耗交易發(fā)起者一定的以太幣。同時(shí),以太坊網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都需要執(zhí)行該合約,消耗了大量的計(jì)算資源。(3)數(shù)據(jù)操作是異步的。執(zhí)行合約過程中需要向網(wǎng)絡(luò)發(fā)送交易、產(chǎn)生新區(qū)塊。只有在這些過程完成后數(shù)據(jù)操作才算成功。(4)不易丟失、難以篡改。智能合約中的數(shù)據(jù)存儲(chǔ)在以太坊網(wǎng)絡(luò)中,使得數(shù)據(jù)難以篡改。以太坊網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)均存儲(chǔ)著智能合約數(shù)據(jù)副本,保證了數(shù)據(jù)不易丟失。
3 系統(tǒng)設(shè)計(jì)(System design)
為解決現(xiàn)有個(gè)人信息管理工具存在的問題,提出基于以太坊的個(gè)人信息管理系統(tǒng)。該系統(tǒng)具有以下特點(diǎn):(1)能存儲(chǔ)大量的個(gè)人數(shù)字化信息;(2)能提供可靠的數(shù)據(jù)存儲(chǔ);(3)能靈活控制數(shù)據(jù)的訪問權(quán)限;(4)能實(shí)現(xiàn)數(shù)據(jù)共享。同時(shí),該系統(tǒng)的實(shí)現(xiàn)也是對以太坊應(yīng)用模式的探索。
3.1 系統(tǒng)總體架構(gòu)
系統(tǒng)可以分為以太坊智能合約、系統(tǒng)節(jié)點(diǎn)兩個(gè)部分,架構(gòu)如圖2所示。智能合約負(fù)責(zé)管理用戶重要數(shù)據(jù)、控制數(shù)據(jù)訪問權(quán)限;系統(tǒng)節(jié)點(diǎn)包含本地存儲(chǔ)、以太坊客戶端、數(shù)據(jù)管理服務(wù)、云存儲(chǔ)服務(wù)四個(gè)組件,分別負(fù)責(zé)存儲(chǔ)數(shù)據(jù)、連接以太坊網(wǎng)絡(luò)、數(shù)據(jù)處理和云存儲(chǔ)服務(wù),由此管理、維護(hù)用戶所有數(shù)據(jù)。
3.2 以太坊智能合約的設(shè)計(jì)
我們設(shè)計(jì)了用于用戶個(gè)人信息存儲(chǔ)、訪問控制的UPC(User Profile Contract)和用于共享數(shù)據(jù)的GPC(Group Profile Contract)兩種合約,實(shí)現(xiàn)語言選用Solidity。GPC的數(shù)據(jù)共享類似QQ的群文件共享,以下認(rèn)為有權(quán)限訪問同一個(gè)GPC數(shù)據(jù)的用戶處于一個(gè)群,群主為該GPC的創(chuàng)建者。
UPC、GPC及本地存儲(chǔ)的關(guān)系如圖3所示,UPC、GPC存儲(chǔ)在以太坊網(wǎng)絡(luò)中,本地存儲(chǔ)為系統(tǒng)節(jié)點(diǎn)的重要模塊。本地存儲(chǔ)中的數(shù)據(jù)和合約中的數(shù)據(jù)需要進(jìn)行同步,用于保證數(shù)據(jù)的一致性;UPC中會(huì)記錄用戶所加入群的GPC地址,便于查找群內(nèi)成員分享的數(shù)據(jù);UPC中還會(huì)記錄好友的UPC地址,使得合約之間互相關(guān)聯(lián),便于信息的訪問。
3.2.1 UPC
UPC由用戶創(chuàng)建,用于存儲(chǔ)和管理用戶關(guān)鍵數(shù)據(jù),從而可保證用戶數(shù)據(jù)的可靠存儲(chǔ)、安全共享。結(jié)合加密算法后UPC可用于控制數(shù)據(jù)的訪問權(quán)限。
UPC的數(shù)據(jù)結(jié)構(gòu)如圖3所示,包含版本、數(shù)據(jù)項(xiàng)信息、以太坊賬戶地址、數(shù)據(jù)列表和配置信息。版本存儲(chǔ)特定區(qū)塊的時(shí)間戳,該區(qū)塊中包含最近修改合約狀態(tài)的交易,由此來標(biāo)記數(shù)據(jù)的更新時(shí)間;數(shù)據(jù)項(xiàng)信息是一個(gè)字符串,其中包含數(shù)據(jù)列表中存儲(chǔ)的所有數(shù)據(jù)項(xiàng)名,由此可從數(shù)據(jù)列表中獲取到所有數(shù)據(jù)值;以太坊賬戶地址即為用戶登錄系統(tǒng)的賬戶地址;數(shù)據(jù)列表中存儲(chǔ)著用戶所有個(gè)人數(shù)據(jù);配置信息中記錄了好友列表信息、GPC地址列表、用戶 地址,以及用戶加密自身數(shù)據(jù)的所有密鑰列表。其中好友列表中包括好友的UPC地址、用戶提供給好友的密鑰名稱列表、好友提供給用戶的密鑰列表,由此即可查詢到用戶所有好友的信息、好友對用戶信息的訪問權(quán)限。配置信息在UPC中以加密字符串形式存儲(chǔ),用于系統(tǒng)節(jié)點(diǎn)初始化、獲取合約數(shù)據(jù)。
存儲(chǔ)用戶數(shù)據(jù)時(shí)可以自主選擇加密策略:不加密、僅加密數(shù)據(jù)值或數(shù)據(jù)項(xiàng)與數(shù)據(jù)值均加密,由此可平衡數(shù)據(jù)處理效率和數(shù)據(jù)安全性的要求。
UPC中主要包括兩個(gè)方法:①setData(string_key,string_value)用于添加、更新、刪除數(shù)據(jù)。setData()中設(shè)置了自定義的onlyOwner Modifier,用于保證方法調(diào)用者只能是合約創(chuàng)建者。執(zhí)行該方法需要向以太坊網(wǎng)絡(luò)發(fā)送交易,消耗以太幣;②getData(string_key)用于獲取數(shù)據(jù),不需要向以太坊網(wǎng)絡(luò)發(fā)送交易,因此不消耗以太幣。
3.2.2 GPC
GPC主要用于群內(nèi)成員互相分享數(shù)據(jù)。集中存儲(chǔ)分享給特定群的數(shù)據(jù)能減少用戶對大量無關(guān)數(shù)據(jù)的讀取、解析,提高分享效率;針對同一數(shù)據(jù)項(xiàng),GPC可向不同群分享不同的數(shù)據(jù)值,由此可簡化合約中的數(shù)據(jù)存儲(chǔ),并實(shí)現(xiàn)靈活的數(shù)據(jù)分享。
GPC的數(shù)據(jù)結(jié)構(gòu)如圖3所示,包含版本、數(shù)據(jù)項(xiàng)信息、創(chuàng)建該GPC的用戶賬戶地址、數(shù)據(jù)列表和用戶列表。版本、數(shù)據(jù)項(xiàng)信息含義與UPC中的相同;以太坊賬戶地址即為創(chuàng)建該GPC的用戶賬戶地址;數(shù)據(jù)列表中存儲(chǔ)著群內(nèi)成員分享的所有信息,它們的數(shù)據(jù)值均使用群密鑰加密。該密鑰由GPC創(chuàng)建者指定;用戶列表中存儲(chǔ)群內(nèi)所有成員的賬戶地址及它們所對應(yīng)的密鑰字符串。該密鑰字符串由GPC創(chuàng)建者使用用戶公鑰對群密鑰加密得到,群內(nèi)成員可從自己的密鑰字符串中解析出群密鑰,并用該密鑰解密GPC中的數(shù)據(jù)或存儲(chǔ)希望分享給其他成員的數(shù)據(jù)。
GPC中的主要方法包括setData(string_key, string_value)、getData(string_key)、setUser(address_friend,string_keystring)、getKeyString(address_friend)。其中setData()向Mapping寫入數(shù)據(jù)時(shí)會(huì)在參數(shù)_key前加上調(diào)用者的賬戶地址,由此確定數(shù)據(jù)所有者。getData()和getKeyString()和UPC中的實(shí)現(xiàn)基本相同。
3.3 系統(tǒng)節(jié)點(diǎn)
由于以太坊智能合約中數(shù)據(jù)管理成本高,系統(tǒng)中較復(fù)雜的數(shù)據(jù)運(yùn)算、大量數(shù)據(jù)的存儲(chǔ)和處理都需在系統(tǒng)節(jié)點(diǎn)中完成,其開發(fā)使用Truffle框架完成。
3.3.1 數(shù)據(jù)管理服務(wù)
數(shù)據(jù)管理服務(wù)負(fù)責(zé)維護(hù)系統(tǒng)中的所有數(shù)據(jù),實(shí)現(xiàn)安全、可靠的數(shù)據(jù)管理,其三個(gè)功能模塊之間的交互如圖2所示。具體功能如下:
(1)用戶交互模塊負(fù)責(zé)為用戶提供數(shù)據(jù)管理界面,由此向用戶展示有訪問權(quán)限的數(shù)據(jù)、收集用戶提交的新數(shù)據(jù)。
(2)數(shù)據(jù)處理模塊負(fù)責(zé)數(shù)據(jù)的加密、解密,以保證數(shù)據(jù)安全存儲(chǔ)和共享。根據(jù)UPC中對數(shù)據(jù)類型的分類,對數(shù)據(jù)采用不同的加密算法處理。私密數(shù)據(jù)要求較高的安全性,需要使用非對稱加密方法進(jìn)行加密;對于模式公開數(shù)據(jù),綜合考慮安全性和數(shù)據(jù)處理效率,一般使用對稱加密方法加密,使得用戶向好友分享密鑰即可實(shí)現(xiàn)分享數(shù)據(jù)。
當(dāng)用戶選擇啟用云存儲(chǔ)服務(wù)時(shí),對于部分安全性要求高且有共享需求的數(shù)據(jù),可選用代理重加密方法進(jìn)行加密。好友在線下向用戶提出數(shù)據(jù)共享請求,用戶即可使用重加密密鑰生成算法產(chǎn)生重加密密鑰,并通過云存儲(chǔ)服務(wù)提交給云服務(wù)器。云服務(wù)器對數(shù)據(jù)密文完成重加密后,好友即可用自己的私鑰解密獲取的數(shù)據(jù)密文。由此可提供更高的數(shù)據(jù)安全性,并提高數(shù)據(jù)處理效率。
(3)用戶數(shù)據(jù)管理模塊提供了getData(string_key)、setData(string_key,string_value)兩個(gè)數(shù)據(jù)訪問接口,由此向本節(jié)點(diǎn)或其他節(jié)點(diǎn)的用戶交互模塊提供數(shù)據(jù),由此實(shí)現(xiàn)數(shù)據(jù)的共享。同時(shí),用戶數(shù)據(jù)管理模塊通過調(diào)用智能合約、本地存儲(chǔ)的數(shù)據(jù)操作方法來存取、更新數(shù)據(jù),以保證系統(tǒng)中所有數(shù)據(jù)的一致性。
數(shù)據(jù)管理模塊中對于數(shù)據(jù)的加密粒度,以及加密方式都給了用戶較大的選擇空間,使得用戶可以根據(jù)自身的需要在數(shù)據(jù)安全性和處理效率間權(quán)衡,帶來較高的數(shù)據(jù)處理靈活性。
3.3.2 以太坊客戶端
以太坊客戶端將系統(tǒng)節(jié)點(diǎn)連接到以太坊網(wǎng)絡(luò),從而完成發(fā)送交易、部署合約、調(diào)用合約函數(shù)等功能,本文使用的是go-ethereum客戶端和MetaMask。
以太坊客戶端會(huì)在用戶首次登錄時(shí)對用戶提供的以太坊賬戶地址、密鑰對進(jìn)行檢查,以此實(shí)現(xiàn)身份認(rèn)證。之后,用戶從系統(tǒng)節(jié)點(diǎn)發(fā)出的所有交易都由該賬戶發(fā)起,并由該賬戶提供發(fā)起交易所需的以太幣。
3.3.3 本地存儲(chǔ)
本地存儲(chǔ)用于在本地存儲(chǔ)用戶數(shù)據(jù),從而提高系統(tǒng)數(shù)據(jù)管理效率。為實(shí)現(xiàn)與智能合約數(shù)據(jù)的同步且保證數(shù)據(jù)查詢、更新效率,我們選用鍵值數(shù)據(jù)庫HBase實(shí)現(xiàn)。
將存儲(chǔ)在UPC和GPC上的數(shù)據(jù)分別存放在userProfileTable和groupProfileTable表中,并在合約地址、賬戶地址列上設(shè)置索引以便于查找。userProfileTable包含兩個(gè)列族:contractInfo用于存儲(chǔ)合約地址、版本、配置信息等合約相關(guān)信息;dataInfo用于存儲(chǔ)用戶個(gè)人數(shù)據(jù)。groupProfileTable包括contractInfo、dataInfo、userInfo三個(gè)列族,前兩個(gè)內(nèi)容與userProfileTable中的相同,userInfo中存儲(chǔ)GPC的用戶列表信息。
以上數(shù)據(jù)庫模式的設(shè)計(jì)使得本地存儲(chǔ)與智能合約進(jìn)行交互時(shí)能快速實(shí)現(xiàn)數(shù)據(jù)的同步,同時(shí)支持大量數(shù)據(jù)的存儲(chǔ)、查詢、更新。
3.3.4 云存儲(chǔ)服務(wù)
云存儲(chǔ)服務(wù)為可選功能模塊,主要負(fù)責(zé)云服務(wù)器數(shù)據(jù)的管理,保證數(shù)據(jù)的可靠存儲(chǔ)和安全共享。其三個(gè)功能模塊的關(guān)系如圖2所示。具體功能如下:
(1)云數(shù)據(jù)存取模塊可連接云服務(wù)器,為數(shù)據(jù)管理服務(wù)提供管理云端數(shù)據(jù)的標(biāo)準(zhǔn)接口,包括getDataHash(string_key)、getData(string_key)、setData(string_key,string_value)、reEncrypto(string_key,string_encrptokey),分別用于獲取數(shù)據(jù)Hash值、獲取完整數(shù)據(jù)、更新數(shù)據(jù)、重加密數(shù)據(jù)。
(2)數(shù)據(jù)驗(yàn)證模塊負(fù)責(zé)對從云服務(wù)器中獲取的數(shù)據(jù)進(jìn)行驗(yàn)證,以減少無效數(shù)據(jù)的傳輸。使用云數(shù)據(jù)存取提供的getDataHash()從云服務(wù)器中獲取數(shù)據(jù)Hash值,確定和數(shù)據(jù)管理服務(wù)提供的Hash值相同時(shí),再調(diào)用getData()請求完整數(shù)據(jù),并返回給數(shù)據(jù)管理服務(wù)。
(3)本地?cái)?shù)據(jù)同步模塊用于檢查云服務(wù)器和本地存儲(chǔ)中數(shù)據(jù)的一致性,以防止云服務(wù)器或本地存儲(chǔ)中的數(shù)據(jù)被篡改。同步在系統(tǒng)節(jié)點(diǎn)空閑時(shí)進(jìn)行,通過驗(yàn)證數(shù)據(jù)Hash值的一致性來實(shí)現(xiàn)。
該模塊的引入能在保證數(shù)據(jù)安全性的同時(shí)保證數(shù)據(jù)存儲(chǔ)、分享的效率。
4 場景分析(Scenario analysis)
為完整描述利用智能合約完成數(shù)據(jù)存儲(chǔ)、分享的過程,假設(shè)場景:A、B為好友,分別使用系統(tǒng)節(jié)點(diǎn)A和系統(tǒng)節(jié)點(diǎn)B將他們的個(gè)人數(shù)據(jù)存儲(chǔ)在智能合約上。A、B均未啟用云存儲(chǔ)服務(wù)功能。B可訪問A的“辦公電話”“學(xué)習(xí)經(jīng)歷”等信息。現(xiàn)假設(shè)系統(tǒng)節(jié)點(diǎn)A發(fā)生故障,本地?cái)?shù)據(jù)全部丟失,用戶A僅記錄了以太坊賬戶、密鑰、UPC地址。系統(tǒng)節(jié)點(diǎn)B在本地存儲(chǔ)了所有可訪問的數(shù)據(jù),且用戶B記錄了、、。在此場景下進(jìn)行實(shí)驗(yàn),以驗(yàn)證系統(tǒng)的有效性,圖4描述了用戶A,B使用系統(tǒng)進(jìn)行數(shù)據(jù)管理的實(shí)驗(yàn)流程。
系統(tǒng)節(jié)點(diǎn)初始化:圖4中第①到③步描述的是用戶A初始化系統(tǒng)節(jié)點(diǎn)、獲取數(shù)據(jù)的三個(gè)關(guān)鍵步驟。
①用戶A向系統(tǒng)節(jié)點(diǎn)提供和,由系統(tǒng)節(jié)點(diǎn)對其進(jìn)行驗(yàn)證,確認(rèn)正確之后進(jìn)入第二步,否則初始化失敗。
②系統(tǒng)節(jié)點(diǎn)使用可訪問A的UPC由此讀取A的所有數(shù)據(jù),并將其解密。解密后的數(shù)據(jù)包含A的個(gè)人信息列表、好友B的UPC地址,以及對應(yīng)的密鑰等,被存儲(chǔ)到節(jié)點(diǎn)的本地存儲(chǔ)中。
③根據(jù)上一步得到的合約地址可讀取出其他用戶分享給A的所有數(shù)據(jù),并將其存儲(chǔ)到本地。系統(tǒng)節(jié)點(diǎn)讀取的數(shù)據(jù)展示給用戶,初始化過程結(jié)束。
該初始化過程保證了用戶在不丟失合約地址的情況下,關(guān)鍵數(shù)據(jù)不會(huì)丟失。
更新數(shù)據(jù):用戶A的“學(xué)習(xí)經(jīng)歷”信息中數(shù)據(jù)量較大,完整數(shù)據(jù)存儲(chǔ)在本地存儲(chǔ)中,智能合約中僅存儲(chǔ)了該信息的Hash值。現(xiàn)需更新該數(shù)據(jù),流程如圖4中第④到⑥步所示。
④系統(tǒng)節(jié)點(diǎn)調(diào)用函數(shù)將加密的新數(shù)據(jù)同步到合約中。合約執(zhí)行成功后,將最新的數(shù)據(jù)Hash更新到本地存儲(chǔ)中。
⑤系統(tǒng)節(jié)點(diǎn)B定期從中讀取A的版本信息,當(dāng)發(fā)現(xiàn)其本地版本低于UPC中的版本時(shí),重新讀取合約數(shù)據(jù),并進(jìn)行解密。
⑥對于“學(xué)習(xí)經(jīng)歷”等存儲(chǔ)在A節(jié)點(diǎn)中的數(shù)據(jù),B向A節(jié)點(diǎn)的數(shù)據(jù)管理服務(wù)發(fā)送獲取數(shù)據(jù)的請求。得到的數(shù)據(jù)密文由B使用解密,并更新到系統(tǒng)節(jié)點(diǎn)B的本地存儲(chǔ)中。
通過監(jiān)控合約狀態(tài),用戶可獲取到好友的實(shí)時(shí)最新數(shù)據(jù);通過標(biāo)準(zhǔn)的數(shù)據(jù)訪問接口可以實(shí)現(xiàn)數(shù)據(jù)的分享。
群內(nèi)共享數(shù)據(jù):B希望向A分享“地址”“郵箱”等信息,但他不想分享中存儲(chǔ)的私人地址和郵箱。因此,他使用GPC來向A分享數(shù)據(jù),具體流程如圖4中第⑦到⑧步所示。
⑦用戶B通過系統(tǒng)節(jié)點(diǎn)的以太坊客戶端新建GPC,得到的地址為,并指定群密鑰為中。B使用調(diào)用addUser()將、使用加密的群密鑰添加到GPC的用戶列表中。
⑧用戶B在線下向A發(fā)送。用戶A即可使用該地址創(chuàng)建GPC實(shí)例,從而讀取B分享的數(shù)據(jù),并能使用GPC提供的方法管理數(shù)據(jù)。
上述分享過程使得用戶訪問好友數(shù)據(jù)時(shí)不需讀取、解析好友UPC中的所有的信息,提高了數(shù)據(jù)訪問效率。同時(shí),對群成員來說,獲取群內(nèi)其他成員分享的信息僅需讀取一個(gè)合約數(shù)據(jù)即可實(shí)現(xiàn),數(shù)據(jù)分享、訪問更加便利。
收回共享權(quán)限:A不希望再向B分享自己的“辦公電話”信息,收回訪問權(quán)限過程如圖4中⑨所示。
⑨A將“辦公電話”信息使用新的密鑰進(jìn)行加密,并更新到合約中。成功后,A向其他對“辦公電話”信息有訪問權(quán)限的好友發(fā)送。由此,數(shù)據(jù)訪問權(quán)限被收回。
上述過程中被更新的合約數(shù)據(jù)量較少且過程簡單,實(shí)現(xiàn)成本較低,并且能保證數(shù)據(jù)訪問權(quán)限被徹底收回。
5 結(jié)論(Conclusion)
互聯(lián)網(wǎng)及手機(jī)應(yīng)用的普及為人們帶來大量的數(shù)字化個(gè)人信息,而現(xiàn)有的個(gè)人信息管理工具存在著數(shù)據(jù)難以分享、易被泄露等問題。區(qū)塊鏈技術(shù)具有去中心化、數(shù)據(jù)難以篡改、可追溯等特點(diǎn),能為解決個(gè)人信息管理中的問題提供新思路。本文提出的基于以太坊的個(gè)人信息管理解決方案將個(gè)人信息數(shù)據(jù)存儲(chǔ)到以太坊智能合約上,并由系統(tǒng)節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行組織和維護(hù),由此可實(shí)現(xiàn)大量的個(gè)人數(shù)字化信息的可靠存儲(chǔ)、安全共享,并確保用戶對數(shù)據(jù)訪問權(quán)限的控制。
參考文獻(xiàn)(References)
[1] Mingxiao D,Xiaofeng M,Zhe Z,et al.A review on con-sensus algorithm of blockchain[C].Systems,Man,and Cy-bernetics(SMC),2017 IEEE International Conference on.IEEE,2017:2567-2572.
[2] Delmolino K,Arnett M,Kosba A,et al.Step by step to-wards creating a safe smart contract:Lessons and insights from a cryptocurrency lab[C].International Conference on Financial Cryptography and Data Security.Springer,Berlin,Heidelberg,2016:79-94.
[3] Huh S,Cho S,Kim S.Managing IoT devices using block-chain platform[C].Advanced Communication Technology(ICACT),2017 19th International Conference on.IEEE,2017:464-467.
[4] Porru S,Pinna A,Marchesi M,et al.Blockchain-oriented software engineering:challenges and new directions[C].Proceedings of the 39th International Conference on Software Engineering Companion.IEEE Press,2017:169-171.
[5] Azaria A,Ekblaw A,Vieira T,et al.Medrec:Using blockchain for medical data access and permission management[C].Open and Big Data(OBD),International Conference on.IEEE,2016:25-30.
[6] 李赫,孫繼飛,楊泳,等.基于區(qū)塊鏈2.0的以太坊初探[J].中國金融電腦,2017(6):57-60.
[7] Saito K,Yamada H.What's So Different about Blockchain?—Blockchain is a Probabilistic State Machine[C].IEEE,International Conference on Distributed Computing Systems Workshops.IEEE,2016:168-175.
作者簡介:
黃小菊(1995-),女,碩士生.研究領(lǐng)域:區(qū)塊鏈技術(shù),分布式數(shù)據(jù)管理系統(tǒng).
徐文起(1995-),男,碩士生.研究領(lǐng)域:區(qū)塊鏈技術(shù),分布式數(shù)據(jù)管理系統(tǒng).
章 濤(1995-),男,碩士生.研究領(lǐng)域:區(qū)塊鏈技術(shù),分布式數(shù)據(jù)管理系統(tǒng).
宮學(xué)慶(1974-),男,博士,教授.研究領(lǐng)域:區(qū)塊鏈技術(shù),分布式數(shù)據(jù)管理系統(tǒng).