SIM通信協議-傳輸協議


概述

1.SIM卡傳輸協議架構類似與TCP/IP的OSI模型。分為5層

  • 物理層
  • 數據鏈路層
  • 傳輸層
  • USAT層
  • 應用層

 

1.1物理層

通過IO口傳輸二進制數據。

1.2數據鏈路層

定義字符交換的時序和差錯處理。數據鏈路層定義了T=0和T=1兩種傳輸方式。他們都是半雙工傳輸,T=0是基於字節傳輸。T=1是基於塊傳輸。

1.21 T=0傳輸方式(面向字節)

傳輸從一個命令頭開始,該命令頭由CLA,INS,P1,P2,P3組成。終端向UICC(智能卡)發送字節頭,UICC就會響應一個字節的結果給終端。該結果有以下幾種定義。

  1. 如果該字節等於命令頭的INS,那么終端從UICC獲取剩余的數據,或者UICC從終端獲取剩余的數據。
  2. 如果該字節等於命令頭的補碼,那么終端從UICC讀取另一次數據,或者UICC從終端讀取另一次數據。
  3. 如果該字節等於‘60’,沒有額外的數據需要傳輸,終端只能等待傳輸過程字節。
  4. 如果該字節等於‘61’,終端要等待第二個過程字節,並且發送P3為最大長度的GET RESPONSE 頭給UICC。
  5. 如果該字節等於‘6C’,終端需要等待第二個過程字節,並且發送P3位最大長度的與之前相同的頭給UICC。

命令結束過,UICC返回給終端一個2個字節的狀態SW1和SW2.(詳細常考GSM手冊。)

 

1.22 T=1傳輸方式(面向塊)

一個塊的架構如下圖所示。

NAD:塊地址字節(必須)

PCB:控制協議字節(必須)

INF:  0~256bit的信息字節(可選)

T=0協議定義了三種類型的塊

  1. I-Bolck:在應用層傳輸數據,還包含該數據是否需要響應的標志。
  2. R-Block:用於傳輸響應。
  3. S-Block:用於傳輸控制信息。

 

1.3 傳輸層

該層協議協定了APDU到TPDU的映射關系,以及TPDU與卡如何完成數據交互。終端要與UICC進行通信,那么必須將應用協議數據單元APDU映射為傳輸協議數據單元TPDU。

1.31 APDU COMMAND

APDUCOMMAND由Command header 和 Command body兩部分組成。其中CLA INS P1 P2 和之前介紹的一樣。只是P3變為了可變長度的Command body,Command 的Lc(期望發送的數據長度)和Le(期望接收的數據長度)兩個域是可選的,於是乎我們的APDU COMMAND就有以下幾種組合方式。

 

1.32 APDU COMMAND的編碼

以上為APDU的編碼。我們根據Case 1-Case 4來分別分析這四種組合的編碼。

  • Case 1 編碼:包括Command header。
  • Case 2 編碼:包括Command header 和Le,這里Le編碼可以為一個字節和三個字節
    •   當Le為一個字節時,所希望接收字節是 1到256
    •       當Le為三個字節時,那么第一個字節為‘00’,后面兩個字節所指示的所希望接收字節范圍是1-65536
  • Case 3 編碼:包括Command header Lc data,Lc和上面的Le編碼和意義差不多表示期望發送的字節。
  • Case 4 編碼:包括Command header Lc data Le。

1.33 APDU COMMAND 到TPDU COMMAND映射

這里映射也分為4種情況

  1. Case 1:

     

  2. Case 2: 
  3. Case 3:

  4.  Case 4:

 

 1.4 USAT層

USAT層使用應用狀態字來指示

  • 終端主動命令的可用性‘91XX’。
  • 用於響應終端Envelope命令的可用數據(‘9000’,‘62XX’,‘63XX’)。
  • 暫時無法使用USAT去處理Envelope(‘9300’)。

1.41 主動命令

當狀態字SW1-SW2 為‘9000’,這卡可以通過回復‘91XX’來指示接下來有主動命令要發送。終端通過FETCH-APDU來獲取卡的主動命令。終端通過TERMINAL RESPONSE來回復卡。

1.42 ENVELOPE 命令

該命令用於傳輸數據到USAT。

 

1.5 應用層

應用層則包括UICC的文件系統,以及UICC的安全機制,應用交互機制。

 1.51 應用層文件系統下有三類文件 EF DF MF

  • Dedicated files :DF針對功能對文件進行分組。ADF是包含特定應用相關的所有DF 和 EF。
  • Elementary files : EF 分三類,Transparent EF ,Linear fixed EF,Cyclic EF.
    • Transparent EF 由一系列字節組成。當對文件進行修改操作時,由文件起始位置加上相對偏移的方式對文件相關內容進行修改。
    • Linear fixed EF 具有線性固定的結構的文件由一系列具有相同長度記錄構成。第一條記錄為1,SELECT命令會返回記錄的總數量。
    • Cyclic EF 一系列具有相同長度的記錄首尾循環組成。

 

1.52 選擇文件的方法

當ATR過程結束,MF文件被自動選擇成為當成路徑。所有文件可以通過SELECT命令來選擇,選擇的文件需在當前目錄下,可以選擇以下幾種文件

  • 當前路徑下的子文件
  • 當前目錄下的子目錄
  • 當前目錄下的父親目錄
  • 當前目錄
  • 當前應用下的應用目錄ADF(默認可以用’777F‘選擇)
  • 主目錄MF

以下為相對目錄下可選擇的文件的表

 

我們也可以通過絕對路徑來選擇相應文件。

不過這有以下幾條限制

  • 如果選擇的文件在MF下,我們路徑中不需要加MF。
  • 如果選擇路徑從當前DF,終端不該使用‘777F’作為起始路徑。
  • 如果從MF開始或者從當前的DF開始為路徑選擇,終端命令的data字段不該為空。
  • 如果從MF或當前DF開始時,終端不該用當前的DF標識。

1.53 短文件標識

一些在DF目錄下的EF文件不需要通過SELECT來選擇,以下的一些命令配合SFI(短文件標示)參數可以被默認選擇。

  • READ BINARY
  • UPDATA RECORD
  • UPDATA RECORD
  • INCREASE;or
  • SEARCH RECORD

 

1.54 應用會話激活

應用會話會在終端發送附帶特定參數SELECT命令選擇AID后,被激活。UICC需要一定的程序來激活應用會話。該應用程序用於使終端和UICC處於對話狀態。終端可以通過發送STATUS命令來獲知UICC是否初始化成功。

 

1.55 應用會話停止

一個應用會話終止前應該執行一段終止程序。當終止程序執行開始,UICC會發送給終端一個STATUS命令來通知終端會話將被終止。

當以下其中一個時間發生,應用會話將被終止。

  • 隱性停止:當SELECT命令選擇另一個AID時候,並且命令參數指明新應用將被執行。
  • 直接停止:如果重新用SELECT命令選擇當前的AID的DF文件,並且命令參數中指示應用會話停止。

 

1.56 應用會話停止

終端通過SELECT重新選擇當前的AID的DF,並且參數指示重啟。重啟之后,該應用的安全狀態也會改變。

 

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM