伍德倫 饒元
摘要: 現(xiàn)有的果蔬溯源系統(tǒng)中,物聯(lián)網(wǎng)數(shù)據(jù)采集設(shè)備身份驗證機制不完善,果蔬數(shù)據(jù)傳輸效率不高,且無法保證數(shù)據(jù)在存儲于區(qū)塊鏈前未被篡改。構(gòu)建了基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型,對模型進(jìn)行分析后,首先提出果蔬供應(yīng)鏈數(shù)據(jù)流動模型,通過物聯(lián)網(wǎng)設(shè)備將采集的數(shù)據(jù)存儲于星際文件系統(tǒng)(Interplanetary file system,IPFS),環(huán)節(jié)數(shù)據(jù)存儲完成后,系統(tǒng)將IPFS返回的哈希值存入?yún)^(qū)塊鏈網(wǎng)絡(luò),提高了數(shù)據(jù)的安全性;其次設(shè)計了果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程,提高了果蔬數(shù)據(jù)傳輸效率;最后利用Blake2改進(jìn)型Ed25519算法實現(xiàn)了物聯(lián)網(wǎng)設(shè)備的身份驗證機制,提高了系統(tǒng)的安全性。在此基礎(chǔ)上設(shè)計了基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源系統(tǒng),并在某果蔬企業(yè)進(jìn)行了實際應(yīng)用,進(jìn)行相關(guān)測試后發(fā)現(xiàn),本系統(tǒng)的全供應(yīng)鏈數(shù)據(jù)存儲平均耗時4.738 s,數(shù)據(jù)查詢平均耗時0.452 s。測試結(jié)果表明,此系統(tǒng)可在保障數(shù)據(jù)安全的前提下,提高用戶的溯源速度,可為果蔬溯源系統(tǒng)的設(shè)計與研發(fā)提供參考。
關(guān)鍵詞: 區(qū)塊鏈;果蔬;溯源;存儲優(yōu)化;身份驗證
中圖分類號: TP309.2;TS207.7 文獻(xiàn)標(biāo)識碼: A 文章編號: 1000-4440(2023)02-0434-10
Design of storage and traceability model of fruits and vegetables blockchain information based on authentication
WU De-lun1,2, RAO Yuan1,2
(1.School of Information and Computer, Anhui Agricultural University, Hefei 230036,China;2.Anhui Key Laboratory of Smart Agricultural Technology and Equipment, Hefei 230036,China)
Abstract: In the existing traceability system for fruits and vegetables, the authentication mechanism of data collection equipment of the internet of things (IoT) is not perfect, the transmission efficiency of fruits and vegetables data is not high, and there is no guarantee that the data are not tampered before being stored in the blockchain. A storage and traceability model of blockchain information of fruits and vegetables based on authentication was constructed. Firstly, a data flow model of fruits and vegetables supply chain was proposed after the model was analyzed. The collected data were stored in interplanetary file system (IPFS) through the IoT devices in each link. After the link data were stored, the system stored the Hash value returned from IPFS into the blockchain network, which improved the security of the data. Secondly, the data transmission process of fruits and vegetables supply chain was designed, and the efficiency of data transmission was improved. Finally, the authentication mechanism of IoT devices was implemented by using Blake2 improved Ed25519 algorithm, which improved the security of the system. On the above basis, a blockchain information storage and traceability system for fruits and vegetables based on authentication was designed and applied in a fruits and vegetables enterprise. After relevant tests, it was found that the system took an average of 4.738 s for the whole supply chain data storage and 0.452 s for the data query. The test results revealed that, the system designed in the study can improve the traceability speed of users on the premise of ensuring data security, and can provide reference for the design and development of fruits and vegetables traceability system.
Key words: blockchain;fruits and vegetables;traceability;storage optimization;authentication
果蔬含有維生素等多種人體所需成分,具有較高的營養(yǎng)價值,消費者對果蔬的質(zhì)量、安全等需求也在不斷提升[1]。但近幾年果蔬質(zhì)量安全問題頻發(fā),化學(xué)藥品濫用、微生物污染等嚴(yán)重影響消費者對果蔬質(zhì)量的信任[2],迫切需要建立果蔬追溯體系,使消費者能夠快速追溯果蔬的來源,搭建消費者與果蔬之間的信任橋梁[3]?,F(xiàn)有的溯源系統(tǒng)大多采用本地數(shù)據(jù)庫存儲溯源信息,無法保證信息的安全性和可靠性。區(qū)塊鏈的去中心化存儲、數(shù)據(jù)不可篡改等特性可以很好地適用于溯源系統(tǒng)設(shè)計。近些年,學(xué)者們從不同角度探索區(qū)塊鏈技術(shù)在溯源系統(tǒng)中的應(yīng)用。楊信廷等[4]、弋偉國等[5]采用“數(shù)據(jù)庫+區(qū)塊鏈”的鏈上鏈下雙模存儲機制保證了數(shù)據(jù)的真實性,提高了用戶的溯源速度。張新等[6]、于華竟等[7]利用智能合約實現(xiàn)了數(shù)據(jù)的鏈前監(jiān)管與節(jié)點的鏈上管控。許繼平等[8]、于合龍等[9]采用數(shù)據(jù)加密算法保證了鏈上數(shù)據(jù)的安全性。然而,目前果蔬區(qū)塊鏈可信溯源系統(tǒng)還存在諸多不足[10-11]。在果蔬產(chǎn)品生產(chǎn)過程中,監(jiān)控設(shè)備、移動端設(shè)備、溫濕度傳感器等設(shè)備采集到果蔬關(guān)鍵數(shù)據(jù)的時間點不同,考慮到數(shù)據(jù)區(qū)塊鏈存儲成本等因素,現(xiàn)有的追溯模型往往采用全部設(shè)備采集數(shù)據(jù)整體存儲于區(qū)塊鏈的方式,如何保證數(shù)據(jù)全部上鏈前已采集數(shù)據(jù)真實性的問題需要解決;同時,果蔬供應(yīng)鏈數(shù)據(jù)具有多源、異構(gòu)、海量的特點,負(fù)責(zé)數(shù)據(jù)采集的物聯(lián)網(wǎng)設(shè)備較多,如何提高系統(tǒng)安全性也需要進(jìn)一步探討。
針對以上果蔬供應(yīng)鏈溯源系統(tǒng)面臨的問題,本研究提出果蔬供應(yīng)鏈數(shù)據(jù)流動模型,采用星際文件系統(tǒng)(Interplanetary file system,IPFS)存儲各物聯(lián)網(wǎng)設(shè)備提供的關(guān)鍵數(shù)據(jù),區(qū)塊鏈網(wǎng)絡(luò)存儲IPFS根據(jù)關(guān)鍵數(shù)據(jù)生成哈希值的設(shè)計,保證了數(shù)據(jù)的真實性。本研究通過設(shè)計果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程,以期提高數(shù)據(jù)處理與傳輸效率,利用Blake2改進(jìn)型Ed25519算法以期實現(xiàn)物聯(lián)網(wǎng)設(shè)備的身份驗證。
1 材料與方法
1.1 技術(shù)介紹
1.1.1 區(qū)塊鏈 區(qū)塊鏈作為一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),由不斷增長的區(qū)塊利用哈希指針前后鏈接而成,區(qū)塊鏈中的數(shù)據(jù)只能追加,不可刪除或篡改[12]。區(qū)塊鏈通過分布式節(jié)點驗證和共識機制,解決了拜占庭將軍問題[13],無需信任單個節(jié)點就可以構(gòu)建去中心化可信任系統(tǒng)[14]。本研究以區(qū)塊鏈為基礎(chǔ),構(gòu)建基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型,并基于Hyperledger Fabric設(shè)計了基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源系統(tǒng)。
1.1.2 IPFS星際文件系統(tǒng) IPFS為上傳到系統(tǒng)的每個文件提供唯一的哈希地址,使其能夠被內(nèi)容尋址。在區(qū)塊鏈架構(gòu)中部署IPFS系統(tǒng)進(jìn)行存儲,可以消除對全節(jié)點的依賴,同時保留網(wǎng)絡(luò)中的可追溯性[15]。任何類型的文件都可以上傳到IPFS存儲,使系統(tǒng)可部署用途廣泛的應(yīng)用程序[16]?;趨^(qū)塊鏈的追溯模型效率往往受到區(qū)塊鏈存儲容量難以擴(kuò)展的限制,此問題可通過區(qū)塊鏈集成IPFS并采用IPFS鏈下輔助存儲的方式進(jìn)行解決[17]。IPFS采用默克爾有向無環(huán)圖(Merkle directed acyclic graph, Merkle DAG)進(jìn)行數(shù)據(jù)存儲。它是一種使用散列在DAG中定位數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。使用這種結(jié)構(gòu),系統(tǒng)中的所有內(nèi)容都變得防篡改,將使用根據(jù)存入數(shù)據(jù)生成的哈希值進(jìn)行唯一標(biāo)記。
1.1.3 Blake2算法與Ed25519算法 Blake2算法可以產(chǎn)生任意長度的消息摘要[18],它的處理速度要優(yōu)于MD5、SHA-1、SHA-2和SHA-3等算法,并且更加安全[19]。Ed25519是基于Edwards曲線的數(shù)字簽名算法(Edward curve digital signature algorithm,EdDSA),結(jié)合SHA-512/256哈希算法,采用扭曲愛德華曲線,如公式(1)所示,它比現(xiàn)有的數(shù)字簽名方案快,且不損失安全性。EdDSA算法包括公鑰生成、簽名、驗簽3個功能[20],此算法需要隨機數(shù)發(fā)生器產(chǎn)生私鑰,但隨機數(shù)的產(chǎn)生可能存在安全隱患。針對這個問題,筆者采用Blake2改進(jìn)型Ed25519算法,具體實現(xiàn)過程見1.2.4節(jié)。
1.2 基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型設(shè)計
1.2.1 總體框架設(shè)計 如圖1所示,本研究采用區(qū)塊鏈技術(shù)、IPFS技術(shù),結(jié)合密碼學(xué)原理,設(shè)計了基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型,其原理是通過物聯(lián)網(wǎng)設(shè)備實時采集生產(chǎn)、儲存、運輸、銷售等環(huán)節(jié)數(shù)據(jù),將數(shù)據(jù)通過區(qū)塊鏈、IPFS等技術(shù)進(jìn)行數(shù)據(jù)整合與展示。
具體而言,供應(yīng)鏈上生產(chǎn)企業(yè)、儲存企業(yè)、運輸企業(yè)、銷售企業(yè)決定組建區(qū)塊鏈網(wǎng)絡(luò)后,在企業(yè)服務(wù)器上設(shè)置IPFS網(wǎng)絡(luò)節(jié)點,與其他企業(yè)IPFS節(jié)點組建IPFS集群,以實現(xiàn)物聯(lián)網(wǎng)采集數(shù)據(jù)及時存儲并與企業(yè)間數(shù)據(jù)共享;在服務(wù)器上設(shè)置區(qū)塊鏈網(wǎng)絡(luò)節(jié)點與其他企業(yè)的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點組成區(qū)塊鏈網(wǎng)絡(luò),利用節(jié)點向消費者提供數(shù)據(jù)查詢接口,滿足消費者溯源需求。在果蔬產(chǎn)品生產(chǎn)過程中,企業(yè)通過在其生產(chǎn)基地或倉庫等設(shè)置的溫濕度采集器、監(jiān)控等物聯(lián)網(wǎng)設(shè)備采集關(guān)鍵溯源數(shù)據(jù),數(shù)據(jù)采集完成后,將數(shù)據(jù)轉(zhuǎn)發(fā)給網(wǎng)關(guān)設(shè)備,網(wǎng)關(guān)利用Blake2改進(jìn)型Ed25519算法對物聯(lián)網(wǎng)設(shè)備進(jìn)行身份驗證,驗證通過后,網(wǎng)關(guān)對數(shù)據(jù)進(jìn)行組織與處理,向IPFS服務(wù)器發(fā)起數(shù)據(jù)存儲請求。同樣的,IPFS服務(wù)器利用算法對該網(wǎng)關(guān)進(jìn)行身份驗證,驗證通過后,網(wǎng)關(guān)調(diào)用系統(tǒng)提供的IPFS數(shù)據(jù)存儲接口將數(shù)據(jù)存儲于IPFS中。在該企業(yè)溯源數(shù)據(jù)采集完成后,企業(yè)收集網(wǎng)關(guān)存入的IPFS數(shù)據(jù)后,IPFS根據(jù)存入數(shù)據(jù)返回的哈希值,將哈希值整合后存入?yún)^(qū)塊鏈網(wǎng)絡(luò),保證數(shù)據(jù)的真實性。
基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型通過物聯(lián)網(wǎng)設(shè)備采集數(shù)據(jù),將采集數(shù)據(jù)存入IPFS系統(tǒng)后,IPFS根據(jù)數(shù)據(jù)生成的哈希值存入?yún)^(qū)塊鏈,提高了區(qū)塊鏈的存儲空間利用率與溯源數(shù)據(jù)真實性;各企業(yè)既可直接在IPFS集群中進(jìn)行企業(yè)間數(shù)據(jù)共享,又可利用區(qū)塊鏈網(wǎng)絡(luò)進(jìn)行供應(yīng)鏈數(shù)據(jù)查詢,提高了企業(yè)間數(shù)據(jù)共享效率。利用Blake2改進(jìn)型Ed25519加密算法實現(xiàn)了物聯(lián)網(wǎng)設(shè)備的身份驗證,提高了系統(tǒng)的安全性。
1.2.2 果蔬供應(yīng)鏈數(shù)據(jù)流動模型設(shè)計 在基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型基礎(chǔ)上,設(shè)計了果蔬供應(yīng)鏈數(shù)據(jù)流動模型(圖2),將前者的數(shù)據(jù)儲存、數(shù)據(jù)查詢等操作進(jìn)行了進(jìn)一步的實踐。當(dāng)系統(tǒng)初始化時,系統(tǒng)利用Blake2改進(jìn)型Ed25519算法為具有數(shù)據(jù)上傳權(quán)限的物聯(lián)網(wǎng)設(shè)備生成并發(fā)放公鑰,同時將公鑰進(jìn)行MD5加密后保存于區(qū)塊鏈。當(dāng)供應(yīng)鏈上游和下游企業(yè)物聯(lián)網(wǎng)設(shè)備采集到數(shù)據(jù)時,利用其公鑰進(jìn)行身份驗證,驗證成功后,由網(wǎng)關(guān)將物聯(lián)網(wǎng)設(shè)備采集的數(shù)據(jù)存入IPFS,在該企業(yè)數(shù)據(jù)存儲完成后,系統(tǒng)收集各網(wǎng)關(guān)上傳的溯源數(shù)據(jù)的IPFS哈希值,利用其區(qū)塊鏈網(wǎng)絡(luò)節(jié)點調(diào)用環(huán)節(jié)哈希上鏈合約進(jìn)行哈希存儲。其中環(huán)節(jié)哈希上鏈合約內(nèi)部保存了各環(huán)節(jié)IPFS哈希格式,例如哈希值數(shù)量、環(huán)節(jié)身份識別號(ID)等。當(dāng)節(jié)點上傳數(shù)據(jù)的格式錯誤時將無法完成哈希值上鏈。在果蔬供應(yīng)鏈數(shù)據(jù)存儲完成后,區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點達(dá)成共識完成賬本同步。并利用溯源合約提供消費者溯源哈希查詢接口。消費者利用移動設(shè)備掃碼調(diào)用接口后,獲得供應(yīng)鏈數(shù)據(jù)的哈希集合,利用哈希集合在IPFS中獲取溯源數(shù)據(jù)。
在果蔬供應(yīng)鏈數(shù)據(jù)流動模型中,利用環(huán)節(jié)哈希上鏈合約檢查各環(huán)節(jié)存儲的IPFS哈希特征,實現(xiàn)了系統(tǒng)數(shù)據(jù)哈希存儲的智能化。通過溯源合約及區(qū)塊鏈節(jié)點為消費者提供了溯源信息查詢接口,滿足了用戶溯源的需求。采用公鑰加密后鏈上存儲的設(shè)計,保證了密鑰的安全性,避免了密鑰的二次生成、發(fā)放帶來的系統(tǒng)負(fù)擔(dān),提升了系統(tǒng)運行效率。
1.2.3 果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程設(shè)計 采集果蔬生產(chǎn)環(huán)節(jié)數(shù)據(jù)的物聯(lián)網(wǎng)設(shè)備往往被安裝于野外環(huán)境,網(wǎng)絡(luò)狀況差,自身數(shù)據(jù)處理能力差,無法調(diào)用IPFS數(shù)據(jù)存儲接口進(jìn)行數(shù)據(jù)的直接存儲,本研究設(shè)計了由設(shè)備身份驗證、數(shù)據(jù)接收與處理、IPFS數(shù)據(jù)存儲模塊組成的果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程,三者配合以達(dá)到采集數(shù)據(jù)存儲于IPFS的目的。其中設(shè)備身份驗證模塊由網(wǎng)關(guān)利用Blake2改進(jìn)型Ed25519算法對物聯(lián)網(wǎng)設(shè)備進(jìn)行身份驗證。數(shù)據(jù)接收與處理模塊用于接收物聯(lián)網(wǎng)節(jié)點上傳的數(shù)據(jù)并對其進(jìn)行處理,IPFS數(shù)據(jù)存儲模塊用于IPFS服務(wù)器對網(wǎng)關(guān)進(jìn)行身份驗證,以實現(xiàn)物聯(lián)網(wǎng)采集數(shù)據(jù)存儲于IPFS。
具體流程如圖3所示,具體步驟如下:
(1)當(dāng)物聯(lián)網(wǎng)設(shè)備采集到溯源數(shù)據(jù)時,首先利用改進(jìn)型Ed25519算法結(jié)合自身公鑰對數(shù)據(jù)進(jìn)行簽名,將已簽名的數(shù)據(jù)傳輸給網(wǎng)關(guān),網(wǎng)關(guān)利用算法驗證簽名合法性,若簽名不合法,說明物聯(lián)網(wǎng)設(shè)備身份錯誤,網(wǎng)關(guān)拒絕接受該設(shè)備上傳的數(shù)據(jù),并向上級發(fā)送提示錯誤的信息。
(2)由于物聯(lián)網(wǎng)設(shè)備采集的數(shù)據(jù)格式包括文本文件(字符串、數(shù)字等)、二進(jìn)制文件(圖片、視頻等),對于文本文件而言,網(wǎng)關(guān)內(nèi)部保存了該環(huán)節(jié)文本文件各個數(shù)據(jù)項的名稱。當(dāng)網(wǎng)關(guān)獲取到物聯(lián)網(wǎng)設(shè)備上傳的文本數(shù)據(jù)時,根據(jù)物聯(lián)網(wǎng)設(shè)備的身份,選擇文本文件各數(shù)據(jù)項名稱與設(shè)備上傳的數(shù)據(jù)對應(yīng)組合;對于二進(jìn)制文件而言,則不作處理。同時,網(wǎng)關(guān)會檢查采集數(shù)據(jù)的合法性,如數(shù)據(jù)值不在正常數(shù)據(jù)范圍之內(nèi),則說明數(shù)據(jù)錯誤或產(chǎn)品不達(dá)標(biāo),拒絕數(shù)據(jù)存儲并報告錯誤。
(3)網(wǎng)關(guān)利用改進(jìn)型Ed25519算法進(jìn)行身份驗證后,對數(shù)據(jù)進(jìn)行簽名,經(jīng)過IPFS服務(wù)器驗證成功后,調(diào)用IPFS數(shù)據(jù)存儲接口將獲得的數(shù)據(jù)上傳至IPFS。
1.2.4 Blake2改進(jìn)型Ed25519算法設(shè)備的身份驗證 現(xiàn)有的區(qū)塊鏈溯源系統(tǒng)中往往不需要進(jìn)行物聯(lián)網(wǎng)設(shè)備身份驗證,降低了系統(tǒng)的安全性。采用Blake2改進(jìn)型Ed25519加密算法實現(xiàn)了設(shè)備的身份驗證操作,可提高系統(tǒng)安全性。在物聯(lián)網(wǎng)設(shè)備將數(shù)據(jù)傳輸給網(wǎng)關(guān)、網(wǎng)關(guān)將數(shù)據(jù)傳輸給IPFS服務(wù)器時,都需要經(jīng)過算法的身份驗證。系統(tǒng)初始化時,首先利用Blake2算法(Blake2算法涉及的常量、變量及表達(dá)式含義見表1)生成私鑰,隨后根據(jù)私鑰生成公鑰[21]。
Blake2算法中調(diào)用了混合函數(shù)(G)與壓縮函數(shù)(F),下面對這2個函數(shù)進(jìn)行介紹?;旌虾瘮?shù)(G)的作用是對輸入的x,y 2個隨機字符串使用旋轉(zhuǎn)常數(shù)R1、R2、R3、R4在向量v上返回4個字符串a(chǎn)、b、c、d,結(jié)果表示為v[0-15]。G函數(shù)流程如函數(shù)1所示:
函數(shù)1 Blake2中混合函數(shù)的操作流程:
輸入:a,b,c,d,x,y;
輸出:修改向量v[0-15];
v[a](v[a]+v[b]+x)mod 2w
v[d]=(v[d]∧v[a])>>>R1
v[c]=(v[c]+v[d]) mod 2w
v[b]=(v[b]∧v[c])>>>R2
v[a]=(v[a]+v[b]+y) mod 2w
v[d]=(v[d]∧v[a])>>>R3
v[c]=(v[c]+v[d]) mod 2w
v[b]=(v[b]∧v[c])>>>R4
返回v[0-15]。
壓縮函數(shù)(F)是將狀態(tài)向量(h)、消息塊向量(m)、2w位偏移計數(shù)器(t)和標(biāo)志(f)(判斷當(dāng)前是否處于最終塊,若為最終塊則為true)、局部向量(v)[0-15]用于混合與壓縮操作,可返回1個新的狀態(tài)向量h[0-7],回合編號從0到r-1。其中IV[0-7]為初始化向量,如公式(2)所示,根據(jù)表1中相關(guān)系數(shù)進(jìn)行運算后的結(jié)果如公式(3)所示。壓縮函數(shù)(F)操作流程如下,其中函數(shù)涉及的SIGMAS訊息時間如表2所示:
IV[i]=floor{2w*frac{sqrt[prime(i+1)]}}(2)
IV[0-7]={0x6A09E667F3BCC908,0xBB67AE8584CAA73B,0x3C6EF372FE94F82B,0xA54FF53A5F1D36F1,0x510E527FADE682D1,0x9B05688C2B3E6C1F,0x1F83D9ABFB41BD6B,0x5BE0CD19137E2179}(3)
函數(shù)2 Blake2中壓縮函數(shù)的操作流程:
輸入:h[0-7],m[0-15],t,f;
輸出:h[0-7];
v[0-7]=h[0-7]//狀態(tài)的前半部分
v[8-15]=IV[0-7]//IV的后半部分
//初始化局部工作向量v[0-15]
v[12]=v[12]∧(t mod 2w)//偏移量的低位字
v[13]=v[13]∧(tw)//高位字
If(f=true)//最后一個塊標(biāo)志
v[14]=v[14]∧0xFFFFFFFF//反轉(zhuǎn)所有位.
//密碼混合
for(i=0;i≤r-1;i++)
//本輪的消息詞選擇排列。
s[0-15]=SIGMA[i mod 10][0-15]
v=G(0,4,8,12,m{s[0]},m{s[1]})
v=G(1,5,9,13,m{s[2]},m{s[3]})
v=G(2,6,10,14,m{s[4]},m{s[5]})
v=G(3,7,11,15,m{s[6]},m{s[7]})
v=G(0,5,10,15,m{s[8]},m{s[9]})
v=G(1,6,11,12,m{s[10]},m{s[11]})
v=G(2,7,8,13,m{s[12]},m{s[13]})
v=G(3,4,9,14,m{s[14]},m{s[15]})
for(i=0;i≤7;i++)//兩半異或
h[i]=h[i]∧v[i]∧v[i+8]
返回h[0-7]//新狀態(tài)。
下面介紹Blake2算法。摘要密鑰和數(shù)據(jù)輸入被拆分并填充到dd消息塊d[0-dd-1]中,每個dd消息塊由bb 字節(jié)組成。用“0”進(jìn)行填充,并設(shè)置為d[0],數(shù)據(jù)塊d[dd-1]也用“0”填充到bb字節(jié)。塊數(shù)dd=ceil(kk/bb)+ceil(ll/bb)。隨后將填充的數(shù)據(jù)塊處理為nn字節(jié)的最終散列值,具體步驟如算法1所示。指定參數(shù)塊字p[0-7]如下:
p[0]=0x0101kknn;
p[1-7]=0。
Blake2算法流程如下:
算法1:Blake2函數(shù)流程。
輸入:dd[0-dd-1],ll,kk,nn;
輸出:數(shù)組h[]的第一個nn字節(jié);
h[0-7]=IV[0-7]//初始化向量
h[0]=h[0]∧0x01010000∧(kk8)∧nn
//處理填充鍵和數(shù)據(jù)塊
if(dd>1)
For(i=0;i≤dd-2,i++)
h=F(h,d[i],(i+1)*bb,false)
//最后一個塊
if(kk=0)
h=F(h,d[dd-1],ll,true)
Else
h=F(h,d[dd-1],ll+bb,true)
返回數(shù)組h[]的第一個nn字節(jié)。
在利用Blake2生成私鑰后,利用Ed25519算法生成公鑰,發(fā)放給物聯(lián)網(wǎng)設(shè)備。公鑰生成的具體流程[22]如下:
(1)選擇256 bit的blake2算法生成的私鑰,記為sk=(sk255,sk254,…,sk1,sk0)2;
(2)對sk做SHA-512運算,即H(sk)=(h511,h510,…,h1,h0)2;
(3)取H(sk)的末尾256 bit大小數(shù)據(jù),并進(jìn)行修剪,整理為s=(0,1,h253,h252,…,h3,0,0,0);
(4)將s解釋為小端整數(shù),形成秘密標(biāo)量,執(zhí)行標(biāo)量乘法sB,sB=(x,y)=A,其中,x=(x254,x253,…,x1,x0)2,y=(y254,y253,…,y1,y0)2;
(5)壓縮sB結(jié)果,壓縮過程為pk=Ay+(Ax & 1),得公鑰pk=(x0,y254,y253,…,y1,y0)2。
當(dāng)物聯(lián)網(wǎng)設(shè)備、網(wǎng)關(guān)得到公鑰后,需要進(jìn)行溯源數(shù)據(jù)片M傳輸時,首先對溯源數(shù)據(jù)M進(jìn)行簽名,簽名算法如下。G為曲線Edwards25519的基點,R′和A為曲線上的動點,L為253位的素數(shù)(2252+27 742 317 777 372 353 535 851 937 790 883 648 493),R和pk分別為點R′和點A的256位壓縮結(jié)果,壓縮過程為R=R′y+(R′x&1)。其中H(x)表示為x進(jìn)行SHA-512算法運算后的運算結(jié)果。
算法2:Ed25519數(shù)字簽名算法的簽名流程。
輸入:256位的公鑰pk,任意長度的消息M,256位的私鑰sk;
輸出:512位的簽名結(jié)果R,S。
1)對sk做SHA-512運算,H(sk)=(h511,h510,…,h1,h0)2;
2)取H(sk)的高256位,h=(h511,h510,…,h257,h256)2;
3)a=2254+∑253i=32ihi;
4)r=H(h,M) mod L;
5)R′=rG=(R′x,R′y),壓縮點R′得到R=R′y+(R′x & 1);
6)k=H(R,pk,M) mod L;
7)S=(r+ka) mod L;
8)返回簽名(R,S)。
當(dāng)網(wǎng)關(guān)、IPFS服務(wù)器獲得溯源數(shù)據(jù)片M及上傳數(shù)據(jù)的簽名結(jié)果(R,S)后,將利用之前發(fā)放給各物聯(lián)網(wǎng)設(shè)備、網(wǎng)關(guān)的公鑰pk進(jìn)行驗簽操作,具體算法如下所示。驗簽過程的解壓操作是密鑰生成和簽名操作中壓縮操作的逆運算。
算法3:Ed25519數(shù)字簽名算法的驗簽流程。
輸入:256位的公鑰pk,任意長度的消息M,512位的簽名結(jié)果(R,S);
輸出:驗簽的結(jié)果;
1)若(R,S)[1,L-1],則驗證失敗,結(jié)束驗證流程;
2)解壓得到點R′;
3)解壓pk得到點A;
4)k=H(R,pk,M) mod L;
5)驗證SG=R′+kA,若等號成立,則驗證成功。
在Ed25519中的點加與倍點運算需要在拓展四元齊次坐標(biāo)下完成,具體操作見文獻(xiàn)[22]。驗簽過程中,通過對比SG和R′+kA的運算結(jié)果來判斷簽名的真實性。當(dāng)簽名驗證成功時,表示該設(shè)備身份可信。當(dāng)該設(shè)備需要進(jìn)行二次身份驗證時,從區(qū)塊鏈中獲取公鑰MD5哈希值,并與本地公鑰MD5哈希值進(jìn)行比對,比對成功后表明公鑰未被篡改,可使用公鑰對數(shù)據(jù)進(jìn)行簽名完成身份驗證。
2 結(jié)果與分析
2.1 系統(tǒng)架構(gòu)與實現(xiàn)
基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源系統(tǒng)的目的是實時監(jiān)控與保存果蔬產(chǎn)品從生產(chǎn)到銷售各環(huán)節(jié)產(chǎn)生的關(guān)鍵數(shù)據(jù),并將數(shù)據(jù)進(jìn)行安全儲存與展示。對本系統(tǒng)各個功能模塊進(jìn)行了細(xì)化,系統(tǒng)分為采集層、存儲層、接口層、應(yīng)用層,系統(tǒng)架構(gòu)如圖4所示。
采集層主要通過各企業(yè)設(shè)置的溫濕度采集設(shè)備、移動端設(shè)備、監(jiān)控設(shè)備等進(jìn)行數(shù)據(jù)采集與錄入,保證關(guān)鍵數(shù)據(jù)采集的全面化與多樣化。存儲層分為IPFS鏈下存儲與區(qū)塊鏈鏈上存儲兩部分,鏈下存儲可以減輕區(qū)塊鏈網(wǎng)絡(luò)存儲負(fù)擔(dān),保證了物聯(lián)網(wǎng)設(shè)備采集數(shù)據(jù)的及時存儲與安全;區(qū)塊鏈鏈上存儲保證了溯源數(shù)據(jù)IPFS哈希安全性,并通過區(qū)塊鏈節(jié)點為用戶提供溯源數(shù)據(jù)查詢接口。接口層主要為數(shù)據(jù)存儲、查詢提供相應(yīng)接口,針對模型的特點,提供了IPFS數(shù)據(jù)交互接口,滿足了網(wǎng)關(guān)設(shè)備的溯源數(shù)據(jù)存儲的需求和通過數(shù)據(jù)哈希在IPFS中查詢溯源數(shù)據(jù)的需求;提供了區(qū)塊鏈數(shù)據(jù)交互接口,滿足了IPFS數(shù)據(jù)哈希上鏈與消費者掃碼調(diào)用接口查詢IPFS哈希的需求。應(yīng)用層通過微信小程序和Web端向消費者、監(jiān)管部門、企業(yè)等提供數(shù)據(jù)查詢、管理頁面。
安徽省合肥市某果蔬企業(yè)涉及草莓供應(yīng)鏈所有環(huán)節(jié),需要較多的物聯(lián)網(wǎng)數(shù)據(jù)采集設(shè)備進(jìn)行數(shù)據(jù)采集,為保證各物聯(lián)網(wǎng)設(shè)備采集數(shù)據(jù)的安全傳輸與高效存儲,保證數(shù)據(jù)在存儲于區(qū)塊鏈前未發(fā)生篡改,采用本系統(tǒng)進(jìn)行了優(yōu)化。圖5為本系統(tǒng)采集層相關(guān)設(shè)備,圖5A、5B分別為土壤溫濕度傳感器及空氣傳感器,圖5C為網(wǎng)關(guān)設(shè)備。物聯(lián)網(wǎng)設(shè)備運作邏輯為:傳感器采集草莓生產(chǎn)過程中的關(guān)鍵數(shù)據(jù),通過傳輸線連接到網(wǎng)關(guān)的接線端子,利用網(wǎng)關(guān)的樹莓派等裝置實現(xiàn)將傳感器采集數(shù)據(jù)的組織、傳輸、存儲于IPFS等。本系統(tǒng)應(yīng)用層相關(guān)頁面如圖6所示,圖6A為消費者掃描商品二維碼后顯示的移動端主頁,展示了草莓的品種、產(chǎn)地等信息,用戶可選擇環(huán)節(jié),查看該環(huán)節(jié)詳細(xì)信息,例如點擊生產(chǎn)信息后,生產(chǎn)信息頁面如圖6B所示,展示了種植商、地址等一系列溯源信息。圖6C為企業(yè)Web端頁面,展示了區(qū)塊鏈管理、基地管理、物聯(lián)網(wǎng)設(shè)備管理等多個功能,當(dāng)前頁面展示了區(qū)塊鏈信息,例如智能合約數(shù)、交易數(shù)、區(qū)塊數(shù)等,可實現(xiàn)企業(yè)對供應(yīng)鏈的全面管理與信息監(jiān)測。
2.2 系統(tǒng)效率測試
基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源系統(tǒng)采用Hyperledger Fabric構(gòu)建。其環(huán)境基礎(chǔ)為Centos 7.5、Docker 18.09、fabric-sdk-node 2.2。虛擬機配置為32 G內(nèi)存、16核處理器、16 G硬盤,帶寬為 20 Mb/s。采用區(qū)塊鏈基準(zhǔn)測試工具Hyperledger Caliper 生成測試結(jié)果。
為了驗證基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源系統(tǒng)的寫入與查詢效率,測試了全供應(yīng)鏈環(huán)節(jié)數(shù)據(jù)存儲耗時,包括從各物聯(lián)網(wǎng)設(shè)備采集數(shù)據(jù)存入IPFS的平均時間以及IPFS哈希存儲于區(qū)塊鏈的時間,為了保證測試結(jié)果的真實可靠,進(jìn)行了100次供應(yīng)鏈數(shù)據(jù)存儲效率測試、100次溯源數(shù)據(jù)查詢效率測試。如圖7A所示,全供應(yīng)鏈數(shù)據(jù)存入?yún)^(qū)塊鏈耗時為4.738 s,單個環(huán)節(jié)平均耗時1.190 s;可見數(shù)據(jù)存儲時設(shè)備對數(shù)據(jù)進(jìn)行簽名、驗簽操作,IPFS哈希存儲等操作對數(shù)據(jù)存儲的負(fù)面影響并不明顯。如圖7B所示,用戶溯源平均消耗時間為0.452 s。可見本系統(tǒng)的區(qū)塊鏈結(jié)合IPFS的數(shù)據(jù)查詢機制可以略微提升溯源服務(wù)速度,這主要是由于IPFS分布式的特點,IPFS數(shù)據(jù)查詢效率要高于區(qū)塊鏈數(shù)據(jù)查詢效率。
3 結(jié)論
本研究應(yīng)用密碼學(xué)原理設(shè)計了Blake2改進(jìn)型Ed25519算法,并以此設(shè)計了果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程,在此基礎(chǔ)上結(jié)合IPFS與區(qū)塊鏈技術(shù)設(shè)計了基于身份驗證的果蔬區(qū)塊鏈信息存儲溯源模型。在進(jìn)行實際應(yīng)用及測試后,Blake2改進(jìn)型Ed25519算法可以實現(xiàn)物聯(lián)網(wǎng)設(shè)備的身份驗證,保障了系統(tǒng)的安全性;果蔬供應(yīng)鏈數(shù)據(jù)傳輸流程可以改善物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)處理、傳輸能力不足的問題,提高數(shù)據(jù)傳輸?shù)母咝?;利用IPFS鏈下存儲采集數(shù)據(jù),區(qū)塊鏈網(wǎng)絡(luò)鏈上存儲IPFS哈希,可以提高區(qū)塊鏈存儲空間利用率。三者結(jié)合可以滿足果蔬供應(yīng)鏈數(shù)據(jù)安全性傳輸、存儲的需求。在進(jìn)行系統(tǒng)測試后,本系統(tǒng)供應(yīng)鏈數(shù)據(jù)存儲時間為4.738 s,數(shù)據(jù)查詢時間為0.452 s,可以提供高效溯源服務(wù),可為果蔬供應(yīng)鏈溯源系統(tǒng)設(shè)計提供參考。
參考文獻(xiàn):
[1] 孫海霞,張淑娟,薛建新,等. 基于光譜和成像技術(shù)的果蔬質(zhì)量檢測研究進(jìn)展[J]. 光譜學(xué)與光譜分析,2018,38(6):1779-1785.
[2] HAMID S, MAHMOOD Z, IMRAN M , et al. Potentiality of lemon peel as low cost adsorbent for the removal of trypan blue dye from aqueous solution[J]. Journal-Chemical Society of Pakistan, 2011, 33(3):364-369.
[3] 王祖良,郭建新,張 婷,等. 農(nóng)產(chǎn)品質(zhì)量溯源RFID標(biāo)簽批量識別[J]. 農(nóng)業(yè)工程學(xué)報,2020,36(10):150-157.
[4] 楊信廷,王明亭,徐大明,等. 基于區(qū)塊鏈的農(nóng)產(chǎn)品追溯系統(tǒng)信息存儲模型與查詢方法[J]. 農(nóng)業(yè)工程學(xué)報,2019,35(22):323-330.
[5] 弋偉國,何建國,劉貴珊,等. 區(qū)塊鏈增強果蔬質(zhì)量追溯可信度方法研究與系統(tǒng)實現(xiàn)[J]. 農(nóng)業(yè)機械學(xué)報,2022,53(2):309-315.
[6] 張 新,彭祥貞,許繼平,等. 基于區(qū)塊鏈智能合約的稻米供應(yīng)鏈動態(tài)監(jiān)管模型[J]. 農(nóng)業(yè)機械學(xué)報,2022,53(1):370-382.
[7] 于華竟,徐大明,羅 娜,等. 雜糧供應(yīng)鏈區(qū)塊鏈多鏈追溯監(jiān)管模型設(shè)計[J]. 農(nóng)業(yè)工程學(xué)報,2021,37(20):323-332.
[8] 許繼平,王 健,張 新,等. 區(qū)塊鏈驅(qū)動的稻米供應(yīng)鏈信息監(jiān)管模型研究[J]. 農(nóng)業(yè)機械學(xué)報,2021,52(5):202-211.
[9] 于合龍,陳邦越,徐大明,等. 基于區(qū)塊鏈的水稻供應(yīng)鏈溯源信息保護(hù)模型研究[J]. 農(nóng)業(yè)機械學(xué)報,2020,51(8):328-335.
[10]王志鏵,柳平增,宋成寶,等. 基于區(qū)塊鏈的農(nóng)產(chǎn)品柔性可信溯源系統(tǒng)研究[J]. 計算機工程,2020,46(12):313-320.
[11]于合龍,陳邦越,徐大明等. 基于區(qū)塊鏈的水稻供應(yīng)鏈溯源信息保護(hù)模型研究[J]. 農(nóng)業(yè)機械學(xué)報,2020,51(8):328-335.
[12]邵奇峰,金澈清,張 召,等. 區(qū)塊鏈技術(shù):架構(gòu)及進(jìn)展[J]. 計算機學(xué)報,2018,41(5):969-988.
[13]夏 清,竇文生,郭凱文等. 區(qū)塊鏈共識協(xié)議綜述[J]. 軟件學(xué)報,2021,32(2):277-299.
[14]任艷麗,徐丹婷,張新鵬,等. 可修改的區(qū)塊鏈方案[J]. 軟件學(xué)報,2020,31(12):3909-3922.
[15]尤 瑤,孔蘭菊,肖宗水,等. 一種支持區(qū)塊鏈交易溯源的混合索引機制[J]. 計算機集成制造系統(tǒng),2019,25(4):978-984.
[16]劉漢卿,阮 娜. 區(qū)塊鏈中攻擊方式的研究[J]. 計算機學(xué)報,2021,44(4):786-805.
[17]ATHANERE S, THAKUR R. Blockchain based hierarchical semi-decentralized approach using IPFS for secure and efficient data sharing[J]. Journal of King Saud University Computer and Information Sciences, 2022, 34(4):1523-1534.
[18]杜飛飛,張德學(xué),王佃濤,等. BLAKE2b算法優(yōu)化及OpenCL實現(xiàn)[J]. 小型微型計算機系統(tǒng),2019,40(11):2281-2284.
[19]劉 勇,陳 宇,陳 鐘. 對稱密碼算法的性能優(yōu)化[J]. 北京大學(xué)學(xué)報(自然科學(xué)版),2008,44(5):733-738.
[20]薛一鳴,劉樹榮,郭書恒,等. 高速Ed25519驗簽算法硬件架構(gòu)的設(shè)計與實現(xiàn)[J]. 通信學(xué)報,2022,43(3):101-112.
[21]劉宗斌,荊繼武,夏魯寧. BLAKE算法的硬件實現(xiàn)研究[J]. 計算機學(xué)報,2012,35(4):703-711.
[22]許文龍,王 奕,陳 佐,等. 高性能BLAKE算法研究及其FPGA實現(xiàn)[J]. 計算機應(yīng)用研究,2012,29(6):2098-2101.
(責(zé)任編輯:陳海霞)