歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
阿里巴巴誠信通企業(yè)
全國咨詢熱線:40000-63966
興邦電子,中國水控機(jī)第一品牌

聯(lián)系興邦電子

全國咨詢熱線:40000-63966

售后:0371-55132951/55132952

工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

智能卡安全報(bào)文功能在網(wǎng)絡(luò)認(rèn)證和通信中的應(yīng)用

文章出處:http://m.compasssalessolutions.com 作者:段 斌   人氣: 發(fā)表時間:2011年10月09日

[文章內(nèi)容簡介]:智能卡的安全報(bào)文功能可以有效地解決數(shù)據(jù)的可靠性、完整性和對數(shù)據(jù)發(fā)送方的認(rèn)證等問題, 當(dāng)智能卡用于網(wǎng)上付費(fèi)或網(wǎng)上身份認(rèn)證時, 其安全報(bào)文功能對網(wǎng)絡(luò)認(rèn)證和網(wǎng)上通信有著極為重要的作用。本文介紹在服務(wù)器通過網(wǎng)絡(luò)對客戶端IC 卡發(fā)送指令和接收響應(yīng)的安全報(bào)文的實(shí)現(xiàn)方法。

    1 引 言
 
    隨著電子商務(wù)的發(fā)展, 對安全可靠地實(shí)現(xiàn)網(wǎng)上支付及網(wǎng)上身份認(rèn)證的要求越來越突出, 而利用帶操作系統(tǒng)的智能CPU 卡是解決這個問題的首選方案。為防止信息在網(wǎng)上被截取、篡改或失密, 可以利用智能卡的安全報(bào)文功能。智能卡的安全報(bào)文功能, 是指若智能卡中的某應(yīng)用文件的某些操作(如讀、寫等) 在發(fā)卡時已被設(shè)定為安全報(bào)文形式, 那么在對智能卡的該應(yīng)用文件進(jìn)行這些操作時, 終端發(fā)的指令和智能卡的應(yīng)答都必須采用帶MAC 或加密數(shù)據(jù)域的安全報(bào)文的形式。安全報(bào)文傳送的目的是保證終端和智能卡之間所交換數(shù)據(jù)的可靠性、完整性和對發(fā)送方的認(rèn)證。數(shù)據(jù)完整性和對發(fā)送方的認(rèn)證通過使用WAC 來實(shí)現(xiàn)。數(shù)據(jù)的可靠性通過對數(shù)據(jù)域的加密來得到保證。
 
    2 系統(tǒng)結(jié)構(gòu)
 
    2.1.1 概述
 
     本文所設(shè)計(jì)系統(tǒng)采用客戶機(jī)ö服務(wù)器模式, 其中客戶端為用戶IC 卡操作方, 它連接IC 卡讀卡器讀寫用戶IC 卡, 服務(wù)器端為管理方和認(rèn)證方, 它連接讀卡器及PSAM 卡。系統(tǒng)有四個主體: 客戶機(jī)(軟件)、用戶智能卡ICC、服務(wù)器(軟件)、PSAM 卡。為保證系統(tǒng)的安全性, 操作ICC 的指令和應(yīng)答都由服務(wù)器直接負(fù)責(zé), 當(dāng)客戶機(jī)上有操作ICC 時由客戶機(jī)通知服務(wù)器, 服務(wù)器產(chǎn)生操作ICC 的指令代碼, 操作PSAM 卡計(jì)算出該指令信息安全報(bào)文的MAC 或數(shù)據(jù)域的密文, 形成安全報(bào)文形式的ICC 指令, 服務(wù)器將該指令經(jīng)由網(wǎng)絡(luò)送給客戶機(jī), 由客戶機(jī)將此安全報(bào)文形式的指令代碼送給ICC。ICC 在執(zhí)行指令或解密出應(yīng)答中的數(shù)據(jù)信息時, 判斷ICC執(zhí)行指令的情況并獲得應(yīng)答中的數(shù)據(jù)信息。從這個過程可以看出, 服務(wù)器事實(shí)上是操作用戶IC 卡的一個遠(yuǎn)程終端, 而網(wǎng)絡(luò)和客戶機(jī)只是傳遞信息的媒體。因此, 我們只需構(gòu)架好服務(wù)器和客戶機(jī)之間信息交換的通信鏈路, 并設(shè)計(jì)好傳送和接收信息的函數(shù)及指令包裝方法, 對智能卡的網(wǎng)絡(luò)安全報(bào)文的討論可以等價于當(dāng)?shù)亟K端操作ICC 的安全報(bào)文。
 
    2.1.2 服務(wù)器和客戶機(jī)之間通信鏈路的建立
 


