AES加密算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

隨著全球汽車保有量的不斷增長(zhǎng),汽車防盜日益成為人們所關(guān)注的焦點(diǎn)。采用了身份認(rèn)證技術(shù)的發(fā)動(dòng)機(jī)防盜系統(tǒng)是一種新型的汽車防盜系統(tǒng),使發(fā)動(dòng)機(jī)不能通過(guò)跨接導(dǎo)線來(lái)啟動(dòng),實(shí)現(xiàn)了直接針對(duì)發(fā)動(dòng)機(jī)的防盜,極大提高了汽車防盜性能。密碼驗(yàn)證是實(shí)現(xiàn)身份認(rèn)證技術(shù)的最常用方案。AES加密算法是新一代的數(shù)據(jù)加密標(biāo)準(zhǔn),屬于對(duì)稱加密算法,運(yùn)算迅速而又對(duì)硬件配置要求低,非常適合發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證的加密運(yùn)算。

一、AES加密算法理論基礎(chǔ)

AES(AdvancedEncryptionStandard)美國(guó)高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn),是新一代的分組數(shù)據(jù)加密標(biāo)準(zhǔn)。它采用了Rijndael算法,這是一個(gè)數(shù)據(jù)塊長(zhǎng)度和密鑰長(zhǎng)度都可變的迭代分組加密算法,分組長(zhǎng)度為128-bit,數(shù)據(jù)塊長(zhǎng)度和密鑰長(zhǎng)度可分別為128-bit、192-bit、256-bit,可根據(jù)加密強(qiáng)度要求進(jìn)行選擇。AES所有的運(yùn)算都在一個(gè)4bytes×4bytes的狀態(tài)矩陣上進(jìn)行,因此在加密前要對(duì)數(shù)據(jù)塊做預(yù)處理。首先把數(shù)據(jù)塊寫(xiě)成字的形式,再把字記為列的形式,如表1所示:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

其中,每個(gè)ai,j表示一個(gè)8-bit的字節(jié),每列就是一個(gè)字aj=(a0,j,a1,j,a2,j,a3,j)。我們用Nb表示一個(gè)數(shù)據(jù)塊中字的個(gè)數(shù),那么Nb=4、6或8。類似地,用Nk表示密鑰中字的個(gè)數(shù),那么Nk=4、
6或8,而算法輪數(shù)Nr則相應(yīng)為10、12或14輪。以128-bit密鑰長(zhǎng)度為例,其加解密過(guò)程如圖1所示:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

其中,“+”表示狀態(tài)矩陣與密鑰進(jìn)行字節(jié)異或運(yùn)算。

字節(jié)代換采用非線性的S-盒變換。算法預(yù)先定義一個(gè)S-盒(一個(gè)16bytes×16bytes矩陣),再用查表的方法進(jìn)行計(jì)算。

例如:要對(duì)狀態(tài)矩陣中“0x12”這個(gè)字節(jié)加密,則在S-盒中找到第1行第2列的字節(jié)“0x57”,那么“0x57”就是“0x12”的代換字節(jié)。行移變換是將狀態(tài)矩陣的每一行進(jìn)行移位,移位量隨行的不同而不同。第0行不移動(dòng),第1行循環(huán)左移C1個(gè)字節(jié),第2行循環(huán)左移C2個(gè)字節(jié),第3行循環(huán)左移C3個(gè)字節(jié)。位移量C1、C2、C3的取值與Nb有關(guān),如表2所示:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

列混合是在狀態(tài)矩陣內(nèi)每一列進(jìn)行如下變換:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

AES加密算法的可變分組長(zhǎng)度和可變密鑰長(zhǎng)度,使其對(duì)ROM和RAM的要求低,快速密鑰設(shè)置和運(yùn)算設(shè)置更易于抵抗攻擊,同時(shí)能夠比較好的支持結(jié)構(gòu)化平行設(shè)計(jì)。因此,AES加密算法匯聚了強(qiáng)安全性、高性能、高效率、對(duì)硬件配置要求低等優(yōu)點(diǎn),能夠滿足發(fā)動(dòng)機(jī)防盜系統(tǒng)認(rèn)證時(shí)間短、硬件配置經(jīng)濟(jì)可靠的要求,適合用作發(fā)動(dòng)機(jī)防盜系統(tǒng)中身份認(rèn)證的加密算法。

