AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

隨著計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)化,網(wǎng)絡(luò)作為管理信息系統(tǒng)的支撐,其傳遞信息的安全性已經(jīng)成為各種計(jì)算機(jī)系統(tǒng)能否穩(wěn)定運(yùn)行的關(guān)鍵因素。防范客戶信息在網(wǎng)絡(luò)傳輸過(guò)程中被截獲并篡改其中的信息,確保信息安全,則是設(shè)計(jì)計(jì)算機(jī)系統(tǒng)的一個(gè)重要課題。數(shù)據(jù)安全需要多種方法保障,數(shù)據(jù)加密技術(shù)是保護(hù)數(shù)據(jù)安全的重要環(huán)節(jié),也是實(shí)現(xiàn)網(wǎng)絡(luò)信息安全的核心技術(shù)。它是將要傳輸?shù)男畔⑾冗M(jìn)行加密處理,將信息編碼成不易被侵入者閱讀或理解的形式來(lái)保護(hù)數(shù)據(jù)的信息,再進(jìn)行網(wǎng)絡(luò)傳輸,即使該信息被截獲,截獲者也很難從加密后的亂碼中得到有用信息,但是被授權(quán)的信息獲取者卻可以將所得到的內(nèi)容還原并得到其中的信息。

數(shù)據(jù)加密的基本過(guò)程如圖1所示。

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

一、AES加密算法分析

在密碼(學(xué))技術(shù)中,數(shù)據(jù)加密技術(shù)是核心。所謂加密,是通過(guò)編碼的方式將簡(jiǎn)單明了的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成晦澀難懂、難以閱讀的其它格式,只有擁有解密密鑰才能將這些轉(zhuǎn)換后的數(shù)據(jù)還原成可讀數(shù)據(jù)。譯碼是編碼的逆過(guò)程。根據(jù)數(shù)據(jù)加密所使用的密鑰特點(diǎn)可將數(shù)據(jù)加密技術(shù)分成兩種體制,一種是基于單密鑰的對(duì)稱加密體制(傳統(tǒng)加密體制),包括分組密碼與序列密碼,另一類是基于雙密鑰的非對(duì)稱加密體制。

高級(jí)加密標(biāo)準(zhǔn)(AdvancedEncryptionStandard,AES)作為對(duì)傳統(tǒng)對(duì)稱加密算法標(biāo)準(zhǔn)DES的替代者,由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)于1997年提出征集算法的公告。經(jīng)過(guò)幾年的篩選,最終確定了由VincentRijmen和JoanDaemen發(fā)明的Rijndael加密算法,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)在2002-05-26建立了新的高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)(AES)規(guī)范。

大多數(shù)分組寂寞算法都是采用Feistel結(jié)構(gòu)。Feistel結(jié)構(gòu)是對(duì)所加密的內(nèi)容分組后,每一組再分為左右兩半然后進(jìn)行替換及迭代運(yùn)算。而AES加密算法沒(méi)有涉及到Feistel結(jié)構(gòu),而是采用了Square結(jié)構(gòu)。Square結(jié)構(gòu)是一種迭代分組密碼,其輪變換有4個(gè)不同的變換組成,這4個(gè)不同的變換表現(xiàn)為一套查表和異或操作。

AES加密通過(guò)分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個(gè)循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換(permutations)和替換(substitutions)輸入數(shù)據(jù)。置換是數(shù)據(jù)的重新排列,而代替是用一個(gè)單元數(shù)據(jù)替換另一個(gè)。AES使用了幾種不同的技術(shù)來(lái)實(shí)現(xiàn)置換和替換,AES加密算法是一個(gè)分組長(zhǎng)度和密鑰長(zhǎng)度均可變的迭代分組密碼,分組和密鑰長(zhǎng)度都可分別為128、192或256位。

1、狀態(tài)、種子密鑰和輪數(shù)

數(shù)據(jù)塊要經(jīng)過(guò)多次變換操作,每次變換操作所產(chǎn)生的中間結(jié)果稱為“狀態(tài)”(State)。狀態(tài)可由一個(gè)4行、Nb列的二維字節(jié)數(shù)組表示,Nb等于分組長(zhǎng)度除以32,如表1所示。

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

密鑰也可類似地由一個(gè)4行、Nk列的二維字節(jié)數(shù)組表示,Nk等于密鑰長(zhǎng)度除以32,如表2所示。

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

