劉姿彤,李 政,2,楊 丹,2,畢靖文,2
(1.甘肅省交通科學(xué)研究院集團(tuán)有限公司,甘肅 蘭州 730000;2.甘肅省公路試驗(yàn)檢測創(chuàng)新服務(wù)平臺(tái),甘肅 蘭州 730000)
在公路工程領(lǐng)域,交通產(chǎn)品質(zhì)量是工程建設(shè)質(zhì)量的重要影響因素之一,其試驗(yàn)檢測工作則是質(zhì)量檢驗(yàn)的主要技術(shù)手段。
在互聯(lián)網(wǎng)產(chǎn)業(yè)和信息技術(shù)快速發(fā)展的時(shí)代背景下,交通行業(yè)從業(yè)者積極探索、加快推進(jìn)新一代信息技術(shù)與質(zhì)量監(jiān)督工作的深度融合應(yīng)用和創(chuàng)新式發(fā)展[1]。曾輝[2]探討了基于跨模態(tài)哈希解決不同數(shù)據(jù)模態(tài)之間相互檢索的問題。張?jiān)絒3]系統(tǒng)研究了基于區(qū)塊鏈技術(shù)解決車輛的通信安全和隱私保護(hù)問題。李亞楠[4]在基于區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)應(yīng)用中研究了區(qū)塊鏈在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的應(yīng)用。李泗蘭[5]、沈麒[6]等采用哈希算法在圖像處理應(yīng)用中做了深入研究。區(qū)塊鏈技術(shù)已成為國家信息化戰(zhàn)略規(guī)劃和科技創(chuàng)新活動(dòng)的重要組成和支撐部分,哈希算法作為其主要使用技術(shù)之一,在解決交通產(chǎn)品質(zhì)檢數(shù)據(jù)易篡改的風(fēng)險(xiǎn)問題上優(yōu)勢顯著。
本研究基于區(qū)塊鏈的交通產(chǎn)品抽檢質(zhì)量控制應(yīng)用需求,采用SHA-2 族迭代改進(jìn)的SHA-256 算法,將任意長度的消息和文檔壓縮到某一固定長度的消息摘要,研究實(shí)現(xiàn)各節(jié)點(diǎn)上鏈數(shù)據(jù)信息及文檔數(shù)據(jù)一致性檢驗(yàn)計(jì)算,保證鏈下及上鏈數(shù)據(jù)信息的不可篡改。
根據(jù)交通產(chǎn)品抽檢流程中各節(jié)點(diǎn)單位的設(shè)置及其數(shù)據(jù)流向,基于聯(lián)盟鏈架構(gòu)[7],鏈上包含項(xiàng)目質(zhì)監(jiān)機(jī)構(gòu)、生產(chǎn)廠家(供貨企業(yè))、建設(shè)單位、施工單位、監(jiān)理單位、檢測機(jī)構(gòu)共計(jì)6個(gè)節(jié)點(diǎn)。各節(jié)點(diǎn)上傳的信息類型涉及文本、文檔、圖片、視頻多種形式,最終形成“共同賬本”,實(shí)現(xiàn)區(qū)塊鏈上所有節(jié)點(diǎn)信息的共享連通。
基于區(qū)塊鏈的交通產(chǎn)品質(zhì)量控制網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1 所示,流程上共涉及6 個(gè)不同層次上的信息審核及確認(rèn)。

