楊小寶,謝 璇,肖躍雷
(西安郵電大學 物聯網與兩化融合研究院,陜西 西安 710061)
隨著微型電子技術和軟件技術的發展,智能卡的發展和應用在各個領域成倍增長,如2004年,波蘭市民卡[1]被成功的應用生活之中;2011年7月,中國國家原衛生部發布了《居民健康卡技術規范》,推行多應用智能卡片的應用;2013年2月中國人民銀行正式頒發《中國金融集成電路(IC)卡規范》(JR/T 0025—2010)第三版行業標準,(業內簡稱PBOC3.0),推動磁條卡向IC卡的應用等。不論是行業市場的發展,還是政府的政策制定,智能卡開始從單應用向一卡通或“一卡多用”方向發展。但是,在當今木馬、病毒盛行和黑客的頻繁攻擊下,智能卡本身以及多應用智能卡的數據訪問都存在一定的安全問題,如常見物理攻擊[2]、旁路攻擊[3]和邏輯攻擊等。本文只討論邏輯攻擊,它是指通過分析智能卡通信過程中潛在的邏輯缺陷,如分析密碼算法實現過程中存在的隱藏命令、壞的參數、緩沖區溢出,以及卡片明文數據交互等,實現對卡的非法訪問;多應用智能卡本身亦存在偽讀卡終端和行業合法讀卡終端的共享模式下的非法訪問。面對這些攻擊和潛在的安全漏洞,如何實現卡內數據的安全訪問成為問題的關鍵。針對這個問題,國內外的安全專家給出了一些解決方案,如Sandeep K.Sood等提出的智能卡安全和密鑰管理方案[4],基于PKI的RSA的密鑰管理改進的認證方法[5],Global Platform規范提供的多應用管理安全框架[6]等,但是這些方案要么是針對單一應用智能卡,要么是算法效率低不能滿足當前多應用智能卡的特性。本文在分析多應用智能卡文件系統的基礎上,基于橢圓曲線算法,提出了一種適合多應用智能卡的數據訪問保護方法。
智能卡的操作系統(Card Operating System,COS)管理著卡上的信息資源,包括通信管理模塊、安全管理模塊、應用處理模塊,文件管理模塊。要解決邏輯攻擊和非法讀卡端訪問模式下數據存儲存的安全問題,首先要了解多應用智能卡的數據存儲文件系統。智能卡的COS文件系統結構[7]包括主文件(Master File,MF);專用文件(Dedicated File,DF)和基本文件(Elementary File,EF)。其中,MF對任何COS都是必需的,它包含文件控制信息及可分配存儲區,是COS文件的根目錄。EF也是COS必需的,它用來存儲的數據單元或記錄,在文件系統的最底層。DF是一種通用目錄,非必需,它主要存儲文件的控制信息、文件的位置、大小等,如私鑰、公鑰、透明文件、控制文件等。但是在多應用智能卡的COS系統中,DF主要作為行業應用的目錄,是必須的,文件系統結構如圖1所示。

