1. 程式人生 > >SIM卡讀卡器的研究與設計

SIM卡讀卡器的研究與設計

SIM卡(Subscriber Identity Module)。即使用者識別模組,是一張符合GSM規範的"智慧卡"。SIM卡可以插入任何一部符合GSM規範的行動電話中,"實現電話號碼隨卡不隨機的功能",而通話費則自動計入持卡使用者的帳單上,與手機無關。

SIM卡作為智慧卡中特殊的一類卡,採用標準的接觸式IC卡。他受到ISO7816標準(接觸式積體電路IC卡的規定)和ETSI(歐洲電信標準委員會)的GSM11.11等標準的規範。他沿襲了智慧卡在安全中的特色,並在移動使用者認證和移動商務中扮演重要的角色。

目前手機使用者將一些重要的電話號碼都儲存在手機的SIM卡上。如果手機失竊,使用者可以買一部新的,但是儲存的號碼怎麼辦呢?如果使用者能事先將儲存在SIM卡上的電話號碼做一份電子拷貝,這樣就算手機丟失了,使用者還是可以很容易地將儲存的號碼寫入到新的SIM卡里。為此,研究並設計了SIM卡讀卡器,通過他可以將手機SIM卡中資訊讀取到電腦中,方便地實現電話簿和短訊息的編輯、備份和管理。為經常使用手機的使用者提供了一個經濟、便捷的資訊備份管理解決方案。

2 SIM卡常識

SIM卡是一張符合GSM規範"智慧卡",他實際上是一個裝有微處理器的晶片卡,內部有5個模組,且每個模組都對應一個功能:CPU(8位)、程式儲存器(3~8 kb)、工作儲存器(6~16 kb)、資料儲存器(128~256 kb)和序列通訊單元。SIM卡能實現儲存資料(電話本、短訊息等)和在安全條件下(個人身份號碼PIN、鑑權鑰Ki正確)完成客戶身份鑑權和客戶資訊加密演算法的全過程。這些功能都是由SIM卡內的一部具有作業系統的微處理機完成。SIM卡具有機卡分離(SIM-ME介面)、通訊安全可靠、成本低等特點。