圖1 基于區(qū)塊鏈的交通產(chǎn)品質(zhì)量控制拓?fù)鋱D
(1)交通產(chǎn)品信息備案及審核確認(rèn)
施工單位作為交通產(chǎn)品信息的主要掌握節(jié)點(diǎn),也是作為區(qū)塊鏈鏈下交通產(chǎn)品信息采集的主要對象。首先由施工單位將產(chǎn)品名稱、產(chǎn)品規(guī)格型號、產(chǎn)品采購批次及數(shù)量、產(chǎn)品采購合同、產(chǎn)品自檢報(bào)告等信息上傳區(qū)塊鏈,監(jiān)理單位將產(chǎn)品抽檢報(bào)告上傳至區(qū)塊鏈。至此,施工單位、監(jiān)理單位、建設(shè)單位和產(chǎn)品生產(chǎn)廠家開始對已上鏈產(chǎn)品信息進(jìn)行第一次確認(rèn),并將結(jié)果上鏈保存。
(2)交通產(chǎn)品抽檢信息確認(rèn)
第一層次信息確認(rèn)正常后,質(zhì)檢機(jī)構(gòu)通知檢測單位根據(jù)抽樣要求和已上鏈交通產(chǎn)品信息實(shí)施抽樣,并將抽樣單、抽檢產(chǎn)品、檢測參數(shù)上傳至區(qū)塊鏈,由質(zhì)檢機(jī)構(gòu)、檢測單位、施工單位、監(jiān)理單位、建設(shè)單位和產(chǎn)品生產(chǎn)廠家對抽檢產(chǎn)品及其抽檢相關(guān)參數(shù)信息進(jìn)行第二次確認(rèn),將結(jié)果上鏈保存。
(3)交通產(chǎn)品封裝信息確認(rèn)
第二層次信息確認(rèn)正常后,由檢測單位組織人員進(jìn)行產(chǎn)品封裝,并將封裝前后的信息以圖片或者視頻的形式上傳至區(qū)塊鏈,由質(zhì)檢機(jī)構(gòu)、檢測單位、施工單位、監(jiān)理單位、建設(shè)單位和產(chǎn)品生產(chǎn)廠家對已封裝產(chǎn)品信息進(jìn)行第三次確認(rèn),并在區(qū)塊鏈上保存最終信息。
(4)交通產(chǎn)品拆樣信息確認(rèn)
第三層次信息確認(rèn)正常后,檢測單位組織產(chǎn)品運(yùn)輸工作,直至檢測單位試驗(yàn)人員將已封裝產(chǎn)品拆樣前后以圖片或視頻方式存證并上傳區(qū)塊鏈,由質(zhì)檢機(jī)構(gòu)、檢測單位、施工單位、監(jiān)理單位、建設(shè)單位和產(chǎn)品生產(chǎn)廠家對已封裝產(chǎn)品前后信息進(jìn)行第四次確認(rèn),并在區(qū)塊鏈上保存最終信息。
(5)交通產(chǎn)品檢測報(bào)告信息確認(rèn)
第四層次信息確認(rèn)正常后,檢測單位開始試驗(yàn)檢測工作,檢測工作完成以后將檢測報(bào)告上傳至區(qū)塊鏈,由質(zhì)檢機(jī)構(gòu)完成審核確認(rèn)。
(6)交通產(chǎn)品檢測結(jié)果告知確認(rèn)
由質(zhì)檢機(jī)構(gòu)將試驗(yàn)檢測結(jié)果通知施工單位進(jìn)行確認(rèn),至此一個(gè)樣品抽檢周期全部完成。
各層次確認(rèn)后的質(zhì)量控制數(shù)據(jù)存在本地?cái)?shù)據(jù)庫,但是本地?cái)?shù)據(jù)庫信息存在數(shù)據(jù)篡改的風(fēng)險(xiǎn)。在交通產(chǎn)品質(zhì)量數(shù)據(jù)檢驗(yàn)一致性判斷的時(shí)候,基于SHA-256 哈希算法可以將本地?cái)?shù)據(jù)庫信息與已上鏈的區(qū)塊鏈數(shù)據(jù)庫信息的區(qū)塊哈希值進(jìn)行比較,若有數(shù)據(jù)篡改現(xiàn)象,則兩者的哈希值會(huì)有差異。
哈希算法是區(qū)塊鏈加密技術(shù)的主要代表算法,在不同行業(yè)內(nèi)業(yè)務(wù)數(shù)據(jù)信息快速查找和加密方面得到了推廣應(yīng)用[8]。
哈希算法的核心是將任意長度的二進(jìn)制值映射為較短的、固定長度的二進(jìn)制值,該二進(jìn)制值就稱為哈希值,它是一段數(shù)據(jù)唯一性且緊湊性的數(shù)值表示形式。若哈希算法的輸入為一段明文字符串,哪怕是這個(gè)字符串中有一個(gè)字母或者字符的微小變化,經(jīng)過哈希算法計(jì)算出的哈希值將產(chǎn)生較大幅度的畸變,而且該過程不可逆,即要通過何種計(jì)算反推出來同一個(gè)哈希值的2 個(gè)不同輸入,理論計(jì)算的可操作性是無法實(shí)現(xiàn)的,所以說哈希值計(jì)算的唯一性是可以檢驗(yàn)原始輸入數(shù)據(jù)的完整性和一致性的。因此,哈希算法作為一種單向散列算法,具有如下特點(diǎn)。
(1)壓縮性:不同長度、不同大小的輸入字符串,其計(jì)算的Hash值長度很小或者相對固定。
(2)易計(jì)算:基于不同應(yīng)用軟件,Hash值的計(jì)算方便、快捷。
(3)單向性:Hash值計(jì)算的過程不可逆,即計(jì)算存在單向性,這是哈希函數(shù)安全性的基礎(chǔ),也是哈希函數(shù)被廣泛應(yīng)用的核心。
(4)高靈敏性:從比特位的角度來說,1 比特位的輸入變化會(huì)造成1/2比特位的變化。輸入信息的任何改變都會(huì)導(dǎo)致計(jì)算哈希值明顯的改變。
本研究結(jié)合區(qū)塊鏈在交通產(chǎn)品質(zhì)量控制工作中的應(yīng)用需求,針對各節(jié)點(diǎn)確認(rèn)上鏈的數(shù)據(jù)信息,應(yīng)用哈希算法,讓大容量的本地?cái)?shù)據(jù)庫信息在各節(jié)點(diǎn)用數(shù)字簽名后的數(shù)據(jù)信息被壓縮成一種加密的數(shù)據(jù)格式,使其他節(jié)點(diǎn)使用者或者數(shù)據(jù)管理者知曉本次計(jì)算的哈希值,并能看到哈希算法的描述,以下結(jié)合實(shí)際案例對哈希算法在項(xiàng)目中的應(yīng)用進(jìn)行詳細(xì)闡述。
現(xiàn)有的一致性檢驗(yàn)主要包括基于時(shí)間戳、工作量證明、權(quán)益證明以及狀態(tài)機(jī)復(fù)制等方法。這些方法在保證區(qū)塊鏈數(shù)據(jù)一致性方面存在一定效果但也存在問題。例如,基于時(shí)間戳的方法可能會(huì)受到時(shí)鐘同步問題的限制,而基于工作量證明和權(quán)益證明的方法則可能面臨資源消耗大和驗(yàn)證時(shí)間長等問題。本研究重點(diǎn)討論哈希算法在區(qū)塊鏈中的應(yīng)用,并以驗(yàn)證數(shù)據(jù)的完整性和一致性為目標(biāo),有效地檢測數(shù)據(jù)是否被篡改或損壞。
研究提及的區(qū)塊哈希就是對區(qū)塊頭進(jìn)行哈希計(jì)算,得出某個(gè)區(qū)塊的哈希值,用這個(gè)哈希值可以唯一標(biāo)識(shí)確定某一個(gè)區(qū)塊,相當(dāng)于給該區(qū)塊設(shè)定了一個(gè)ID,區(qū)塊與區(qū)塊之間就是通過這個(gè)ID 進(jìn)行串聯(lián),從而形成了一個(gè)區(qū)塊鏈機(jī)構(gòu)。這樣的結(jié)構(gòu)也是區(qū)塊鏈數(shù)據(jù)難以篡改的技術(shù)基礎(chǔ)之一,哈希值相當(dāng)于一個(gè)指針,傳統(tǒng)的指針提供的是一種獲取信息的方法,而哈希指針則提供了一種檢驗(yàn)數(shù)據(jù)信息是否被改變的測試方法,如果信息存在篡改現(xiàn)象,那么其哈希值和哈希指針的值必定是不等的。
交通產(chǎn)品質(zhì)量監(jiān)督領(lǐng)域涉及的基礎(chǔ)字段多為字符串類型,因此首先研究字符串信息一致性的檢驗(yàn)。字符串信息一致性檢驗(yàn)流程如圖2所示。getInstance(String algorithm)返回指定算法的Message Digest對象,Message Digest類是為應(yīng)用程序提供信息摘要算法的功能,如MD5(信息摘要算法)或SHA(安全散列算法)算法等。信息摘要是安全的單向哈希函數(shù),它接收任意大小的數(shù)據(jù),并能輸出固定長度的哈希值。Message Digest對象開始被初始化,該對象通過使用update函數(shù)處理數(shù)據(jù),任何時(shí)候都可以調(diào)用reset函數(shù)的方法重置摘要,一旦所有需要更新的數(shù)據(jù)都已經(jīng)被更新了,則就應(yīng)該調(diào)用digest函數(shù)完成哈希計(jì)算。對于一個(gè)給定數(shù)量的更新數(shù)據(jù),digest方法只能被調(diào)用一次,在調(diào)用digest之后,Message Digest對象被重新設(shè)置成其初始狀態(tài)。

圖2 字符串信息哈希值計(jì)算流程
在交通產(chǎn)品抽檢質(zhì)量監(jiān)督領(lǐng)域,其質(zhì)量數(shù)據(jù)信息除了字符串信息,更多的質(zhì)量保證資料是以文檔的形式體現(xiàn)的,故加強(qiáng)文檔資料的不可篡改性在交通產(chǎn)品質(zhì)量保證方面有重要意義。
文檔資料信息一致性檢驗(yàn)計(jì)算主要流程如圖3所示。

圖3 文檔資料哈希值計(jì)算流程
Step1:定義文檔路徑函數(shù):def CalcSha256(filepath)。
Step2:使用二進(jìn)制模式讀取文檔,并將該函數(shù)簡化:with open(filepath,'rb')as f。
Step3:定義SHA-256 算法計(jì)算的結(jié)果類型:sha256obj=hashlib.sha256()。
Step4:計(jì)算目標(biāo)文檔Hash值:sha256obj.update(f.read())。
Step5:以2 倍長度字符串對象的形式返回摘要信息:hash=sha256obj.hexdigest(),其中僅包含十六進(jìn)制數(shù)碼。
Step6:輸出hash值:print(hash)。
Step7:函數(shù)最終返回目標(biāo)文檔的Hash 值:return hash。
哈希算法是區(qū)塊鏈系統(tǒng)數(shù)據(jù)信息不可篡改功能發(fā)揮的一項(xiàng)重要基礎(chǔ)技術(shù)。目前,密碼學(xué)相關(guān)行業(yè)中常用的哈希算法有MD5,SHA 系列等算法。MD5 算法已于2004 年被破解,SHA 算法是一個(gè)Hash函數(shù)集,現(xiàn)在有SHA-1、SHA-2、SHA-3等不同代表,SHA-256 到目前為止還沒有被破解,故在交通產(chǎn)品質(zhì)量數(shù)據(jù)唯一性方面選擇SHA-256 算法進(jìn)行應(yīng)用分析。
無論哈希算法的輸入是什么數(shù)字格式、文件有多大,輸出都是相對固定長度的比特串。以比特幣使用的SHA-256算法為例,無論輸入是什么數(shù)據(jù)格式和文件,輸出的都是256bit。其中每個(gè)bit 位就是一位0或者1,256bit就是256個(gè)0或者1的二進(jìn)制數(shù)字串,用16進(jìn)制數(shù)字來表示的話,16等價(jià)于2的4次方,所以每一位16 進(jìn)制數(shù)字可以用4 位bit 位來代表。那么,256 位bit 信息通過用16 進(jìn)制數(shù)字表示,也就是64位了。
以特定交通產(chǎn)品為例,從本地過程數(shù)據(jù)庫中摘錄主要試驗(yàn)檢測數(shù)據(jù)信息及質(zhì)量保證資料文檔,經(jīng)過項(xiàng)目質(zhì)檢機(jī)構(gòu)、建設(shè)單位、施工單位、監(jiān)理單位、檢測單位、設(shè)備廠家或者供應(yīng)商等節(jié)點(diǎn)的確認(rèn)后,這些資料將被上傳至區(qū)塊鏈系統(tǒng)數(shù)據(jù)庫。上傳過程中,采用SHA-256 算法進(jìn)行計(jì)算,并得出唯一值的16 進(jìn)制(共計(jì)64 位)哈希計(jì)算結(jié)果,該結(jié)果具有不可逆性和唯一性,能夠有效保障上傳資料的完整性和真實(shí)性。
如圖4 所示,如果在字符串“電纜ZR-KXGsFP2VRP2”中插入一個(gè)空格字符,會(huì)導(dǎo)致其哈希值計(jì)算結(jié)果改變。文章對試驗(yàn)檢測數(shù)據(jù)信息進(jìn)行了詳細(xì)分類,并根據(jù)實(shí)際應(yīng)用需求開展多次哈希計(jì)算及確認(rèn)。結(jié)果表明,各節(jié)點(diǎn)單位如果篡改該產(chǎn)品檢測數(shù)據(jù)及文檔資料的信息,將會(huì)導(dǎo)致其哈希值發(fā)生明顯改變。

圖4 字符信息一致性哈希值計(jì)算結(jié)果
在交通產(chǎn)品質(zhì)量控制區(qū)塊鏈應(yīng)用系統(tǒng)中,若檢測到區(qū)塊鏈數(shù)據(jù)庫信息與鏈下各節(jié)點(diǎn)數(shù)據(jù)信息哈希值計(jì)算結(jié)果有不一致的現(xiàn)象時(shí),證明數(shù)據(jù)存有篡改現(xiàn)象發(fā)生,系統(tǒng)設(shè)置本地?cái)?shù)據(jù)庫數(shù)據(jù)信息還原功能,可將篡改后的數(shù)據(jù)恢復(fù)為經(jīng)各方確認(rèn)后上鏈的原始數(shù)據(jù)。
通過區(qū)塊鏈技術(shù)在公路工程交通產(chǎn)品質(zhì)量控制實(shí)際業(yè)務(wù)場景下的應(yīng)用探索,針對Hyperledger Fabric 典型區(qū)塊鏈平臺(tái),研究選擇了SHA-2 族經(jīng)過迭代改進(jìn)后安全性更高的SHA-256散列算法,基于對算法的原理介紹,明確運(yùn)用本算法解決公路工程交通產(chǎn)品試驗(yàn)檢測數(shù)據(jù)不可篡改的思路和應(yīng)用流程,最后以某高速公路某標(biāo)段抽檢電纜為例,驗(yàn)證了哈希算法在交通產(chǎn)品質(zhì)量檢測字符及文本信息一致性檢驗(yàn)方面的有效性和可行性,實(shí)現(xiàn)了全過程重要節(jié)點(diǎn)信息上鏈的不可篡改、全員共享,并提供從結(jié)果到源頭的可追溯性查詢流程。研究成果可減少或者避免交通產(chǎn)品質(zhì)量監(jiān)督過程中的質(zhì)疑、矛盾和糾紛等問題發(fā)生,確保數(shù)據(jù)安全,對各參建單位的工作效率和質(zhì)量有顯著的提升作用。