圖1 多應用智能卡文件系統結構
多應用智能卡通過內置的安全系統實現對上述內部資源的安全保護,每個文件都有相互關聯的的安全條件,包括請求相互的身份驗證、密碼驗證等,總體包含3個部分:安全狀態,安全屬性和安全機制。
1)安全狀態
智能卡有全球、應用特定、文件特有和命令特定4個安全狀態,具體定義請參考規范ISO/IEC 7816-4。
2)安全屬性
文件系統的安全屬性至關重要,安全屬性定義哪些行為在什么條件下是被允許的,除一些特殊文件,一般文件的安全屬性依賴于它的類別(DF或EF),被標注在可選的文件控制信息(File Control Information,FCI)文件中或父文件中。
3)安全機制
多應用智能卡中的安全機制包括:卡和應用PIN碼驗證、內部認證、外部認證。當訪問命令的安全條件得到滿足,COS提高到相應的安全狀態,然后檢查安全狀態是否符合待訪問文件的安全屬性。例如,當持卡人進行某個應用操作時,就必須進行PIN碼驗證及內、外部認證的組合使用。
雖然目前智能卡的安全機制可以保障信息安全,但對于無密鑰證書保護的多應用智能卡,終端的安全得不到有效的保護,攻擊者可能繞過多應用智能卡的安全機制,直接訪問或者攻擊卡內信息。例如,智能卡訪問是由讀卡終端管理,攻擊者可以利用合法終端在獨占模式下的邏輯缺陷,通過某種類型的變化進行攻擊,如通過連續返回值變化測定訪問命令,隱藏命令進程注入、內核注入等方式的非法信息的讀寫;智能卡在共享模式打開時,合法的程序中完成安全檢查,同時,一個非法終端也對智能卡進行訪問,就能繞過安全檢查,敏感的信息可能會被讀取、覆蓋、或更換;合法行業終端在共享模式下,沒有密鑰的許可和消息來源驗證,對其他業的數據進行跨界非法讀取、刪除或篡改等。為有效阻止上述安全隱患,本文基于橢圓曲線公私密鑰算法,提出適合多應用智能卡的密鑰證書讀卡端認證和數據安全會話的保護機制。
對于多行業終端設備訪問的多應用智能卡數據保護,主要分為兩個部分,前期為卡片出廠后多行業的發卡,包括密鑰證書生成、DF目錄創建、數據的寫入加載等;后期是以密鑰證書為基礎,通過橢圓曲線算法實現行業訪問卡內本行業目錄數據的安全會話機制部分,包括公私鑰加解密方式的行業特定標識與卡內對應目錄DF的身份認證、會話密鑰協商以及數字簽名,和基于3DES算法的密文會話等安全措施。本節針對卡和卡內應用,研究基于橢圓曲線算法的密鑰證書的算法原理、證書生成、初始安全加載等。
據前文分析和圖1所示文件系統結構可知,在多應用智能卡中至少需要設計兩級多個密鑰證書。一級可證書是MF下的密鑰證書,記作CertM,主要實現卡片發行機構控制MF下的DF、EF創建刪除以及數據信息的訪問等卡管理級別的命令安全;二級證書是DF下的密鑰證書,記作CertD1,CertD2,…,CertDN,主要實現行業應用DF下的DF、EF等文件的創建刪除、數據的訪問安全等。該密鑰證書至少包含兩類密鑰對,一類用于信息加解密,即通常所謂的加密/解密公/私密鑰對,稱為E_PK/E_SK,另一對用于信息的數字簽名,即數字簽名的公私密鑰對,稱為S_PK/S_SK。在多應用智能卡中,卡管理和應用級別的私鑰均直接以證書密文形式保存在MF和DF下EFCertM中。
多應用智能卡中的密鑰證書,可由卡機構、應用機構或者第三方證書授權中心(Certificate Authority,CA)生成。本文基于中國國家密碼管理局2010年12月17日發布的橢圓曲線算法SM2[8],生成公私密鑰對,由CA把申請者的公鑰和用戶其他信息(如名稱、電子郵件、身份證號等)捆綁在一起,產生、管理、存儲、發布以及作廢證書等。下面以SM2橢圓算法生成CertM中的E_PKM/E_SKM,S_PKM/S_SKM密鑰為例,敘述算法原理和密鑰生成過程。
定義在素域Fp(p是大于3的素數)的橢圓曲線方程E為

式中:(x,y)為曲線的點坐標;a,b為Fp域上的元素;mod p表示做模p運算。
則橢圓曲線E(Fp)定義為Fp上的所有有理點P(x,y)與O(無窮遠點)組成的集合

