本發(fā)明涉及一種基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法。它利用數(shù)據(jù)的哈希值作為數(shù)據(jù)完整性校驗(yàn)信息,存儲(chǔ)在校驗(yàn)信息存儲(chǔ)部分,在靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù)完整性保護(hù)過(guò)程中,校驗(yàn)信息存儲(chǔ)部分中的原始校驗(yàn)信息與數(shù)據(jù)讀取過(guò)程中實(shí)時(shí)生成的校驗(yàn)信息進(jìn)行對(duì)比,可檢測(cè)針對(duì)數(shù)據(jù)完整性的攻擊。屬于嵌入式系統(tǒng)安全技術(shù)領(lǐng)域。
背景技術(shù):
嵌入式系統(tǒng)在我們的生活、科技領(lǐng)域都受到了大范圍應(yīng)用,包括航空航天、軍事、金融等領(lǐng)域,這些領(lǐng)域?qū)τ诎踩母咭笠簿褪沟们度胧较到y(tǒng)的安全問(wèn)題成為了研究的熱點(diǎn)。由于嵌入式系統(tǒng)是一個(gè)資源受限的系統(tǒng),通過(guò)運(yùn)行病毒掃描和防入侵軟件來(lái)抵御針對(duì)嵌入式系統(tǒng)的攻擊會(huì)帶來(lái)較大的功耗,并且會(huì)影響嵌入式系統(tǒng)的性能。因此,從硬件角度來(lái)解決嵌入式系統(tǒng)的安全問(wèn)題是非常必要的。
應(yīng)用程序分為指令部分和代碼部分,而現(xiàn)有的對(duì)嵌入式系統(tǒng)安全的研究主要是針對(duì)指令部分來(lái)進(jìn)行的,因?yàn)橄噍^于指令,數(shù)據(jù)的保護(hù)具有更大的難度,原因如下:對(duì)內(nèi)存而言,處理器對(duì)指令只存在讀取操作,而對(duì)數(shù)據(jù)則包括了讀取和寫(xiě)入兩種操作;另一方面,指令部分在編譯鏈接后是保持不變的,但數(shù)據(jù)部分分為靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù),其中靜態(tài)數(shù)據(jù)的值在編譯鏈接后是確定的,而動(dòng)態(tài)數(shù)據(jù)的值是變化的,增加了監(jiān)測(cè)的難度。由于數(shù)據(jù)的完整性同樣對(duì)程序的運(yùn)行起到了決定性的作用,所以保護(hù)嵌入式系統(tǒng)數(shù)據(jù)完整性同樣重要。
目前,對(duì)嵌入式系統(tǒng)數(shù)據(jù)完整性的研究普遍只考慮數(shù)據(jù)在進(jìn)出內(nèi)存時(shí)的情況,而本發(fā)明則充分考慮了處理器、數(shù)據(jù)緩存和內(nèi)存組成的整個(gè)數(shù)據(jù)處理系統(tǒng),通過(guò)研究數(shù)據(jù)在這個(gè)系統(tǒng)中的處理過(guò)程,對(duì)嵌入式系統(tǒng)數(shù)據(jù)完整性進(jìn)行了保護(hù)。
技術(shù)實(shí)現(xiàn)要素:
1、目的:
本發(fā)明的目的是提供一種基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法,它利用數(shù)據(jù)的哈希值作為數(shù)據(jù)完整性校驗(yàn)信息,存儲(chǔ)在校驗(yàn)信息存儲(chǔ)部分,在靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù)完整性保護(hù)過(guò)程中,校驗(yàn)信息存儲(chǔ)部分中的原始校驗(yàn)信息與數(shù)據(jù)讀取過(guò)程中實(shí)時(shí)生成的校驗(yàn)信息進(jìn)行對(duì)比,可檢測(cè)針對(duì)數(shù)據(jù)完整性的攻擊。
2、技術(shù)方案:
本發(fā)明涉及一種基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法。它利用數(shù)據(jù)的哈希值作為數(shù)據(jù)完整性校驗(yàn)信息,存儲(chǔ)在校驗(yàn)信息存儲(chǔ)部分,在靜態(tài)和動(dòng)態(tài)數(shù)據(jù)完整性保護(hù)過(guò)程中,校驗(yàn)信息存儲(chǔ)部分中的原始校驗(yàn)信息與數(shù)據(jù)讀取過(guò)程中實(shí)時(shí)生成的校驗(yàn)信息進(jìn)行對(duì)比,可檢測(cè)針對(duì)數(shù)據(jù)完整性的攻擊。在程序運(yùn)行過(guò)程中,針對(duì)靜態(tài)數(shù)據(jù),將其校驗(yàn)信息提前存入校驗(yàn)信息存儲(chǔ)部分中相應(yīng)的位置,在處理器讀取數(shù)據(jù)時(shí),如果數(shù)據(jù)緩存失靶,則將預(yù)先存儲(chǔ)的校驗(yàn)信息與所讀數(shù)據(jù)的校驗(yàn)信息進(jìn)行對(duì)比。針對(duì)動(dòng)態(tài)數(shù)據(jù),當(dāng)處理器把數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存時(shí),生成校驗(yàn)信息存儲(chǔ)到校驗(yàn)信息存儲(chǔ)部分,在讀取新數(shù)據(jù)時(shí),當(dāng)數(shù)據(jù)緩存失靶并要替換原數(shù)據(jù)的時(shí)候,則原數(shù)據(jù)要寫(xiě)入到內(nèi)存中,此時(shí)生成原數(shù)據(jù)的校驗(yàn)信息并與校驗(yàn)信息存儲(chǔ)部分中的校驗(yàn)信息進(jìn)行比較。對(duì)比結(jié)果相同則表明數(shù)據(jù)完整且沒(méi)有被篡改,不同則表明數(shù)據(jù)完整性受到了攻擊。
本發(fā)明一種基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法,該方法具體步驟包括:
步驟1,確定校驗(yàn)信息長(zhǎng)度;其中,校驗(yàn)信息長(zhǎng)度會(huì)根據(jù)生成哈希值的雜湊算法的復(fù)雜程度和具體的安全需求綜合確定;
所述的“哈希值”是指將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小二進(jìn)制值,這個(gè)較小二進(jìn)制值就稱為哈希值,哈希值是一段數(shù)據(jù)唯一的數(shù)值表現(xiàn)形式;
所述的“雜湊算法”是指把任意長(zhǎng)度的輸入消息串變化為固定長(zhǎng)的輸出串的一種算法,其也被稱為雜湊函數(shù)或雜湊運(yùn)算;
步驟2,讀入靜態(tài)數(shù)據(jù)基本塊文件;其中,靜態(tài)數(shù)據(jù)基本塊文件指的是由多個(gè)靜態(tài)數(shù)據(jù)基本塊組成的文件,每個(gè)靜態(tài)數(shù)據(jù)基本塊中包括靜態(tài)數(shù)據(jù)起止地址和靜態(tài)數(shù)據(jù)兩部分;
步驟3,對(duì)每一個(gè)靜態(tài)數(shù)據(jù)基本塊,將數(shù)據(jù)作為步驟1中雜湊算法的輸入,輸出的哈希值作為校驗(yàn)信息按照靜態(tài)數(shù)據(jù)起止地址存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中;其中,校驗(yàn)信息存儲(chǔ)部分與數(shù)據(jù)緩存共用地址;
步驟4,對(duì)于靜態(tài)數(shù)據(jù),在處理器檢測(cè)到讀取靜態(tài)數(shù)據(jù)命令時(shí),將讀取的內(nèi)存中的靜態(tài)數(shù)據(jù)作為步驟1中雜湊算法的輸入;
步驟5,將步驟4中雜湊算法的輸出和校驗(yàn)信息存儲(chǔ)部分中的校驗(yàn)信息進(jìn)行對(duì)比,通過(guò)比較結(jié)果判斷靜態(tài)數(shù)據(jù)的完整性是否受到攻擊;
步驟6,對(duì)于動(dòng)態(tài)數(shù)據(jù),在處理器把動(dòng)態(tài)數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存的時(shí)候,計(jì)算此動(dòng)態(tài)數(shù)據(jù)的校驗(yàn)信息,并按照動(dòng)態(tài)數(shù)據(jù)的起止地址把校驗(yàn)信息存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中;
步驟7,當(dāng)處理器檢測(cè)到讀取數(shù)據(jù)命令時(shí),如果數(shù)據(jù)緩存失靶,則要讀入新數(shù)據(jù)替換數(shù)據(jù)緩存中的原有動(dòng)態(tài)數(shù)據(jù),原有動(dòng)態(tài)數(shù)據(jù)則要寫(xiě)入到內(nèi)存中,此時(shí)對(duì)原有動(dòng)態(tài)數(shù)據(jù)使用雜湊算法生成新的校驗(yàn)信息;
步驟8,把步驟7中新的校驗(yàn)信息和之前存儲(chǔ)在檢驗(yàn)信息存儲(chǔ)部分的校驗(yàn)信息進(jìn)行比較;如果比較結(jié)果相同,則表明動(dòng)態(tài)數(shù)據(jù)完整且沒(méi)有被篡改;如果比較結(jié)果不同,表明動(dòng)態(tài)數(shù)據(jù)完整性受到了攻擊;
通過(guò)以上步驟,完成了對(duì)嵌入式系統(tǒng)數(shù)據(jù)完整性的保護(hù),可以實(shí)現(xiàn)對(duì)數(shù)據(jù)完整性的實(shí)時(shí)監(jiān)測(cè),從而提高了嵌入式系統(tǒng)的安全性,解決了由于嵌入式系統(tǒng)數(shù)據(jù)完整性所引發(fā)的安全問(wèn)題。
其中,在步驟3中所述的“對(duì)每一個(gè)靜態(tài)數(shù)據(jù)基本塊,將數(shù)據(jù)作為步驟1中雜湊算法的輸入,輸出的哈希值作為校驗(yàn)信息按照靜態(tài)數(shù)據(jù)起止地址存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中;其中,校驗(yàn)信息存儲(chǔ)部分與數(shù)據(jù)緩存共用地址”,其作法如下:
使用雜湊算法生成靜態(tài)數(shù)據(jù)的校驗(yàn)信息,根據(jù)靜態(tài)數(shù)據(jù)的地址把校驗(yàn)信息存儲(chǔ)到校驗(yàn)信息存儲(chǔ)部分的相應(yīng)位置,校驗(yàn)信息存儲(chǔ)部分與數(shù)據(jù)緩存共用地址,直接使用數(shù)據(jù)緩存的地址來(lái)表示對(duì)應(yīng)的靜態(tài)數(shù)據(jù)的地址,節(jié)省靜態(tài)數(shù)據(jù)地址所需要的存儲(chǔ)空間;
其中,在步驟6中所述的“對(duì)于動(dòng)態(tài)數(shù)據(jù),在處理器把動(dòng)態(tài)數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存的時(shí)候,計(jì)算此動(dòng)態(tài)數(shù)據(jù)的校驗(yàn)信息,并按照動(dòng)態(tài)數(shù)據(jù)的起止地址把校驗(yàn)信息存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中”,其作法如下:
在檢測(cè)到處理器的存儲(chǔ)指令時(shí),提取出動(dòng)態(tài)數(shù)據(jù),作為雜湊算法的輸入生成校驗(yàn)信息,并根據(jù)此動(dòng)態(tài)數(shù)據(jù)的地址信息存入到校驗(yàn)信息存儲(chǔ)部分中。
3、優(yōu)點(diǎn)及功效:
這種基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法具有以下幾個(gè)優(yōu)點(diǎn):
(1)本專利通過(guò)將校驗(yàn)信息存儲(chǔ)部分與數(shù)據(jù)緩存共用地址,節(jié)約了地址信息存儲(chǔ)空間,節(jié)省了片上資源。
(2)本專利使用128位的數(shù)據(jù)塊作為生成哈希值的雜湊算法的輸入,減少了雜湊函數(shù)所要進(jìn)行計(jì)算的次數(shù),也使得保護(hù)的效率得到了提高。
附圖說(shuō)明
圖1是本發(fā)明所述的保護(hù)方法流程圖。
具體實(shí)施方式
本發(fā)明利用數(shù)據(jù)的哈希值作為數(shù)據(jù)完整性校驗(yàn)信息,存儲(chǔ)在校驗(yàn)信息存儲(chǔ)部分,在靜態(tài)和動(dòng)態(tài)數(shù)據(jù)完整性保護(hù)過(guò)程中,校驗(yàn)信息存儲(chǔ)部分中的原始校驗(yàn)信息與數(shù)據(jù)讀取過(guò)程中實(shí)時(shí)生成的校驗(yàn)信息進(jìn)行對(duì)比,可檢測(cè)針對(duì)數(shù)據(jù)完整性的攻擊。在程序運(yùn)行過(guò)程中,針對(duì)靜態(tài)數(shù)據(jù),將其校驗(yàn)信息提前存入校驗(yàn)信息存儲(chǔ)部分中相應(yīng)的位置,在處理器讀取數(shù)據(jù)時(shí),如果數(shù)據(jù)緩存失靶,則將預(yù)先存儲(chǔ)的校驗(yàn)信息與所讀數(shù)據(jù)的校驗(yàn)信息進(jìn)行對(duì)比。針對(duì)動(dòng)態(tài)數(shù)據(jù),當(dāng)處理器把數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存時(shí),生成校驗(yàn)信息存儲(chǔ)到校驗(yàn)信息存儲(chǔ)部分,在讀取新數(shù)據(jù)時(shí),當(dāng)數(shù)據(jù)緩存失靶并要替換原數(shù)據(jù)的時(shí)候,則原數(shù)據(jù)要寫(xiě)入到內(nèi)存中,此時(shí)生成原數(shù)據(jù)的校驗(yàn)信息并與校驗(yàn)信息存儲(chǔ)部分中的校驗(yàn)信息進(jìn)行比較。對(duì)比結(jié)果相同則表明數(shù)據(jù)完整且沒(méi)有被篡改,不同則表明數(shù)據(jù)完整性受到了攻擊。
本發(fā)明基于數(shù)據(jù)緩存擴(kuò)充的嵌入式系統(tǒng)數(shù)據(jù)完整性保護(hù)方法,見(jiàn)圖1所示,其具體步驟包括:
步驟1,確定校驗(yàn)信息長(zhǎng)度;其中,校驗(yàn)信息長(zhǎng)度會(huì)根據(jù)生成哈希值的雜湊算法的復(fù)雜程度和具體的安全需求綜合確定;
步驟2,讀入靜態(tài)數(shù)據(jù)基本塊文件;其中,靜態(tài)數(shù)據(jù)基本塊文件指的是由多個(gè)靜態(tài)數(shù)據(jù)基本塊組成的文件,每個(gè)靜態(tài)數(shù)據(jù)基本塊中包括靜態(tài)數(shù)據(jù)起止地址和靜態(tài)數(shù)據(jù)兩部分;
步驟3,對(duì)每一個(gè)靜態(tài)數(shù)據(jù)基本塊,將數(shù)據(jù)作為步驟1中雜湊算法的輸入,輸出的哈希值作為校驗(yàn)信息按照靜態(tài)數(shù)據(jù)起止地址存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中;其中,校驗(yàn)信息存儲(chǔ)部分與數(shù)據(jù)緩存共用地址;
步驟4,對(duì)于靜態(tài)數(shù)據(jù),在處理器檢測(cè)到讀取靜態(tài)數(shù)據(jù)命令時(shí),將讀取的內(nèi)存中的靜態(tài)數(shù)據(jù)作為步驟1中雜湊算法的輸入;
步驟5,將步驟4中雜湊算法的輸出和校驗(yàn)信息存儲(chǔ)部分中的校驗(yàn)信息進(jìn)行對(duì)比,通過(guò)比較結(jié)果判斷靜態(tài)數(shù)據(jù)的完整性是否受到攻擊;
步驟6,對(duì)于動(dòng)態(tài)數(shù)據(jù),在處理器把動(dòng)態(tài)數(shù)據(jù)寫(xiě)入到數(shù)據(jù)緩存的時(shí)候,計(jì)算此動(dòng)態(tài)數(shù)據(jù)的校驗(yàn)信息,并按照動(dòng)態(tài)數(shù)據(jù)的起止地址把校驗(yàn)信息存入到相應(yīng)的校驗(yàn)信息存儲(chǔ)部分中;
步驟7,當(dāng)處理器檢測(cè)到讀取數(shù)據(jù)命令時(shí),如果數(shù)據(jù)緩存失靶,則要讀入新數(shù)據(jù)替換數(shù)據(jù)緩存中的原有動(dòng)態(tài)數(shù)據(jù),原有動(dòng)態(tài)數(shù)據(jù)則要寫(xiě)入到內(nèi)存中,此時(shí)對(duì)原有動(dòng)態(tài)數(shù)據(jù)使用雜湊算法生成新的校驗(yàn)信息;
步驟8,把步驟7中新的校驗(yàn)信息和之前存儲(chǔ)在檢驗(yàn)信息存儲(chǔ)部分的校驗(yàn)信息進(jìn)行比較;如果比較結(jié)果相同,則表明動(dòng)態(tài)數(shù)據(jù)完整且沒(méi)有被篡改。如果比較結(jié)果不同,表明動(dòng)態(tài)數(shù)據(jù)完整性受到了攻擊。
通過(guò)以上步驟,完成了對(duì)嵌入式系統(tǒng)數(shù)據(jù)完整性的保護(hù),可以實(shí)現(xiàn)對(duì)數(shù)據(jù)完整性的實(shí)時(shí)監(jiān)測(cè),從而提高了嵌入式系統(tǒng)的安全性,解決了由于嵌入式系統(tǒng)數(shù)據(jù)完整性所引發(fā)的安全問(wèn)題。