關(guān)于車用迢信協(xié)議中的假冒錯(cuò)
3 CAN對(duì)抗假冒錯(cuò)的措施
CAN協(xié)議的CRC檢驗(yàn)是在加入與去掉填充位后進(jìn)行的,因此其報(bào)錯(cuò)能力受填充位的影響很大,要靠CRC來對(duì)抗發(fā)生在傳送中誤碼形成的假冒錯(cuò)是不夠的。因?yàn)閭魉椭械谋忍劐e(cuò)在接收節(jié)點(diǎn)可能引起后面比特流的錯(cuò)誤解釋,從而把填充位誤作數(shù)據(jù)而未剔除,或?qū)?shù)據(jù)位解讀為填充位誤剔除,如圖3所示。此時(shí)原來發(fā)送的比特流會(huì)向前或向后錯(cuò)一位,從而形成大量的誤碼(最壞的情況下,錯(cuò)位之后對(duì)CRC而言均為誤碼),很容易超出CRC的有效檢錯(cuò)范圍,造成CRC的漏檢(將錯(cuò)幀誤判為有效幀),由于填充過程的影響,單個(gè)比特錯(cuò)的后果被放大了。所幸的是CAN還有其他的判錯(cuò)手段,例如格式錯(cuò),那些漏過CRC校驗(yàn)的幀還可能被攔下。通過仿真,由CRC與各種判錯(cuò)手段綜合的結(jié)果其漏判率還是比較小的,約為O.1×10-6,但是,并不是CAN協(xié)議所聲稱的可以攔截5個(gè)以下的單個(gè)比特錯(cuò)(HD=6)。
CAN協(xié)議的2.0B版采用32位的仲裁區(qū),它可以自動(dòng)區(qū)分采用11位ID的消息(標(biāo)準(zhǔn)格式)或29位ID的消息(擴(kuò)展格式)。如果在cc發(fā)送之前或發(fā)送中ID及另三位內(nèi)容有變化,就有假冒發(fā)生的可能性。
CAN總線可以用ID的重新分配實(shí)現(xiàn)對(duì)假冒錯(cuò)的預(yù)防,這種重新分配的可能性在于29位的ID空間非常大,即使用去一部分對(duì)抗假冒錯(cuò),剩余的部分依然足夠消息的分配。對(duì)29位ID中取一部分作數(shù)字簽名,這個(gè)數(shù)字簽名為離線時(shí)用CRC生成的校驗(yàn)和。因此,仲裁域內(nèi)發(fā)生等于該CRC生成多項(xiàng)式的Hamming距離個(gè)比特同時(shí)錯(cuò)才會(huì)有一個(gè)假冒錯(cuò)。小于Hamming距離的比特錯(cuò)將是無效ID,該消息將被接收節(jié)點(diǎn)的過濾器濾掉,從而使假冒錯(cuò)無法產(chǎn)生影響。雖然在這里并沒有進(jìn)行接收ID的校驗(yàn)計(jì)算,因ID分配已經(jīng)考慮了有效ID之間的距離,所以固定的接收濾波器足以防止假冒錯(cuò)。這樣,無需增加軟硬件的開銷,CAN便可以實(shí)現(xiàn)與FlexRay同樣的抗假冒錯(cuò)功能。數(shù)字簽名的生成方法,可以在現(xiàn)有的資料中選用,或者重新設(shè)計(jì)。例如參考文獻(xiàn),若取16階的生成多項(xiàng)式,29位ID中去掉16位作數(shù)字簽名后還剩13位,應(yīng)能滿足應(yīng)用之需,須知FlexRay僅定義了ll位的ID。也可以取更短的數(shù)字簽名,例如和FlexRay相同的11位CRC生成多項(xiàng)式(它的CRC校驗(yàn)覆蓋區(qū)為31位,Hamming距離為6),以留出更多的可用消息種類。重新設(shè)計(jì)時(shí)可以參考BCH碼的設(shè)計(jì)方法設(shè)計(jì)生成多項(xiàng)式,以保證所需的Hamming距離。選用16階的CRC生成多項(xiàng)式時(shí),它可以保證15位頭部Hamming距離為8,在仲裁域ID的前13位內(nèi)因CAN填充規(guī)則造成1位錯(cuò)被放大為多位錯(cuò)的情況,被檢出的概率就增大。該多項(xiàng)式為:
選用16位CRC校驗(yàn)和時(shí)留給消息種類的大小為213=8 192種。采用上述方案,CAN在對(duì)抗假冒錯(cuò)上要比FlexRay的方法簡(jiǎn)單。
CAN仲裁域里的SRR、IDE和RTR位的誤碼可能引起通信控制器對(duì)輸入比特流的解釋變化,但是可以采取措施防止假冒錯(cuò)。首先,如果仲裁域第12位、13位發(fā)生誤碼,就有可能在CAN2.0B的標(biāo)準(zhǔn)格式和擴(kuò)展格式間產(chǎn)生轉(zhuǎn)換(如擴(kuò)展格式誤為標(biāo)準(zhǔn)格式),那么節(jié)點(diǎn)對(duì)此時(shí)發(fā)生的假冒未加保護(hù),因此應(yīng)避免在系統(tǒng)里使用標(biāo)準(zhǔn)格式。標(biāo)準(zhǔn)格式誤為擴(kuò)展格式的情況,因幀長(zhǎng)等被解釋為ID,被濾波器及CAN的其他檢錯(cuò)措施攔下的可能性增大。其次,在RTR位的誤碼將數(shù)據(jù)幀誤為遠(yuǎn)程幀時(shí)接收節(jié)點(diǎn)收不到數(shù)據(jù),屬于故障一靜默(fault―silent),是一般容錯(cuò)理論所要求的,遠(yuǎn)程幀請(qǐng)求誤為數(shù)據(jù)幀時(shí),有可能引起不良后果,這是另一個(gè)問題,但同時(shí)存在的假冒錯(cuò)將由濾波器攔截住。
添加ID的數(shù)字簽名并不改變?cè)瓉淼南⒌膬?yōu)先級(jí)分配,因?yàn)閮?yōu)先級(jí)只在ID的前面部分確定好了。因此,采用不同數(shù)字簽名的消息可以在同一系統(tǒng)里應(yīng)用,只要收發(fā)節(jié)點(diǎn)的約定一致即可。但是,隨便混用會(huì)使ID之間的距離變小。所以對(duì)一個(gè)高層協(xié)議,為了保證抗假冒錯(cuò)的能力不變,應(yīng)該采用統(tǒng)一的CRC生成多項(xiàng)式。從OEM廠的總體利益看,開放其協(xié)議的數(shù)字簽名方式較為有利。
4 小 結(jié)
假冒錯(cuò)在應(yīng)用中是不能接受的,與一般數(shù)據(jù)錯(cuò)造成消息數(shù)據(jù)量上的變化不同,它可能造成消息質(zhì)的變化。本文從信息傳遞的整個(gè)流程出發(fā),討論受干擾時(shí)的比特出錯(cuò)量,從而作為分析抗假冒錯(cuò)措施的依據(jù)。作為新一代的車用通信協(xié)議FlexRay,其頭部CRC校驗(yàn)的覆蓋面似嫌不足,由于帶寬的增加誤碼率可能增大;尾部CRC檢驗(yàn)也可能不夠,從而仍有漏過假冒錯(cuò)的可能。本文討論的CAN的抗假冒錯(cuò)方案實(shí)現(xiàn)比較簡(jiǎn)單,可以提升CAN的可靠度。需要指出,CAN的抗假冒錯(cuò)方案是基于出錯(cuò)時(shí)被丟棄的原理,它并不報(bào)錯(cuò),發(fā)送節(jié)點(diǎn)無法知道已發(fā)送了錯(cuò)幀,從而進(jìn)行重發(fā)。所以對(duì)那些重要的消息,在應(yīng)用上仍要設(shè)置其他的保障措施。例如,預(yù)定時(shí)限到而未收到數(shù)據(jù)則通知應(yīng)用層,或請(qǐng)求發(fā)送。由于CAN填充位規(guī)則對(duì)CRC的干擾,使CRC攔截誤碼的能力下降,這是不理想的地方。雖然由CAN各種檢錯(cuò)機(jī)制造成的漏檢很小,但對(duì)一些重要的消息還應(yīng)添加額外的校驗(yàn)。CAN的消息數(shù)據(jù)比較短,一般只有一二字節(jié)。添加1個(gè)8位的CRC校驗(yàn)是一種可行的方法,在ECU增加的軟件開銷不會(huì)太大,但可進(jìn)一步提高CAN的可信度。
對(duì)于較小的或?qū)S玫南到y(tǒng),也可以用本文的方案把固定的事件信號(hào)加數(shù)字簽名一起傳送,以提高通信的可靠性。例如開關(guān)信號(hào)分別用2個(gè)ID來表示1或O,傳送時(shí)還有數(shù)據(jù)1或O,這樣用多重檢錯(cuò)方法來防止CAN的CRC檢驗(yàn)的軟肋。
評(píng)論