根據上述定義以及SM2算法的安全規定,橢圓曲線E的參數為(p,a,b,P,n),其中p是一個大于2191奇素數,a、b是有限域E(Fp)橢圓曲線上的元素,為小于p的非負整數,P(x,y)是曲線E上的一個基點,n為P點的階(橢圓上點的數目),是一個和p大小相當的大素數,則滿足式(2)的有理點P(x,y)和無窮點O就組成了橢圓曲線E。 因此,確定整數k∈[0,n-1],使得Q=[k]*P成立的求解問題稱為橢圓曲線離散對數的問題(ECDLP),以此建立安全的橢圓密碼系統。
在橢圓曲線參數確定后,用隨機數發生器產生整數d∈[1,n-1],通過基點P,計算點Q=(xP,yP)=[d]*P,使Q為橢圓曲線E上點,則E_SKM=d為私鑰,E_PKM=Q為公鑰.同理,可以生成簽名密鑰對S_PKM/S_SKM。卡發行機構將公鑰及相關信息發送CA,由CA簽發CertM證書,簽發過程參看相關資料[9]。
同樣,行業應用機構通過CA或者自己按照上述原理可生成CertD1,CertD2,…,CertDN等卡片上的行業應用證書,以供持卡人完成驗證。
按照多應用智能卡證書分類和文件系統結構,CA簽發的密鑰證書和卡與行業應用數據的安全加載分為兩個階段:
1)CertM密鑰證書和卡發行機構數據的初始加載:如圖2所示加載過程,卡發行機構獲得出廠卡片和出廠授權卡后,通過卡片隨機數ECC加密后密文的Hash值對比驗證,獲得卡片的讀寫權限,在MF下,創建卡發行機構的EF(CertM)密鑰證書和其他DIR,FCI,EF等數據文件,使得卡片稱為發行機構控制的白卡。

圖2 CertM密鑰證書初始加載認證流程
初始加載后的多應用智能卡文件系統結構如圖3所示。

圖3 CertM加載后的文件結構
2)CertD1,CertD2,…,CertDN等行業應用密鑰證書和數據的初始加載:行業應用發行機構獲得卡發行機構的授權密鑰和白卡,通過類似圖2所示的身份鑒別,獲得對卡MF的訪問權限,創建行業的DF目錄和文件,寫入行業的Cert密鑰證書和相關數據信息,驗證過程中所使用加密密鑰為CertM證書中的公鑰。各行業應用發行機構加載多個行業應用后的智能卡文件結構如圖1所示。
當卡發行機構和行業應用機構完成密鑰證書數據文件的安全初始加載后,持卡人就可以在行業柜臺完成個人數據的個人化,進行使用。其后,多應用智能卡各級目錄下密鑰證書的更新由相應機構來操作。如存在于MF下的CertM,是由卡片發行機構通過來自身驗證來完成證書的更新與撤銷,證書撤銷標志卡片生命周期結束;DF下的密鑰證書,除初始加載必須通過MF下密鑰證書的密鑰鑒別驗證外,以后的使用、更新、撤銷均由相對應的行業機構使用自身密鑰來簽名驗證,DF下的該Cert被撤銷標志該行業應用生命周期結束,所有的更新與撤銷操作必須通過各自的密鑰的身份鑒別后完成。
持卡人在進行行業業務應用過程時,終端設備與多應用智能卡進行會話,經過圖4所示流程,按照規范ISO/IEC 7816-4給卡片的加電、協商通信、選擇行業應用標識符(Application Identifier,AID),啟動行業應用程序,建立基行業會話通道。這時在前文密鑰證書的基礎上需要建立與對應的安全會話通道,包括基于SM2密鑰證書的行業讀卡端與卡的認證、密鑰協商、DES密文會話和數字簽名及驗簽等。

