利用XC2300系列微控制器實(shí)現(xiàn)CAN網(wǎng)絡(luò)安全
CRC或存儲檢查模塊
本文引用地址:http://www.ex-cimer.com/article/93434.htm為保證程序和數(shù)據(jù)等存儲信息的完整性,需要進(jìn)行CRC(循環(huán)冗余檢查)。CRC的值通常針對信息塊進(jìn)行計(jì)算,并被儲存在某個存儲區(qū)域。在檢查信息時,重新計(jì)算CRC的值,并與儲存的CRC值對比。這既可在啟動等時點(diǎn)單次進(jìn)行,也可在運(yùn)行期間定期進(jìn)行。CRC也能像CAN協(xié)議那樣保護(hù)數(shù)據(jù)通信,還能保護(hù)要求最高數(shù)據(jù)完整性的單個關(guān)鍵安全數(shù)據(jù)或變量。當(dāng)然,軟件也能非常靈活地完成CRC計(jì)算,但使用專用硬件的效率更高,因?yàn)楹笳呖商岣哂?jì)算速度并將CPU從此類任務(wù)中解放出來。利用DMA(直接內(nèi)存存取)等讀寫功能,可以在無需CPU參與的情況下,在后臺進(jìn)行CRC檢查,將CRC檢查與外設(shè)初始化分開。
FLASH 和RAM上的ECC
在存儲區(qū)域使用CRC機(jī)制并由CPU啟動的同時,可以延伸CRC存儲內(nèi)容保護(hù)理念,在存儲模塊本身增加這類機(jī)制。由特殊ECC(糾錯碼)多項(xiàng)式生成的附加存儲校檢和來保護(hù)單個存儲數(shù)據(jù)。通過這個校檢和,能檢測到數(shù)據(jù)的意外變化,并在將數(shù)據(jù)提交CPU之前自動予以糾正。這是CRC和ECC的主要區(qū)別。例如,可以檢測到兩個比特錯誤,其中一個比特可被糾正,具體取決于所采用的多項(xiàng)式和存儲ECC值的長度。在進(jìn)行寫入訪問時,生成ECC值,除存儲所寫入的數(shù)據(jù)外,所生成的ECC值也被存儲。在進(jìn)行讀取訪問時,數(shù)據(jù)的ECC被重新計(jì)算,并自主地與所存儲的值對比。該機(jī)制由硬件執(zhí)行,從系統(tǒng)的角度來看,不需要增加總線周期。目前,ECC一般用于閃存,但出于安全需要,RAM存儲器也采用ECC。
圖4 利用分析器模式構(gòu)建低成本冗余路徑,檢測被阻斷或受到干擾的報文傳輸
評論