ARM7 智能卡的動態(tài)口令終端研究與實(shí)現(xiàn)
摘要:研究了現(xiàn)有動態(tài)口令終端,在此基礎(chǔ)上提出了在ARM7智能卡上使用STK功能實(shí)現(xiàn)動態(tài)口令終端的新方法,對其硬件平臺及實(shí)現(xiàn)過程進(jìn)行了介紹。結(jié)果表明,該方案既提供了友好的人機(jī)界面,又保證了口令信息的安全,具有較好的應(yīng)用推廣前景。
1 引言
目前動態(tài)口令主要有基于事件、時(shí)間和挑戰(zhàn)碼三種實(shí)現(xiàn)方式[1], 現(xiàn)有的動態(tài)口令終端主要有刮刮卡、令牌、智能卡與卡片閱讀機(jī)相結(jié)合以及基于SIM 卡等。刮刮卡是一種塑料或者紙質(zhì)卡片,除卡號外,每張卡片上印刷30~45 個(gè)一次性使用的密碼,每個(gè)密碼前面印有引導(dǎo)用戶使用的序號方便用戶查詢,每個(gè)密碼都單獨(dú)覆蓋了刮刮膜,它用于記載后臺虛擬動態(tài)口令設(shè)備計(jì)算出的動態(tài)口令, 用戶每次認(rèn)證時(shí)按照系統(tǒng)提示刮開一個(gè)新的密碼使用。令牌也是一種能產(chǎn)生并顯示動態(tài)口令的設(shè)備。這兩種方式安全性雖高于靜態(tài)口令,但是需要有終端成本, 根據(jù)終端的不同,成本不同,而且使用次數(shù)有限[2]。智能卡與卡片閱讀機(jī)相結(jié)合的方式是指在用戶登錄時(shí),必須將智能卡插入卡片閱讀機(jī)中,采集活體指紋,如果匹配成功,才允許操作。此種方式操作不靈活,用戶每次登錄都必須帶有卡片閱讀機(jī)[3]?;赟IM 卡的動態(tài)口令是指移動終端借助于電信智能卡USIM 或PIM 卡生成,根據(jù)某種加密算法,隨某一個(gè)動態(tài)參數(shù)(例如時(shí)間、事件等)計(jì)算產(chǎn)生的一次一變的一種口令[4]。此方案可以將動態(tài)口令集成到SIM 卡上,雖然解決了前三種終端的不足,但是需要用戶更換原有SIM 卡。目前投入使用的幾億張SIM 卡要換成帶有STK 的動態(tài)口令新一代卡,再加上大量新應(yīng)用服務(wù)的宣傳推廣,均需要投入大量資金;用戶也不愿意另花錢更換具有STK 應(yīng)用功能單一、或需求不迫切的帶動態(tài)口令的USIM 卡或PIM 卡,因此此種換卡模式的推廣有難度[5]。
針對以上幾種終端存在的缺陷,本文利用每臺手機(jī)均具有標(biāo)準(zhǔn)的SIM 卡接口對手機(jī)STK功能進(jìn)行擴(kuò)展,設(shè)計(jì)了一個(gè)貼在手機(jī)SIM 卡上的超薄ARM7 智能卡芯片,采用STK 菜單實(shí)現(xiàn)動態(tài)口令終端操作。此方案為手機(jī)應(yīng)用軟件提供安全便捷、統(tǒng)一兼容的硬件平臺,實(shí)現(xiàn)不同手機(jī)STK 動態(tài)口令應(yīng)用功能的無障礙擴(kuò)展。手機(jī)用戶無需更換手機(jī)或SIM 卡,也可任意換機(jī)換號,只要將該智能卡直接貼在SIM 卡上,插入手機(jī)卡槽即可使用STK 菜單的動態(tài)口令功能,不影響手機(jī)原有服務(wù)及功能;同時(shí)智能卡內(nèi)可通過空中下載方式(OTA)更換動態(tài)口令的PIN碼,在用戶手機(jī)上構(gòu)建一個(gè)開放的動態(tài)口令應(yīng)用平臺。智能卡內(nèi)部通過硬件加密方式,解決了用戶數(shù)據(jù)傳輸?shù)陌踩珕栴},滿足動態(tài)口令安全應(yīng)用需求。此種終端實(shí)現(xiàn)方式人機(jī)界面友好,投入成本低,容易推廣,具有廣闊的應(yīng)用前景。
2 ARM7 智能卡硬件平臺設(shè)計(jì)
動態(tài)口令硬件實(shí)現(xiàn)平臺采用ARM 公司的32 位ARM7 接觸式智能IC 芯片,該芯片主要針對高端GSM 電信卡、3G SIM 卡和JAVA 卡應(yīng)用。內(nèi)置256K 字節(jié)可編程ROM 、64K 字節(jié)數(shù)據(jù)ROM、8K 字節(jié)靜態(tài)RAM,集成了定時(shí)器、中斷控制器、系統(tǒng)控制、DES、RSA 硬件加密協(xié)處理器、安全檢測控制以及硬件7816 接口等模塊,適合SIM 卡的STK 功能擴(kuò)展設(shè)計(jì)。該智能卡硬件平臺的電氣連接SIM 卡和手機(jī)內(nèi)線路,整體厚度小于0.7 毫米,長和寬都和原有SIM 卡一致,遵循SIM 卡所有的接口標(biāo)準(zhǔn),保持手機(jī)與SIM 卡原有的交互功能不變,通過手機(jī)的SIM 卡插槽與手機(jī)進(jìn)行交互,使手機(jī)的顯示屏及鍵盤成為智能卡用戶的人機(jī)接口。在智能卡內(nèi)部安裝有卡片操作系統(tǒng)(簡稱COS),該COS 支持SIM 卡一般性功能、擴(kuò)展性功能及空中下載三大模塊。一般性功能指的是對ISO 7816 硬件接口和GSM 11.11 部分的通訊層和指令協(xié)議棧的實(shí)現(xiàn),是實(shí)現(xiàn)智能卡與SIM 卡和手機(jī)通訊的基礎(chǔ);擴(kuò)展性功能指的是對GSM11.14 協(xié)議棧的實(shí)現(xiàn),是實(shí)現(xiàn)STK 應(yīng)用的基礎(chǔ)。OTA 菜單下載的實(shí)現(xiàn)借助于STK 功能和數(shù)據(jù)短消息通道,支持空中下載的COS 提供可行的人機(jī)接口界面供用戶發(fā)起下載申請,OTA 應(yīng)用下載服務(wù)器根據(jù)用戶請求,以數(shù)據(jù)短信息的形式將相應(yīng)的服務(wù)內(nèi)容發(fā)給用戶手機(jī),并將下載數(shù)據(jù)透明地傳遞給ARM 智能卡芯片,COS 對下載的短信息內(nèi)容通過雙向認(rèn)證后進(jìn)行解析,把STK 菜單的字節(jié)碼數(shù)據(jù)流重新進(jìn)行組織存儲,實(shí)現(xiàn)相應(yīng)的STK 菜單管理。對手機(jī)而言,ARM7 智能卡相當(dāng)于SIM 卡而屏蔽了其微處理器及相關(guān)電路的軟硬件特性,而對SIM 卡而言,ARM7 智能卡就相當(dāng)于手機(jī)而屏蔽了其微處理器及相關(guān)電路的軟硬件特性。在此基礎(chǔ)上,實(shí)現(xiàn)ARM7 智能卡對SIM 卡的STK 功能擴(kuò)展,把不同規(guī)格的SIM卡整合到一個(gè)開放的STK 應(yīng)用平臺上。其整體硬件結(jié)構(gòu)邏輯功能框圖及ARM7 智能卡硬件接口分別如下圖(1)和圖(2)所示:
在 ARM7 智能卡硬件接口中,VDD、GND、RST、CLK 分別連接手機(jī)和SIM 卡的對應(yīng)接口,保持手機(jī)和SIM 卡內(nèi)線路連通,IO1 連接手機(jī)的IO 口,IO2 連接SIM 卡的IO 口,通過這兩個(gè)接口實(shí)現(xiàn)ARM7 智能卡、手機(jī)以及SIM 卡之間的相互通信。
3 動態(tài)口令實(shí)現(xiàn)
3.1 動態(tài)口令實(shí)現(xiàn)流程
基于ARM7智能卡的動態(tài)口令認(rèn)證系統(tǒng)終端采用雙因素認(rèn)證方式,首先獲取動態(tài)口令具有PIN碼保護(hù),用戶需要輸入正確的PIN碼,才能產(chǎn)生動態(tài)口令。利用手機(jī)STK菜單功能,使用Get Input命令輸入數(shù)字PIN碼。用戶除了輸入正確的PIN碼之外,還要求與認(rèn)證服務(wù)器的計(jì)數(shù)器實(shí)現(xiàn)同步才能得到正確的操作口令。
動態(tài)口令的實(shí)現(xiàn)過程包括開通服務(wù)、數(shù)據(jù)同步及獲取口令等。開通服務(wù)主要包括密鑰分散以及數(shù)據(jù)加密兩部分,智能卡和認(rèn)證服務(wù)器都預(yù)先存儲10 組相同的主密鑰。在開通時(shí)智能卡利用隨機(jī)生成的密鑰索引(簡稱KID)選取其中的一組(16 字節(jié)),采用PBOC 算法進(jìn)行密鑰分散后得到用于數(shù)據(jù)加密的會話密鑰KC,然后使用KC 對卡號和隨機(jī)生成的口令加密密鑰(deskey)經(jīng)過三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn)算法(簡稱3DES)加密,再將加密結(jié)果連同密鑰索引一起以數(shù)據(jù)短信息的形式上行給認(rèn)證服務(wù)器,認(rèn)證服務(wù)器接收到數(shù)據(jù)后,利用密鑰索引取出相同的主密鑰,同樣對主密鑰進(jìn)行PBOC 密鑰分散得到解密密鑰KC,再用KC 解出對應(yīng)智能卡的ICCID 及deskey,并同時(shí)將同步計(jì)數(shù)器清零,實(shí)現(xiàn)了與卡端的同步。數(shù)據(jù)同步主要用于防止智能卡計(jì)數(shù)器與認(rèn)證服務(wù)器計(jì)數(shù)器出現(xiàn)異常時(shí)能夠重新獲取同步信息的操作。
獲取口令過程主要包括三部分,首先使用智能卡內(nèi)部與認(rèn)證服務(wù)器隨機(jī)生成的deskey 對卡片序列號(簡稱ICCID)和計(jì)數(shù)器Counter 進(jìn)行加密,然后對加密結(jié)果進(jìn)行SHA1-HASH 處理得到20 字節(jié)密文,最后對HASH 結(jié)果進(jìn)行數(shù)字化。其實(shí)現(xiàn)流程如下圖(3)所示:
其中數(shù)字化是從 HASH 結(jié)果的20 字節(jié)(160bit)數(shù)據(jù)中動態(tài)取出4 字節(jié)的數(shù)據(jù),把該4 字節(jié)數(shù)據(jù)轉(zhuǎn)換為8 位十進(jìn)制數(shù)字。
3.2 動態(tài)口令STK 菜單實(shí)現(xiàn)
用戶識別應(yīng)用發(fā)展工具 SIM TOOL KIT(簡稱STK)是在原SIM 卡被動式的操作系統(tǒng)上,衍生出的SIM 卡交互式操作系統(tǒng)。其原理就是通過手機(jī)SIM 卡接口,為手機(jī)的用戶接口(簡稱UI)提供符合GSM11.14 規(guī)范的字節(jié)流,手機(jī)UI 把這些字節(jié)流解析成能夠識別的菜單元素,從而構(gòu)建一個(gè)跟手機(jī)菜單系統(tǒng)一致的應(yīng)用菜單。這個(gè)應(yīng)用菜單跟手機(jī)菜單是有區(qū)別的,用戶選擇菜單后,手機(jī)把這個(gè)信息直接傳遞給ARM7 智能卡,而不是手機(jī)的操作系統(tǒng)。動態(tài)口令的輸出采用STK 菜單方式在手機(jī)屏幕上進(jìn)行顯示,為了實(shí)現(xiàn)STK 操作流程,需要將動態(tài)口令加密算法封裝成字節(jié)碼(Byte Code)形式在智能卡操作系統(tǒng)內(nèi)部進(jìn)行運(yùn)算,最終采用STK 的display 命令在手機(jī)終端將結(jié)果顯示出來。在具體STK 菜單設(shè)計(jì)過程中,采用了自行設(shè)計(jì)的《手機(jī)STK 功能仿真器》工具對動態(tài)口令的STK 菜單進(jìn)行了仿真測試,動態(tài)口令的 STK 菜單在手機(jī)上實(shí)現(xiàn)效果圖如下圖(4)所示:
在ARM7智能卡內(nèi)部使用STK菜單方式實(shí)現(xiàn)動態(tài)口令令牌功能,口令由智能卡內(nèi)部生成,通過手機(jī)屏幕以STK菜單形式顯示出來??诹顒討B(tài)生成,隨時(shí)間或者次數(shù)變化而變化,具有不可預(yù)測性??诹钌芷诙?,一次有效,既可以克服靜態(tài)口令重復(fù)使用容易泄漏的弱點(diǎn),有效抵御密碼竊取和重播攻擊行為,又具有友好的菜單操作界面。由于用戶口令更新階段是在手機(jī)終端完成的,因此也可以防止拒絕服務(wù)攻擊及口令猜測攻擊等行為。
4 結(jié)論
本文利用手機(jī)終端STK 功能擴(kuò)展技術(shù),使用ARM7 智能卡硬件平臺實(shí)現(xiàn)動態(tài)口令客戶端STK 菜單設(shè)計(jì),解決了動態(tài)口令終端USIM 卡或PIM 卡需更換用戶SIM 卡或因刮刮卡、令牌因終端成本高帶來的不足;利用智能卡內(nèi)部的硬件加密算法及STK 菜單提供的友好界面,很好地解決了動態(tài)口令信息交換的安全與數(shù)據(jù)加密問題。本文設(shè)計(jì)實(shí)現(xiàn)的動態(tài)口令終端系統(tǒng)將在各網(wǎng)絡(luò)平臺中應(yīng)用推廣,屆時(shí)將會在越來越多的商業(yè)場合得到廣泛應(yīng)用。預(yù)計(jì)5年內(nèi)整個(gè)項(xiàng)目手機(jī)用戶使用的帶動態(tài)口令功能的ARM7 智能卡片可達(dá)100 多萬片,產(chǎn)生經(jīng)濟(jì)效益可達(dá)1500 多萬元。
xinxin