付青琴,昂正全,徐平江
(1.國網電力科學研究院,江蘇南京210003;2.北京航天飛行控制中心,北京100094)
智能卡之所以能夠迅速地發展并且流行起來,其中一個重要的原因就在于它能夠通過算法環境的安全體系給用戶提供—個較高的安全性保證。而對智能卡進行認證,則能夠獲得智能卡的安全狀態,獲得一定的使用權限,從而進行一些與安全有關的操作。
傳統的智能卡認證是通過智能卡和讀寫設備雙方同時對相同的隨機數進行某種相同的加密運算,然后判斷雙方運算結果的一致性來對智能卡的合法性進行驗證,這樣也就判定了一張智能卡是不是偽造卡。根據所認證的對象不同,智能卡認證又分為內部認證和外部認證兩種。內部認證就是讀寫設備對智能卡的合法性進行的驗證;外部認證就是智能卡對讀寫設備的合法性進行的驗證[1,2]。
目前常用的認證算法是3DES算法。但是,隨著3DES算法的被破解,芯片的安全性受到了威脅。如果有非法用戶進行惡意的攻擊,安全問題就岌岌可危。因為認證中采用的加密算法是固定的,非法用戶就能夠采用固定的算法進行攻擊。另外,傳統認證方法不能適應電流、功耗等攻擊手段[3~13]。
針對此問題,本文設計了一個可以自定義算法環境的防攻擊認證方法。此認證方法允許用戶根據自己的應用要求設置算法環境,當算法環境變化時,認證采用的加密算法也是可變的。與此同時,還提供了一種防攻擊的手段,此手段能夠有效減少非法用戶的攻擊嘗試次數,從而提高非法用戶破解的難度。
傳統智能卡的認證方法如圖1所示,該方法先進行隨機數的有效性驗證,如果通過驗證,則采用3DES算法對隨機數進行加密,得到認證結果。將加密得到的認證結果與接受到的認證結果進行比較,如果一致,則認證成功;如果不一致,則認證失敗,此時需要將認證對應的密鑰嘗試次數減1。

Figure 1 Traditional IC card external authentication method圖1 傳統智能卡外部認證方法
此種認證方法有自身的缺點,主要如下:
(1)傳統認證方法固定采用3DES算法,攻擊對象可以根據3DES算法的特點,專門針對3DES算法的破解來進行惡意攻擊。如:常采用SPA、DPA攻擊手段。
(2)傳統認證方法先進行認證結果的比較,再扣減密鑰的可嘗試次數。但是,當攻擊對象使用的認證結果與實際的認證結果不一致時,自動將智能卡進行斷電操作,這時認證流程無法正常繼續,那么相應認證密鑰的可嘗試計數器也就不會減1,這樣攻擊對象可以無限次地重復發送認證數據,直到嘗試到正確的密鑰。
針對常用認證方法存在的上述兩個缺點,本文對認證命令及認證流程進行了重新設計,提出了一種自定義算法環境的防攻擊認證方法。
自定義算法環境的防攻擊認證方法流程如圖2所示。

Figure 2 IC card external authentication method for avoiding attack圖2 防攻擊智能卡外部認證方法
從圖2可以看出,改進的地方有兩處:一是將嘗試計數器減1操作提前到隨機數驗證之后;二是提供了一種自定義算法環境的加密方法,允許用戶選擇加密算法,從而提供多種認證算法,分別為:3DES算法(即8字節分組長度算法)、16字節分組長度算法。其中,3DES算法是目前流行的算法,16字節分組長度算法可以是任何算法,只要其分組長度為16字節即可。具體采用哪種算法進行認證,由應用者根據自己的需求決定。這就增加了應用的隨機性和不確定性,提高了攻擊的難度。
本文對現有的認證方法(包括內部認證和外部認證)分別進行了改進,可以認證MF、DDF、ADF等目錄下的密鑰,或者是主控(MK)密鑰,從而達到一定的權限。
認證雙方采用P1字節所指定的算法進行認證。認證分為內部認證與外部認證兩種[14],格式分別如表1和表2所示。
表1中,(1)P1表示用戶采用何種自定義的算法環境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7為內部認證密鑰的密鑰標識。
(3)不管采用的認證算法分組長度是8或者16,其后跟隨的認證數據長度Lc都是8。
(4)不管采用的認證算法分組長度是8或者16,其返回的加密認證數據長度Le都是8。
表2中,(1)P1表示用戶采用何種自定義的算法環境,比如:‘00’代表SM1算法,‘01’代表AES算法,‘02’代表3DES算法。
(2)P2的b1~b7為外部認證密鑰的密鑰標識。
(3)不管采用的認證算法分組長度是8或者16,其后跟隨的認證數據長度Lc都是8。
改進的基于用戶自定義算法環境的防攻擊智能卡認證方法包括以下步驟:
步驟1 智能卡產生一個隨機數,隨機數與智能卡本身所具有的識別碼、密鑰以及讀卡機產生的隨機數依據用戶的指定,按照3DES算法或基于16字節分組長度算法進行加密,從而獲得加密流。
步驟2 當采用基于16字節分組長度算法進行內部認證時,由于算法的分組長度為16字節,而輸入的認證數據卻只是8字節,需要將輸入增加為16字節,則將8字節認證數據加上8字節認證數據的取反后得到的8字節一起構成16字節,qdrg進行加密,加密后的密文長度為16字節;由于傳輸的內部認證命令的輸出認證數據長度為8字節,也需要將得到的16字節的結果中的前8個字節與后8個字節進行異或運算,得到最終的8個字節的認證數據,然后再傳送出去。

