張學(xué)軍,周寅峰,谷群遠(yuǎn),張自峰,游增輝
(1.鹽城市質(zhì)量技術(shù)監(jiān)督綜合檢驗(yàn)檢測(cè)中心電子電器檢驗(yàn)部,江蘇 鹽城 224056;2.上海天俁可信物聯(lián)網(wǎng)科技有限公司,上海 201210)
隨著國(guó)家對(duì)產(chǎn)品安全問題的重視,市場(chǎng)監(jiān)督領(lǐng)域?qū)z驗(yàn)檢測(cè)過程的真實(shí)性與準(zhǔn)確性要求愈發(fā)嚴(yán)格。在樣品的運(yùn)輸環(huán)節(jié)發(fā)生存儲(chǔ)環(huán)境異常,會(huì)使樣品性狀發(fā)生改變,進(jìn)行導(dǎo)致樣品檢驗(yàn)檢測(cè)結(jié)果失去公正性、科學(xué)性。針對(duì)以上問題,文獻(xiàn)[1-4]提出了基于物聯(lián)網(wǎng)傳感器技術(shù)的低功耗實(shí)時(shí)監(jiān)測(cè)方案。近年來區(qū)塊鏈在物聯(lián)網(wǎng)領(lǐng)域中逐漸得到了應(yīng)用[5-9],由區(qū)塊鏈節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)上鏈,保證了已上鏈數(shù)據(jù)的安全性[10-11]。
該文將STM32 單片機(jī)、物聯(lián)網(wǎng)傳感器與區(qū)塊鏈結(jié)合,在嵌入式系統(tǒng)上運(yùn)行SHA-256 算法,計(jì)算樣品環(huán)境數(shù)據(jù)的哈希值,實(shí)現(xiàn)檢驗(yàn)樣品環(huán)境數(shù)據(jù)從采集至上鏈之間是否被篡改,有效規(guī)范了質(zhì)量監(jiān)督管理流程,提升了樣品運(yùn)輸?shù)陌踩浴?/p>
系統(tǒng)由硬件層、通信層、服務(wù)層、應(yīng)用層組成,系統(tǒng)框圖如圖1 所示。硬件層的嵌入式硬件設(shè)備采集數(shù)據(jù),即溫度、濕度與加速度。采集完畢后將數(shù)據(jù)進(jìn)行哈希映射,分別將數(shù)據(jù)與哈希值上傳至數(shù)據(jù)存儲(chǔ)平臺(tái)與區(qū)塊鏈網(wǎng)絡(luò)。通信層采用無線通信的方式實(shí)現(xiàn)硬件層與服務(wù)層之間的通信。服務(wù)層由區(qū)塊鏈網(wǎng)絡(luò)與數(shù)據(jù)存儲(chǔ)平臺(tái)組成。區(qū)塊鏈網(wǎng)絡(luò)提供上鏈接口與哈希檢索接口,硬件層調(diào)用上鏈接口將哈希值上傳至區(qū)塊鏈,用戶調(diào)用區(qū)塊鏈檢索接口查看數(shù)據(jù)的哈希值。應(yīng)用層中用戶通過數(shù)據(jù)存儲(chǔ)平臺(tái)獲取數(shù)據(jù),在區(qū)塊鏈網(wǎng)絡(luò)接口檢索數(shù)據(jù)的哈希值,并判斷其是否匹配,實(shí)現(xiàn)對(duì)數(shù)據(jù)的溯源。
圖1 系統(tǒng)框圖
一般情況下,檢驗(yàn)檢測(cè)樣品常溫存儲(chǔ)的溫度要求低于30 ℃,冷藏存儲(chǔ)的溫度變化區(qū)間在-10~0 ℃[12]。為使硬件設(shè)備在樣品保存環(huán)境中穩(wěn)定工作,各器件均需適應(yīng)樣品存儲(chǔ)環(huán)境,結(jié)合實(shí)際工作情況,該文系統(tǒng)的硬件應(yīng)具備在-20~55 ℃范圍內(nèi)工作的能力。
2.1.1 溫濕度采集
樣品運(yùn)輸過程需保持環(huán)境溫度、濕度的穩(wěn)定,以免引起樣品腐敗、霉變等問題,導(dǎo)致檢驗(yàn)檢測(cè)結(jié)果不準(zhǔn)確。因此需對(duì)樣品保存環(huán)境的溫度、濕度進(jìn)行實(shí)時(shí)監(jiān)測(cè)。
SHT20 溫濕度采集芯片的外殼由環(huán)氧樹脂制成,該芯片采用I2C 通信方式,電壓輸入范圍為2.1~3.6 V。溫度測(cè)量范圍為-40~120 ℃,測(cè)量精度為0.01。濕度測(cè)量范圍為0%RH~100%RH,測(cè)量精度為0.04。該芯片適用于樣品運(yùn)輸過程的環(huán)境,滿足對(duì)樣品的溫濕度采集的范圍要求,且成本低廉。故該文采用SHT20 芯片作為系統(tǒng)的溫濕度傳感器芯片。SHT20 傳感器連接硬件系統(tǒng)中MCU 的IIC 總線,PB6、PB7 引腳對(duì)應(yīng)IIC 總線中的SCL 與SDA。
2.1.2 加速度采集
運(yùn)輸車輛的碰撞或意外情況的發(fā)生,將造成車內(nèi)存儲(chǔ)環(huán)境的變化,嚴(yán)重可直接導(dǎo)致樣品包裝的破損、車內(nèi)樣品存儲(chǔ)設(shè)備的損壞,最終造成檢驗(yàn)檢測(cè)結(jié)果的失真。為監(jiān)測(cè)運(yùn)輸車輛的運(yùn)行狀態(tài),將加速度采集納入硬件系統(tǒng)。BMA400 芯片的加速度采集范圍從±2g 至±16g,可反映車輛運(yùn)行狀態(tài),芯片工作溫度為-40~85 ℃,適用于樣品運(yùn)輸工作環(huán)境。電壓輸入為2.1~3.6 V,芯片兼容SPI、I2C 兩種通信方式。MCU 可發(fā)送指令控制芯片的工作模式,便于程序的研發(fā)與系統(tǒng)的功耗控制。故該文選擇BMA400 芯片作為加速度傳感采集模塊的核心芯片。
該芯片存在三種工作模式,分別為睡眠模式、低功耗模式、正常模式。睡眠模式下芯片停止工作,低功耗電流為200 nA。低功耗模式下,模塊處于低速運(yùn)行狀態(tài),電流消耗小于1 200 nA。正常模式下,模塊噪聲性能與電流消耗可通過寄存器配置進(jìn)行調(diào)整。該芯片兼容SPI 與I2C 兩種連接方式,為使硬件電路設(shè)計(jì)更加簡(jiǎn)潔,該文選擇I2C 連接方式,將BMA400 芯片連接在STM32 的I2C 總線上,該模塊連接兩根數(shù)據(jù)線SDA、SCL。
微控制單元(Microcontroller Unit,MCU)是硬件系統(tǒng)的核心器件,是控制數(shù)據(jù)采集、數(shù)據(jù)處理與無線傳輸?shù)墓δ苤袠小TM32F103C8T6 芯片可達(dá)到最高主頻72 MHz,電壓范圍2.0~3.6 V,64 kB Flash,20 kB SRAM;具有兩個(gè)I2C 端口,三個(gè)USART 端口;具有Stanby 模式,保證系統(tǒng)的低功耗設(shè)計(jì),在Stanby模式下芯片電流可降低至μA 級(jí),帶有RTC 鬧鐘,具有事件定時(shí)喚醒功能,該模式下RTC 鬧鐘喚醒則系統(tǒng)自動(dòng)重啟。該芯片在-40~80 ℃下可正常工作,適應(yīng)運(yùn)輸中樣品的保存環(huán)境,且成本低廉。該系列芯片兼容性強(qiáng),應(yīng)用范圍較廣,技術(shù)支持相對(duì)較多,采用該型號(hào)芯片可減少研發(fā)周期。考慮到系統(tǒng)的設(shè)計(jì)與規(guī)劃,平衡MCU 的性能與成本,故該文采用STM32F103C8T6 芯片作為MCU。
硬件系統(tǒng)核心電路圖如圖2 所示,電路上主要集成了STM32F103C8T6 單片機(jī),外部高速時(shí)鐘(HSE)8 MHz 晶振、外部低速時(shí)鐘(LSE)32.768 kHz 晶振,外部低速時(shí)鐘主要用作系統(tǒng)在低功耗模式下的RTC 時(shí)鐘源。
圖2 硬件系統(tǒng)核心電路圖
硬件系統(tǒng)的運(yùn)行需要電源提供能量,電源信號(hào)的穩(wěn)定性直接影響各器件的工作。電源穩(wěn)壓模塊用于維持硬件系統(tǒng)輸入電壓的穩(wěn)定,降低電源電壓的異常波動(dòng),提升硬件系統(tǒng)的穩(wěn)定性、信號(hào)完整性。穩(wěn)壓芯片作為電源穩(wěn)壓模塊的核心器件,芯片的電壓輸入范圍需包含電源提供的電壓,也需兼容硬件系統(tǒng)上各模塊、芯片的電氣參數(shù)。RT8009-33G 芯片的電壓輸入范圍為2.5~5.5 V,通過電路設(shè)計(jì)可輸出3.3 V 電壓,提供的最大工作電流IMAX=600 mA,該芯片是轉(zhuǎn)換效率較高的DC/DC 降壓芯片,轉(zhuǎn)換效率為95%,且成本相對(duì)低廉。故該文采用RT8009-33G 作為硬件電源模塊的芯片,電源設(shè)計(jì)如圖3 所示。
圖3 電源設(shè)計(jì)圖
有線通信方式不適用于運(yùn)輸過程。在無線通信方式中,藍(lán)牙通信功耗低,但是其距離近。Lora 通信待機(jī)功耗低、通信距離遠(yuǎn)、抗干擾性強(qiáng),但需要部署通信節(jié)點(diǎn),成本高。WiFi 模塊待機(jī)功耗低,通信距離近,可通過手機(jī)熱點(diǎn)連接至蜂窩移動(dòng)網(wǎng)絡(luò),無需部署節(jié)點(diǎn),成本較低,也便于維護(hù)。綜合考慮以上因素,該文采用嵌入式硬件集成WiFi 模塊,通過WiFi 模塊連接手機(jī)熱點(diǎn),建立與互聯(lián)網(wǎng)的通信。
ESP8266 系列模塊集成了TCP/IP 協(xié)議棧,該模塊的輸入電壓范圍為3~5 V,可在-20~85 ℃的環(huán)境下工作,適應(yīng)于樣品運(yùn)輸環(huán)境;模塊成本相對(duì)低廉,應(yīng)用范圍廣,具有低功耗模式,在低功耗模式下可定時(shí)喚醒也可外部中斷喚醒,便于系統(tǒng)整體的功耗設(shè)計(jì),且該模塊集成AT 固件,易于操作,能夠縮短設(shè)備的研發(fā)周期。故該文采用ESP8266-12F 模塊作為系統(tǒng)中WiFi 通信模塊。模塊連接硬件系統(tǒng)中的四個(gè)引腳,分別為VCC、GND、TX、RX。其中RX、TX 分別接STM32F103C8T6 的PA2、PA3。
系統(tǒng)程序流程如圖4 所示,啟動(dòng)設(shè)備硬件,執(zhí)行系統(tǒng)初始化。系統(tǒng)初始化完畢,MCU 對(duì)各數(shù)據(jù)采集模塊進(jìn)行輪詢,得到傳感器數(shù)據(jù)。數(shù)據(jù)處理模塊使用SHA-256 算法將傳感器數(shù)據(jù)映射出對(duì)應(yīng)的哈希值。硬件層采用異步處理方式,先后將采集的數(shù)據(jù)與哈希值分別發(fā)送給數(shù)據(jù)存儲(chǔ)平臺(tái)與區(qū)塊鏈節(jié)點(diǎn)。嵌入式硬件設(shè)備先建立與服務(wù)層區(qū)塊鏈節(jié)點(diǎn)的通信連接,嵌入式硬件系統(tǒng)向區(qū)塊鏈服務(wù)器發(fā)送哈希值,并等待服務(wù)器返回通信成功的標(biāo)識(shí)。若系統(tǒng)收到成功標(biāo)識(shí),則硬件設(shè)備斷開與服務(wù)器的連接,通信成功。如未收到成功標(biāo)識(shí),硬件設(shè)備立即結(jié)束通信,進(jìn)入休眠模式。與區(qū)塊鏈服務(wù)器通信成功后,硬件系統(tǒng)再發(fā)送傳感器數(shù)據(jù)至數(shù)據(jù)存儲(chǔ)平臺(tái)。至此,硬件層通信結(jié)束,系統(tǒng)進(jìn)入睡眠模式,等待定時(shí)喚醒。
圖4 系統(tǒng)程序流程圖
SHA 哈希算法作為哈希算法中的一個(gè)系列,又分為四種系列算法,分別為SHA-0、SHA-1、SHA-2和SHA-3[13]。其中SHA-0 與SHA-1 已被碰撞攻擊破解。SHA-3 算法采用的結(jié)構(gòu)與SHA-1、SHA-2 算法不同,在應(yīng)用上并未取代SHA-2 系列算法[14]。在SHA-2 系列算法中,SHA-256 和SHA-512 是原始哈希函數(shù),SHA-224 和SHA-384 分別為SHA-256 和SHA-512 的截?cái)嗪瘮?shù)[15]。當(dāng)下廣泛應(yīng)用于區(qū)塊鏈中的是SHA-256 算法[16]。
SHA-256 算法作為安全散列算法的一種,由美國(guó)國(guó)家安全局(NSA)與美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2002 年公布。其主要作用是實(shí)現(xiàn)任意長(zhǎng)度(長(zhǎng)度小于264 位)數(shù)據(jù)的輸入,該算法均輸出長(zhǎng)度為256 位的消息摘要,這個(gè)過程叫數(shù)據(jù)抽樣,也叫哈希映射。該算法具有單向性,算法輸出結(jié)果無法逆推輸入數(shù)據(jù)。輸入數(shù)據(jù)不同,輸出的哈希值也不相同。該算法作為實(shí)現(xiàn)區(qū)塊鏈概念的技術(shù)手段,廣泛應(yīng)用于區(qū)塊鏈項(xiàng)目中[17]。
經(jīng)計(jì)算,當(dāng)前SHA-256 算法在嵌入式芯片中所占的Flash 為1.441 kB,所占RAM 空間為0.718 kB。而STM32F103C8T6 芯片具有64 kB 的Flash 空間、20 kB 的SRAM 空間、MCU 的存儲(chǔ)空間足以存儲(chǔ)該算法,且所占存儲(chǔ)空間比例相對(duì)較低。當(dāng)前MCU 足以支持該算法的正常運(yùn)行,且留有空間拓展。SHA-2系列算法輸出的哈希值越長(zhǎng),哈希碰撞幾率越低,數(shù)據(jù)的安全性越高,但需提供的算力越高??紤]當(dāng)前區(qū)塊鏈應(yīng)用的算法,平衡哈希算法的安全性與所需算力,結(jié)合MCU 所能提供的存儲(chǔ)量與算力,該文采用SHA-256 算法作為嵌入式系統(tǒng)中的哈希算法。
3.2.1 數(shù)據(jù)預(yù)處理
先將輸入數(shù)據(jù)以長(zhǎng)度為512 位的獨(dú)立單位分割,對(duì)余下長(zhǎng)度不足的余數(shù)進(jìn)行補(bǔ)位,最終輸出長(zhǎng)度為512 位的n個(gè)消息塊數(shù)組Mj。
3.2.2 數(shù)據(jù)擴(kuò)展
以長(zhǎng)度為32 位為單位將Mj分割為16 組數(shù)據(jù)塊(Mj0,Mj1,…Mj15),通過擴(kuò)展算法,得到64 組長(zhǎng)度為32位的數(shù)據(jù)塊(W0,W1…W63)
擴(kuò)展算法如下:
3.2.3 哈希計(jì)算
初始8 維哈希常數(shù)(a0,b0,c0,d0,e0,f0,g0,h0)作為數(shù)組H(a,b,c,d,e,f,g,h)的初始值。通過擴(kuò)展算法得到64 組數(shù)據(jù)塊Wt后,將64 組常數(shù)Kt代入輪換函數(shù)中執(zhí)行,輪換函數(shù)流程如圖5 所示。輪換函數(shù)循環(huán)迭代64 次,最終在數(shù)組H(a,b,c,d,e,f,g,h)中輸出結(jié)果。
圖5 輪換函數(shù)流程圖
每個(gè)Mj數(shù)據(jù)塊執(zhí)行一次輪換函數(shù),共執(zhí)行n次輪換函數(shù)。將Mj在H(a,b,c,d,e,f,g,h)中輸出的結(jié)果,作為輪換函數(shù)計(jì)數(shù)下一個(gè)消息塊Mj+1的H數(shù)組初始值,當(dāng)最后一個(gè)消息塊計(jì)算完畢后,最終在數(shù)組H(a,b,c,d,e,f,g,h)中輸出結(jié)果,通過將其拼合,即得出哈希值。
輪換函數(shù)所需公式如下:
該文根據(jù)該算法原理,編寫SHA-256 算法中的輪換函數(shù),偽代碼如下:
I2C 通信是MCU 與傳感器的通信方式之一,連接線少,操作簡(jiǎn)單,通信速率高[18],MCU 通過地址尋址方式定位傳感器,控制地址對(duì)應(yīng)的傳感器,I2C 總線上可并聯(lián)多組傳感器。該文采用I2C 通信方式擴(kuò)展傳感器。對(duì)多組傳感器輪詢,可單獨(dú)運(yùn)行一個(gè)傳感器,其他傳感器處于低功耗模式,錯(cuò)開傳感器的運(yùn)行狀態(tài),降低系統(tǒng)運(yùn)行的峰值電流,提高系統(tǒng)的穩(wěn)定性。
USART 通信作為MCU 與功能模塊的通信方式中的一種重要方式,可設(shè)置波特率,得到一個(gè)寬廣的通信速率變化范圍,既用于MCU 與功能模塊間的通信,也用在PC 端對(duì)硬件設(shè)備進(jìn)行系統(tǒng)調(diào)試。MCU 通過發(fā)送該功能模塊上已集成的指令對(duì)其進(jìn)行控制。系統(tǒng)采用USART2 端口連接WiFi模塊ESP8266。
RTC(Real_Time Clock)實(shí)時(shí)時(shí)鐘獨(dú)立于STM32系統(tǒng),在Stanby 低功耗模式下獨(dú)立運(yùn)行。RTC 可產(chǎn)生鬧鐘事件中斷喚醒STM32,使STM32 退出低功耗模式。硬件系統(tǒng)進(jìn)入休眠模式時(shí),需靠RTC 時(shí)鐘喚醒。
RTC時(shí)鐘配置函數(shù)RTC_INIT(),將RTC配置為采用外部低速時(shí)鐘(LSE)信號(hào),RTC鬧鐘中斷設(shè)置為5 min。系統(tǒng)進(jìn)入休眠模式,RTC 時(shí)鐘開始計(jì)時(shí),當(dāng)休眠時(shí)間達(dá)到5 min,觸發(fā)鬧鐘事件中斷,系統(tǒng)恢復(fù)工作。
系統(tǒng)按照模塊劃分功能,邏輯函數(shù)用于實(shí)現(xiàn)系統(tǒng)各模塊的具體功能,并且使得系統(tǒng)的功能層次分明,主程序的邏輯更加簡(jiǎn)潔明了,既便于理解又便于調(diào)試。各邏輯函數(shù)及其功能如表1 所示。
表1 邏輯函數(shù)及其功能
3.4.1 數(shù)據(jù)采集函數(shù)
sht20_get()函數(shù)的功能是讀取溫濕度值。首先,MCU 通過I2C 總線與溫濕度傳感器建立I2C 通信連接,再給SHT20 發(fā)送測(cè)量命令,等待讀取來自SHT20芯片反饋的溫濕度數(shù)值。將讀取的溫度值與濕度值分別存儲(chǔ)在變量TEMP 與變量HUMI 中。
gcc_get()函數(shù)的功能為讀取加速度值,以記錄車輛的運(yùn)行狀態(tài)。首先,MCU 通過I2C 總線建立與BMA400 芯片的通信連接,再向BMA400 發(fā)送讀取模塊ID 號(hào)的指令,MCU 等待返回,如芯片返回值正確,則芯片啟動(dòng)成功。該芯片啟動(dòng)成功后自動(dòng)進(jìn)入睡眠模式,此時(shí)芯片不能讀取加速度數(shù)據(jù)。MCU 發(fā)送指令讓該芯片進(jìn)入正常模式,讀取加速度值,等讀取完畢,MCU 再發(fā)送指令使模塊進(jìn)入睡眠模式。
3.4.2 數(shù)據(jù)處理函數(shù)
sha256_count()函數(shù)是根據(jù)SHA-256 算法原理編寫的,其功能是將輸入數(shù)據(jù)哈希映射出對(duì)應(yīng)的哈希值,輸出類型為字符串。
HASH_POST_config()函數(shù)將哈希值按照HTTP協(xié)議POST 請(qǐng)求方式組成HTTP 請(qǐng)求消息,即POST報(bào)文。報(bào)文內(nèi)容包含區(qū)塊鏈節(jié)點(diǎn)的聯(lián)盟鏈密鑰,聯(lián)盟鏈密鑰給予了硬件設(shè)備調(diào)用上鏈接口的權(quán)限,無密鑰,則不能將哈希值上傳至聯(lián)盟鏈。
DATA_POST_config()函數(shù)的功能是將傳感器數(shù)據(jù)生成HTTP 協(xié)議的POST 請(qǐng)求報(bào)文。該報(bào)文與上傳區(qū)塊鏈節(jié)點(diǎn)的POST 報(bào)文雖原理相同,但在內(nèi)容上有較大差異,故寫成兩個(gè)函數(shù)。
3.4.3 無線通信函數(shù)
upload_HASH()函數(shù)的功能是將由HASH_POST_config()函數(shù)生成的POST 請(qǐng)求報(bào)文上傳至區(qū)塊鏈節(jié)點(diǎn)。首先建立硬件設(shè)備與區(qū)塊鏈節(jié)點(diǎn)的通信,然后向區(qū)塊鏈節(jié)點(diǎn)服務(wù)器上傳報(bào)文。發(fā)送報(bào)文后,硬件設(shè)備等待服務(wù)器返回成功標(biāo)識(shí),如返回成功,則硬件設(shè)備斷開與區(qū)塊鏈節(jié)點(diǎn)的通信,該函數(shù)流程結(jié)束,系統(tǒng)程序繼續(xù)向下執(zhí)行,將該哈希值對(duì)應(yīng)的傳感器數(shù)據(jù)上傳至數(shù)據(jù)存儲(chǔ)平臺(tái);如返回失敗,則哈希值未上傳至區(qū)塊鏈,該樣品環(huán)境數(shù)據(jù)無法在區(qū)塊鏈上溯源,即為無效數(shù)據(jù),故系統(tǒng)不上傳該傳感器數(shù)據(jù),直接結(jié)束程序,硬件設(shè)備進(jìn)入休眠狀態(tài)。
upload_DATA()函數(shù)的功能是將由傳感器數(shù)據(jù)生成的POST 請(qǐng)求報(bào)文上傳至數(shù)據(jù)存儲(chǔ)平臺(tái),數(shù)據(jù)上傳后,硬件設(shè)備進(jìn)入休眠模式,等候下一次喚醒。
搭建網(wǎng)絡(luò)環(huán)境,將程序編譯后,使用仿真下載器燒錄進(jìn)STM32 芯片。啟動(dòng)硬件系統(tǒng),硬件設(shè)備將樣品運(yùn)輸環(huán)境監(jiān)測(cè)數(shù)據(jù)上傳至數(shù)據(jù)存儲(chǔ)平臺(tái)后,在該平臺(tái)的網(wǎng)頁獲取上傳的環(huán)境數(shù)據(jù)。測(cè)得硬件系統(tǒng)處于工作狀態(tài)的平均電流為43.1 mA,休眠模式下平均電流為112.3 μA。系統(tǒng)每6 min 采集一次環(huán)境數(shù)據(jù),環(huán)境數(shù)據(jù)由5 維參數(shù)組成,temp 表示溫度,humi 表示濕度,acc_x,y,z三組數(shù)據(jù)分別表示三維加速度。
為校驗(yàn)上傳的環(huán)境數(shù)據(jù)是否被篡改,選取平臺(tái)中的一組數(shù)據(jù)進(jìn)行校驗(yàn)。將該組數(shù)據(jù)在第三方平臺(tái)提供的SHA-256 算法中進(jìn)行運(yùn)算,得出對(duì)應(yīng)的哈希值,如圖6 所示。再調(diào)用區(qū)塊鏈網(wǎng)絡(luò)的檢索接口檢索該哈希值,檢索結(jié)果表明該數(shù)據(jù)的哈希值已在區(qū)塊鏈上,結(jié)果如圖7 所示。根據(jù)SHA-256 算法特性,原數(shù)據(jù)一經(jīng)篡改,對(duì)應(yīng)的哈希值就大不相同,故不能在區(qū)塊鏈上檢索出相應(yīng)結(jié)果。該組環(huán)境數(shù)據(jù)對(duì)應(yīng)的哈希值能夠在區(qū)塊鏈上檢索出結(jié)果,證明環(huán)境數(shù)據(jù)本身未被篡改,同理檢驗(yàn)其他組環(huán)境數(shù)據(jù)也未被篡改。實(shí)驗(yàn)表明,可通過硬件上的SHA-256 算法在嵌入式系統(tǒng)上映射數(shù)據(jù)的哈希值,結(jié)合區(qū)塊鏈技術(shù)驗(yàn)證環(huán)境數(shù)據(jù)在上鏈之前是否被篡改。
圖6 環(huán)境數(shù)據(jù)計(jì)算哈希值
圖7 上鏈哈希值檢索結(jié)果
該文將SHA-256 算法寫入嵌入式硬件系統(tǒng)中,在嵌入式系統(tǒng)上實(shí)現(xiàn)SHA-256 算法對(duì)環(huán)境數(shù)據(jù)的哈希映射。環(huán)境數(shù)據(jù)采集完畢,系統(tǒng)即刻生成對(duì)應(yīng)的哈希值,而后將數(shù)據(jù)及其對(duì)應(yīng)的哈希值分別上傳至數(shù)據(jù)存儲(chǔ)平臺(tái)與區(qū)塊鏈網(wǎng)絡(luò),最終用戶通過哈希值校驗(yàn)數(shù)據(jù)。通過嵌入式硬件設(shè)備上生成的哈希值校驗(yàn)數(shù)據(jù),提升了所采用環(huán)境數(shù)據(jù)的可信度,使得環(huán)境數(shù)據(jù)的檢測(cè)與溯源從服務(wù)層延伸至硬件層。從而采用的樣品監(jiān)測(cè)數(shù)據(jù)更加可靠,樣品檢驗(yàn)檢測(cè)結(jié)果準(zhǔn)確性與可信度更高。由于上傳至區(qū)塊鏈的是哈希值,而非完整的環(huán)境數(shù)據(jù),故降低了區(qū)塊鏈需提供的數(shù)據(jù)存儲(chǔ)量。為適應(yīng)更多的應(yīng)用場(chǎng)景,可嵌入具有能夠準(zhǔn)確控制時(shí)序的操作系統(tǒng),使得系統(tǒng)對(duì)時(shí)間的控制更加準(zhǔn)確。