田沅蕊, 楊小寶,王瑞剛 ,謝 璇,貢維雪
(西安郵電大學(xué) 物聯(lián)網(wǎng)與兩化融合研究院,陜西 西安710061)
多應(yīng)用智能卡數(shù)據(jù)信息的安全研究
田沅蕊, 楊小寶,王瑞剛 ,謝 璇,貢維雪
(西安郵電大學(xué) 物聯(lián)網(wǎng)與兩化融合研究院,陜西 西安710061)
在智能卡進(jìn)行多行業(yè)應(yīng)用時,存在跨行業(yè)數(shù)據(jù)訪問、數(shù)據(jù)泄露以及破壞等安全問題。針對此類問題,結(jié)合當(dāng)前智能卡安全機(jī)制和跨行業(yè)多應(yīng)用的文件系統(tǒng)特征,提出了對多應(yīng)用智能卡數(shù)據(jù)完整性校驗(yàn)的一種方法。該方法構(gòu)建了一個文件加密與訪問控制模型,其主要功能包括保障各行業(yè)應(yīng)用系統(tǒng)的獨(dú)立性,實(shí)現(xiàn)數(shù)據(jù)的訪問控制和密鑰的安全存儲等。最后分析并驗(yàn)證了該安全模型的可行性與安全性。該方案在陜西省社會公共服務(wù)卡驗(yàn)證平臺上得到了驗(yàn)證,提高了卡內(nèi)數(shù)據(jù)信息的安全級別。
多應(yīng)用智能卡;數(shù)據(jù)完整性;安全管理器;密鑰映射表
隨著智能卡[1]多業(yè)務(wù)應(yīng)用的快速發(fā)展,信息在不同的網(wǎng)絡(luò)、系統(tǒng)和數(shù)據(jù)源之間實(shí)現(xiàn)自動、快速、安全的交換。不同的應(yīng)用系統(tǒng)可能屬于不同的信任域,而用戶訪問不同信息域的應(yīng)用系統(tǒng)具有不同的身份。應(yīng)用系統(tǒng)內(nèi)的數(shù)據(jù)信息不可被非法用戶訪問或篡改。針對此類信息數(shù)據(jù)安全[2],主要的解決方案是數(shù)據(jù)的完整性校驗(yàn)。奇偶校驗(yàn)(XOR校驗(yàn))和循環(huán)冗余校驗(yàn)CRC[3](Cyclical Redundancy Check)這2種校驗(yàn)方法雖然能夠達(dá)到保證數(shù)據(jù)完整性的目的,但它并沒有抗數(shù)據(jù)篡改的能力。它們一定程度上能檢測并糾正數(shù)據(jù)傳輸中的信道誤碼,但卻不能防止外在對數(shù)據(jù)的惡意破壞。本文旨在提出一種更為行之有效的數(shù)據(jù)完整性校驗(yàn)[4]方案,真正做到數(shù)據(jù)的防篡改,保護(hù)智能卡的數(shù)據(jù)安全。結(jié)合智能卡的文件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)提出以安全管理器模塊為核心的文件加密與訪問控制模型。此方案不但能很好地解決智能卡安全問題,而且具有開發(fā)周期短,系統(tǒng)維護(hù)與更新方便且成本更低等優(yōu)點(diǎn)。
在多應(yīng)用智能卡中,用戶不同的身份對應(yīng)的數(shù)據(jù)由不同的系統(tǒng)簽發(fā),為了方便使用與管理,不同系統(tǒng)簽發(fā)的數(shù)據(jù)文件可能會放在同一張智能卡上,尤其是現(xiàn)在一卡通或者一卡多用的出現(xiàn),要求將多個業(yè)務(wù)集成在一張智能卡上。多應(yīng)用文件結(jié)構(gòu)如圖1所示,在每張智能卡中文件系統(tǒng)只存在一個根文件MF,其他的所有文件都是該文件的子(孫)文件。知道任何一個DF(Dedicated File)在物理上和邏輯上都保持獨(dú)立,都有自己的安全機(jī)制和應(yīng)用數(shù)據(jù)。為了標(biāo)識不同的DF,每個DF具有一個同級DF下唯一的文件標(biāo)識符 FID(File Identifier)和一個卡內(nèi)全局唯一的應(yīng)用標(biāo)識符AID(Application Identifier)。從圖1可以看出每個行業(yè)分別對應(yīng)卡中一個獨(dú)立的應(yīng)用系統(tǒng),例如行業(yè)1對應(yīng)智能卡內(nèi)DDF01的應(yīng)用系統(tǒng)。其文件結(jié)構(gòu)如圖2所示,包括多個具體的存放應(yīng)用數(shù)據(jù)文件以及存放密鑰的基本數(shù)據(jù)文件KEY。
圖1 多應(yīng)用智能卡文件系統(tǒng)結(jié)構(gòu)
圖2 某行業(yè)應(yīng)用系統(tǒng)文件結(jié)構(gòu)
在一張代表用戶身份的智能卡中會有多個不同的應(yīng)用系統(tǒng)或者目錄,其相關(guān)數(shù)據(jù)信息均以密文形式保存在智能卡內(nèi)對應(yīng)的文件中,由于存在不同行業(yè)之間的串讀以及偽終端惡意偽造合法身份竊取卡內(nèi)敏感數(shù)據(jù)信息,這里需要使用與應(yīng)用系統(tǒng)對應(yīng)的加密算法對文件進(jìn)行加密,讀卡端在訪問不同信息域的應(yīng)用系統(tǒng)時,就需要用與之對應(yīng)的解密算法對密文文件解密,獲取明文信息,從而對信息執(zhí)行相應(yīng)的操作,如插入、修改、刪除等。而對不使用此算法的其他文件進(jìn)行保護(hù),禁止沒有通過認(rèn)證的非法用戶的惡意訪問以及卡內(nèi)其他行業(yè)系統(tǒng)讀卡端的誤讀、串讀,以防止智能卡的其他文件信息遭到竊取、篡改以及破壞。為此,特別需要一種智能卡內(nèi)部數(shù)據(jù)的保護(hù)方法,在外部讀寫器訪問智能卡中的某個文件時,只有通過解密才能使用,不使用的時候文件處于加密狀態(tài),同時,在使用某個文件時,其他未使用的文件依然處于加密狀態(tài),這就涉及到了智能卡的安全認(rèn)證與密鑰管理[5]。
不論是實(shí)現(xiàn)多應(yīng)用的mutlos卡、native卡或是可以動態(tài)加載應(yīng)用的Javacard[6],凡實(shí)現(xiàn)了多應(yīng)用,其安全性都在分析解決范圍之內(nèi)。對此筆者結(jié)合多應(yīng)用智能卡的文件系統(tǒng)結(jié)構(gòu),提出了一種以密文存儲的數(shù)據(jù)完整性校驗(yàn)解決方法,以保證卡內(nèi)數(shù)據(jù)信息在生成、存儲、傳輸以及應(yīng)用的途中不被惡意篡改、破壞等。
數(shù)據(jù)完整性校驗(yàn)的方法有很多種,本文采用Hash校驗(yàn)算法[7],如圖3所示。這種轉(zhuǎn)換是一種壓縮映射,即散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能由散列值來唯一確定輸入值。簡單地說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)。Hash主要用于信息安全領(lǐng)域中的加密算法,通過函數(shù)將不同長度的信息轉(zhuǎn)化成雜亂的128位的編碼哈希值。從而找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系。一個哈希算法R=H(S)是一個多對一映射,給定目標(biāo)文本S,H可以將其唯一映射為R,并且對于所有S,R具有相同的長度。由于是多對一映射,所以H不存在逆映射S=H-1(R),使得R轉(zhuǎn)換為唯一的S。本文保護(hù)數(shù)據(jù)僅僅用作比較驗(yàn)證,在以后不需要還原成明文形式,而且好的哈希算法應(yīng)該對于輸入的改變極其敏感,即使輸入有很小的改動,如一億個字符中變了一個字符,那么結(jié)果應(yīng)該截然不同。故哈希算法用在多應(yīng)用智能卡中就能很好地檢測卡內(nèi)數(shù)據(jù)信息的完整性。
圖3 Hash校驗(yàn)算法
完整性校驗(yàn)流程的簡單描述:當(dāng)讀卡器向智能卡發(fā)出一條APDU(Application Protocol Data Unit)命令時,卡片可根據(jù)APDU命令中的CLA(Class Byte of Command Message)字段的值判斷該命令屬于哪一個行業(yè)的應(yīng)用請求,例如,當(dāng)CLA=80時為金融行業(yè)。命令被允許訪問該行業(yè)的文件,INS(Instruction Byte of Command Message)字段表示需要執(zhí)行命令的指令代碼,數(shù)據(jù)段可以是應(yīng)用標(biāo)識符(Application Identifier,AID),也可以是需要寫入的數(shù)據(jù)(二進(jìn)制文件等)。其根據(jù)AID或FID找到卡內(nèi)的存儲地址,并將APDU命令中攜帶的數(shù)據(jù)放置在此處,下面就需要對此APDU命令中的數(shù)據(jù)信息做完整性校驗(yàn),如圖4所示。
圖4 使用Hash算法的數(shù)據(jù)完整性校驗(yàn)流程圖
首先,要調(diào)用卡內(nèi)存儲的安全算法(如3DES算法),對寫入的數(shù)據(jù)M使用3DES算法進(jìn)行加密,密鑰K直接由智能卡生成并保存在基本文件EF中,做到密鑰不出卡的安全原則,得到密文文件數(shù)據(jù)E(K,M),并對其進(jìn)行Hash運(yùn)算得到H(E(K,M)),即散列值。再用智能卡的私鑰PRa加密散列值來生成簽名,數(shù)字簽名保證了數(shù)據(jù)的來源和完整性。最后將得到的數(shù)字簽名E(PRa,H(E(K,M)))附加到密文文件E(K,M)之后一起保存在專有文件DDF中。
這里的Hash函數(shù)采用SHA-512(安全散列算法),其運(yùn)算公式如下
H0=IV
(1)
Hi=SUN64(Hi-1,abcdefghi)
(2)
MD=HN
(3)
其中:IV為abcdefg緩沖區(qū)的初始值;abcdefghi為第i個消息分組處理的最后一輪的輸出;N為消息(包括填充和長度域)里的分組數(shù);SUM64為對輸入對里的每個字進(jìn)行獨(dú)立的模264加;MD為最后的消息摘要。
3.1 文件加密流程
在本文的智能卡多應(yīng)用設(shè)計(jì)中,智能卡在創(chuàng)建應(yīng)用目錄和文件時,加解密模塊對文件進(jìn)行加密,產(chǎn)生密鑰,通過安全管理器,將加密密鑰K、文件路徑信息FID、加密后的文件一一對應(yīng)起來,以變長記錄的方式保存在一個映射表中,如圖5所示。
此表由安全管理器來保存,并用應(yīng)用安全域的密鑰進(jìn)行加密,以密文方式存在。文件加密與訪問控制模型如圖6所示,其中文件具體的加密步驟如下:
1)讀寫器業(yè)務(wù)終端與智能卡建立安全連接;
2)讀寫器終端向智能卡發(fā)送APDU命令;
3)根據(jù)要求是否創(chuàng)建業(yè)務(wù)應(yīng)用區(qū),若需要則創(chuàng)建業(yè)務(wù)應(yīng)用區(qū),否則,直接下載電子業(yè)務(wù),創(chuàng)建目錄DF和相關(guān)文件,包括KEY文件;
4)根據(jù)命令要求,智能卡決定是否對文件調(diào)用加密模塊,加密應(yīng)用數(shù)據(jù)文件,計(jì)算密文Hash值并用該應(yīng)用系統(tǒng)的
圖5 安全管理器文件密鑰映射表
私有密鑰對此Hash值加密,形成不可仿造的數(shù)字簽名HashCode,且附于密文文件之后,做完整性校驗(yàn)之用;
5)把加密后的文件路徑信息FID、密鑰K、HashCode交給安全管理器,做一一對應(yīng)映射,保存記錄;
6)安全管理器用應(yīng)用安全域的密鑰,對映射表文件做最后的加密。
為提高卡內(nèi)數(shù)據(jù)的訪問速率,加密算法采用3DES對稱加密算法。文件的加密密鑰和解密密鑰是同一個密鑰,不同的文件擁有不同的密鑰。
3.2 卡內(nèi)密文的訪問控制方案及流程
在遵循智能卡的安全通信機(jī)制[8-9]的前提下,按照本文要求,智能卡內(nèi)的文件在給用戶發(fā)卡時就已經(jīng)寫好,卡內(nèi)數(shù)據(jù)以密文文件方式存在,用戶訪問時很少創(chuàng)建,對文件的數(shù)據(jù)大多是讀和修改操作。訪問卡內(nèi)密文的步驟如下:
1)讀寫器業(yè)務(wù)終端與智能卡建立安全通道[10]后,智能卡安全管理器根據(jù)應(yīng)用安全域密鑰解密加密映射表文件到緩存中,供文件訪問命令查詢操作;
圖6 文件的加密與訪問控制模塊
2)讀寫器業(yè)務(wù)終端向智能卡發(fā)送文件訪問APDU命令,該命令包含文件路徑信息FID;
3)命令解析器成功解析命令后,通過安全管理器,在緩存中的密鑰映射表中查找FID對應(yīng)的KEY、HashCode;
4)智能卡根據(jù)FID選擇目標(biāo)密文文件,通過HashCode校驗(yàn)密文文件的完整性,并使用對應(yīng)的KEY,解密密文文件到新開辟的緩沖區(qū)域;
5)讀寫器業(yè)務(wù)終端通過智能卡,對解密文件進(jìn)行后續(xù)文件命令操作(如查詢、修改、刪除等)數(shù)據(jù)記錄;
6)文件訪問結(jié)束,重新生成隨機(jī)數(shù),作為密鑰K,對緩存文件加密,生成密文件,替換原有密文,并進(jìn)行Hash計(jì)算;
7)將密文文件路徑信息FID、KEY、HashCode交給安全管理器,修改原有FID對應(yīng)的密鑰、HashCode映射記錄;
8)安全管理器使用應(yīng)用安全域密鑰加密映射記錄表文件,更新、替換原有映射記錄表密文文件。
APDU命令驗(yàn)證本方案:向一張創(chuàng)建了金融行業(yè)應(yīng)用的智能卡的余額文件中寫入300元余額記錄,并在進(jìn)行了完整性校驗(yàn)之后讀取其余額信息。
如圖7所示,這是APDU命令的基本結(jié)構(gòu),其中CLA是類字節(jié)碼,INS是指令代碼,表明此命令執(zhí)行的操作,P1,P2是基本參數(shù),Lc是數(shù)據(jù)塊的長度,DATA是APDU命令中所攜帶的數(shù)據(jù)。
圖7 一種APDU命令結(jié)構(gòu)
這里DATA就是需要加密保護(hù)并進(jìn)行完整性校驗(yàn)的數(shù)據(jù)信息。FID=Ox0002,則寫入余額的APDU命令為:
00 D6 82 00 02 01 2C
此命令執(zhí)行的操作是:將2 byte的十六進(jìn)制數(shù)01 2C寫入FID為Ox0002的文件下。首先,讀寫器發(fā)出此APDU命令后,智能卡操作系統(tǒng)根據(jù)指令代碼(INS)D6,識別出這是一條寫二進(jìn)制文件(Update Binary)操作,根據(jù)參數(shù)P1的值讀出FID的值,即數(shù)據(jù)要存放的位置。DATA則是2 byte十六進(jìn)制表示的數(shù)01 2C,對應(yīng)十進(jìn)制數(shù)300。接下來智能卡調(diào)用加解密模塊對DATA加密處理,得到E(K,DATA)。為保證其完整性,還需對密文文件E(DATA)進(jìn)行數(shù)字簽名處理,先生成密文散列值再用其私鑰對散列值加密得到E(PRa,H(E(DATA))),計(jì)為HashCode。假定對01 2C經(jīng)過上述處理之后得到密文文件為E5FB,HashCode為2A。密鑰K,PRa保存在KEY文件中。最后將文件路徑信息FID、HashCode及KEY文件作一一映射處理生成映射記錄表文件,再用應(yīng)用安全域密鑰加密映射記錄表,保存在安全管理器模塊中。
智能卡接收到讀取余額APDU命令為:
00 B0 82 00 02
首先,智能卡根據(jù)INS=B0知道此APDU命令是讀二進(jìn)制文件命令(Read Binary),參數(shù)P1=82,包含了文件路徑信息FID=Ox0002,根據(jù)FID就可以找到所需的密文文件E(K,DATA)。其次,就需要用應(yīng)用安全域密鑰對映射記錄表解密,得到FID、HashCode、KEY。再次,對密文文件做完整性校驗(yàn),如圖4所示。先對密文文件使用同樣的Hash函數(shù)得到H(E(K,DATA)),計(jì)為h1。再對獲取的HashCode用該應(yīng)用的公鑰解密,得到的值計(jì)為h2。對h1,h2進(jìn)行比較,若一致則說明密文文件數(shù)據(jù)未被修改,文件信息完整,安全有效。最后,用KEY文件中保存的密鑰K對密文文件解密獲取所需的明文數(shù)據(jù)。
本文通過分析多應(yīng)用智能卡的數(shù)據(jù)安全保護(hù)方案,設(shè)計(jì)了一套數(shù)據(jù)安全策略,實(shí)現(xiàn)了智能卡數(shù)據(jù)的完整性檢驗(yàn)與卡內(nèi)數(shù)據(jù)的加密并建立了安全訪問機(jī)制。有效地解決了多應(yīng)用智能卡的數(shù)據(jù)安全問題,防止數(shù)據(jù)被惡意篡改,保證了數(shù)據(jù)的完整性。但是由于本方案對卡內(nèi)數(shù)據(jù)信息采取了多層數(shù)據(jù)加密保護(hù),運(yùn)行時間較單應(yīng)用智能卡花費(fèi)更長的時間,但都在可接受范圍之內(nèi),對應(yīng)用系統(tǒng)的整體運(yùn)行影響較弱。在這里以較長的運(yùn)行時間換取數(shù)據(jù)信息的安全是可取且必要的。下一步的研究工作是在保證卡內(nèi)數(shù)據(jù)安全的同時壓縮運(yùn)行時間,提升運(yùn)行效率。
[1]SKIPPER J.Electronic banking and payments[C]//Proc.IEEE Colloquium on eCommerce-Trading.NewYork:IEEE Press,1998:31-36.
[2]張之津,李勝廣.智能卡安全與設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[3]王棟.基于CRC的多比特糾錯算法研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.
[4]趙銘洋,趙正文.智能卡數(shù)據(jù)完整性校驗(yàn)[J].信息技術(shù),2011,9(2):142-143.
[5]SOOD S K,SARJE A K,SINGH K.Smart card based secure authentication and key agreement protocol[C]//Proc. Computer & Communication Technology.Allahabad:[s.n.],2010:7-14.
[6]DESHMUKH A A, DUBAL M,MAHESH TR,et al.Data security anaylysis and securityextension for smart cards using java card[J].International Journal of Advanced Information Technology (IJAIT),2012,2(2):41-57.
[7]王張宜, 李波, 張煥國.Hash函數(shù)的安全性研究[J].計(jì)算機(jī)工程與應(yīng)用,2005(12):18-19.
[8]姚靜晶,胡永濤 一種新的智能卡安全通信機(jī)制[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2010,33(6):9503-9506.
[9]姚靜晶,胡永濤 張勇等.一種智能卡安全會話系統(tǒng): 中國,101894235A[P].2010-11-24.
[10]智能卡數(shù)據(jù)交互安全性的研究.[EB/OL].[2014-07-05].http://tech.yktchina.com/2009-12/7e821ba887a74219916825989 ef62c2b.html.
田沅蕊(1988— ),女,碩士,主研多應(yīng)用智能卡、數(shù)據(jù)安全;
楊小寶(1978— ),碩士,工程師,主研多媒體通信技術(shù)與智能卡技術(shù)研究;
王瑞剛(1966— ),碩士生導(dǎo)師,高級工程師,主研多媒體通信與大數(shù)據(jù)的安全研究;
謝 璇(1989— ),女,碩士,主研Javacard及其數(shù)據(jù)安全;
貢維雪(1992— ),女,本科,主研通信工程。
責(zé)任編輯:閆雯雯
Multi-application Smart Card Data Information Security Research
TIAN Yuanrui ,YANG Xiaobao ,WANG Ruigang ,XIE Xuan ,GONG Weixue
(InstituteofIOT&IT-basedIndustrialization,Xi’anUniversityofPostsandTelecommunications,Xi’an710061,China)
There are some security problems with the multi industry application in smart card,such as cross-industry data access, data leakage and damage.In view of these security problems,combined with the current smart card security mechanism and file system features of cross industry applications, a method of data integrity check for multi-application smart card is put forward.The method build a security model of file encryption and access control,including the function of guaranteeing the independence of appliction system of various industries,implementing the data access control and the key safety storage and so on .Finally, the feasibility and security of this security model are analyzed and verified.The scheme has been verified in the card verification platform of Shaanxi province public service, and improved the safety level of the on-card data information.
multi-application of smart card;data integrity;safety manager;key mapping table
陜西省科學(xué)技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2013k06-14);西安郵電大學(xué)青年教師科研基金項(xiàng)目(ZL2013-39)
TP309
A
10.16280/j.videoe.2015.05.014
2014-07-30
【本文獻(xiàn)信息】田沅蕊, 楊小寶,王瑞剛 ,等.多應(yīng)用智能卡數(shù)據(jù)信息的安全研究[J].電視技術(shù),2015,39(5).