二、發(fā)動(dòng)機(jī)防盜系統(tǒng)的身份認(rèn)證技術(shù)

1、雙重身份認(rèn)證方案

發(fā)動(dòng)機(jī)防盜系統(tǒng)主要由轉(zhuǎn)發(fā)器、收發(fā)線圈和電子防盜器3大部分構(gòu)成。轉(zhuǎn)發(fā)器(Transponder)是一個(gè)集成在汽車鑰匙手柄上的RFID芯片,以無(wú)線射頻的方式通過(guò)收發(fā)線圈與電子防盜器進(jìn)行通訊。電子防盜器(Immobilizer)一方面與轉(zhuǎn)發(fā)器一起完成轉(zhuǎn)發(fā)器身份認(rèn)證,另一方面也通過(guò)K-Line總線完成ECU的身份認(rèn)證。

可見(jiàn),發(fā)動(dòng)機(jī)防盜系統(tǒng)采用的是雙重身份認(rèn)證——轉(zhuǎn)發(fā)器身份認(rèn)證和ECU身份認(rèn)證。轉(zhuǎn)發(fā)器身份認(rèn)證采用的是無(wú)線射頻密碼防盜,是第一重認(rèn)證;ECU身份認(rèn)證是通過(guò)K-Line總線完成的密碼防盜,是第二重認(rèn)證。只有當(dāng)?shù)谝恢卣J(rèn)證通過(guò)后,發(fā)動(dòng)機(jī)防盜系統(tǒng)才開(kāi)始進(jìn)行第二重認(rèn)證,如果第二重認(rèn)證也通過(guò)了,那么系統(tǒng)就通知ECU可以起動(dòng)發(fā)動(dòng)機(jī)了。否則,如果有任何一重認(rèn)證沒(méi)有通過(guò),系統(tǒng)都會(huì)通知ECU不能起動(dòng)發(fā)動(dòng)機(jī),從而實(shí)現(xiàn)了發(fā)動(dòng)機(jī)的直接防盜。

2、身份認(rèn)證過(guò)程

在對(duì)發(fā)動(dòng)機(jī)防盜系統(tǒng)進(jìn)行匹配時(shí),首先要在轉(zhuǎn)發(fā)器中存儲(chǔ)轉(zhuǎn)發(fā)器的標(biāo)識(shí)碼Transp_ID、密鑰SK2,在電子防盜器中存儲(chǔ)ECU的標(biāo)識(shí)碼ECU_ID、Transp_ID、密鑰SK1、SK2,在ECU中存儲(chǔ)ECU_ID和SK1。當(dāng)汽車鑰匙旋至車鎖的Start時(shí),ECU發(fā)出請(qǐng)求信號(hào)來(lái)喚醒電子防盜器,同時(shí)根據(jù)鑰匙打到Start的次數(shù)生成一組隨機(jī)數(shù)RN,ECU一方面將RN發(fā)送給電子防盜器,一方面將ECU_ID、RN和SK2進(jìn)行加密運(yùn)算,得到密文SC1。被喚醒的電子防盜器使與它連接的收發(fā)線圈產(chǎn)生電磁場(chǎng),激活了集成在鑰匙手柄中的轉(zhuǎn)發(fā)器。轉(zhuǎn)發(fā)器將Transp_ID發(fā)送給電子防盜器,電子防盜器也將收到的RN轉(zhuǎn)發(fā)給轉(zhuǎn)發(fā)器。雙方接收到信息后,轉(zhuǎn)發(fā)器將Transp_ID、RN和SK1進(jìn)行加密運(yùn)算,生成密文SC2;電子防盜器先將接收到的Transp_ID與其內(nèi)部預(yù)存儲(chǔ)的量相比較,如果一致也開(kāi)始加密運(yùn)算,得到密文SC3。對(duì)于密文SC2和SC3,電子防盜器要進(jìn)行ECU身份的認(rèn)證。在進(jìn)行ECU身份認(rèn)證時(shí),電子防盜器先將內(nèi)部存儲(chǔ)的ECU_ID和SK2,以及來(lái)自ECU的RN進(jìn)行加密得到密文SC4,然后再將SC4發(fā)送給ECU,在ECU中進(jìn)行密文SC1與SC4的比較運(yùn)算。如果SC1與SC4是一致的,那么就通過(guò)了ECU的身份認(rèn)證,ECU發(fā)出指令起動(dòng)發(fā)動(dòng)機(jī)。否則,如果轉(zhuǎn)發(fā)器身份認(rèn)證和ECU身份認(rèn)證有一項(xiàng)沒(méi)有通過(guò),ECU都不會(huì)起動(dòng)發(fā)動(dòng)機(jī),實(shí)現(xiàn)發(fā)動(dòng)機(jī)的防盜功能。

