梁菲菲,宋振繼,梁騰飛
(1.陜西工業(yè)職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,陜西 咸陽 712000;2.秦川機(jī)床工具集團(tuán)股份公司,陜西 寶雞 721009;3.西安航空制動科技有限公司,陜西 咸陽713100)
嵌入式技術(shù)系統(tǒng)具有體積小、專業(yè)性強(qiáng)、可靠性高、功耗低等優(yōu)點(diǎn),被廣泛應(yīng)用于我國工業(yè)領(lǐng)域。嵌入式數(shù)據(jù)采集卡的主要功能是完成采集卡與信號處理系統(tǒng)間的溝通,是一種典型的嵌入式系統(tǒng)應(yīng)用形式,但在嵌入式數(shù)據(jù)采集的過程中,由于其硬件過多,移入的操作系統(tǒng)安全性不強(qiáng),易受到暴力訪問或者惡意攻擊等,造成采集獲取的數(shù)據(jù)完整性較差。相關(guān)研究較多:吉淑嬌[1]利用USB-6009數(shù)據(jù)采集卡、LabVIEW編程工具和Mysql數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)采集系統(tǒng),通過TCP模塊完成信號傳遞,利用標(biāo)識符確定雙通道信號,以此實(shí)現(xiàn)多信號的傳遞功能。唐新懿等人[2]設(shè)計(jì)多通道數(shù)據(jù)采集方案,通過機(jī)箱背板總線實(shí)現(xiàn)數(shù)據(jù)讀出能力,可以有效滿足高速高精度的數(shù)據(jù)采集需求。Bai Y等人[3]設(shè)計(jì)了一種基于PCIe(peripheral component interconnect express)的采集卡,并提出了一種新的采集傳輸框架,可以有效滿足系統(tǒng)回波信號的實(shí)時(shí)處理能力和準(zhǔn)確傳輸?shù)囊蟆?/p>
但是,以上系統(tǒng)都沒解決安全性問題,區(qū)塊鏈?zhǔn)且粋€(gè)共享數(shù)據(jù)庫,存儲于其中的數(shù)據(jù)或信息,具有“不可偽造”“全程留痕”“可以追溯”“公開透明”“集體維護(hù)”等特征。作為鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),區(qū)塊鏈各節(jié)點(diǎn)的數(shù)據(jù)塊依照時(shí)間順序排列,通過加密的方式可以有效保障數(shù)據(jù)結(jié)果的安全性,是一種具有高可靠性的分布式公開數(shù)據(jù)技術(shù)。將區(qū)塊鏈技術(shù)應(yīng)用于嵌入式數(shù)據(jù)采集卡中可提升嵌入式數(shù)據(jù)采集的保密性和應(yīng)用性能。
為了保障嵌入式數(shù)據(jù)采集卡有效運(yùn)行,設(shè)計(jì)基于區(qū)塊鏈的嵌入式數(shù)據(jù)采集抗攻擊系統(tǒng),以期提高數(shù)據(jù)完整性和一致性。
基于區(qū)塊鏈技術(shù)的嵌入式數(shù)據(jù)采集系統(tǒng)基礎(chǔ)架構(gòu)可分為4 層(如圖1所示),即包含數(shù)字簽名等安全性能的保密層、包含驅(qū)動程序等基礎(chǔ)設(shè)定的程序?qū)?、包含?shù)據(jù)產(chǎn)生和信息采集等的收集層、包含驅(qū)動模式的驅(qū)動層。其中,保密層和程序?qū)邮菂^(qū)塊鏈技術(shù)應(yīng)用中具有基礎(chǔ)性特征的數(shù)據(jù)層,可以有效提高嵌入式采集的抗攻擊性能;收集層、驅(qū)動層則是嵌入式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)必不可少的環(huán)節(jié),可以有效提高嵌入式數(shù)據(jù)采集系統(tǒng)的加載能力和使用性能,以此確保數(shù)據(jù)采集的完整性。
為了強(qiáng)化嵌入式數(shù)據(jù)采集的安全性與交互性,需要對區(qū)塊鏈的保密層和程序?qū)舆M(jìn)行優(yōu)化處理。通過兩層的聯(lián)合工作可以優(yōu)化嵌入式數(shù)據(jù)采集的存儲空間和實(shí)際操作能力,增強(qiáng)采集系統(tǒng)信息交互處理能力。
2.1.1 系統(tǒng)保密層模塊
區(qū)塊鏈數(shù)據(jù)層為嵌入式數(shù)據(jù)采集提供了虛擬數(shù)據(jù)存儲空間,將區(qū)塊鏈應(yīng)用技術(shù)與數(shù)字簽名相結(jié)合,提高數(shù)據(jù)采集的安全性,數(shù)字簽名技術(shù)是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,可以確保數(shù)據(jù)采集與傳輸過程中,沒有被惡意篡改,以保證數(shù)據(jù)的安全性能。嵌入式數(shù)據(jù)采集卡以PC104總線為基礎(chǔ),兼容ISA總線,包含計(jì)數(shù)器與光電耦合器件,其在本質(zhì)上可定義為是一種I/O卡。嵌入式數(shù)據(jù)采集卡內(nèi)的計(jì)數(shù)器能夠達(dá)到32路數(shù)字量輸入輸出,并且其中一路輸入具有中斷功能,以此構(gòu)成嵌入式數(shù)據(jù)采集模塊,具體如圖2所示。
在計(jì)算機(jī)發(fā)送運(yùn)行命令后,采集卡接收到嵌入式數(shù)據(jù)采集系統(tǒng)發(fā)出的觸發(fā)信號后開始初始化運(yùn)行[4]。該程序由區(qū)塊鏈數(shù)據(jù)網(wǎng)進(jìn)行控制,將采集到的信息進(jìn)行存儲,供計(jì)算機(jī)讀取。在數(shù)據(jù)采集任務(wù)完成的條件下,計(jì)算機(jī)發(fā)送終止運(yùn)行的命令,嵌入式數(shù)據(jù)采集卡工作完成。
2.1.2 基于區(qū)塊鏈的保密存儲模塊
嵌入式數(shù)據(jù)采集系統(tǒng)采用區(qū)塊鏈技術(shù)進(jìn)行數(shù)據(jù)存儲,提高采集過程的抗攻擊性能。區(qū)塊鏈網(wǎng)絡(luò)在本質(zhì)上可理解為是由集合U={U1,U2,U3,…,Un}構(gòu)成的區(qū)塊鏈網(wǎng)絡(luò),包含DUP與DAP兩重身份[5],可實(shí)現(xiàn)上傳與訪問功能,保證了信息傳輸?shù)陌踩浴?/p>
區(qū)塊鏈保密層中,不同節(jié)點(diǎn)通過無可信中心的數(shù)字簽名模式生成密鑰與簽名。以H和(P,P')分別表示單向哈希函數(shù)和兩個(gè)安全素?cái)?shù);x和Q分別表示GF(P)階上的生成元和素因子;α表示GF(P)階上Q的生成元。基于U內(nèi)不同用戶節(jié)點(diǎn)能夠得到:
式(1)中,a 數(shù)據(jù)存儲于U內(nèi)。以SKi、PKi和y分別表示私鑰、公鑰和群公鑰。U將訪問請求發(fā)送至其他用戶節(jié)點(diǎn)。
其他用戶節(jié)點(diǎn)接收訪問請求后生成子簽名,其他用戶成員Uj將訪問請求O發(fā)送至區(qū)塊鏈數(shù)據(jù)網(wǎng),區(qū)塊鏈網(wǎng)絡(luò)用戶節(jié)點(diǎn)Ui查看O后生成隨機(jī)數(shù)di,并將同意O的命令發(fā)送至區(qū)塊鏈數(shù)據(jù)網(wǎng)。同意O的節(jié)點(diǎn)通過自身密鑰實(shí)現(xiàn)非對稱式加密,與不同節(jié)點(diǎn)接收的構(gòu)建子簽名si,其可通過下式描述:
Ui生成子簽名后,確定符合gcd(ki,P)=1要求的任意數(shù),同時(shí)利用式(3)和式(4)確定H(o)和Qi:
在此條件下,Ui可將信息{si,ki,ri,zi}傳輸至Uj處。Uj在獲取不同節(jié)點(diǎn)傳送的子簽名后,利用式(5)與式(6)確定(R,G):
在此條件下,Uj生成自身對O的數(shù)字簽名。區(qū)塊鏈保密層可以驗(yàn)證不同節(jié)點(diǎn)群簽名的準(zhǔn)確性[6],若通過驗(yàn)證即可在區(qū)塊鏈數(shù)據(jù)網(wǎng)存儲訪問請求,極大程度提高了數(shù)據(jù)信息安全性,提升了嵌入式數(shù)據(jù)采集系統(tǒng)的抗攻擊能力。
2.1.2 程序?qū)釉O(shè)計(jì)
Linux是一款普遍使用的嵌入式操作系統(tǒng),該操作系統(tǒng)在區(qū)塊鏈程序?qū)舆\(yùn)行,具有占用資源少、可裁剪與移植性強(qiáng)等優(yōu)點(diǎn)[7]。區(qū)塊鏈程序?qū)拥膬?nèi)部網(wǎng)絡(luò)節(jié)點(diǎn),在信息采集過程中保持著持續(xù)傳輸?shù)墓蚕頎顟B(tài),對信息數(shù)據(jù)進(jìn)行全方位的采集,大幅度提高了系統(tǒng)采集數(shù)據(jù)的完整性。采集卡作為數(shù)據(jù)采集的主要工具,將采集的數(shù)據(jù)通過外圍接口進(jìn)行轉(zhuǎn)換,利用控制器的Linux 內(nèi)核對數(shù)據(jù)加工處理,使采集到的數(shù)據(jù)可以被嵌入式數(shù)據(jù)采集系統(tǒng)搜索整理。Linux系統(tǒng)要獲取采集卡傳輸?shù)臄?shù)據(jù),需要通過區(qū)塊鏈程序?qū)油瓿刹杉ǔ跏蓟袨?。?jì)算機(jī)系統(tǒng)驅(qū)動程序模塊設(shè)計(jì),如圖3所示。
Linux操作系統(tǒng)內(nèi),運(yùn)行在內(nèi)核中的驅(qū)動程序是嵌入式采集系統(tǒng)設(shè)計(jì)的重要組成部分,若驅(qū)動程序產(chǎn)生錯(cuò)誤,則系統(tǒng)無法有效運(yùn)行。根據(jù)圖3可得,區(qū)塊鏈程序?qū)訌淖笾劣铱蓺w納為四個(gè)部分,分別是:驅(qū)動程序、內(nèi)核、庫和應(yīng)用程序。驅(qū)動程序主要分為字符設(shè)備驅(qū)動模塊、塊設(shè)備驅(qū)動模塊和網(wǎng)絡(luò)設(shè)備驅(qū)動模塊,以此強(qiáng)化嵌入式數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)存儲與備份能力,同時(shí)保證數(shù)據(jù)的完整性和一致性。
為了提高嵌入式數(shù)據(jù)采集系統(tǒng)對抗惡意攻擊及暴力訪問等攻擊行為的能力,選用EVC開發(fā)采集系統(tǒng)的驅(qū)動程序設(shè)計(jì)。區(qū)塊鏈下的嵌入式數(shù)據(jù)采集系統(tǒng)驅(qū)動程序,是由動態(tài)區(qū)塊鏈完成軟件與硬件之間的接口協(xié)議,以此擴(kuò)大惡意行為的搜索范圍,提高數(shù)據(jù)處理能力,保證數(shù)據(jù)完整性。
2.2.1 收集層設(shè)計(jì)
嵌入式數(shù)據(jù)采集系統(tǒng)的核心工作是滿足區(qū)塊鏈?zhǔn)占瘜拥男畔⒉杉吞幚?,因此其?yīng)用程序接口驅(qū)動需要設(shè)計(jì)其對應(yīng)的接口函數(shù),用以保證采集數(shù)據(jù)一致性。對于嵌入式數(shù)據(jù)采集系統(tǒng),在設(shè)計(jì)其驅(qū)動程序過程中需要著重強(qiáng)化設(shè)備初始化、數(shù)據(jù)讀取與程序關(guān)閉等環(huán)節(jié)。因此,采集系統(tǒng)微軟例程需要包含xxx_Open(應(yīng)用程序打開驅(qū)動)、xxx_Close(應(yīng)用程序關(guān)閉驅(qū)動)、xxx_Read(應(yīng)用程序讀取設(shè)備相關(guān)的數(shù)據(jù))等代碼模塊,對其進(jìn)行針對性優(yōu)化后可以直接使用。
全部設(shè)計(jì)代碼模塊內(nèi),xxx_Init(裝載驅(qū)動)最為重要,且具有較高復(fù)雜度[8]。在調(diào)用嵌入式數(shù)據(jù)采集系統(tǒng)驅(qū)動程序的條件下,采集卡管理器可以利用函數(shù)對板卡實(shí)施初始化運(yùn)行。函數(shù)在區(qū)塊鏈下實(shí)現(xiàn)程序驅(qū)動,采用以下數(shù)據(jù)結(jié)構(gòu):
Struct D_DEVICE_NFO
{
DWORD DeviceName[16];
DWORD IOB ase;
DWORD IOL en;
DWORD IRQ;
DWORD D ev Index;
HANDLE h IstEvent;
}TIO_DEVICE_INFO.*PTD_DEVICE_INFO;
上述數(shù)據(jù)結(jié)構(gòu)中{}內(nèi)的內(nèi)容分別為:第一行:嵌入式數(shù)據(jù)采集卡名稱;第二行:嵌入式數(shù)據(jù)采集卡基地址;第三行:嵌入式數(shù)據(jù)采集卡地址長度;第四行:嵌入式數(shù)據(jù)采集卡終端號;第五行:嵌入式數(shù)據(jù)采集卡設(shè)備序號。
針對上述數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)一個(gè)調(diào)用函數(shù):
DWORD IO_Init(DWORD dwContext)
{
IO_DEVICE_INFO pDex.
GetRegParams(dwContext,PDex).
pDex->IOB ase=oX230.
pDex->SysIntr=SYSINTR_FIRMWARE+pDex->IrqNo;
…
Retum(DWORD)pDex
}
在內(nèi)核獲取宏IOTL_IOINLT 消息后即可調(diào)用此函數(shù),以此強(qiáng)化嵌入式數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)信息收集能力,提高數(shù)據(jù)采集完整性。
2.2.2 驅(qū)動層設(shè)計(jì)
區(qū)塊鏈驅(qū)動層應(yīng)用程序可分為兩種加載模式,一種是設(shè)備管理器運(yùn)行時(shí)加載,另一種是應(yīng)用程序自行加載。兩種模式都可以加強(qiáng)驅(qū)動程序同采集系統(tǒng)內(nèi)其他組件間的相互影響作用,可以有效提高嵌入式采集系統(tǒng)的抗攻擊能力。
在嵌入式操作系統(tǒng)運(yùn)行后,設(shè)備管理器依次讀取注冊表內(nèi)HKEY_LOCAL_MACHNEDriversBuiltin 的鍵值,同時(shí)將全部列表內(nèi)的流接口驅(qū)動程序裝入系統(tǒng)內(nèi)。
在設(shè)備管理器無法自動確定與平臺連接的嵌入式數(shù)據(jù)采集卡條件下,可以通過自行加載的形式加載程序,對采集數(shù)據(jù)進(jìn)行過濾處理。流接口驅(qū)動程序?qū)θ亢诵男畔?shí)施搜索處理,剔除惡意攻擊及暴力訪問行為,以此實(shí)現(xiàn)命令信息與響應(yīng)動作間的轉(zhuǎn)換,保證采集數(shù)據(jù)完整性。在區(qū)塊鏈驅(qū)動層引入以下內(nèi)容:
HKEY_LOCAL_MACHINEDriversIO
“Prefix”=“PIO”
“Dll”=“Pc104_IO.dll”
“Index”=sword:1
“Order”=sword:1
“IoBase”=sword:230
“IoLen”=dword:10
“Irq”=dword:7
將寫好的驅(qū)動程序dll文件存儲至windows目錄內(nèi),再通過ActivateDevice()函數(shù)在區(qū)塊鏈驅(qū)動層加載HKEY_LOCAL_MACHNEDriversIO 的信息,由此實(shí)現(xiàn)嵌入式數(shù)據(jù)采集系統(tǒng)的驅(qū)動程序加載,提高系統(tǒng)抗攻擊能力。
實(shí)驗(yàn)為驗(yàn)證本文所設(shè)計(jì)的基于區(qū)塊鏈的嵌入式數(shù)據(jù)抗攻擊采集系統(tǒng)在實(shí)際應(yīng)用測試中的性能,針對本文方法設(shè)計(jì)的基于區(qū)塊鏈技術(shù)的嵌入式數(shù)據(jù)采集系統(tǒng)作為應(yīng)用對象,測試本文設(shè)計(jì)系統(tǒng)的應(yīng)用性能。
本文所設(shè)計(jì)的系統(tǒng)在完成設(shè)計(jì)投入應(yīng)用前需進(jìn)行調(diào)試。由于區(qū)塊鏈驅(qū)動技術(shù)不具備運(yùn)行界面,因此為有效獲取驅(qū)動程序的運(yùn)行情況,需編寫用于檢驗(yàn)的調(diào)試程序,用于驗(yàn)證嵌入式數(shù)據(jù)采集系統(tǒng)實(shí)際應(yīng)用性能。
測試本文所設(shè)計(jì)系統(tǒng)的數(shù)據(jù)傳輸速率結(jié)果如圖4所示。
由于應(yīng)用對象具有32 路輸入輸出,因此調(diào)試過程中分析32 路輸入輸出的驅(qū)動傳輸速率。分析圖4得到,驅(qū)動調(diào)試過程中,應(yīng)用對象各路輸入輸出的數(shù)據(jù)流均高于45MBbs,與相關(guān)文獻(xiàn)中的20MBbs—40MBbs 相比,本文方法所設(shè)計(jì)的驅(qū)動程序驅(qū)動下應(yīng)用對象的驅(qū)動傳輸速率顯著提升,由此說明本文所設(shè)計(jì)系統(tǒng)具有顯著的應(yīng)用性優(yōu)勢。
測試本文所設(shè)計(jì)系統(tǒng)采集數(shù)據(jù)的完整性,多個(gè)區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)對若干條采集數(shù)據(jù)的完整性測試結(jié)果以及統(tǒng)計(jì)結(jié)果如圖5所示。
分析圖5得到,本文所設(shè)計(jì)系統(tǒng)的不同數(shù)據(jù)完整性測試結(jié)果完全相同。由此說明本文所設(shè)計(jì)系統(tǒng)能夠保障嵌入式數(shù)據(jù)采集的完整性。
區(qū)塊鏈技術(shù)中Leader節(jié)點(diǎn)的主要功能是確保在區(qū)塊鏈網(wǎng)絡(luò)內(nèi)不同用戶節(jié)點(diǎn)區(qū)塊鏈的一致性。進(jìn)行驗(yàn)證能夠保障區(qū)塊鏈網(wǎng)絡(luò)內(nèi)Leader節(jié)點(diǎn)不能偽造訪問請求。不同節(jié)點(diǎn)區(qū)塊鏈長度相等是驗(yàn)證的前提條件,嵌入式數(shù)據(jù)在確定Leader 節(jié)點(diǎn)后,不同數(shù)據(jù)節(jié)點(diǎn)區(qū)塊鏈長度在不同時(shí)間條件下的波動情況如圖6所示。
分析圖6得到,采用本文系統(tǒng)下,應(yīng)用對象確定Leader 節(jié)點(diǎn)30ms 后區(qū)塊鏈網(wǎng)絡(luò)內(nèi)不同節(jié)點(diǎn)區(qū)塊鏈長度即可達(dá)到一致,由此說明本文設(shè)計(jì)的采集系統(tǒng)能夠保障嵌入式數(shù)據(jù)節(jié)點(diǎn)長度一致,同時(shí)還能夠說明在本文系統(tǒng)區(qū)塊鏈內(nèi)不同節(jié)點(diǎn)均有效參與了訪問控制。上述實(shí)驗(yàn)結(jié)果說明本文所設(shè)計(jì)系統(tǒng)可有效確保所采集數(shù)據(jù)的安全性以及訪問請求的合理性。
測試本文所設(shè)計(jì)系統(tǒng)的抗攻擊性,令攻擊者對系統(tǒng)進(jìn)行暴力破解和物理攻擊,成功攻擊區(qū)塊的概率與區(qū)塊差距間相關(guān)性波動結(jié)果如圖7所示。
分析圖7得到,在安全大素?cái)?shù)生成元小于0.5的條件下,攻擊者成功攻擊區(qū)塊的概率同區(qū)塊差距之間呈反比例相關(guān),即區(qū)塊差距越大,攻擊者成功攻擊區(qū)塊的概率越??;相反,在安全大素?cái)?shù)生成元大于等于0.5的條件下,攻擊者即可成功攻擊下一個(gè)區(qū)塊。在應(yīng)用對象中,安全大素?cái)?shù)生成元基本控制在0.4以下,由此說明在本文所設(shè)計(jì)的系統(tǒng)在嵌入式數(shù)據(jù)采集過程中具有較高的抗攻擊能力。
本文設(shè)計(jì)了一種以區(qū)塊鏈技術(shù)為基礎(chǔ)的嵌入式數(shù)據(jù)采集系統(tǒng)。相比于傳統(tǒng)的數(shù)據(jù)采集方式,應(yīng)用區(qū)塊鏈技術(shù)在數(shù)據(jù)采集過程中具有較好的抗攻擊能力,在確保采集數(shù)據(jù)的完整性和一致性的同時(shí)也保證了數(shù)據(jù)傳輸速率。