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就有以下几种组合方式。

SIM通信协议-传输协议_第1张图片

 

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来回复卡。

SIM通信协议-传输协议_第2张图片

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

以下为相对目录下可选择的文件的表SIM通信协议-传输协议_第3张图片

 

我们也可以通过绝对路径来选择相应文件。SIM通信协议-传输协议_第4张图片

不过这有以下几条限制

  • 如果选择的文件在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,并且参数指示重启。重启之后,该应用的安全状态也会改变。

 

 

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/a-lai/p/8034795.html

你可能感兴趣的:(SIM通信协议-传输协议)