由于汽車鑰匙打到Start的次數(shù)不斷累加,ECU每次產(chǎn)生的隨機(jī)數(shù)RN都是不同的,因而系統(tǒng)每次進(jìn)行身份認(rèn)證的密文SC1、SC2也是不同的。另外,獲得密文SC1、SC2、SC3的加密運(yùn)算幾乎是同一時(shí)間分別在ECU、轉(zhuǎn)發(fā)器和電子防盜器中同時(shí)進(jìn)行的,因此大大節(jié)省了認(rèn)證時(shí)間。由此可見(jiàn),同以往的售后防盜及報(bào)警系統(tǒng)相比,發(fā)動(dòng)機(jī)防盜系統(tǒng)保密性強(qiáng),不產(chǎn)生聲、光等污染,不會(huì)誤動(dòng)作,用戶不需額外操作,正常使用過(guò)程中幾乎感覺(jué)不到系統(tǒng)的存在,在極大提高汽車安全性的同時(shí)保證了汽車舒適性。

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

三、AES加密算法測(cè)試實(shí)驗(yàn)

1、加密實(shí)驗(yàn)步驟

在滿足車輛防盜要求的同時(shí),發(fā)動(dòng)機(jī)防盜系統(tǒng)還應(yīng)具備足夠短的身份認(rèn)證時(shí)間,從而使駕駛員在起動(dòng)車輛時(shí)感覺(jué)不到發(fā)動(dòng)機(jī)防盜系統(tǒng)的存在,保證汽車的舒適性。因此,采用AES加密算法時(shí)可以選取128-bit的數(shù)據(jù)塊長(zhǎng)度和密鑰長(zhǎng)度,在保證車輛安全性的同時(shí),滿足了整車的舒適性。

以ECU身份認(rèn)證為例,發(fā)動(dòng)機(jī)防盜系統(tǒng)的AES加密應(yīng)用主要經(jīng)過(guò)如下幾個(gè)具體步驟:

(1)將128-bit初始密鑰擴(kuò)展為一個(gè)以“字”為單位的數(shù)組ExpandKey|44|;

(2)電子防盜器將ECU_ID和隨機(jī)數(shù)RN構(gòu)成的128-bit明文數(shù)據(jù)寫(xiě)入到狀態(tài)矩陣State|4||4|中;

(3)在ExpandKey[44]中取前4個(gè)字為子密鑰0,接下來(lái)的4個(gè)字為子密鑰1,依次類推。每一輪選取的子密鑰都裝入數(shù)組RoundKey|4|中;

(4)State|4||4|與子密鑰0進(jìn)行異或運(yùn)算AddRoundKey(),其結(jié)果重新裝入State|4||4|中;

(5)將State|4||4|依次進(jìn)行字節(jié)代換SubByte()、行移變換ShiftRow()和列混合MixColumn()操作,其結(jié)果仍然存入State|4||4|中;