有時(shí),可將這些分組看成是4字節(jié)向量的一維數(shù)組,數(shù)組長(zhǎng)度與相應(yīng)的二維數(shù)組表中的列數(shù)相等。

加密算法的輸入和輸出被看成是由8比特字節(jié)構(gòu)成的一維數(shù)組,其元素下標(biāo)的范圍是0~(4Nb-1),因此輸入和輸出以字節(jié)為單位的分組長(zhǎng)度分別是16、24和32,其元素下標(biāo)分別是0~15、0~23和0~31。輸入的種子密鑰也看成是由8比特字節(jié)構(gòu)成的一維數(shù)組,其元素下標(biāo)的范圍是0~(4Nk-1),因此種子密鑰以字節(jié)為單位的分組長(zhǎng)度也分別是16、24和32,其元素下標(biāo)的范圍分別是0~15、0~23和0~31。

迭代的輪數(shù)記為Nr,Nr與Nb和Nk有關(guān),對(duì)應(yīng)128、192、256三種密鑰長(zhǎng)度的迭代輪數(shù)分別為10、12、14。

2、加密過(guò)程

(1)給定一個(gè)明文文件X,將State初始化為X,并進(jìn)行Ad2dRoundKey操作,將輪密鑰與State異或。

(2)對(duì)前Nr-1輪中的每一輪,用S盒進(jìn)行一次Sub2Bytes代換操作;對(duì)State做一次ShiftRows行移位操作;再對(duì)State做一次MixColumns列混淆操作;然后進(jìn)行AddRoundK2ey操作。

(3)依次進(jìn)行SubBytes、ShiftRows、AddRoundKey操作。

(4)將最后State中的內(nèi)容定義為密文Y。

Rijndael加密算法取名為Cipher,它操作State[ ],其過(guò)程描述的偽代碼如下:

CipherAlgorithmPseudocode

Cipher(byte[ ]input,byte[ ]output)

{

byte[4,4]State;copyinput[ ]intoState[ ]

AddRoundKey

for(round=1;round<Nr-1;++round)

{

SubBytesShiftRowsMixColumnsAddRoundKey

}

SubBytesShiftRowsAddRoundKey

copyState[ ]tooutput[ ]

}

3、四種變換

(1)S盒變換(SubBytes):SubBytes變換是作用在狀態(tài)中每個(gè)字節(jié)的非線性字節(jié)置換,這個(gè)置換表或稱(S盒)是可逆的,并由以下兩個(gè)變換組成:在域GF(28)中取字節(jié)的乘法逆,‘00’的乘法逆是它自己;在域GF(2)中進(jìn)行如下定義的仿射變換:

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

(2)列混合變換(MixColumns):MixColumns實(shí)現(xiàn)逐列混合,其方法如下:

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

其中,c(x)={03}_x3+{01}_x2+{01}_x+{02},用矩陣表示如下:

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

(3)行移位變換(ShiftRows):ShiftRows變換是將狀態(tài)行循環(huán)移位,0行不移,第1行循環(huán)左移1個(gè)字節(jié),第2行循環(huán)左移2字節(jié),第3行循環(huán)左移3字節(jié)。

(4)輪密鑰加變換(AddRoundKey):AddRoundKey是將輪密鑰簡(jiǎn)單的與狀態(tài)進(jìn)行逐比特異或。輪密鑰由種子密鑰通過(guò)密鑰編排算法得到,輪密鑰長(zhǎng)度等于分組長(zhǎng)度Nb。

4、密鑰擴(kuò)展

通過(guò)生成器產(chǎn)生Nr+1輪輪密鑰,每個(gè)輪密鑰由Nb個(gè)字組成,共有Nb(Nr+1)個(gè)字W(i),i=0,1...,Nb(Nr+1)-1。

在加密過(guò)程中,需要Nr+1個(gè)子密鑰,需要構(gòu)造4(Nr+1)個(gè)32位字。

5、Rijndael加密算法的解密

Rijndael的解密運(yùn)算中除輪密鑰加AddRoundKey不變外,其余字節(jié)代替(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)都進(jìn)行求逆變換即可。

6、破譯分析