圖4 行業讀卡端與多應用卡的安全會話
行業讀卡終端與卡的認證是通過卡內該行業應用程序調用對應證書中的固定內容驗證來完成的。IDA(行業特定標識符)是CA在給行業簽發密鑰證書時寫入Cert中的內容。行業讀卡端使用智能卡ECC公鑰對IDA加密后,傳送給智能卡,由于智能卡擁有針對該行業自己的私鑰,所以只有智能卡卡內該行業應用程序,才能夠解密出該標識符,然后通過比較解密出的消息與該行業證書中的特定標識符來完成驗證。根據密鑰生成原理,假設行業讀卡端為A,使用智能卡內對應行業的公鑰E_PKB,對IDA進行加密并傳送給智能卡內應用程序B,B利用自己的私鑰E_SKB解密出原始信息。其加密和解密過程如下:
1)ECC加密過程:A使用 B的E_PKB將IDA通過加密后發送給B。
(1)用隨機數發生器產生隨機數k∈[1,n-1];
(2)計算:C1=k*P,其中*指k個P相加運算;
(3)計算:C2=IDA+k*E_PKB;
(4)密文C是一個點對{C1,C2}。
思想政治教育接受研究是思想政治教育研究的重要內容之一,它改變了過去僅以“授”為考慮的研究思路,凸顯“受”的規律探討的重要性,具體探討思想政治教育接受中存在的問題、隱含的規律。它的理論前提是受教育者主體性的發現,它的理論背景是市場經濟條件下人的生存方式的改變,它的研究目的是在新的時代背景下如何提升思想政治教育的實效性。
2)ECC解密過程:智能卡內該行業應用程序B使用自己的私鑰E_SKB,解密密文C。
(1)計算:C′=IDA+k*E_PKB–E_SKB*(C1);
(2)根據ECC密鑰對產生的原理:E_PKB=E_SKB*P,代入步驟(1);
(3)則解密明文:C′=IDA+k*E_PKB-E_SKB*C1=IDA+k*(E_SKB*P)-E_SKB*(k*P)=IDA。
(4)智能卡內行業程序提取行業CertDN中的IDA,比較C′和IDA,如果匹配則是合法卡片,否則為偽造卡片。
使用相同方法,卡片可以逆向驗證行業端卡是否合法。
當雙方身份鑒定合法,行業讀卡端A與卡內行業應用程序B通過4.1節的加密方式,用各自的私鑰和對方的公鑰商定一個只有他們知道的會話密鑰,用以業務密文會話使用。由前文確定的橢圓曲線參數可知,密鑰協商過程如下:
1)A執行
(1)隨機生成kA∈{1,…,n-l},計算SA=kA*P;
(3)隨機選取FP的曲線中的元素XA;
(4)計算:TA=RA⊕XA,其中⊕指等長兩個比特串按位做異或運算;
(5)將(TA,SA)發送給B,A自己保存kA,XA。
2)B執行
(1)隨機生成kB∈{1,…,n-l},計算.SB=kB*P;
(2)利用kB計算:RB=kB*E_PKA;
(3)隨機選取FP的曲線中的元素XB;
(4)計算:TB=RB⊕XB;
(5)發送(TB,SB)給A,B自己保存kB,XB。
3)A收到(TB,SB)后
(1)利用E_SKA和SB計算:RB=TB⊕(E_SKA*SB);
(2)計算:S=RB⊕XA;
(3)取H(S,kA*SB)為會話密鑰,H為哈希函數。
4)B收到(TA,SA)后
(1)利用E_SKB和SA計算:RA=TA⊕(E_SKB*SA);
(2)計算:S=RA⊕XB;
(3)取_K=H(S,kB*SA)為會話密鑰。
由 E_PKA=E_SKA*P 和 E_PKB=E_SKB*P,可知 RA=XA,RB=XB,即A與B最終獲得一個共同的會話密鑰_K,將其作為DES對稱密碼算法的密文會話密鑰。由于該密鑰的隨機信息被雙方的私鑰所保護,所以攻擊者進行請求攻擊會話時,無法獲得所求會話密鑰的任何信息。
為防止在共享模式下其他行業合法終端繞過身份驗證的越界訪問和數據傳輸的明文泄露,對行業讀卡端發送卡片的命令或數據做數字簽名[10]后,以DES密文形式發送,并由卡內行業應用程序解密,驗證來源的合法性和可靠性后再進行數據處理,密文會話密鑰采用3.2節生成的臨時會話密鑰_K,簽名密鑰對為行業Cert中保存的S_PK/S_SK,其中私鑰S_SK做簽名使用,公鑰S_PK做驗簽使用,整個安全會話過程如圖5所示。