(6)用下一輪子密鑰與State|4||4|進(jìn)行異或運(yùn)算AddRoundKey(),并重復(fù)第5步,直到第10輪加密操作。在第10輪加密操作中,不需要進(jìn)行列混合運(yùn)算MixColumn();

(7)經(jīng)過(guò)上述加密后的State|4||4|就是4bytes×4bytes的密文矩陣。

2、測(cè)試程序與實(shí)驗(yàn)結(jié)果

以Windows2000為平臺(tái),采用MicroSoftVC++為開(kāi)發(fā)工具,設(shè)計(jì)AES加密算法應(yīng)用于發(fā)動(dòng)機(jī)防盜系統(tǒng)時(shí)的實(shí)驗(yàn)程序。在該實(shí)驗(yàn)程序中,在每一輪加密的最后輸出狀態(tài)數(shù)據(jù)State|4||4|,以便觀察加密過(guò)程。該實(shí)驗(yàn)程序的主要代碼描述如下:

設(shè)計(jì)隨機(jī)測(cè)試數(shù)據(jù)如下:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

(1)ECU_ID與RN構(gòu)成的明文數(shù)據(jù)塊為:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

(2)初始密鑰為:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

則經(jīng)過(guò)密鑰擴(kuò)展及上述AES加密實(shí)驗(yàn)程序,每一輪的輸出為:

AES算法在發(fā)動(dòng)機(jī)防盜系統(tǒng)身份認(rèn)證中的加密應(yīng)用

由此可見(jiàn),實(shí)驗(yàn)程序得到了良好的加密結(jié)果,因而能夠獲得高級(jí)別的汽車安全性。同時(shí),該實(shí)驗(yàn)用時(shí)非常之少,使駕駛員感受不到防盜系統(tǒng)的存在,滿足了汽車人性化設(shè)計(jì)的要求。

身份認(rèn)證能夠增強(qiáng)發(fā)動(dòng)機(jī)防盜系統(tǒng)的安全性,使其成功防盜概率達(dá)90%以上。在歐洲和美國(guó),采用身份認(rèn)證技術(shù)的發(fā)動(dòng)機(jī)防盜系統(tǒng)已被列入汽車保險(xiǎn)的必選件,它在汽車安全性方面的重要性,也由此可見(jiàn)一斑。

采用合適的加密算法來(lái)實(shí)現(xiàn)ECU、電子防盜器和汽車鑰匙(指與之集成為一體的轉(zhuǎn)發(fā)器)三者間的身份認(rèn)證,則是整個(gè)防盜系統(tǒng)實(shí)現(xiàn)安全、快速、高效發(fā)動(dòng)機(jī)防盜功能的核心與關(guān)鍵。AES加密算法針對(duì)二進(jìn)制數(shù)進(jìn)行加解密操作,具有很高的安全性能,已成為21世紀(jì)保護(hù)重要信息的高級(jí)算法。

小知識(shí)之發(fā)動(dòng)機(jī)防盜系統(tǒng)

發(fā)動(dòng)機(jī)防盜系統(tǒng)是針對(duì)發(fā)動(dòng)機(jī)安裝了一套防盜系統(tǒng),因此即使盜車賊能打開(kāi)車門(mén)也無(wú)法開(kāi)走轎車。典型的發(fā)動(dòng)機(jī)防盜系統(tǒng)是這樣工作的:汽車點(diǎn)火鑰匙中內(nèi)裝有電子芯片,每個(gè)芯片內(nèi)都裝有固定的ID(相當(dāng)于身份識(shí)別號(hào)碼),只有鑰匙芯片的ID與發(fā)動(dòng)機(jī)一側(cè)的ID一致時(shí),汽車才能啟動(dòng)。相反,如果不一致,汽車就會(huì)馬上自動(dòng)切斷電路,使發(fā)動(dòng)機(jī)無(wú)法啟動(dòng)。