1 SIM卡(Subscriber Identity Module) 即用戶(hù)識別模塊,是一張符合GSM規范的"智慧卡"。SIM卡可以插入任何一部符合GSM規范的移動(dòng)電話(huà)中,"實(shí)現電話(huà)號碼隨卡不隨機的功能",而通話(huà)費則自動(dòng)計入持卡用戶(hù)的帳單上,與手機無(wú)關(guān)。 SIM卡作為智能卡中特殊的一類(lèi)卡,采用標準的接觸式IC卡。他受到ISO7816標準(接觸式集成電路IC卡的規定)和ETSI(歐洲電信標準委員會(huì ))的GSM11.11等標準的規范。他沿襲了智能卡在安全中的特色,并在移動(dòng)用戶(hù)認證和移動(dòng)商務(wù)中扮演重要的角色。 目前手機用戶(hù)將一些重要的電話(huà)號碼都儲存在手機的SIM卡上。如果手機失竊,用戶(hù)可以買(mǎi)一部新的,但是儲存的號碼怎么辦呢?如果用戶(hù)能事先將儲存在SIM卡上的電話(huà)號碼做一份電子拷貝,這樣就算手機丟失了,用戶(hù)還是可以很容易地將保存的號碼寫(xiě)入到新的SIM卡里。為此,研究并設計了SIM卡讀卡器,通過(guò)他可以將手機SIM卡中信息讀取到電腦中,方便地實(shí)現電話(huà)簿和短消息的編輯、備份和管理。為經(jīng)常使用手機的用戶(hù)提供了一個(gè)經(jīng)濟、便捷的信息備份管理解決方案。 2 SIM卡常識 SIM卡是一張符合GSM規范"智能卡",他實(shí)際上是一個(gè)裝有微處理器的芯片卡,內部有5個(gè)模塊,且每個(gè)模塊都對應一個(gè)功能:CPU(8位)、程序存儲器(3~8 kb)、工作存儲器(6~16 kb)、數據存儲器(128~256 kb)和串行通信單元。SIM卡能實(shí)現存儲數據(電話(huà)本、短消息等)和在安全條件下(個(gè)人身份號碼PIN、鑒權鑰Ki正確)完成客戶(hù)身份鑒權和客戶(hù)信息加密算法的全過(guò)程。這些功能都是由SIM卡內的一部具有操作系統的微處理機完成。SIM卡具有機卡分離(SIM-ME接口)、通信安全可靠、成本低等特點(diǎn)。 (1) SIM卡的物理特征:可以分尺寸為54 mm×84 mmID-1 SIM(大卡)和尺寸為25 mm×15 mmPlug-in SIM(小卡)兩種。 (2) SIM卡的存儲容量:一般SIM卡有8 kB的存儲容量,另外還有容量分別為16 k和32 k的SIM卡,即STK SIM卡。 (3) SIM卡的使用溫度:標準溫度-25~+70℃,極限溫度-35~85℃,極限情況下每次使用不得超過(guò)4小時(shí),總共使用不得超過(guò)100次。 (4) SIM卡的使用壽命:物理壽命是取決于客戶(hù)的插拔次數,約在1萬(wàn)次左右;而集成電路芯片的壽命取決于數據存儲器的寫(xiě)入次數,不同廠(chǎng)家 其指標有所不同,就Mo-torola經(jīng)試驗室試驗約5萬(wàn)次左右。平均壽命約為4年。 3 SIM卡與移動(dòng)臺設備的接口 SIM卡芯片有8個(gè)觸點(diǎn),與移動(dòng)臺設備相互接通: (1) 電源VCC(觸點(diǎn)C1):4.5~5.5 V,ICC<10 mA; (2) 復位RST(觸點(diǎn)C2); (3) 時(shí)鐘CLK(觸點(diǎn)C3):卡時(shí)鐘3.25 MHz; (4) 不提供(觸點(diǎn)C4); (5) 接地端GND(觸點(diǎn)C5); (6) 編程電壓VPP(觸點(diǎn)C6); (7) 數據I/O口(觸點(diǎn)C7); (8) 不提供(觸點(diǎn)C8)。 SIM卡同移動(dòng)臺設備連接時(shí)至少需5個(gè)連接線(xiàn):數據I/O口(Data)、復位(RST)、接地端(GND)、電源(VCC)、時(shí)鐘(CLK)。他與基帶單元的接口電路如圖1所示。其中SIM CD為SIM卡檢測腳,用于檢測SIM卡的拔插;SIM CLK為ME提供的讀/寫(xiě)SIM卡的參考時(shí)鐘;SIMRST為SIM卡復位信號;SIM IO為串行數據輸入/輸出線(xiàn),由20 kΩ上拉電阻上拉至高電平;SIM RnW為讀/寫(xiě)控制信號,用以指示當前SIM_IO線(xiàn)上數據傳輸的方向;SIM PWCTRL為功率控制信號,可在空閑方式時(shí)控制SIM卡上的電源關(guān)閉,從而降低功耗,延長(cháng)待機時(shí)間。 4 SIM卡內部數據結構 SIM卡共有3類(lèi)數據文件:主文件(Master File,MF)、專(zhuān)用文件(Dedicate File,DF)、基本文件(ElementFile,EF)。組織結構規定如下: 0x3F00代表根目錄,0x2FXX代表根目錄下的基本文件; 0x7FXX代表一級子目錄,0x6FXX代表一級子目錄下的基本文件; 0x5FXX代表二級子目錄,0x4FXX代表二級子目錄下的基本文件。 5 SIM卡上電復位流程 SIM卡符合國際標準ISO7816的要求,按照協(xié)議中的規定,SIM應有8個(gè)觸點(diǎn),包括電源接口、復位控制接口、時(shí)鐘輸入接口、數據輸入輸出接口,SIM卡工作時(shí)整體電流消耗小于10 mA。SIM卡的時(shí)鐘頻率可由外部提供,在指定時(shí)問(wèn)內運行鑒權過(guò)程時(shí)至少需要13/4 MHz的時(shí)鐘頻率,其他情況下,使用最小為13/8 MHz的時(shí)鐘頻率。I/O端口的數據傳輸波特率為時(shí)鐘頻率的1/372。 5.1 觸點(diǎn)接通與冷復位時(shí)序(Activation and cold reset) 初始時(shí),所有端口皆處于低電平(L)態(tài),電壓范圍0~0.4 V;VCC電源電壓先上電(H態(tài)),后提供VPP編程電壓,在智能SIM卡中,VPP端無(wú)用,電壓范圍5 V±0.4 V;VCC電源端穩定一段時(shí)間后,將IO端口置為接收方式(H態(tài)),并提供穩定的CLK時(shí)鐘信號(注:IO口需在提供CLK信號前或在提供CLK信號后200個(gè)時(shí)鐘周期內(ta)置為接收方式);RST復位信號需在提供CLK信號后400個(gè)時(shí)鐘周期內(tb)保持L態(tài),之后才可置為H態(tài);提供復位信號后400~40 000個(gè)時(shí)鐘周期內(tc),I/O口有復位應答。 5.2 熱復位時(shí)序(Warm reset) 熱復位在冷復位失敗情況下使用,過(guò)程中保持VCC為H態(tài),且有穩定的CLK時(shí)鐘信號;熱復位時(shí)需保持RST端為L(cháng)態(tài)的時(shí)間至少為400個(gè)時(shí)鐘周期(te);在RST端置L態(tài)之前或之后200個(gè)時(shí)鐘周期時(shí)間內(td),IO口應置為接收方式;在RST置為H態(tài)后的400~40 000個(gè)時(shí)鐘周期內,I/O口有復位應答。 5.3 時(shí)鐘停止時(shí)序(Clock stop) 外部控制停止時(shí)鐘,可使SIM卡通信暫時(shí)中斷,過(guò)程中保持VCC端與復位端RST為H態(tài);要停止時(shí)鐘,需在I/O口輸出最后一個(gè)字符之后等待至少1 860個(gè)時(shí)鐘周期(tg);恢復時(shí)鐘后至少等待700個(gè)時(shí)鐘周期(th),I/O開(kāi)始有字符輸出。 5.4 觸點(diǎn)釋放時(shí)序(Deactivation) 將RST端置為L(cháng)態(tài);結束CLK輸入并將I/O口置為L(cháng)態(tài);最后將VCC端置為L(cháng)態(tài)。 5.5 SIM卡的復位應答 SIM卡的觸點(diǎn)被激活之后,終端啟動(dòng)一個(gè)冷復位。如果SIM卡在冷復位后回送的字節數不符,或在19 200個(gè)初始etu之內復位應答未完成,終端不立即終止卡片操作過(guò)程,而是再發(fā)一個(gè)熱復位信號。如果仍然得到同樣的結果,那么,接口沒(méi)備應釋放觸點(diǎn),否則卡將繼續進(jìn)行后續操作。流程如圖6所示。 復位應答最多為32個(gè)字節(包括歷史字符,不包括初始字符),其中歷史字符最多為15個(gè)字符,協(xié)議分為T(mén)=O與T=1兩種,一張SIM卡只支持其中的一種協(xié)議。位持續時(shí)間:在IO上的位持續時(shí)間被定義為一個(gè)基本時(shí)間單元etu。復位應答期間的位持續時(shí)間稱(chēng)為"初始etu"。初始etu=372/fs=372個(gè)時(shí)鐘周期。復位應答之后的位持續時(shí)間稱(chēng)為"當前etu",當前etu=F/D/fs。F為時(shí)鐘頻率變換因數,D為比特率調整因數,均在SIM卡復位應答的接口字符TA1中給出,缺省值為F=372,D=1,即復位應答之后的當前etu=初始etu。復位應答過(guò)程中相連兩字符起始位前沿之間的最小時(shí)間間隔為12個(gè)初始etu,最大時(shí)間間隔為9 600個(gè)初始etu,所有應答字符在19 200個(gè)初始etu的時(shí)間內傳送完,即從第一個(gè)字符的起始位前沿到最后一個(gè)字符起始位前沿后的12個(gè)初始etu結束)。 復位應答格式: TS 初始字符(強制性的),確定后續字符傳送順序(高位先送還是低位先送); TO 格式字符(強制性的); TA1/TB1/TC1/TD1~TAi/TBi/TCi/TDi 接口字符(選擇性的); T1~TK歷史字符(選擇性的); TCK 校驗字符(有條件的)T=0時(shí)不出現。 6 SIM卡信息交互規程 6.1 SIM卡信息交互指令格式 6.1.1 命令格式 CLA 命令類(lèi)別代碼,GSM為0xA0; INS 指令編碼; P1/P2/P3 指令參量,P3由INS決定,代表通訊的數據信息長(cháng)度,有指令與響應兩個(gè)方向; DATA 指令附加數據。 6.1.2 應答格式 DATA:響應數據; SW1/SW2:返回命令狀態(tài)。 6.1.3 通用錯誤返回代碼表 6.2 常用的基本指令 6.2.1 目錄或文件選擇指令(SELECT) 選擇一個(gè)文件,選擇成功后,對線(xiàn)性固定型文件,記錄指針不確定。對循環(huán)型文件,記錄指針指向最近更新或增加的一條記錄。 符選擇;P2=00,應答: 目錄地址: 正確命令響應為: 0x9F代表命令正確執行,XX為SIM卡返回的數據長(cháng)度;返回0x94/0x04,代表給出的目錄地址是錯誤的。在復位應答之后(ATR),主要文件(MF)被默認為選中,成為當前目錄。然后,可采用符合下列原則的SELECT功能來(lái)選擇每種文件: ① 選擇DF或MF設為當前目錄;DF是在選擇任何他的EF之前被先選擇出來(lái) ② 選擇EF設為當前文件,DF或MF是EF的上層。當前EF總是當前目錄的下層。 可選擇的文件包括:屬于當前目錄的直接子文件;屬于當前DF的父文件的直接子DF;當前月錄的上層;當前DF;MF。 6.2.2 取前一命令應答數據指令(GET RESPONSE) Length(R):響應數據最大長(cháng)度。 全部命令響應為: 6.2.3 從透明的數據文件中讀取以二進(jìn)制形式存儲的字節串指令(READ BINARY) Offset:要讀取數據的偏移地址; Length(R):響應數據最大長(cháng)度。 全部命令響應為: 0x90/0x00代表命令正確執行;返回0x94/0x00,代表沒(méi)有數據文件被選中,即當前被選中的可能是目錄而不是文件;返回0x94/0x08,代表當前目錄或數據文件與指令不一致,即當前數據不是以二進(jìn)制形式存儲的;返回0x98/0x04,代表本次操作不滿(mǎn)足存取安全規則,密碼認證未通過(guò)。 7 SIM卡數據讀寫(xiě)測試 SIM卡數據讀寫(xiě)測試的具體步驟及其結果如下: Step1 SIM卡首先上電復位,原則是先接通觸點(diǎn),后啟動(dòng)冷復位,若冷復位失敗,啟動(dòng)熱復位,若熱復位也不成功,則釋放觸點(diǎn)并報錯。冷復位或熱復位成功后,SIM卡應輸出復位應答。 實(shí)驗測試中取得的復位應答信號如下: 0x3B代表協(xié)議為正向約定;0x67代表TB1與TC1出現,歷史字符字節數為7;0x00代表不需要VPP;0x29~0x22為7個(gè)歷史字符。 Step2 復位成功后,發(fā)送目錄選擇指令,將當前目錄選取到GSM目錄,指令如下: 7F20為GSM目錄地址; SIM卡返回: 代表命令正確執行,且響應字符有34個(gè)字節。 Step3 發(fā)送取命令響應數據指令: 0x22代表指令返回數據最大為34個(gè)字節; S IM卡返回: 0xC0代表響應數據對應的指令為SELECT;0x90/0x00代表命令正確執行。 Step4 再次發(fā)送目錄選擇指令,將當前目錄選取到IMSI目錄,指令如下: 6F07為IMSI數據目錄; SIM卡返回: 代表命令正確執行,且響應字符有15個(gè)字節。 Step5:發(fā)送取命令響應數據指令: 0x0F代表指令返回數據最大為15個(gè)字節; SIM卡返回: 0xC0代表響應數據對應的指令為SELECT;0x90/0x00代表命令正確執行。 Step6 選取到所需要進(jìn)行操作的目錄后,執行讀取數據指令,由于IMSI號是以二進(jìn)制形式存儲的,所以使用二進(jìn)制數據讀取指令: 0x00代表數據偏移地址為0,即從第一個(gè)字節開(kāi)始讀數據;0x09表示IMSI信息有9個(gè)字節; SIM卡返回: 0xB0代表響應數據對應的指令為READ BINARY;0x08代表IMSI號有8個(gè)字節數據;0x90/0x00代表命令正確執行。按照協(xié)議,該SIM卡IMSI號即為: 460 00 0104559542,符合國際移動(dòng)用戶(hù)識別碼IMSI(International Mobile Subscriber Identification Number)的編碼規則,即IMSI(國際移動(dòng)用戶(hù)識別碼)=MCC(移動(dòng)國家號)+MNC(移動(dòng)網(wǎng)號)+MSISDN(移動(dòng)用戶(hù)號碼)。 8 結 語(yǔ) SIM卡符合GSM規范,采用標準的接觸式IC卡,受到ISO7816標準的規范。本文在研究接觸式集成電路IC卡國際標準ISO7816的基礎之上,提出了一種SIM卡讀卡器的設計方案,針對SIM卡信息交互規程給出了具體的測試步驟,測試結果證明了該設計的可行性,讀卡器能夠穩定可靠地工作。 |