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

      

  • 相关阅读:
    Mysql蠕虫复制
    Mysql中如何开启慢查询功能?
    线程的状态以及状态切换
    Java的Unsafe类
    Spring 获取jar内外文件的方式
    RocketMQ学习
    volatile的理解
    快速排序
    JVM的发展史
    nginx安装配置
  • 原文地址:https://www.cnblogs.com/a-lai/p/8034795.html
Copyright © 2020-2023  润新知