学习笔记USIM卡规范综述.docx
《学习笔记USIM卡规范综述.docx》由会员分享,可在线阅读,更多相关《学习笔记USIM卡规范综述.docx(24页珍藏版)》请在冰豆网上搜索。
学习笔记USIM卡规范综述
1什么是UICC卡
UICC--UniversalIntegratedCircuitCard
通用集成电路卡是定义了物理特性的智能卡的总称。
作为3G用户终端的一个重要的、可移动的组成部分,UICC主要用于存储用户信息、鉴权密钥、短消、付费方式等信息,还可以包括多种逻辑应用,例如用户标识模块(SIM)、通用用户标识模块(USIM)、IP多媒体业务标识模块(ISIM),以及其他如电子签名认证、电子钱包等非电信应用模块。
UICC中的逻辑模块可以单独存在,也可以多个同时存在。
不同的3G用户终端可以根据无线接入网络的类型,来选择使用相应的逻辑模块。
在3G用户终端的入网测试中,要求满足UICC的一致性测试要求。
UICC的一致性测试包括物理特性、电气特性和传输协议测试等几个方面,其中传输协议测试涉及到对UICC的文件访问和安全操作。
ISO/IEC国际化标准组织制定了一系列的智能卡安全特性协议,以确保3G用户终端对UICC文件的安全访问。
2USIM卡与SIM卡的比较
USIM卡和SIM卡相比有如下特点:
◆相对于SIM卡的单向鉴权(网络鉴权用户),USIM卡鉴权机制采用双向鉴权(除了网络鉴权用户外,用户也鉴权网络),有很高的安全性。
◆于SIM卡电话薄相比,USIM卡电话薄中每个联系人可以对应多个号码或者昵称。
◆相对SIM卡机卡接口速率,USIM卡机卡接口速率大大提高(230kbps)。
◆相对SIM卡对逻辑应用的支持,USIM可以同时支持4个并发逻辑应用。
SIM卡的上下电过程
上电过程:
RST低电平状态->Vcc加电->I/O口处于接收状态->Vpp加电->提供稳定的时钟信号。
关闭过程:
RST低电平状态->CLK低电平状态->Vpp去电->I/O口低电平状态->Vcc去电
GSM网络注册过程中用到的对SIM卡的操作:
1.手机开机后,从SIM卡中读取IMSI(15Digits)和TMSI(4byte);
2.手机把IMSI或TMSI发送给网络;
3.网络检验IMSI或TMSI有效,生成一个128bit的RAND发送给手机。
4.手机收到RAND后,将RAND发给SIM卡;
5.SIM以里面的Ki为密钥对RAND进行A3A8算法运算,生成(SRES+Kc);
6.手机从SIM卡读取(SRES+Kc)(32bit+64bit),并将SRES发给网络;
7.网络自己进行一次A3A8运算,如果结果与手机返回的SRES相同,判定用户合法。
可以进行后续操作。
3CPU卡
智能卡按照卡内镶嵌芯片的不同,可分为存储器卡、逻辑加密卡、CPU卡。
CPU卡的结构:
首先,非CPU卡,你必须熟悉卡的存储结构,哪里是制造商区,哪里是密码区,哪里是数据控制区,哪里是数据区(应用区)……
而CPU卡,你不必关心数据的地址,却要关注文件系统的结构:
主文件(MF,相当于DOS文件系统的根目录)、专用文件(DF,相当于DOS文件系统的目录,可以有多层)、基本文件(EF,相当于DOS文件系统的文件)。
CPU卡的基本文件类型虽然只有透明(二进制)文件、(定长与不定长)线性记录文件和循环记录文件三类,但由于COS内部控制的需要,派生出一些特定的“变种”——复位应答文件、口令文件、密钥文件、DIR文件、SFI文件……
COS中的各文件在智能卡的个人化过程中由发行商(Issuer)根据卡的应用而创建,对卡的用户而言通常是不能对文件进行创建和删除的。
但是用户可以根据情况对文件内容进行修改,可以对文件中的记录或数据单元进行增加、删除等操作。
T=0协议以单字节的字符为基本单位,T=1协议则以有一定长度的数据块为传输的基本单位。
智能卡的数据端口只有一个,异步半双工,任一时刻,数据端口上最多只能有一方(智能卡或者读写设备)在发送数据。
4.传输协议
目前智能卡采用的信息传输协议一般是T=0协议和T=1协议。
如果说这两类协议的COS在实现功能上有什么不同的话,主要就是在传送管理器的实现上有不同。
不过,无论是采用T=0协议还是T=1协议,智能卡在信息交换时使用的都是异步通信模式;而且由于智能卡的数据端口只有一个,此信息交换也只能采用半双工的方式,即在任一时刻,数据端口上最多只能有一方(智能卡或者读写设备)在发送数据。
T=0、T=1协议的不同之处在于它们数据传输的单位和格式不一样,T=0协议以单字节的字符为基本单位,T=1协议则以有一定长度的数据块为传输的基本单位。
物理层
T=0和T=1传输协议都应使用物理层和字符帧
数据链路层
通过I/O线传输的字符应被植入字符帧,在传输字符帧之前。
I/O线被置为状态H。
按惯例,字符中的逻辑“1”在I/O线上用状态H表示,“0”在I/O线上用状态L表示一个字符帧含有10个连续的比特:
a)一个比特的起始字位,低电平;
b)八个比特的数据位;
c)一个比特的奇偶校验位。
当包含字符帧的校验位在内有偶数个比特被置“1”时,校验位被置位。
时间原点固定在最后一个状态H和第一个状态L的中间。
起始位存在的核实必须在0.7个etu之内进行,相继的各位必须在(n+0.5±0.2)etu区间内被接收。
起始位是第1位。
在一个字符帧内,从它的起始位前沿起到第n位的后沿间的时间是(n±0.2)etu。
相连两个字符帧的起始位前沿之间的区间,包括了字符宽度(10±0.2)etu,加上保护时间。
在保护时间内,UICC卡和终端二者都处于接收方式(I/O线处于状态H)
图:
字符帧
数据传送时最高位的字节总是最先通过I/O线。
复位应答返回的TS字节(参见ISO/IEC7816-3[12])规定了一个字节里比特的顺序(也就是指明该字节是最高位先传输还是最低位先传输)。
T=0传输协议
一种基于半双工异步字符的传输协议。
所有使用T=0协议的命令均由ME发起,通知UICC如何做。
所有使用T=0协议的命令都由终端通过发送5个字节的命令头标发起,命令头标告知UICC该做什么。
终端总是处于主导位置而UICC处于从属位置。
并且假定终端和UICC都知道传输的方向,
所有使用T=0协议的命令都由终端通过发送5个字节的命令头标发起,命令头标告知UICC该做什么。
命令总是由终端发给UICC,通过由5个字节组成的命令头标的形式发送一条指令,命令头标由5个连续的字节组成,分别是CLA,INS,P1,P2,和P3.命令头标和随命令一起发送的所有数据一起构成了T=0协议的命令传输协议数据单元(C-TPDU)
终端向UICC发送命令头标以后就等待一个回送的过程字节。
UICC接收到命令头后,应该向终端发送一个包含了过程字节的响应。
过程字节用于指示终端下一步的动作。
过程字节用于保持终端和UICC间的通讯,不应传送到应用层。
这些动作以后,终端应等待进一步的过程字节或状态字。
状态字SW1SW2在命令结束时指示UICC的状态,一个正常的命令结束时,SW1SW2='9000'.
T=1传输协议
通信由ME向UICC发送一个块开始。
发送块的权利在ME和UICC间交替。
T=1传输协议是异步半双工的块传输协议,当以下情况发生时,协议被初始化:
由冷复位引起的ATR之后
由热复位引起的ATR之后
成功的PPS交换后
通讯从终端向UICC发送一个块开始,UICC和终端轮流发送块。
一个块是最小的数据单元,它可以被发送也可包含应用数据或传输控制数据,在进一步处理已接收数据之前应该先对其做检测。
在终端和UICC中传送的块传输协议,每个块都有如下表中的结构:
起始域
信息域
结束域
NAD
PCB
LEN
INF
EDC
1byte
1byte
1byte
0-254bytes
1byte
起始域和结束域必选,信息域可选。
起始域
起始域分为下列三个必选区域
-节点地址字节(NAD),1字节
-协议控制字节(PCB),1字节
-长度(LEN),1字节。
信息域——INF,可选,且依赖于使用该域的信息块的类型。
块的类型
INF用途
信息块I-block
传送命令和APDU的响应.
接收准备块R-block
未用
管理块S-block
传送非应用相关信息
INF应存在(单字节)以按WTX调整IFS
VPP信号错误、管理链中止或重同步时INF不存在
结束域
结束域包含了错误检测编码字节(EDC),该字节传送所传输的块的错误检测码。
结束域应使用ISO/IEC7816-3[12]定义的LRC
传输层
本节描述APDU如何在终端和UICC之间传输。
APDU中的数据定义参见7.4节。
使用T=0的APDU传输
本节描述在T=0协议中C-APDU和R-APDU的映射、APDU交换以及在方式2和方式4中GETRESPONSE命令的使用。
APDU映射为TPDU
将C-APDU映射到T=0命令头与命令方式有关。
将UICC返回的数据(若存在)和状态映射到R-APDU与返回的数据长度有关。
UICC返回过程字节‘61XX’和‘6CXX’用于控制终端和UICC传输层之间进行的交换,过程字节不能返回给终端的应用层。
若返回过程字节‘61XX’或‘6CXX’,那么表明UICC中的命令没有完成。
若UICC返回状态字‘9000’给终端传输层,它表示处理命令完成的正常状态。
终端传输层在从UICC处接收到任何状态字时(除接收到过程字节‘61XX’和‘6CXX’),它将停止命令处理(如:
将R-APDU传送给应用层并等待应用层将来的C-APDU)。
仅对于方式4中的命令,若接收到警告状态字节(‘62XX’和‘63XX’)或者与应用相关的状态字节(‘9XXX’,‘9000’除外),在成功地传输命令数据给UICC后,终端传输层将立即继续处理命令。
下面对于UICC返回数据和状态到R_APDU的映射的描述是提供信息,同时仅应用在UICC已经(成功或其它)处理完命令,在’61XX’和’6CXX’过程字节的控制下UICC已经返回所有数据(如果存在)的情况。
对于INS,和过程字节‘60’的详细用法不描述。
UICC返回的状态与最近接收到的命令有关。
在使用GETRESPONSE命令来完成方式2和方式4命令处理时,在接收到GETRESPONSE命令后,UICC返回的任何状态应与GETRESPONSE命令有关,而与完成的方式2和方式4命令无关。
使用T=1的APDU传输
C-APDU是从终端传输层发送到终端应用层的。
传输层将C-APDU不变地映射到I-block的INF。
I-block被发送到UICC。
响应数据(若存在)和状态将在I-block的INF中从UICC返回终端传输层。
若UICC返回状态,该状态指示:
-正常处理(‘61XX’);
-警告(‘62XX’或‘63XX’);
-应用程序方式(‘9XXX’);
-成功执行命令(‘9000’);
那么它将返回与命令处理相关的数据(若可得)。
在别的状态下不返回任何数据。
I-block的INF内容被不变地映射到R-APDU并返回给终端传输层。
T=1时,APDU消息的传输将按照下面描述的四种方式被映射到I-block的信息。
应用层
应用协议由终端应用层和传输层之间有序的一组交换组成。
本文件中接下来的部分将定义应用协议。
应用层交换的每一步由一个命令-响应对组成,其中终端应用层通过终端传输层发送命令给UICC,UICC处理命令并使用UICC传输层和终端传输层发送响应给终端应用层。
每一特定的命令(C-APDU)有特定的响应(R-APDU)。
命令和响应分别称为命令消息和响应消息。
C-APDU的结构见10.2节。
R-APDU的结