圖1 系統(tǒng)結(jié)構(gòu)圖

    該過程的實(shí)現(xiàn)主要利用了M FC 中的CSocket 類, 分別在客戶端建立發(fā)送套接字, 在服務(wù)器端建立偵聽、接收套接字??蛻舳伺c服務(wù)器端數(shù)據(jù)通信過程如圖2 所示。
 


圖2 客戶端與服務(wù)器端數(shù)據(jù)通訊過程

    客戶端生成一個從CSocket 類派生的CRequestSock 類, 該類的主要作用是向服務(wù)器端發(fā)出建立套接字連接的請求, 向服務(wù)器端發(fā)送智能卡的響應(yīng)數(shù)據(jù)以及接收服務(wù)器端給智能卡的指令。服務(wù)器端生成一個從CSocket 類派生的CL isten ingSock 類, 該類的主要作用是偵聽信道, 為每一個客戶端套接字的連接請求建立一個相應(yīng)的接收套接字, 并將它放入一個接收套接字隊(duì)列中。接著服務(wù)器端生成一個CSocket 類派生的接收套接字類(CClien tSock) , 該類的主要作用是接收從客戶端送來的智能卡響應(yīng)信息。
 
    Clien t 與Server 數(shù)據(jù)通信通道建立后, 客戶端和服務(wù)器發(fā)送信息代碼時采用各自的函數(shù):SendM sg (CRequestSocket3 pRequestSocket, un signed char3 pM sg. in t pM sgL en)客戶端和服務(wù)器接收信息代碼時采用各自的函數(shù): FetchM sg (CRequestSocket3 pRequestSocket)這樣, 服務(wù)器通過網(wǎng)絡(luò)和客戶機(jī)對智能卡的操作指令及應(yīng)答信息只需將實(shí)際代碼加進(jìn)上面的函數(shù)即可。

    3 安全報(bào)文傳送

    安全報(bào)文傳送的目的是保證數(shù)據(jù)的可靠性、完整性和對發(fā)送方的認(rèn)證。數(shù)據(jù)完整性和對發(fā)送方的認(rèn)證通過使用MAC 來實(shí)現(xiàn)。數(shù)據(jù)的可靠性通過對數(shù)據(jù)域的加密來得到保證。 

    (1) 安全報(bào)文傳送格式: 安全報(bào)文傳送格式符合ISO 7816—4 的規(guī)定。當(dāng)CLA 字節(jié)的第二個半字節(jié)等于十六進(jìn)制數(shù)字‘C’時, 表明對發(fā)送方命令數(shù)據(jù)采用安全報(bào)文傳送。卡中文件在文件頭的ACs 中設(shè)定了該文件的各種操作分別是否用安全SM 1 而在文件頭的SM 字節(jié)中則設(shè)定了安全報(bào)文是采用認(rèn)證模式(A u then t icMode) 還是采用組合(Com b inedMode)。 

    (2) 報(bào)文完整性和驗(yàn)證:MAC 是使用命令的所有元素(包括命令頭) 來產(chǎn)生的。一條命令的完整性, 包括命令數(shù)據(jù)域(如果存在的話) 中的數(shù)據(jù)元, 通過安全報(bào)文傳送得以保證。MAC是命令數(shù)據(jù)域中最后一個數(shù)據(jù)元。MAC 的長度規(guī)定為4 個字節(jié)。 

    (3) SSC 在安全報(bào)文中作用: SSC (Send Sequence Coun ter) 是指傳送序列計(jì)數(shù)器, 在用安全報(bào)文保護(hù)功能以前, 需執(zhí)行EXCHAN GE CHALL EN GE 指令獲得同時作用于終端和智能卡的SSC。它主要起以下幾方面的安全作用:
    ①密文多樣性: 同樣的數(shù)據(jù)塊加密時有不同的表現(xiàn)形式;
    ②丟失和插入的檢測: 因每次生成安全報(bào)文的雙方SSC 都加1, 所以若有數(shù)據(jù)塊丟失或插入能隨時檢測出來。檢測到數(shù)據(jù)塊丟失或插入的錯誤后, 需運(yùn)行EXCHAN GE CHALL EN GE指令重新同步雙方的SSC;防止“重放攻擊”: SSC 的功能使得同樣的數(shù)據(jù)每次傳送時有不同的MAC。所以有“重放攻擊”時能夠馬上發(fā)現(xiàn)。 

    在網(wǎng)絡(luò)應(yīng)用中, 服務(wù)器作為遠(yuǎn)程終端操作智能IC 卡, 指令和應(yīng)答都要通過網(wǎng)絡(luò)來傳送, 客戶端對指令和應(yīng)答只起傳遞作用。為保證SSC 的不可見, 可約定客戶機(jī)對服務(wù)器發(fā)來的EXCHAN GE CHALL EN GE 進(jìn)行一定的處理, 先讓智能卡執(zhí)行無安全報(bào)文的EXCHAN GECHALL EN GE 指令, 再發(fā)com b ined mode 形式的EXCHAN GE CHALL EN GE 安全報(bào)文指令, 將智能卡返回的應(yīng)答直接傳送給服務(wù)器, 這樣就保證了SSC 對網(wǎng)絡(luò)的保密性。 

    4 智能卡中文件操作的安全報(bào)文特性設(shè)定 

    (1) 意義: 對智能卡的身份識別信息文件設(shè)定安全報(bào)文特性??梢员WC身份識別號的完整性和可靠性; 在網(wǎng)上遠(yuǎn)程識別時, 保證智能卡身份識別號對終端的隱蔽性。 

    (2) 身份識別信息文件的設(shè)定: 在發(fā)卡程序中, 執(zhí)行CREA TE EF 指令生成DF Secu rity子目錄下身份識別信息文件EF02 時,AC READ 的b it6 設(shè)為1, 即設(shè)定讀操作指令用安全報(bào)文SM。將SM b ite 的b it2, b it1 設(shè)為11, 設(shè)定安全報(bào)文采用組合模式(com b ined mode) 在組合模式的安全報(bào)文中, 首先要將應(yīng)用數(shù)據(jù)加密成密文。然后, 由這些應(yīng)用數(shù)據(jù)密文和文件頭計(jì)算出MAC。智能卡安全報(bào)文的另外一種模式是認(rèn)證模式(au then t ic mode)。在認(rèn)證模式的安全報(bào)文中, 要傳送的應(yīng)用數(shù)據(jù)不加密, 僅僅檢測報(bào)文的認(rèn)證碼。設(shè)定身份識別號在EF02 的第三條記錄中(RECORD= 03)。 

    (3) 設(shè)定SM 后文件操作方式的改變: 操作帶安全報(bào)文的文件需遵循下面兩條原則:
    ①已設(shè)定的SM 模式必須滿足最小要求: SM 模式要求按由小到大的排序是無SM 認(rèn)證模式、組合模式。按照這條原則, 設(shè)定為au then t ic mode 的文件操作指令可以用com b inedmode 傳送。但不能用無SM 的模式發(fā)送, 而設(shè)定為com b ined mode 的文件操作指令只能用com b ined mode 傳送。 

    ②每一個響應(yīng)都是用與之相對應(yīng)的指令相同的安全報(bào)文模式: 若文件操作指令的安全報(bào)文設(shè)定為au then t ic mode, 則該指令對應(yīng)的安全報(bào)文也為au then t ic mode, 而SM 為com b inedmode 的指令, 其對應(yīng)的SM 也為com b inedmode。但需注意的是, 此處把CA SE 2 (指令中無數(shù)據(jù)) 或CA SE 3 (響應(yīng)中無數(shù)據(jù)) 的指令或響應(yīng)的com b ined mode 看作等于au then t ic mode。在對EF02 實(shí)現(xiàn)com b inedmode 的安全報(bào)文設(shè)定后, 傳送READ RECORD 指令時必須用com b ined mode, 因指令中無傳送數(shù)據(jù), 所以指令的com b ined mode 也就等于au then t ic mode。而響應(yīng)是按照com b ined mode 產(chǎn)生和從用戶IC 卡傳送出來, 不但帶了MAC 認(rèn)證碼, 而且讀出的身份認(rèn)證信息也是密文。服務(wù)器(網(wǎng)上認(rèn)證) 可由MAC 認(rèn)證碼判斷響應(yīng)信息的完整性, 身份認(rèn)證信息的密文傳送保證了身份認(rèn)證信息的可靠性和對終端和網(wǎng)絡(luò)的隱蔽性, 服務(wù)器須解密密文獲得身份認(rèn)證信息。 

    5 智能卡安全報(bào)文密鑰的設(shè)定
 
    在發(fā)卡程序中, 執(zhí)行WR ITE KEY IN STALL 指令生成DF Secu rity. ISF 中的KEY1 作為SM KEY。KEY1 的A KD 的b it5= 1 (將KEY1 定義為defau lt) , b it4, b it3= 11 (SM 設(shè)定為com b ined mode) , b it2, b it1, b it0= 111。在PSAM 卡中發(fā)送KEY2 作為計(jì)算和驗(yàn)證MAC 的加密、解密密鑰。 