目前尚未存在對(duì)Rijndael加密算法完整版的成功攻擊,但已經(jīng)提出對(duì)簡(jiǎn)化算法(即減少圈數(shù)的Rijndael)的幾種攻擊方法。最著名的當(dāng)數(shù)密碼設(shè)計(jì)者自己提出的Square攻擊。它對(duì)4到6圈的簡(jiǎn)化算法有效。其思想是利用第4圈字節(jié)替換前后平衡性的改變來(lái)猜測(cè)密鑰字節(jié)。對(duì)Square攻擊進(jìn)行改進(jìn),可降低攻擊的時(shí)間和空間復(fù)雜度,可擴(kuò)展到圈數(shù)更多的簡(jiǎn)化算法的攻擊上。對(duì)Rijndael算法進(jìn)行攻擊另一種思路是發(fā)掘Rijndael密碼設(shè)計(jì)的其他弱點(diǎn),如利用密鑰調(diào)度方案的弱點(diǎn)對(duì)9圈簡(jiǎn)化算法進(jìn)行了密鑰相關(guān)攻擊;利用算法中某些函數(shù)之間的沖突攻擊4圈以上多達(dá)7圈的簡(jiǎn)化算法。但是,大多數(shù)攻擊的復(fù)雜性使得當(dāng)前的計(jì)算能力還遠(yuǎn)遠(yuǎn)無(wú)法實(shí)現(xiàn),因此目前尚未危及到Rijn2dael加密算法的安全。

二、AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

高速公路不停車(chē)電子自動(dòng)收費(fèi)系統(tǒng)(NoStopElectronicTollCollectionSystem簡(jiǎn)稱NSETCS)是一種能實(shí)現(xiàn)高速公路不停車(chē)收費(fèi)的全天候智能型分布式計(jì)算機(jī)控制、處理系統(tǒng)。不停車(chē)收費(fèi)系統(tǒng)主要由自動(dòng)收費(fèi)模塊、自動(dòng)攝像模塊和車(chē)型識(shí)別模塊三部分構(gòu)成,自動(dòng)收費(fèi)是整個(gè)系統(tǒng)的核心部分。各收費(fèi)站(以下簡(jiǎn)記為F)和費(fèi)用結(jié)算管理中心(以下簡(jiǎn)記為C)通過(guò)光纖相連,構(gòu)成局域網(wǎng)。

當(dāng)車(chē)輛以一定速度駛?cè)胧召M(fèi)站自動(dòng)收費(fèi)車(chē)道時(shí),車(chē)型識(shí)別和自動(dòng)收費(fèi)單元自動(dòng)啟動(dòng),讀取射頻IC卡內(nèi)的信息并與車(chē)型識(shí)別判定結(jié)果進(jìn)行比對(duì)。若一致,則自動(dòng)從射頻IC卡上進(jìn)行費(fèi)用結(jié)算,車(chē)輛順利通過(guò)收費(fèi)站;若不一至,或射頻卡內(nèi)余額不足,則自動(dòng)攝像模塊啟動(dòng),對(duì)該車(chē)輛進(jìn)行拍攝,提取車(chē)輛牌照,并將該車(chē)相關(guān)信息(如車(chē)型、車(chē)牌照等)存入系統(tǒng),并啟動(dòng)前方欄桿機(jī)進(jìn)行車(chē)輛攔截。

各收費(fèi)站F對(duì)費(fèi)用收取情況和違規(guī)車(chē)輛的信息采集后,需要定時(shí)傳送給費(fèi)用結(jié)算管理中心C,由費(fèi)用結(jié)算管理中心進(jìn)行協(xié)調(diào)管理,對(duì)收費(fèi)站未能進(jìn)行處理的違規(guī)車(chē)輛作出相應(yīng)處理決定,并將相關(guān)信息或通知及時(shí)傳送至各收費(fèi)站。

各F和C通過(guò)網(wǎng)絡(luò)傳送的信息有很大一部分屬于敏感信息,敏感信息傳送必然要考慮安全性,信息加密則是敏感信息安全傳送的關(guān)鍵環(huán)節(jié)。因此,選擇一種合適的加密算法對(duì)需要傳輸?shù)男畔⑦M(jìn)行加密后傳輸就顯得尤其重要。