(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℃,極限情況下每次使用不得超過4小時,總共使用不得超過100次。

(4) SIM卡的使用壽命:物理壽命是取決於客戶的插拔次數,約在1萬次左右;而積體電路晶片的壽命取決於資料儲存器的寫入次數,不同廠家其指標有所不同,就Mo-torola經試驗室試驗約5萬次左右。平均壽命約為4年。

3 SIM卡與移動臺裝置的介面

SIM卡晶片有8個觸點,與移動臺裝置相互接通:

(1) 電源VCC(觸點C1):4.5~5.5 V,ICC<10 mA;

(2) 復位RST(觸點C2);

(3) 時鐘CLK(觸點C3):卡時鐘3.25 MHz;

(4) 不提供(觸點C4);

(5) 接地端GND(觸點C5);

(6) 程式設計電壓VPP(觸點C6);

(7) 資料I/O口(觸點C7);

(8) 不提供(觸點C8)。

SIM卡同移動臺裝置連線時至少需5個連線線:資料I/O口(Data)、復位(RST)、接地端(GND)、電源(VCC)、時鐘(CLK)。他與基帶單元的介面電路如圖1所示。其中SIM CD為SIM卡檢測腳,用於檢測SIM卡的拔插;SIM CLK為ME提供的讀/寫SIM卡的參考時鐘;SIMRST為SIM卡復位訊號;SIM IO為序列資料輸入/輸出線,由20 kΩ上拉電阻上拉至高電平;SIM RnW為讀/寫控制訊號,用以指示當前SIM_IO線上資料傳輸的方向;SIM PWCTRL為功率控制訊號,可在空閒方式時控制SIM卡上的電源關閉,從而降低功耗,延長待機時間。

4 SIM卡內部資料結構

SIM卡共有3類資料檔案:主檔案(Master File,MF)、專用檔案(Dedicate File,DF)、基本檔案(ElementFile,EF)。組織結構規定如下:

0x3F00代表根目錄,0x2FXX代表根目錄下的基本檔案;

0x7FXX代表一級子目錄,0x6FXX代表一級子目錄下的基本檔案;

0x5FXX代表二級子目錄,0x4FXX代表二級子目錄下的基本檔案。

5 SIM卡上電覆位流程

SIM卡符合國際標準ISO7816的要求,按照協議中的規定,SIM應有8個觸點,包括電源介面、復位控制介面、時鐘輸入介面、資料輸入輸出介面,SIM卡工作時整體電流消耗小於10 mA。SIM卡的時鐘頻率可由外部提供,在指定時問內執行鑑權過程時至少需要13/4 MHz的時鐘頻率,其他情況下,使用最小為13/8 MHz的時鐘頻率。I/O埠的資料傳輸波特率為時鐘頻率的1/372。

5.1 觸點接通與冷復位時序(Activation and cold reset)

初始時,所有埠皆處於低電平(L)態,電壓範圍0~0.4 V;VCC電源電壓先上電(H態),後提供VPP程式設計電壓,在智慧SIM卡中,VPP端無用,電壓範圍5 V±0.4 V;VCC電源端穩定一段時間後,將IO埠置為接收方式(H態),並提供穩定的CLK時鐘訊號(注:IO口需在提供CLK訊號前或在提供CLK訊號後200個時鐘週期內(ta)置為接收方式);RST復位訊號需在提供CLK訊號後400個時鐘週期內(tb)保持L態,之後才可置為H態;提供復位訊號後400~40 000個時鐘週期內(tc),I/O口有復位應答。

5.2 熱復位時序(Warm reset)

熱復位在冷復位失敗情況下使用,過程中保持VCC為H態,且有穩定的CLK時鐘訊號;熱復位時需保持RST端為L態的時間至少為400個時鐘週期(te);在RST端置L態之前或之後200個時鐘週期時間內(td),IO口應置為接收方式;在RST置為H態後的400~40 000個時鐘週期內,I/O口有復位應答。

5.3 時鐘停止時序(Clock stop)

外部控制停止時鐘,可使SIM卡通訊暫時中斷,過程中保持VCC端與復位端RST為H態;要停止時鐘,需在I/O口輸出最後一個字元之後等待至少1 860個時鐘週期(tg);恢復時鐘後至少等待700個時鐘週期(th),I/O開始有字元輸出。

5.4 觸點釋放時序(Deactivation)

將RST端置為L態;結束CLK輸入並將I/O口置為L態;最後將VCC端置為L態。

5.5 SIM卡的復位應答

SIM卡的觸點被啟用之後,終端啟動一個冷復位。如果SIM卡在冷復位後回送的位元組數不符,或在19 200個初始etu之內復位應答未完成,終端不立即終止卡片操作過程,而是再發一個熱復位訊號。如果仍然得到同樣的結果,那麼,介面沒備應釋放觸點,否則卡將繼續進行後續操作。流程如圖6所示。

復位應答最多為32個位元組(包括歷史字元,不包括初始字元),其中歷史字元最多為15個字元,協議分為T=O與T=1兩種,一張SIM卡只支援其中的一種協議。位持續時間:在IO上的位持續時間被定義為一個基本時間單元etu。復位應答期間的位持續時間稱為"初始etu"。初始etu=372/fs=372個時鐘週期。復位應答之後的位持續時間稱為"當前etu",當前etu=F/D/fs。F為時鐘頻率變換因數,D為位元率調整因數,均在SIM卡復位應答的介面字元TA1中給出,預設值為F=372,D=1,即復位應答之後的當前etu=初始etu。復位應答過程中相連兩字元起始位前沿之間的最小時間間隔為12個初始etu,最大時間間隔為9 600個初始etu,所有應答字元在19 200個初始etu的時間內傳送完,即從第一個字元的起始位前沿到最後一個字元起始位前沿後的12個初始etu結束)。

復位應答格式:

 

TS 初始字元(強制性的),確定後續字元傳送順序(高位先送還是低位先送);

TO 格式字元(強制性的);

TA1/TB1/TC1/TD1~TAi/TBi/TCi/TDi 介面字元(選擇性的);

T1~TK歷史字元(選擇性的);

TCK 校驗字元(有條件的)T=0時不出現。

6 SIM卡資訊互動規程

6.1 SIM卡資訊互動指令格式

6.1.1 命令格式

CLA 命令類別程式碼,GSM為0xA0; INS 指令編碼;

P1/P2/P3 指令參量,P3由INS決定,代表通訊的資料資訊長度,有指令與響應兩個方向;

DATA 指令附加資料。

6.1.2 應答格式

DATA:響應資料; SW1/SW2:返回命令狀態。

6.1.3 通用錯誤返回程式碼表

6.2 常用的基本指令

6.2.1 目錄或檔案選擇指令(SELECT)

