范琦 張路彬
摘 要:本文通過(guò)分析對(duì)稱加密算法和非對(duì)稱加密算法技術(shù),研究在密鑰分散、安全認(rèn)證、數(shù)據(jù)加密方面IC卡訪問(wèn)安全方案,探討終端設(shè)備通信和認(rèn)證中心密鑰下載的安全方法。
關(guān)鍵詞:IC卡;道路運(yùn)輸證;安全機(jī)制
中圖分類號(hào):U495;U492.8 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-5168(2018)23-0106-03
Design of Middleware Security Mechanism for IC Card
Road Transport Certificate
FAN Qi1 ZHANG Lubin2
(1.Henan Traffic Communication Center,Zhengzhou Henan 450000;
2. China Academy of Transportation Science,Beijing 100000)
Abstract: By analyzing symmetric encryption algorithm and asymmetric encryption algorithm technology, this paper studied the security scheme of IC card access in key dispersion, security authentication and data encryption, and discussed the security method of terminal equipment communication and key download of authentication center.
Keywords: IC card;road transport certificate;safety mechanism
IC卡訪問(wèn)采用TSAM卡方式的加密機(jī)制,在讀寫(xiě)過(guò)程中需要傳輸密鑰相關(guān)內(nèi)容,中間件在讀寫(xiě)過(guò)程中需要保護(hù)傳輸?shù)拿荑€值,防止密鑰泄漏。數(shù)據(jù)傳輸過(guò)程中的安全威脅,包括USB監(jiān)聽(tīng)、網(wǎng)絡(luò)監(jiān)聽(tīng)、串口監(jiān)聽(tīng)等,需要防止非法入侵,防范潛在的威脅。
1 常見(jiàn)安全算法技術(shù)分析
1.1 對(duì)稱加密算法技術(shù)分析
對(duì)稱加密也叫作私鑰加密,其是指在加密數(shù)據(jù)和解密數(shù)據(jù)時(shí)采用相同的密鑰。該技術(shù)通常要求數(shù)據(jù)發(fā)送方和接收方在建立通信之前,首先確定一個(gè)雙方都知道的密鑰值,然后雙方通過(guò)相同的加解密算法對(duì)要傳輸?shù)臄?shù)據(jù)進(jìn)行加密和解密運(yùn)算。對(duì)稱加密算法的優(yōu)點(diǎn)是算法是公開(kāi)的,計(jì)算量小,加密速度快;缺點(diǎn)是如果泄漏密鑰,任何截獲密文的人都可以對(duì)密文進(jìn)行解密。
1.2 非對(duì)稱加密算法技術(shù)分析
非對(duì)稱加密算法與對(duì)稱加密算法相對(duì)。非對(duì)稱加密算法需要兩個(gè)密鑰,即公鑰和私鑰。每組密鑰必須成對(duì)出現(xiàn),公鑰一般是以明文的方式發(fā)布給對(duì)方,私鑰由產(chǎn)生方自己進(jìn)行保存。如果使用公鑰進(jìn)行加密,必須使用配對(duì)私鑰進(jìn)行解密;如果使用私鑰進(jìn)行加密,必須使用公鑰進(jìn)行解密,這樣才能獲得正確的原文。非對(duì)稱加密算法一般用于數(shù)字簽名、密鑰交換等[1]。非對(duì)稱加密算法的安全性依賴于現(xiàn)有的難以解決的數(shù)學(xué)問(wèn)題,算法強(qiáng)度較大,計(jì)算速度相比對(duì)稱加密算法較慢,常見(jiàn)的密鑰算法包括背包算法、RSA算法、ECC算法等。
1.3 各類算法的比較
目前公布的常見(jiàn)的對(duì)稱加密算法和非對(duì)稱加密算法在相同的保密級(jí)別下,密鑰長(zhǎng)度對(duì)比關(guān)系見(jiàn)表1。
在對(duì)稱加密算法領(lǐng)域,盡管DES在安全上相對(duì)脆弱,但由于DES加密速度快,硬件芯片的大量生產(chǎn)和TDES的應(yīng)用,使DES算法成為目前實(shí)際應(yīng)用中最為廣泛的加密算法。當(dāng)前IC卡道路運(yùn)輸證件也采用TDES加密算法。隨著AES算法的推廣和國(guó)密算法的推廣,IC卡道路運(yùn)輸證件安全系統(tǒng)將可能逐步被國(guó)密算法取代。
在非對(duì)稱加密算法領(lǐng)域,目前RSA算法是最常見(jiàn)的算法,但ECC比RSA在相同的安全級(jí)別下采用的密鑰長(zhǎng)度更短,加解密運(yùn)算的速度更快,對(duì)于網(wǎng)絡(luò)傳輸?shù)挠布Y源使用得更少,ECC將逐步取代RSA。
2 IC卡道路運(yùn)輸證件的訪問(wèn)安全機(jī)制設(shè)計(jì)
根據(jù)《IC卡道路運(yùn)輸證件》(JT/T 825—2012)[2]的要求,目前IC卡道路運(yùn)輸證件采用基于TDES技術(shù)的對(duì)稱密鑰技術(shù)。
2.1 密鑰體系設(shè)計(jì)
IC卡道路運(yùn)輸證件密鑰體系采用部省兩級(jí)管理的模式,總體框架如圖1所示。
2.2 密鑰推導(dǎo)方法
按照IC卡道路運(yùn)輸證件密鑰體系設(shè)計(jì),在IC卡和終端內(nèi)TSAM卡內(nèi)都預(yù)先安裝了相同的對(duì)稱密鑰,解決了密鑰傳輸和發(fā)布的問(wèn)題。但是,在實(shí)際的應(yīng)用中,IC卡的數(shù)量較為龐大,為了使IC卡更加安全,采用“一卡一密”的方式。為了使每個(gè)終端都能夠支持讀寫(xiě)每張IC卡,在TSAM卡中內(nèi)置所有IC卡的密鑰是不現(xiàn)實(shí)的問(wèn)題。所以,在TSAM卡中只能存儲(chǔ)密鑰體系中的根密鑰,在IC卡讀寫(xiě)認(rèn)證時(shí),TSAM卡能產(chǎn)生臨時(shí)的對(duì)應(yīng)IC卡的密鑰,實(shí)現(xiàn)對(duì)IC卡認(rèn)證和數(shù)據(jù)加密功能。密鑰推導(dǎo)模型見(jiàn)圖2。
2.3 安全分析
IC卡道路運(yùn)輸證件采用密鑰分散的算法,保證了一卡一密鑰,且使得IC卡道路運(yùn)輸證在使用過(guò)程中,如果一張卡被人破解后,不會(huì)影響整個(gè)密鑰系統(tǒng)。此外,在數(shù)據(jù)傳輸過(guò)程中,通過(guò)使用隨機(jī)數(shù)、計(jì)算MAC等方式,減小了在空中傳輸過(guò)程中被第三方監(jiān)聽(tīng)后采用重放機(jī)制偽造數(shù)據(jù)的可能性。
3 數(shù)據(jù)通信安全機(jī)制設(shè)計(jì)
中間件與外部設(shè)備硬件通信包括兩大類:第一類是與認(rèn)證中心后臺(tái)服務(wù)器及密鑰中心進(jìn)行通信,傳輸?shù)膬?nèi)容包括讀寫(xiě)卡數(shù)據(jù)記錄和密鑰參數(shù),傳輸?shù)慕橘|(zhì)為網(wǎng)絡(luò)傳輸;第二類是中間件與讀寫(xiě)器等終端設(shè)備通信,通信的內(nèi)容包括讀寫(xiě)卡過(guò)程數(shù)據(jù)、認(rèn)證數(shù)據(jù)和密鑰ID等信息。
3.1 終端通信安全設(shè)計(jì)
采用對(duì)稱加密算法首先要將密鑰存儲(chǔ)到讀寫(xiě)器中。為了防止第三方通過(guò)暴力通信的方式惡意破解讀寫(xiě)器中的密鑰值,對(duì)每個(gè)讀寫(xiě)器內(nèi)存儲(chǔ)不同的密鑰值。讀寫(xiě)器芯片都有唯一的序列號(hào),可以使用序列號(hào)作為分散因子。同時(shí),考慮將對(duì)稱密鑰的根密鑰放到讀寫(xiě)器中,為了混淆,在每個(gè)讀寫(xiě)器中也同時(shí)放入了不同的根密鑰,具體實(shí)現(xiàn)方式如下。
①事先選擇100組密鑰作為根密鑰,這100個(gè)密鑰都通過(guò)密文方式內(nèi)置在中間件中,并將這100個(gè)密鑰按照序號(hào)從0編到99。
②在為讀寫(xiě)器下載根密鑰時(shí),從中間隨機(jī)選取5個(gè)密鑰作為根密鑰,依據(jù)是[C5100=75 287 520],這樣可以生成約7 000萬(wàn)個(gè)不同組合的根密鑰,能滿足現(xiàn)階段每個(gè)讀寫(xiě)器中根密鑰都不相同的結(jié)果。
③采用根密鑰對(duì)讀寫(xiě)器序列號(hào)進(jìn)行分散,得到5個(gè)分散后的密鑰,將這5個(gè)密鑰及根密鑰對(duì)應(yīng)的序號(hào)存放到讀寫(xiě)器中。
在讀寫(xiě)卡時(shí),生成臨時(shí)密鑰的序列如圖3所示。具體步驟如下。
①中間件向讀寫(xiě)器發(fā)送握手指令,讀寫(xiě)器內(nèi)部生成一個(gè)隨機(jī)數(shù),根據(jù)隨機(jī)數(shù)計(jì)算獲得5個(gè)密鑰ID的值,讀寫(xiě)器將這個(gè)密鑰ID號(hào)和讀寫(xiě)器序列號(hào)發(fā)送給中間件。
②中間件根據(jù)密鑰ID號(hào)確定根密鑰,然后用根密鑰對(duì)讀寫(xiě)器序列號(hào)進(jìn)行分散操作,得到與讀寫(xiě)器對(duì)應(yīng)的子密鑰,后續(xù)的通信都通過(guò)該密鑰對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加解密計(jì)算。
3.2 認(rèn)證中心密鑰下載安全設(shè)計(jì)
根據(jù)常見(jiàn)安全算法技術(shù)分析,筆者在中間件與認(rèn)證中心通信時(shí)采用ECC算法,考慮到非對(duì)稱加密算法的計(jì)算時(shí)間較長(zhǎng)等特點(diǎn),在密鑰傳輸中僅通過(guò)發(fā)送認(rèn)證和密鑰傳輸兩條報(bào)文即可實(shí)現(xiàn)密鑰的傳輸功能,具體流程見(jiàn)圖4所示。
①中間件的私鑰和公鑰分別為PRc和PUc,服務(wù)器端的私鑰和公鑰分別為PRs和PUs。
②中間件生成16字節(jié)的隨機(jī)數(shù)N1,用中間件的私鑰PRc加密生成M2。
③將M2和N1作為數(shù)據(jù),使用服務(wù)器端公鑰Pus進(jìn)行加密生成密文M3,并發(fā)給服務(wù)器端。
④服務(wù)器端收到數(shù)據(jù)后,先用服務(wù)器端的私鑰對(duì)M3進(jìn)行解密,將解密后數(shù)據(jù)的右半部分賦值給S2,將解密后數(shù)據(jù)的左半部分用中間件的公鑰PUc解密,得到S1。
⑤服務(wù)器端判斷S1是否等于S2,如果兩個(gè)數(shù)據(jù)相同,說(shuō)明該隨機(jī)數(shù)是由真正的中間件發(fā)來(lái),認(rèn)證成功,服務(wù)器可以為中間件提供服務(wù);如果兩個(gè)數(shù)字不相同,說(shuō)明可能是第三方偽造的數(shù)據(jù)或者數(shù)據(jù)在鏈路中傳輸出現(xiàn)錯(cuò)誤,服務(wù)器不予響應(yīng)。
⑥認(rèn)證成功后,服務(wù)器端生成隨機(jī)數(shù)N2,并使用中間件的公鑰PUc進(jìn)行加密后生成,將M4傳輸給中間件端。
⑦中間件收到M4后,使用中間件的私鑰PRc解密得到M5,至此,認(rèn)證過(guò)程完成。
⑧中間件通過(guò)讀寫(xiě)器獲得IC卡ID號(hào)后,將ID號(hào)和M5作為數(shù)據(jù)使用服務(wù)器端的公鑰Pus加密生成密文M6,將M6發(fā)送到服務(wù)器端。
⑨服務(wù)器端收到報(bào)文M6后,使用私鑰進(jìn)行解密,界面后的數(shù)據(jù)右半部分賦值為S4,左半部分賦值為S3。
⑩判斷S4是否等于隨機(jī)數(shù)N2,如果相同,則S3就為IC卡的卡號(hào)ID,如果不相等,則服務(wù)器端斷開(kāi)中間件連接。
?服務(wù)器端訪問(wèn)密鑰管理系統(tǒng),將ID發(fā)給密鑰管理系統(tǒng),密鑰管理系統(tǒng)通過(guò)密鑰分散算法,生成對(duì)應(yīng)的密鑰K,發(fā)送給服務(wù)器。
?服務(wù)器端將密鑰K,先使用服務(wù)器私鑰PRs加密,然后再使用中間件的公鑰PUc加密后得到密鑰密文,將K2發(fā)送給中間件。
?中間件將收到的密文K2先使用中間件私鑰PRc解密,再使用服務(wù)器的公鑰PUs解密得到K3,即IC卡的對(duì)應(yīng)密鑰,至此,IC卡子密鑰下載完成。
該流程的優(yōu)點(diǎn)如下。①每次數(shù)據(jù)傳輸都采用隨機(jī)數(shù)的方式,避免被第三方監(jiān)聽(tīng)后重復(fù)發(fā)送數(shù)據(jù)攻擊。②服務(wù)器端認(rèn)證后給客戶端返回隨機(jī)數(shù)的目的,避免中間件認(rèn)證成功后被第三方截獲通道,偽造數(shù)據(jù)獲取真實(shí)的密鑰;同時(shí),服務(wù)端對(duì)于下發(fā)的隨機(jī)數(shù)增加計(jì)時(shí)功能,如果超時(shí)后中間件還沒(méi)有發(fā)送請(qǐng)求傳輸密鑰的指令,則服務(wù)器端主動(dòng)斷開(kāi)中間件連接,中間件如果需要傳輸密鑰,還必須再次認(rèn)證才可以得到授權(quán),這樣能有效避免中間件一直占用服務(wù)器資源。③中間件每次認(rèn)證后只能傳輸一次密鑰,傳輸結(jié)束后,認(rèn)證失效。
4 結(jié)論
本文詳細(xì)介紹了幾種常見(jiàn)的對(duì)稱加密算法和非對(duì)稱加密算法的實(shí)現(xiàn)原理,分析其優(yōu)缺點(diǎn),提出中間件在IC卡道路運(yùn)輸證件讀寫(xiě)、數(shù)據(jù)傳輸方面采用的安全技術(shù)手段。伴隨新技術(shù)的發(fā)展,IC卡安全性也會(huì)面臨新的挑戰(zhàn),在應(yīng)用領(lǐng)域應(yīng)緊密結(jié)合國(guó)密技術(shù)的發(fā)展,對(duì)現(xiàn)階段的IC卡密鑰的升級(jí)換代工作進(jìn)行進(jìn)一步的深入研究。
參考文獻(xiàn):
[1]楊曉珂.IC卡道路運(yùn)輸證密鑰管理系統(tǒng)研究與實(shí)現(xiàn)[D].西安:長(zhǎng)安大學(xué),2009.
[2]中華人民共和國(guó)交通運(yùn)輸部.IC卡道路運(yùn)輸證件:JT/T 825—2012 [S].北京:人民交通出版社,2012.