圖5 數字簽名與密文的安全會話
設行業讀卡端A待簽名的發送消息為M,行業特定標識符為IDA,生成的數字簽名為(R,S),則:
1)行業讀卡端A產生簽名
(1)計算:_M=M||IDA,其中||指兩個字符串拼接;
(2)計算哈希值:E=H(_M);
(3)用隨機發生器產生隨機數k∈[1,n-1];
(4)計算橢圓曲線點:G(x1,y1)=[k]*P(xA,yA);
(5)計算:R=(E+x1)mod n,若R=0或者R+k=n,則返回(3);
(6)計算:S=((1+S_SKA)-1*(k-R*S_SKA))mod n,S≠0發送消息M的簽名為(R,S),否則返回(3)。
2)讀卡端DES算法以密鑰_K產生的密文
C=EK(_M+(R,S),_K),其中EK()為DES算法的加密函數,具體加密過程參考文獻[11]。
3)卡內行業應用B以_K解密的DES明文
C′=_M′+(R,S)=DK(C,_K),其中DK()為DES算法的解密函數,具體解密過程參考文獻[11]。
4)卡內行業應用程序B接收的消息為M′,接收消息的簽名為(R′,S′),則接收消息的驗簽過程為:
(1)檢驗 S′∈[1,n-1]與 S′∈[1,n-1]兩者是否成立,若有一個不成立則驗簽失敗。
(2)計算:_M′=IDA||M′。
(3)計算哈希值:E′=H(_M′)。
(4)計算:T=(R′+S′)mod n,若T=0,則驗證不通過。
(5)計算橢圓曲線點:G′(x′1,y′1)=[S′]*G+[T]*S_PKA。
(6)計算:_R=(E′+x′1)mod n,檢驗_R=R′是否成立,若成立則驗簽成功;否則失敗。
當驗簽成功,則可確定行業讀卡端A發送而來的命令或者數據來源合法有效,卡內程序B進行數據處理或者下一步操作;否則,反饋錯誤應答。
多應用智能卡中各行業應用可以設置不同或者相同的PIN碼,通過PIN碼驗證,能夠確認持卡人與卡的合法關系,但對終端設備訪問卡內數據的安全性無關,因此本文不在贅述,其驗證過程請參考資料[12]。
由前文章節可知,本文所設計的保護方法,前期階段處于MF下的CertM密鑰認證,嚴格保護了各行業卡上應用、密鑰證書、和數據的安全加載,使得各方數據處于不同DF的物理隔離狀態,加載后各行業的數據訪問、證書更新、作廢等,由各自的密鑰證書進行密鑰認證,主密鑰證書CertM不再起作用,保證了行業后臺系統與卡中行業應用程序通信環境的獨立性和安全性。在后期持卡人應用階段,即行業終端對卡內應用數據的安全會話階段,基于ECC密鑰證書提供了的各行業讀卡端設備與卡應用的身份驗證機制,防止非法的偽讀卡終端對卡中行業數據的非法讀取;基于臨時會話密鑰的DES算法密文會話,有效防止會話過程中數據信息的明文泄露和命令參數重放分析的風險;而在共享模式下,對合法終端的發送訪問命令和數據信息得簽名認證,可以保證數據和命令的合法可靠性,防止非法終端的繞行攻擊和合法終端的越界訪問。這些保護措施可以使各行業的數據交互在安全的通道中進行。
另外,本方案中采用的ECC算法密碼體制,與現有智能卡應用的RSA&DSA算法相比[13],在同等安全級別下,ECC算法需要的密鑰很小。例如RSA&DSA要求模長為1 024 bit,而對于ECC模長160 bit就已足夠,并且當密鑰長度增加時,ECC比RSA/DSA的安全性增加要快得多,240 bit密鑰長的ECC比2 048 bit模長的RSA/DSA安全。在與DES算法相結合做加解密運算的時間效率上,密鑰長160 bit的ECC比密鑰長1 024 bit的RSA耗時更短。這提高現行行業終端設備對卡的訪問效率,并變相地提高對卡數據訪問的安全性。
本文基于ECC算法的密鑰證書對數據的保護方法,滿足當前Java卡、類Java卡和Multos卡等多應用智能卡片的安全要求,可以效地消除所存在的邏輯攻擊隱患。該方法主要保護卡發行機構、行業應用機構、持卡人與卡之間的信息進行安全交互,限制非法終端的攻擊和合法終端的跨界非法訪問。在軟硬件實現方面,該方法中使用的ECC算法密碼機制較其他算法機制具有運算速度快、易實現和成本低的優勢,更適合容量和運算速度受限的多應用智能卡。因此,該方法對多應用智能卡的安全應用和發展具有重要意義。
[1] BANASZAK B,RODZIEWICZ K.Trust and security,digital citizen cards in Poland[M].[S.l.]:Springer Berlin Heidelberg,2004.
[2]MARKANTONAKIS K,TUNSTALL M,HANCKE G,et al.Attacking smart card systems:theory and practice[J].Information Security Technical Report,2009,14(2):46-56.
[3] STANDAERT F X.Introduction to side-channel attacks[M].[S.l.]:Springer Berlin Heidelberg,2010.
[4] SOOD S K.An Improved and secure smart card based dynamic identity authentication protocol[J].IJ Network Security,2012,14(1):39-46.
[5]LU C,SANTOSA L M,PIMENTEL F R.Implementation of fast RSA key generation on smart cards[C]//Proc.2002 ACM symposium on Applied computing.[S.l.]:ACM Press,2002:214-220.
[6] PLATFORM G.Global platform card specifications,version 2.2[S].2006.
[7] ISO/IEC7816-4:2005(E),Identification cards--Integrated circuit cards--Part 4:Organization security and commands for interchange[S].2005.
[8] NIU Y C.Fast implementation of public key cryptographic algorithm sm2 based on elliptic curves[D].Jinan:Shandong University,2013.
[9]MALAN D J,WELSH M,SMITH M D.A public-key infrastructure for key distribution in TinyOS based on elliptic curve cryptography[C]//Proc.2004 First Annual IEEE Communications Society Conference on Sensor and Ad Hoc Communications and Networks.[S.l.]:IEEE Press,2004:71-80.
[10]JOHNSON D,MENEZES A,VANSTONE S.The elliptic curve digital signature algorithm(ECDSA)[J].International Journal of Information Security,2001,1(1):36-63.
[11]AKKAR M L,GIRAUD C.An implementation of DES and AES,secure against some attacks[C]//Proc.Cryptographic Hardware and Embedded Systems—CHES 2001.[S.l.]:Springer Berlin Heidelberg,2001:309-318.
[12] TAKADA T,KOKUBUN Y.Extended PIN authentication scheme allowing multi-touch key input[C]//Proc.International Conference on Advances in Mobile Computing&Multimedia.[S.l.]:ACM Press,2013:307.
[13]SAVARI M,MONTAZEROLZOHOUR M,THIAM Y E.Comparison of ECC and RSA algorithm in multipurpose smart card application[C]//Proc.2012 International Conference on Cyber Security,Cyber Warfare and Digital Forensic.Kuala Lumpur:IEEE Press,2012:49-53.