Table 1 Command of internal authentication表1 內部認證的命令格式

Table 2 Command of external authentication表2 外部認證的命令格式
步驟3 當采用基于16字節分組長度算法進行外部認證時,所接受的數據格式同上述內部認證,需要智能卡先將卡內的“8字節隨機數+8字節隨機數的取反”用外部認證密鑰加密后,前、后8字節異或,然后與輸入的8字節外部認證數據比較,如果相同,則判定外部設備合法;否則,認為外部設備非法,拒絕后續流程。
進行外部認證的時候,為了防止用戶的惡意攻擊,設定一個限制外部認證密鑰的使用次數計數器,在使用指定的外部認證密鑰進行加密的時候,先判斷指定的外部認證密鑰可使用次數是否大于0,如果大于0,說明此密鑰還可以用來做外部認證;否則,說明此密鑰已經鎖定,不能再用來做外部認證;如果密鑰的使用次數大于0,將指定的外部認證密鑰的可使用次數減1;如果最終外部認證成功,則將指定外部認證密鑰的使用次數恢復成最大,以便后續認證繼續使用。
與傳統認證方法相比較,本文所提出的認證方法的優勢如表3所示。從表3可以看出,本文提出的認證方案具有更高的安全性與適用性。

Table 3 Comparison of authentication methods表3 認證方法比較
本文提出一種改進的基于用戶自定義算法環境的智能卡認證方法,使得智能卡可以根據用戶自定義的算法環境,按照不同的算法進行認證,從而來改變全局安全狀態寄存器或局部安全狀態寄存器的值,這樣既保證了認證算法的多樣性,又提高了命令處理的復雜度。另外,本文還提出一種防攻擊的方法,此方法通過限制外部認證密鑰的使用次數,保證系統在被惡意攻擊的情況下數據傳輸的安全性。
[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,Fang 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-hua.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,Feng 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.
附中文參考文獻:
[1] 王愛英.智能卡技術[M].第三版.北京:清華大學出版社,2009.
[2] 明華科技.SmartCos-PK-manual[M].Version 1.0.深圳:深圳市明華澳漢科技股份有限公司,2000.
[3] 李濤,曾英,甄姬娜.一種新的基于動態口令的遠程雙向認證[J].微計算機信息,2007,23(11):38-40.
[4] 薛峰,汪定,王立萍,等.對兩個基于智能卡的口令認證協議的安全性分析[J].計算機應用,2012,32(7):2007-2009.
[5] 王亞飛.一種基于智能卡口令認證方案的研究[J].計算機應用與軟件,2011,28(9):295-297.
[6] 楊力,馬建峰.可信的智能卡口令雙向認證方案[J].電子科技大學學報,2011,40(1):128-133.
[7] 高亮,方勇.一種基于智能卡的雙向身份認證方案[J].通信技術,2011,44(2):85-86.
[8] 孔夢榮,朱國華.基于智能卡的遠程認證體制[J].計算機工程與設計,2008,29(3):606-608.
[9] 吳建武.一種基于智能卡的遠程口令認證方案[J].計算機工程與應用,2007,43(33):158-160.
[10] 張馨,馮全源.基于動態ID的遠程用戶身份認證方案[J].計算機工程與設計,2007,28(3):545-546.