選擇一個檔案,選擇成功後,對線性固定型檔案,記錄指標不確定。對迴圈型檔案,記錄指標指向最近更新或增加的一條記錄。

CLA=A0,命令類別程式碼,GSM為0xA0;INS:指令編碼,SELECT為A4;P1=00,按檔案識別符號選擇;P2=00,應答:

目錄地址:

正確命令響應為:

0x9F代表命令正確執行,XX為SIM卡返回的資料長度;返回0x94/0x04,代表給出的目錄地址是錯誤的。在復位應答之後(ATR),主要檔案(MF)被預設為選中,成為當前目錄。然後,可採用符合下列原則的SELECT功能來選擇每種檔案: ① 選擇DF或MF設為當前目錄;DF是在選擇任何他的EF之前被先選擇出來

② 選擇EF設為當前檔案,DF或MF是EF的上層。當前EF總是當前目錄的下層。

可選擇的檔案包括:屬於當前目錄的直接子檔案;屬於當前DF的父檔案的直接子DF;當前月錄的上層;當前DF;MF。

6.2.2 取前一命令應答資料指令(GET RESPONSE)

Length(R):響應資料最大長度。

全部命令響應為:

0x90/0x00代表命令正確執行。

6.2.3 從透明的資料檔案中讀取以二進位制形式儲存的位元組串指令(READ BINARY)

Offset:要讀取資料的偏移地址; Length(R):響應資料最大長度。

全部命令響應為:

0x90/0x00代表命令正確執行;返回0x94/0x00,代表沒有資料檔案被選中,即當前被選中的可能是目錄而不是檔案;返回0x94/0x08,代表當前目錄或資料檔案與指令不一致,即當前資料不是以二進位制形式儲存的;返回0x98/0x04,代表本次操作不滿足存取安全規則,密碼認證未通過。 

7 SIM卡資料讀寫測試

SIM卡資料讀寫測試的具體步驟及其結果如下:

Step1 SIM卡首先上電覆位,原則是先接通觸點,後啟動冷復位,若冷復位失敗,啟動熱復位,若熱復位也不成功,則釋放觸點並報錯。冷復位或熱復位成功後,SIM卡應輸出復位應答。

實驗測試中取得的復位應答訊號如下:

0x3B代表協議為正向約定;0x67代表TB1與TC1出現,歷史字元位元組數為7;0x00代表不需要VPP;0x29~0x22為7個歷史字元。 Step2 復位成功後,傳送目錄選擇指令,將當前目錄選取到GSM目錄,指令如下:

7F20為GSM目錄地址;

SIM卡返回:

 代表命令正確執行,且響應字元有34個位元組。

Step3 傳送取命令響應資料指令:

 0x22代表指令返回資料最大為34個位元組;

SIM卡返回:

0xC0代表響應資料對應的指令為SELECT;0x90/0x00代表命令正確執行。

Step4 再次傳送目錄選擇指令,將當前目錄選取到IMSI目錄,指令如下:

6F07為IMSI資料目錄;

SIM卡返回:

代表命令正確執行,且響應字元有15個位元組。

Step5:傳送取命令響應資料指令:

 0x0F代表指令返回資料最大為15個位元組;

SIM卡返回:

 0xC0代表響應資料對應的指令為SELECT;0x90/0x00代表命令正確執行。

Step6 選取到所需要進行操作的目錄後,執行讀取資料指令,由於IMSI號是以二進位制形式儲存的,所以使用二進位制資料讀取指令:

 0x00代表資料偏移地址為0,即從第一個位元組開始讀資料;0x09表示IMSI資訊有9個位元組;

SIM卡返回:

 0xB0代表響應資料對應的指令為READ BINARY;0x08代表IMSI號有8個位元組資料;0x90/0x00代表命令正確執行。按照協議,該SIM卡IMSI號即為:

460 00 0104559542,符合國際移動使用者識別碼IMSI(International Mobile Subscriber Identification Number)的編碼規則,即IMSI(國際移動使用者識別碼)=MCC(移動國家號)+MNC(移動網號)+MSISDN(移動使用者號碼)。

8 結 語

SIM卡符合GSM規範,採用標準的接觸式IC卡,受到ISO7816標準的規範。本文在研究接觸式積體電路IC卡國際標準ISO7816的基礎之上,提出了一種SIM卡讀卡器的設計方案,針對SIM卡資訊互動規程給出了具體的測試步驟,測試結果證明了該設計的可行性,讀卡器能夠穩定可靠地工作。