對(duì)目前比較成熟的加密算法進(jìn)行比較,可以看出,AES即Rijndael加密算法作為新一代的高級(jí)加密標(biāo)準(zhǔn),將安全、效率、性能、方便使用及靈活性集于一體,在不同硬件和軟件運(yùn)行環(huán)境下表現(xiàn)出始終如一的良好性能。AES加密算法對(duì)于內(nèi)存要求可以很低,這使得它可以應(yīng)用在需要大量使用內(nèi)存空間的環(huán)境,同時(shí),AES加密算法的操作可以很容易的抵御來(lái)自時(shí)間和空間上的攻擊。所以我們選擇了AES加密算法用于高速公路不停車(chē)收費(fèi)系統(tǒng)。高速公路不停車(chē)收費(fèi)系統(tǒng)信息加密結(jié)構(gòu)如圖2所示。

AES加密算法在不停車(chē)收費(fèi)系統(tǒng)中的應(yīng)用

當(dāng)F和C之間需要進(jìn)行信息傳輸時(shí),首先調(diào)用AES加密程序?qū)λ獋鬏數(shù)奈募用芴幚?。由于AES加密屬于對(duì)稱密鑰加密,加解密使用同一個(gè)密鑰,因此,我們?cè)诓捎肦i2jndael加密算法加密時(shí)要考慮一個(gè)重要的問(wèn)題,就是密鑰的管理。密鑰是Rijndael加密系統(tǒng)中的可變部分,是加密系統(tǒng)的關(guān)鍵。為了保證通信內(nèi)容的安全性,本系統(tǒng)中采用動(dòng)態(tài)密鑰,即Ri2jndael加密算法每次所采取的加密密鑰都不同。所以為使信息接收方知道密鑰,密鑰也要進(jìn)行通信傳輸,這就又產(chǎn)生了安全隱患。為解決此問(wèn)題本系統(tǒng)中又選擇了非對(duì)稱密鑰密碼RSA算法對(duì)AES加密密鑰進(jìn)行加密,然后和原有加密信息同時(shí)傳輸給信息接收方。接收方收到信息后,利用RSA中自己的私鑰將AES的密鑰進(jìn)行解密,再解密原有加密信息即可得到原有明文信息。由于RSA加密算法加密速度受到限制,所以不能用來(lái)加密大量信息。

本系統(tǒng)中采用Delphi710編程語(yǔ)言實(shí)現(xiàn)了AES加密算法,經(jīng)過(guò)微機(jī)調(diào)試運(yùn)行,程序穩(wěn)定,可以加密各種信息。密鑰密碼加密算法有很多種,而且還在不斷發(fā)展中,要保證所設(shè)計(jì)的計(jì)算機(jī)工程系統(tǒng)穩(wěn)定安全的運(yùn)行,必須選擇當(dāng)前階段下被認(rèn)為是比較穩(wěn)定、安全,并且運(yùn)算速度和內(nèi)存占用量滿足自己工程需要的加密算法才是最佳選擇。有時(shí)為了滿足工程需要,還要結(jié)合兩種甚至幾種加密算法來(lái)實(shí)現(xiàn)信息的安全加密,如本系統(tǒng)中就采用了AES和RSA兩種加密算法。當(dāng)然,隨著計(jì)算機(jī)運(yùn)算速度的提上,現(xiàn)階段被認(rèn)為是安全的加密算法很可能幾年后就會(huì)被淘汰。因此,為確保系統(tǒng)安全,對(duì)長(zhǎng)期運(yùn)行的系統(tǒng)中使用的加密算法也要隨加密算法的發(fā)展作出更新,替換掉被淘汰的加密算法。

小知識(shí)之不停車(chē)收費(fèi)系統(tǒng)

不停車(chē)收費(fèi)系統(tǒng)(又稱電子收費(fèi)系統(tǒng)Electronic Toll Collection System,簡(jiǎn)稱ETC系統(tǒng))利用車(chē)輛自動(dòng)識(shí)別(Automatic Vehicle Identification 簡(jiǎn)稱 AVI)技術(shù)完成車(chē)輛與收費(fèi)站之間的無(wú)線數(shù)據(jù)通訊,進(jìn)行車(chē)輛自動(dòng)識(shí)別和有關(guān)收費(fèi)數(shù)據(jù)的交換,通過(guò)計(jì)算機(jī)網(wǎng)路進(jìn)行收費(fèi)數(shù)據(jù)的處理,實(shí)現(xiàn)不停車(chē)自動(dòng)收費(fèi)的全電子收費(fèi)系統(tǒng)。