付青琴,昂正全,徐平江
(1.國(guó)網(wǎng)電力科學(xué)研究院,江蘇南京210003;2.北京航天飛行控制中心,北京100094)
智能卡之所以能夠迅速地發(fā)展并且流行起來,其中一個(gè)重要的原因就在于它能夠通過算法環(huán)境的安全體系給用戶提供—個(gè)較高的安全性保證。而對(duì)智能卡進(jìn)行認(rèn)證,則能夠獲得智能卡的安全狀態(tài),獲得一定的使用權(quán)限,從而進(jìn)行一些與安全有關(guān)的操作。
傳統(tǒng)的智能卡認(rèn)證是通過智能卡和讀寫設(shè)備雙方同時(shí)對(duì)相同的隨機(jī)數(shù)進(jìn)行某種相同的加密運(yùn)算,然后判斷雙方運(yùn)算結(jié)果的一致性來對(duì)智能卡的合法性進(jìn)行驗(yàn)證,這樣也就判定了一張智能卡是不是偽造卡。根據(jù)所認(rèn)證的對(duì)象不同,智能卡認(rèn)證又分為內(nèi)部認(rèn)證和外部認(rèn)證兩種。內(nèi)部認(rèn)證就是讀寫設(shè)備對(duì)智能卡的合法性進(jìn)行的驗(yàn)證;外部認(rèn)證就是智能卡對(duì)讀寫設(shè)備的合法性進(jìn)行的驗(yàn)證[1,2]。
目前常用的認(rèn)證算法是3DES算法。但是,隨著3DES算法的被破解,芯片的安全性受到了威脅。如果有非法用戶進(jìn)行惡意的攻擊,安全問題就岌岌可危。因?yàn)檎J(rèn)證中采用的加密算法是固定的,非法用戶就能夠采用固定的算法進(jìn)行攻擊。另外,傳統(tǒng)認(rèn)證方法不能適應(yīng)電流、功耗等攻擊手段[3~13]。
針對(duì)此問題,本文設(shè)計(jì)了一個(gè)可以自定義算法環(huán)境的防攻擊認(rèn)證方法。此認(rèn)證方法允許用戶根據(jù)自己的應(yīng)用要求設(shè)置算法環(huán)境,當(dāng)算法環(huán)境變化時(shí),認(rèn)證采用的加密算法也是可變的。與此同時(shí),還提供了一種防攻擊的手段,此手段能夠有效減少非法用戶的攻擊嘗試次數(shù),從而提高非法用戶破解的難度。
傳統(tǒng)智能卡的認(rèn)證方法如圖1所示,該方法先進(jìn)行隨機(jī)數(shù)的有效性驗(yàn)證,如果通過驗(yàn)證,則采用3DES算法對(duì)隨機(jī)數(shù)進(jìn)行加密,得到認(rèn)證結(jié)果。將加密得到的認(rèn)證結(jié)果與接受到的認(rèn)證結(jié)果進(jìn)行比較,如果一致,則認(rèn)證成功;如果不一致,則認(rèn)證失敗,此時(shí)需要將認(rèn)證對(duì)應(yīng)的密鑰嘗試次數(shù)減1。
Figure 1 Traditional IC card external authentication method圖1 傳統(tǒng)智能卡外部認(rèn)證方法
此種認(rèn)證方法有自身的缺點(diǎn),主要如下:
(1)傳統(tǒng)認(rèn)證方法固定采用3DES算法,攻擊對(duì)象可以根據(jù)3DES算法的特點(diǎn),專門針對(duì)3DES算法的破解來進(jìn)行惡意攻擊。如:常采用SPA、DPA攻擊手段。
(2)傳統(tǒng)認(rèn)證方法先進(jìn)行認(rèn)證結(jié)果的比較,再扣減密鑰的可嘗試次數(shù)。但是,當(dāng)攻擊對(duì)象使用的認(rèn)證結(jié)果與實(shí)際的認(rèn)證結(jié)果不一致時(shí),自動(dòng)將智能卡進(jìn)行斷電操作,這時(shí)認(rèn)證流程無法正常繼續(xù),那么相應(yīng)認(rèn)證密鑰的可嘗試計(jì)數(shù)器也就不會(huì)減1,這樣攻擊對(duì)象可以無限次地重復(fù)發(fā)送認(rèn)證數(shù)據(jù),直到嘗試到正確的密鑰。
針對(duì)常用認(rèn)證方法存在的上述兩個(gè)缺點(diǎn),本文對(duì)認(rèn)證命令及認(rèn)證流程進(jìn)行了重新設(shè)計(jì),提出了一種自定義算法環(huán)境的防攻擊認(rèn)證方法。
自定義算法環(huán)境的防攻擊認(rèn)證方法流程如圖2所示。
Figure 2 IC card external authentication method for avoiding attack圖2 防攻擊智能卡外部認(rèn)證方法
從圖2可以看出,改進(jìn)的地方有兩處:一是將嘗試計(jì)數(shù)器減1操作提前到隨機(jī)數(shù)驗(yàn)證之后;二是提供了一種自定義算法環(huán)境的加密方法,允許用戶選擇加密算法,從而提供多種認(rèn)證算法,分別為:3DES算法(即8字節(jié)分組長(zhǎng)度算法)、16字節(jié)分組長(zhǎng)度算法。其中,3DES算法是目前流行的算法,16字節(jié)分組長(zhǎng)度算法可以是任何算法,只要其分組長(zhǎng)度為16字節(jié)即可。具體采用哪種算法進(jìn)行認(rèn)證,由應(yīng)用者根據(jù)自己的需求決定。這就增加了應(yīng)用的隨機(jī)性和不確定性,提高了攻擊的難度。
本文對(duì)現(xiàn)有的認(rèn)證方法(包括內(nèi)部認(rèn)證和外部認(rèn)證)分別進(jìn)行了改進(jìn),可以認(rèn)證MF、DDF、ADF等目錄下的密鑰,或者是主控(MK)密鑰,從而達(dá)到一定的權(quán)限。
認(rèn)證雙方采用P1字節(jié)所指定的算法進(jìn)行認(rèn)證。認(rèn)證分為內(nèi)部認(rèn)證與外部認(rèn)證兩種[14],格式分別如表1和表2所示。
表1中,(1)P1表示用戶采用何種自定義的算法環(huán)境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7為內(nèi)部認(rèn)證密鑰的密鑰標(biāo)識(shí)。
(3)不管采用的認(rèn)證算法分組長(zhǎng)度是8或者16,其后跟隨的認(rèn)證數(shù)據(jù)長(zhǎng)度Lc都是8。
(4)不管采用的認(rèn)證算法分組長(zhǎng)度是8或者16,其返回的加密認(rèn)證數(shù)據(jù)長(zhǎng)度Le都是8。
表2中,(1)P1表示用戶采用何種自定義的算法環(huán)境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7為外部認(rèn)證密鑰的密鑰標(biāo)識(shí)。
(3)不管采用的認(rèn)證算法分組長(zhǎng)度是8或者16,其后跟隨的認(rèn)證數(shù)據(jù)長(zhǎng)度Lc都是8。
改進(jìn)的基于用戶自定義算法環(huán)境的防攻擊智能卡認(rèn)證方法包括以下步驟:
步驟1 智能卡產(chǎn)生一個(gè)隨機(jī)數(shù),隨機(jī)數(shù)與智能卡本身所具有的識(shí)別碼、密鑰以及讀卡機(jī)產(chǎn)生的隨機(jī)數(shù)依據(jù)用戶的指定,按照3DES算法或基于16字節(jié)分組長(zhǎng)度算法進(jìn)行加密,從而獲得加密流。
步驟2 當(dāng)采用基于16字節(jié)分組長(zhǎng)度算法進(jìn)行內(nèi)部認(rèn)證時(shí),由于算法的分組長(zhǎng)度為16字節(jié),而輸入的認(rèn)證數(shù)據(jù)卻只是8字節(jié),需要將輸入增加為16字節(jié),則將8字節(jié)認(rèn)證數(shù)據(jù)加上8字節(jié)認(rèn)證數(shù)據(jù)的取反后得到的8字節(jié)一起構(gòu)成16字節(jié),qdrg進(jìn)行加密,加密后的密文長(zhǎng)度為16字節(jié);由于傳輸?shù)膬?nèi)部認(rèn)證命令的輸出認(rèn)證數(shù)據(jù)長(zhǎng)度為8字節(jié),也需要將得到的16字節(jié)的結(jié)果中的前8個(gè)字節(jié)與后8個(gè)字節(jié)進(jìn)行異或運(yùn)算,得到最終的8個(gè)字節(jié)的認(rèn)證數(shù)據(jù),然后再傳送出去。
Table 1 Command of internal authentication表1 內(nèi)部認(rèn)證的命令格式
Table 2 Command of external authentication表2 外部認(rèn)證的命令格式
步驟3 當(dāng)采用基于16字節(jié)分組長(zhǎng)度算法進(jìn)行外部認(rèn)證時(shí),所接受的數(shù)據(jù)格式同上述內(nèi)部認(rèn)證,需要智能卡先將卡內(nèi)的“8字節(jié)隨機(jī)數(shù)+8字節(jié)隨機(jī)數(shù)的取反”用外部認(rèn)證密鑰加密后,前、后8字節(jié)異或,然后與輸入的8字節(jié)外部認(rèn)證數(shù)據(jù)比較,如果相同,則判定外部設(shè)備合法;否則,認(rèn)為外部設(shè)備非法,拒絕后續(xù)流程。
進(jìn)行外部認(rèn)證的時(shí)候,為了防止用戶的惡意攻擊,設(shè)定一個(gè)限制外部認(rèn)證密鑰的使用次數(shù)計(jì)數(shù)器,在使用指定的外部認(rèn)證密鑰進(jìn)行加密的時(shí)候,先判斷指定的外部認(rèn)證密鑰可使用次數(shù)是否大于0,如果大于0,說明此密鑰還可以用來做外部認(rèn)證;否則,說明此密鑰已經(jīng)鎖定,不能再用來做外部認(rèn)證;如果密鑰的使用次數(shù)大于0,將指定的外部認(rèn)證密鑰的可使用次數(shù)減1;如果最終外部認(rèn)證成功,則將指定外部認(rèn)證密鑰的使用次數(shù)恢復(fù)成最大,以便后續(xù)認(rèn)證繼續(xù)使用。
與傳統(tǒng)認(rèn)證方法相比較,本文所提出的認(rèn)證方法的優(yōu)勢(shì)如表3所示。從表3可以看出,本文提出的認(rèn)證方案具有更高的安全性與適用性。
Table 3 Comparison of authentication methods表3 認(rèn)證方法比較
本文提出一種改進(jìn)的基于用戶自定義算法環(huán)境的智能卡認(rèn)證方法,使得智能卡可以根據(jù)用戶自定義的算法環(huán)境,按照不同的算法進(jìn)行認(rèn)證,從而來改變?nèi)职踩珷顟B(tài)寄存器或局部安全狀態(tài)寄存器的值,這樣既保證了認(rèn)證算法的多樣性,又提高了命令處理的復(fù)雜度。另外,本文還提出一種防攻擊的方法,此方法通過限制外部認(rèn)證密鑰的使用次數(shù),保證系統(tǒng)在被惡意攻擊的情況下數(shù)據(jù)傳輸?shù)陌踩浴?/p>
[1] Wang Ai-ying.Smart card technology[M].3rd Edition.Beijing:Tsinghua University Press,2009.(in Chinese)
[2] Mingwah Corporation.Smart Cos-PK-manual[Z].version 1.0.Shenzhen:Mingwah Ao han Science and Technology CO.,LTD.,2000.(in Chinese)
[3] Li Tao,Zeng Ying,Zhen Ji-na.A new remote double authentication scheme based on dynamic password[J].Microcomputer Information,2007,11(3):38-40.(in Chinese)
[4] Xue Feng,Wang Ding,Wang Li-ping,et al.Cryptanalysis of two smart card-based remote user password authentication protocol[J].Journal of Computer Applications,2012,32(7):2007-2009.(in Chinese)
[5] Wang Ya-fei.A smart card password authentication scheme study[J].Computer Applications and Software,2011,28(9):295-297.(in Chinese)
[6] Yang Li,Ma Jian-feng.Trusted mutual authentication scheme with smart cards and passwords[J].Journal of University of Electronic Science and Technology of China,2011,40(1):128-133.(in Chinese)
[7] Gao Liang,F(xiàn)ang Yong.A two-way user-identity authentication scheme based on smart card[J].Communications Technology,2011,44(2):85-86.(in Chinese)
[8] Kong Meng-rong,Zhu Guo-h(huán)ua.Remote authentication scheme based on samrt card[J].Computer Engineering and Design,2008,29(3):606-608.(in Chinese)
[9] Wu Jian-wu.Novel remote password authentication scheme based on smart card[J].Computer Engineering &Applications,2007,43(33):158-160.(in Chinese)
[10] Zhang Xin,F(xiàn)eng Quan-yuan.Dynamic ID-based remote user authentication scheme[J].Computer Engineering and Design,2007,28(3):545-546.(in Chinese)
[11] Roweis S,Winfree E,Bvrgoyne R,et al.A sticker-based model for DNA computation[J].Journal of Computational Biology,1998,5(4):615-629.
[12] Adleman L.Molecular computation of solutions to combina
torial problems[J].Science,1994,266(5187):1021-1024.[13] ISO.ISO/IEC 7816-4,Identification cards-Integrated cir
cuit cards-part 4:organization,security and commands for interchange[S].Geneva:ISO,1996.
附中文參考文獻(xiàn):
[1] 王愛英.智能卡技術(shù)[M].第三版.北京:清華大學(xué)出版社,2009.
[2] 明華科技.SmartCos-PK-manual[M].Version 1.0.深圳:深圳市明華澳漢科技股份有限公司,2000.
[3] 李濤,曾英,甄姬娜.一種新的基于動(dòng)態(tài)口令的遠(yuǎn)程雙向認(rèn)證[J].微計(jì)算機(jī)信息,2007,23(11):38-40.
[4] 薛峰,汪定,王立萍,等.對(duì)兩個(gè)基于智能卡的口令認(rèn)證協(xié)議的安全性分析[J].計(jì)算機(jī)應(yīng)用,2012,32(7):2007-2009.
[5] 王亞飛.一種基于智能卡口令認(rèn)證方案的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(9):295-297.
[6] 楊力,馬建峰.可信的智能卡口令雙向認(rèn)證方案[J].電子科技大學(xué)學(xué)報(bào),2011,40(1):128-133.
[7] 高亮,方勇.一種基于智能卡的雙向身份認(rèn)證方案[J].通信技術(shù),2011,44(2):85-86.
[8] 孔夢(mèng)榮,朱國(guó)華.基于智能卡的遠(yuǎn)程認(rèn)證體制[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(3):606-608.
[9] 吳建武.一種基于智能卡的遠(yuǎn)程口令認(rèn)證方案[J].計(jì)算機(jī)工程與應(yīng)用,2007,43(33):158-160.
[10] 張馨,馮全源.基于動(dòng)態(tài)ID的遠(yuǎn)程用戶身份認(rèn)證方案[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(3):545-546.