概述
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就会响应一个字节的结果给终端。该结果有以下几种定义。
- 如果该字节等于命令头的INS,那么终端从UICC获取剩余的数据,或者UICC从终端获取剩余的数据。
- 如果该字节等于命令头的补码,那么终端从UICC读取另一次数据,或者UICC从终端读取另一次数据。
- 如果该字节等于‘60’,没有额外的数据需要传输,终端只能等待传输过程字节。
- 如果该字节等于‘61’,终端要等待第二个过程字节,并且发送P3为最大长度的GET RESPONSE 头给UICC。
- 如果该字节等于‘6C’,终端需要等待第二个过程字节,并且发送P3位最大长度的与之前相同的头给UICC。
命令结束过,UICC返回给终端一个2个字节的状态SW1和SW2.(详细常考GSM手册。)
1.22 T=1传输方式(面向块)
一个块的架构如下图所示。
NAD:块地址字节(必须)
PCB:控制协议字节(必须)
INF: 0~256bit的信息字节(可选)
T=0协议定义了三种类型的块
- I-Bolck:在应用层传输数据,还包含该数据是否需要响应的标志。
- R-Block:用于传输响应。
- 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种情况
- Case 1:
- Case 2:
-
Case 3:
-
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,并且参数指示重启。重启之后,该应用的安全状态也会改变。