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