第1頁第2頁

    值得注意的是, 設(shè)定為com b ined mode 的SM KEY, 可用于沒有設(shè)定安全報(bào)文指令的au then t ic mode 安全報(bào)文形式和com b ined mode 安全報(bào)文形式。 

    6 網(wǎng)上安全報(bào)文工作流程
 


圖3 安全報(bào)文工作示意圖

    安全報(bào)文工作示意圖如圖3 所示。為最大限度地保證安全性, 安全順序計(jì)數(shù)SSM 的值也用安全報(bào)文的形式生成并從網(wǎng)上傳送。服務(wù)器端計(jì)算指令的MAC 和驗(yàn)證應(yīng)答的MAC 工作都由PSAM 卡完成。

    7 CA SE4 指令及應(yīng)答安全報(bào)文的實(shí)現(xiàn)方法
 
    (1) EXCHAN GE CHALL EN GE 指令的Com b ined mode 模式SM 形式CLA IN S P1 P2 L c TPV L P I‖CG YL e L L e TCS L Check sum8c 80 03 00 14 87 09 01‖eKSM (RND IFD 97 01 04 8e 04 xx xx xx xx 00
 
    (2) 計(jì)算Check sum 過程:
    ①將指令的頭4 個字節(jié)墊以’80’, ’00’, ’00’, ’00’生成塊1; CLA IN S P1 P2 PADD IN GS ‘8C’‘80’ ‘03’ ‘00’ ‘00’  ‘00’
    ②將(TPV ,L , P I) 和CG 域的頭5 個字節(jié)組成塊2;
    ③將CG 域剩余的3 個字節(jié)和TL c,L ,L e 再墊以80, 00 組成塊3;
    ④將前面執(zhí)行的無安全報(bào)文形式的EXCHAN GE CHALL EN GE 指令的應(yīng)答中(RND ICC)的頭二個字節(jié)作為SSC 的初始值, 并將SSC 加1, 將SSC 分別與CLA , IN S 異或, 生成新的塊1:
    ⑤對數(shù)據(jù)塊用SM 密鑰做DES 運(yùn)算, 數(shù)據(jù)塊的鏈接用CBC 模式, 設(shè)初始值為8 個字節(jié)的‘00’, 按圖4 所示方法計(jì)算前面形成的數(shù)據(jù)塊對的MAC;
    ⑥將計(jì)算得出的MAC 的頭4 字節(jié)作為指令的校驗(yàn)碼CC。
 

     (3) 檢測應(yīng)答校驗(yàn)碼的過程
    用戶卡首先產(chǎn)生響應(yīng)1: ’61’, ’11’。在執(zhí)行完帶L e= ’11’的GET RESPON SE 指令后,用戶卡將產(chǎn)生如下所示的響應(yīng)2:TCG LCG P I‖CG TCC LCC Check sum SW 1 SW 2‘87’ ‘09’‘01’‖eKSM (RND ICC) ‘8E’ ‘04 ‘xxxxxxxx’ ‘90’ ‘00’ 

    由響應(yīng)中信息計(jì)算MAC 與響應(yīng)中的Check sum 比較以檢測響應(yīng)報(bào)文校驗(yàn)碼的操作過程如下:
    ①將TCG,L CG, P I 和CG 的頭5 個字節(jié)組成塊1將CG 域的后3 個字節(jié)并墊以‘80’,‘00’,‘00’,‘00’,‘00’組成塊2 

    ②將SSC 加1
 

    ③將塊1 的頭2 字節(jié)分別與SSC 異或產(chǎn)生新的塊1 

    ④對數(shù)據(jù)塊用SM 密鑰做DES 運(yùn)算, 數(shù)據(jù)塊的鏈接用CBC 模式, 設(shè)初始值In it ialvecto r 為8 個字節(jié)的‘00’, 按類似圖4 所示方法計(jì)算前面形成的數(shù)據(jù)塊隊(duì)的MAC。

    ⑤將計(jì)算得出的MAC 的頭4 個字節(jié)與應(yīng)答中的Check sum 比較, 由此判斷應(yīng)答數(shù)據(jù)的完整性和正確性。對EXCHAN GECHALL EN GE 指令的應(yīng)答不能作本步驗(yàn)證, 因IC 卡的SSC 已換成新的。但對于其它指令都需用此方法驗(yàn)證應(yīng)答信息的可靠性。 
 


圖4 計(jì)算指令MAC 的過程
 
圖5 響應(yīng)中應(yīng)用數(shù)據(jù)密文計(jì)算明文的過程 

    (4) 由密文獲取明文的方法:對密文數(shù)據(jù)塊用SM 密鑰做DES- 1 解密運(yùn)算, 數(shù)據(jù)塊的鏈接用CBC 模式, 設(shè)初始值In it ial vecto r 為8 個字節(jié)的‘00’, 按圖5 所示方法計(jì)算出密文數(shù)據(jù)的明文。此數(shù)據(jù)的頭二字節(jié)即為新的SSC。 

    8 指令流程 

    (1) 交換隨機(jī)數(shù):
    comm and: 80 80 03 00 04 01 02 03 04104respon se: 78 b1 f3 82 90 00得到SSC 的商始值: 78 61 

    (2) 計(jì)算exchange challenge 指令中的數(shù)據(jù)域密文comm and: 80 f8 00 87 08 01 02 03 04 80 00 00 00respon se: ac a6 00 16 02 d2 5a 72 d5 aa f6 34 5b 30 a6 e2 90 00得到數(shù)據(jù)域密文為: ac a6 00 16 02 d2 5a 72 

    (3) 計(jì)算com b ined mode 的exchange challenge 指令的MAC:comm and: 80 f8 00 87 18 f4 32 03 00 80 00 00 00 87 09 01 ac a6 00 16 02 d2 5a 72 97 0104 80 00respon se: c1 37 c2 16 5c fe af 38 31 7a 1a df 76 f0 79 26 22 35 2d 1e 37 5f 93 92 b8 9e b92b d9 35 b0 0e 90 00得到MAC: 22 35 2d 1e說明: 應(yīng)答域設(shè)為97 01 08 則出錯, 但沒有應(yīng)答域可以。 

    (4) 發(fā)com b ined mode 的exchange challenge 指令comm and: 8c 80 03 00 14 87 09 01 ac a6 00 16 02 d2 5a 72 97 01 04 8e 44 22 35 2d 1e 00 respon se: 87 09 01 99 f8 10 96 c3 e6 bc e0 8e 04 63 92 f5 ed 90 00 從密文數(shù)據(jù)99 f8 10 96 c3 e6 bc e0 解密出明文為: b3 a7 c5 5a, 得到SSC 的初始值為b3a7服務(wù)器將此SSC 加2 (因IC 卡生成應(yīng)答安全報(bào)文時已將SSC 加1) , 便可生成發(fā)給IC 卡的指令安全報(bào)文形式。

第1頁第2頁

本文關(guān)鍵詞:智能卡,網(wǎng)絡(luò)認(rèn)證,網(wǎng)上支付,報(bào)文功能
回到頂部