亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于區(qū)塊鏈技術(shù)的數(shù)據(jù)存儲(chǔ)和傳遞系統(tǒng)設(shè)計(jì)

        2023-12-29 00:00:00王晨宇王洪彬徐士博張文慧王紹卿
        物流科技 2023年7期

        摘 "要:隨著大數(shù)據(jù)技術(shù)的迅速發(fā)展,數(shù)據(jù)已成為企業(yè)的重要資產(chǎn),數(shù)據(jù)共享成為企業(yè)發(fā)展的迫切需求。為實(shí)現(xiàn)企業(yè)之間數(shù)據(jù)的安全共享,采用區(qū)塊鏈技術(shù)開發(fā)了一套功能齊全,使用方便的園區(qū)管控?cái)?shù)據(jù)的存儲(chǔ)與傳遞系統(tǒng)。系統(tǒng)不僅可以對(duì)本地?cái)?shù)據(jù)進(jìn)行增刪改查,而且可以把需要共享的數(shù)據(jù)進(jìn)行加密上鏈以及解密鏈上的數(shù)據(jù)。其中,利用代理重加密技術(shù)進(jìn)行數(shù)據(jù)加密,實(shí)現(xiàn)了在不傳遞密鑰的情況下使通信雙方都能夠加密數(shù)據(jù),結(jié)合區(qū)塊鏈技術(shù)進(jìn)一步保證了數(shù)據(jù)的安全性。

        "關(guān)鍵詞:區(qū)塊鏈技術(shù);分布式系統(tǒng);代理重加密;聯(lián)盟鏈

        " 中圖分類號(hào):TP311.13 " "文獻(xiàn)標(biāo)志碼:A " "DOI:10.13714/j.cnki.1002-3100.2023.07.007

        Abstract: With the rapid development of big data technology, data has become an important asset of enterprises, and data sharing has become an urgent need for enterprise development. In order to realize the safe data sharing among enterprises, a storage and transmission system which is fully functional and easy-to-use for data of industrial park is developed by use of blockchain technology. The system can not only add, delete and check the local data, but also encrypt and decrypt the data on the chain that needs to be shared. Among them, data encryption is performed by using proxy re-encryption technology, which enables both communication parties to encrypt data without passing the key, and further ensures the security of data by combining with blockchain technology.

        Key words: blockchain technology; distributed system; proxy re-encryption; consortium blockchain

        近年來,隨著大數(shù)據(jù)技術(shù)的迅速發(fā)展,數(shù)據(jù)已成為眾多企業(yè)的重要資產(chǎn),數(shù)據(jù)共享成為企業(yè)發(fā)展的迫切需求。然而,如何在園區(qū)之間實(shí)現(xiàn)安全的數(shù)據(jù)共享和傳遞是一個(gè)具有挑戰(zhàn)性的問題。傳統(tǒng)的中心服務(wù)器方法,需要將所有園區(qū)企業(yè)的管控?cái)?shù)據(jù)上傳到一個(gè)中心服務(wù)器。這會(huì)帶來很多弊端。一方面,各公司的內(nèi)部數(shù)據(jù)具有私密性,如果數(shù)據(jù)被泄漏或篡改,可能會(huì)造成的無法估量的損失;另一方面,單一的中心服務(wù)器容易因遭受惡意攻擊或者宕機(jī)等產(chǎn)生單點(diǎn)故障。而區(qū)塊鏈技術(shù)就可以很好地實(shí)現(xiàn)安全的數(shù)據(jù)存儲(chǔ)、共享和傳遞。

        "本文針對(duì)無中心服務(wù)器的情況下實(shí)現(xiàn)數(shù)據(jù)的共享以及保護(hù)數(shù)據(jù)的隱私。通過分析業(yè)務(wù)場(chǎng)景并結(jié)合Hyperledger Fabric技

        術(shù)[1]特點(diǎn),找到系統(tǒng)的切入點(diǎn),發(fā)揮區(qū)塊鏈技術(shù)的優(yōu)勢(shì)。使得園區(qū)之間在不設(shè)立中心服務(wù)器的情況下實(shí)現(xiàn)數(shù)據(jù)共享并保證數(shù)據(jù)不可篡改,是一個(gè)功能完善,且能夠平衡各方訴求的具有權(quán)威性和公信力的解決方案。打破了數(shù)據(jù)孤島,使數(shù)據(jù)資產(chǎn)可以安全有效地流通和共享。

        區(qū)塊鏈技術(shù)在帶來了良好安全性的同時(shí),也暴露出一系列問題。其中最為顯著的是,隨著區(qū)塊鏈上數(shù)據(jù)的增大,區(qū)塊鏈系統(tǒng)的性能會(huì)變的越來越慢。針對(duì)這一問題采取的解決方法是選用鏈上+鏈下的模式進(jìn)行數(shù)據(jù)的存儲(chǔ)[2-3]。

        1 "系統(tǒng)功能設(shè)計(jì)

        "系統(tǒng)的結(jié)構(gòu)分為鏈上和鏈下兩部分。鏈下部分是由Mysql與Redis數(shù)據(jù)庫(kù)組成的,Mysql主要負(fù)責(zé)存儲(chǔ)本地?cái)?shù)據(jù),Redis存儲(chǔ)數(shù)據(jù)索引和加密數(shù)據(jù)。鏈上部分分為搭建區(qū)塊鏈網(wǎng)絡(luò),編寫鏈碼,使用SDK,搭建基于瀏覽器的用戶接口。系統(tǒng)的結(jié)構(gòu)及功能如圖1所示。

        鏈上+鏈下的設(shè)計(jì)思路是將本地?cái)?shù)據(jù)保存在Mysql數(shù)據(jù)庫(kù)中,通過加密算法生成密文和數(shù)據(jù)的hash值,將密文和hash值存儲(chǔ)到區(qū)塊鏈上的同時(shí),也將hash值在本地Redis數(shù)據(jù)庫(kù)中保存一份,由于需要在本地存儲(chǔ)的是lt;hash值:加密值gt;的數(shù)據(jù)格式,符合Redis的K-V存儲(chǔ)架構(gòu),所以采用Redis存儲(chǔ)。在查詢的時(shí)候,可同時(shí)查詢鏈上的hash值和鏈下的hash值,如果兩個(gè)hash值相同說明數(shù)據(jù)正確,隨即解密數(shù)據(jù)。使用Go語言編寫鏈碼,并在鏈碼中定義對(duì)數(shù)據(jù)操作的函數(shù)。與之對(duì)應(yīng)的也要在調(diào)用SDK時(shí)采用相同的函數(shù)名。

        "前端展示采用SpringBoot和Jquery,Bootstrap等框架。系統(tǒng)功能方面主要有登錄、本地查詢、數(shù)據(jù)上鏈、鏈上查詢、數(shù)據(jù)解密這些功能。其中,本地查詢和登錄時(shí)在本地的數(shù)據(jù)庫(kù)上進(jìn)行操作,并不涉及區(qū)塊鏈網(wǎng)絡(luò)。而數(shù)據(jù)上鏈、數(shù)據(jù)解密、鏈上查詢這些操作則是運(yùn)行在區(qū)塊鏈網(wǎng)絡(luò)之上。

        系統(tǒng)分為鏈上和鏈下兩部分的好處:一是可以緩解區(qū)塊鏈上由于數(shù)據(jù)增大帶來的性能問題,二是可以做到鏈上鏈下數(shù)據(jù)結(jié)合,進(jìn)一步確保數(shù)據(jù)的安全性[4]。

        1.1 "鏈下流程

        "鏈下流程主要由登錄、增刪改查、上鏈三部分組成。用戶輸入賬號(hào)密碼,在本地的Mysql數(shù)據(jù)庫(kù)中確認(rèn)用戶密碼是否正確。如果正確就進(jìn)入操作界面,鏈下部分主要操作的是本地的Mysql數(shù)據(jù)庫(kù),用戶可以對(duì)數(shù)據(jù)進(jìn)行基本的增刪改查擦操作,但在修改和刪除數(shù)據(jù)的時(shí)候要判斷數(shù)據(jù)是否已經(jīng)上鏈。在查詢成功后,選擇查詢結(jié)果中的數(shù)據(jù),選擇完成后點(diǎn)擊數(shù)據(jù)上鏈按鈕,數(shù)據(jù)會(huì)經(jīng)過AES加密得到密文,經(jīng)過SM3算法求得哈希值。數(shù)據(jù)哈希值、數(shù)據(jù)密鑰、數(shù)據(jù)存儲(chǔ)路徑會(huì)被存儲(chǔ)到區(qū)塊鏈網(wǎng)絡(luò)上。同時(shí),在點(diǎn)擊數(shù)據(jù)上鏈按鈕的時(shí)候,數(shù)據(jù)的加密值、數(shù)據(jù)哈希值將會(huì)被存儲(chǔ)到本地的Redis數(shù)據(jù)庫(kù)中,構(gòu)成鏈上+鏈下的存儲(chǔ)模式。鏈下的流程如圖2所示。

        1.2 "鏈上流程

        結(jié)合區(qū)塊鏈的應(yīng)用,從鏈下部分選中需要共享的數(shù)據(jù)上鏈,數(shù)據(jù)將會(huì)被存儲(chǔ)到區(qū)塊鏈上。區(qū)塊鏈負(fù)責(zé)將上鏈的數(shù)據(jù)進(jìn)行存儲(chǔ)和查詢操作。本系統(tǒng)考慮到區(qū)塊鏈的技術(shù)特點(diǎn)以及實(shí)際應(yīng)用,并沒有在區(qū)塊鏈網(wǎng)絡(luò)上存儲(chǔ)真實(shí)的數(shù)據(jù),而是結(jié)合鏈上鏈下數(shù)據(jù)進(jìn)行加密解密。具體來說,在點(diǎn)擊數(shù)據(jù)上鏈操作后,系統(tǒng)通過AES算法將數(shù)據(jù)加密生成密文和密鑰,通過SM3算法計(jì)算數(shù)據(jù)的哈希值,會(huì)把密文、哈希值和密鑰存儲(chǔ)到區(qū)塊鏈網(wǎng)絡(luò)上。同時(shí),鏈碼中編寫的函數(shù)會(huì)返回這條數(shù)據(jù)的ID值??梢酝ㄟ^ID值查詢到需要解密的數(shù)據(jù),選中數(shù)據(jù)后點(diǎn)擊數(shù)據(jù)解密按鈕。系統(tǒng)會(huì)從區(qū)塊鏈和Redis數(shù)據(jù)庫(kù)匯總查詢數(shù)據(jù)的哈希值,如果數(shù)據(jù)的哈希值相同說明數(shù)據(jù)沒有被修改,然后使用從鏈上查詢的密鑰將數(shù)據(jù)解密。鏈上部分操作流程如圖3所示。

        鏈上部分包括編寫鏈碼,調(diào)用SDK。鏈碼是部署在區(qū)塊鏈網(wǎng)絡(luò)之上的代碼,通過在鏈碼中定義函數(shù)實(shí)現(xiàn)對(duì)鏈上數(shù)據(jù)的操作。但是,并不能直接通過鏈碼訪問網(wǎng)絡(luò),需要借助Fabric的SDK,使用SDK來調(diào)用鏈碼,執(zhí)行鏈碼中的函數(shù)。

        2 "數(shù)據(jù)格式

        本系統(tǒng)采用鏈上+鏈下的設(shè)計(jì)模式來存儲(chǔ)和傳遞數(shù)據(jù),鏈上與鏈下分別存儲(chǔ)數(shù)據(jù)經(jīng)過處理后的不同值。其中鏈上和鏈下存儲(chǔ)的數(shù)據(jù)格式如表1所示。

        2.1 "鏈上數(shù)據(jù)格式

        為了減輕區(qū)塊鏈的存儲(chǔ)壓力,選擇在鏈上存儲(chǔ)數(shù)據(jù)的哈希值,數(shù)據(jù)的代理重加密密鑰以及數(shù)據(jù)在本地的存儲(chǔ)路徑。

        2.2 "鏈下數(shù)據(jù)格式

        "鏈下存儲(chǔ)的是真實(shí)數(shù)據(jù)的加密值,結(jié)合鏈上的數(shù)據(jù)進(jìn)行加密和解密計(jì)算。鏈下存儲(chǔ)的數(shù)據(jù)是數(shù)據(jù)加密值和數(shù)據(jù)的哈希值。

        3 "系統(tǒng)實(shí)現(xiàn)

        3.1 "搭建區(qū)塊鏈網(wǎng)絡(luò)

        本系統(tǒng)采用Hyperledger Fabric搭建區(qū)塊鏈網(wǎng)絡(luò),Hyperledger Fabric是Linux Foundation提供的一種開源的許可區(qū)塊鏈框架,它基于Docker容器構(gòu)建區(qū)塊鏈網(wǎng)絡(luò)并支持插件組建模塊化構(gòu)造。憑借其特點(diǎn),可以使用Docker拉取Fabric鏡像部署在各臺(tái)服務(wù)器上并使區(qū)塊鏈網(wǎng)絡(luò)各組織之間可以正常通信。

        3.2 "編寫鏈碼以及調(diào)用SDK

        鏈碼是部署在區(qū)塊鏈網(wǎng)絡(luò)之上的一段代碼,通過鏈碼可以對(duì)存儲(chǔ)在區(qū)塊鏈上的數(shù)據(jù)進(jìn)行增刪改查操作。Go語言是編寫Hyperledger Fabric的官方語言,也是編寫鏈碼最簡(jiǎn)單的語言,使用Go語言編寫鏈碼對(duì)數(shù)據(jù)進(jìn)行增加和查詢操作。通過命令提交到網(wǎng)絡(luò)上以后能夠正常運(yùn)行。選擇Hyperledger Fabric為Java提供的SDK可以很好地與項(xiàng)目后端整合。整個(gè)系統(tǒng)的存儲(chǔ)流程即用戶通過界面點(diǎn)擊存儲(chǔ)或查詢操作,JavaSDK調(diào)用相應(yīng)的鏈碼中的函數(shù),鏈碼中的函數(shù)對(duì)存儲(chǔ)在區(qū)塊鏈上的數(shù)據(jù)進(jìn)行操作。

        3.3 "搭建前端界面

        "系統(tǒng)使用Bootstrap和Jquery搭建前端,使用SpringBoot搭建網(wǎng)站后端并與區(qū)塊鏈的JavaSDK進(jìn)行整合。使用Ajax技術(shù)進(jìn)行前后端的數(shù)據(jù)傳遞。本地的數(shù)據(jù)通過Mysql數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),Mysql是安全的,平臺(tái)無關(guān)的數(shù)據(jù)庫(kù)管理系統(tǒng)。需要上鏈的數(shù)據(jù)在鏈下采用Redis進(jìn)行存儲(chǔ),在鏈上使用Hyperledger Fabric存儲(chǔ)。網(wǎng)站搭建完成后,用戶的操作流程大致可以概括為登錄網(wǎng)站、增刪改查、選中數(shù)據(jù)、數(shù)據(jù)上鏈和鏈上解密。

        4 "系統(tǒng)關(guān)鍵技術(shù)

        4.1 "鏈上+鏈下存儲(chǔ)

        "將數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈上雖然能保證存儲(chǔ)的數(shù)據(jù)不被修改,但是無法保證存儲(chǔ)的數(shù)據(jù)是否正確。而且在區(qū)塊鏈上存儲(chǔ)過多的數(shù)據(jù)也會(huì)導(dǎo)致區(qū)塊鏈的性能下降,針對(duì)這種問題采取鏈上+鏈下的設(shè)計(jì)模式[5]。鏈上與鏈下分別存儲(chǔ)路徑的不同計(jì)算值,這樣即避免了數(shù)據(jù)明文直接暴露,也可以結(jié)合鏈上鏈下數(shù)據(jù)兩者進(jìn)一步確認(rèn)數(shù)據(jù)的正確性。數(shù)據(jù)經(jīng)過哈希運(yùn)算后得到的是固定長(zhǎng)度的一串字符串,所以在鏈上存儲(chǔ)數(shù)據(jù)的哈希值可以減輕區(qū)塊鏈的存儲(chǔ)查詢壓力,同時(shí)存儲(chǔ)在區(qū)塊鏈上的數(shù)據(jù)還包括本地的存儲(chǔ)路徑以及密鑰。在本地存儲(chǔ)數(shù)據(jù)的加密值以及數(shù)據(jù)的哈希值。在數(shù)據(jù)上鏈的時(shí)候,將數(shù)據(jù)進(jìn)行加密和哈希運(yùn)算,數(shù)據(jù)的加密值存儲(chǔ)在本地,數(shù)據(jù)的哈希值同時(shí)存儲(chǔ)在本地和區(qū)塊鏈網(wǎng)絡(luò)上。在解密的時(shí)候,同時(shí)對(duì)比鏈上和鏈下的數(shù)據(jù)哈希值是否一致。如果一致,則說明數(shù)據(jù)沒有被修改,然后查詢?cè)趨^(qū)塊鏈網(wǎng)絡(luò)上的密鑰以及本地?cái)?shù)據(jù)存儲(chǔ)路徑,將數(shù)據(jù)解密。

        4.2 "代理重加密

        將數(shù)據(jù)直接傳送到區(qū)塊鏈網(wǎng)絡(luò)上是不安全的,一般的思路是將數(shù)據(jù)經(jīng)過加密后上傳。但是,在園區(qū)網(wǎng)絡(luò)中,當(dāng)需要解密其他公司數(shù)據(jù)的時(shí)候需要頻繁的傳遞密鑰。這樣頻繁的傳遞密鑰容易造成密鑰的泄漏,但是直接傳遞數(shù)據(jù)的話又違背了加密的初衷。針對(duì)這種問題采取代理重加密技術(shù),本系統(tǒng)采用基于RSA算法的代理重加密技術(shù)[6]。代理重加密可以將密文轉(zhuǎn)化成用另一串密鑰也能解密的狀態(tài),即不用交換私鑰,也保證了數(shù)據(jù)可以正常解密。代理重加密實(shí)際上是一種密鑰轉(zhuǎn)化算法,公司A允許將它的數(shù)據(jù)解密權(quán)限委托給另一個(gè)公司B。公司A將它加密的密文轉(zhuǎn)化成為一個(gè)相當(dāng)于被公司B加密的密文,這樣公司B就可以用自己的密鑰解密。

        本系統(tǒng)采用了基于AES+RSA的代理重加密技術(shù),其中AES負(fù)責(zé)將明文加密為密文,RSA則負(fù)責(zé)將數(shù)據(jù)進(jìn)行重加密。在這期間服務(wù)器充當(dāng)代理功能且過程中沒有密鑰的傳遞。代理重加密的示意如圖4所示。

        4.3 "使用Commons.pool

        在鏈接Hyperledger Fabric網(wǎng)絡(luò)的時(shí)候,需要構(gòu)造鏈接對(duì)象。但是頻繁地構(gòu)造對(duì)象既不利于Fabric網(wǎng)絡(luò)的性能,也會(huì)增加功耗減慢運(yùn)行速度??紤]到Hyperledger Fabric自身性能問題,導(dǎo)致該問題更為嚴(yán)重。本系統(tǒng)使用Apache的Commons.pool為Hyperledger Fabric構(gòu)造數(shù)據(jù)庫(kù)連接池和使用單例設(shè)計(jì)模式設(shè)計(jì)ContractManager來解決頻繁生成對(duì)象的問題。使用Commons.pool可以使用戶免于生成鏈接對(duì)象,而是由PoolFactory生成一個(gè)數(shù)據(jù)鏈接池,進(jìn)而從鏈接池中生成鏈接對(duì)象,其過程如圖5所示。

        5 "結(jié) "論

        本文設(shè)計(jì)的系統(tǒng)解決了在沒有中心服務(wù)器的情況下公司之間安全可信的傳遞數(shù)據(jù)的問題。系統(tǒng)分為鏈上和鏈下兩部分。鏈下部分是對(duì)本地?cái)?shù)據(jù)庫(kù)的增刪改查以及加密上鏈操作,通過增刪改查操作獲取需要的數(shù)據(jù),點(diǎn)擊數(shù)據(jù)上鏈即可加密數(shù)據(jù)并將數(shù)據(jù)的哈希值存儲(chǔ)到區(qū)塊鏈,將數(shù)據(jù)的加密值和數(shù)據(jù)存儲(chǔ)路徑以及代理重加密密鑰存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)。在完成基礎(chǔ)功能的同時(shí)實(shí)現(xiàn)了代理重加密,鏈上+鏈下存儲(chǔ)等,優(yōu)化了系統(tǒng)的操作和使用,為類似的系統(tǒng)提供了一定的參考價(jià)值。

        參考文獻(xiàn):

        [1] "ANDROULAKI E, BARGER A, BORTNIKOV V, et al. Hyperledger fabric: A distributed operating system for permissioned blockchains[C] // Proceedings of the Thirteenth EuroSys Conference, 2018.

        [2] 王帆. 基于區(qū)塊鏈的工業(yè)大數(shù)據(jù)共享研究[D]. 成都:四川大學(xué),2021.

        [3] "JIAMENG LIU, SHAOLIANG PENG, CHENGNIAN LONG, et al. Blockchain for data science[C] // International Conference on Blockchain Technology, 2020.

        [4] 賈朋飛. 基于區(qū)塊鏈的筆錄系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京:中國(guó)人民公安大學(xué),2021.

        [5] 張召,田繼鑫,金澈清. 鏈上存證、鏈下傳輸?shù)目尚艛?shù)據(jù)共享平臺(tái)[J]. 大數(shù)據(jù),2020,6(5):106-117.

        [6] 劉尚,郭銀章. 云計(jì)算多授權(quán)中心CP-ABE代理重加密方案[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào),2022,8(3):176-188.

        日韩一级精品亚洲一区二区精品| 五月综合激情婷婷六月色窝| 亚洲日韩一区二区一无码| 中文字幕av无码一区二区三区 | 亚洲成av人片一区二区密柚| 亚洲人成网线在线播放va蜜芽| 人妻久久久一区二区三区| 亚洲av无码专区国产乱码不卡| 欧美日韩精品乱国产538| 中文人妻无码一区二区三区| 日本最新一区二区三区免费看| 91久久国产露脸国语对白| 日本人妻精品有码字幕| 亚洲开心婷婷中文字幕| 内地老熟女老少配视频| 色猫咪免费人成网站在线观看| 大陆一级毛片免费播放| 无码人妻少妇久久中文字幕| 麻豆av毛片在线观看| 在线视频色系中文字幕| av有码在线一区二区| 清纯唯美亚洲经典中文字幕| 二区三区日本高清视频| 日韩女优av一区二区| 国产激情无码一区二区三区| 老师脱了内裤让我进去| 欧美视频在线观看一区二区| 亚洲一区精品中文字幕| 免费人成网站在线观看| 中国老熟女露脸老女人| a级毛片免费观看在线播放| 色屁屁www影院免费观看入口| 亚洲成人免费网址| 日韩人妻有码中文字幕| 91九色国产老熟女视频| 99无码精品二区在线视频| 国产精品无码成人午夜电影| 亚洲成a人片在线观看久| 一区在线播放| 亚洲中文字幕九色日本| 亚洲av无码一区二区三区网址|