学习笔记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的结构见10.3节。
命令和响应消息都可能包含数据。
因此,通过传输层由传输协议分别对四种方式进行管理,如下表7.11所示:
表7.11:
不同方式下APDU中数据定义
方式
命令数据
响应数据
1
无
无
2
无
有
3
有
无
4
有
有
4应用及文件结构
UICC应用结构
UICC中应用的组织结构如图8.1所示。
图8.1:
应用结构示例
本文档并未对应用的位置施加任何限制。
所有应用都由EFDIR中取得的应用标识符唯一地进行标识。
这些应用标识符被用来选择应用。
EFDIR,EFPL和EFICCID都是必需的,直接放置在主目录(MasterFile)下。
详细内容见本文档13章。
DFTELECOM是可选的。
当它存在时,存放在主目录中并使用保留的FID'7F10'。
DFTELECOM包括了应用的独立信息。
文件类型
本章定义了适用于本文档内的应用的文件类型。
专用目录文件DF
专用目录文件(DF)允许文件进行功能性分组。
它可以是专用目录文件和/或基本文件的上一级目录。
专用目录文件是通过文件标识符被引用的。
应用专用目录文件(ADF)是特殊的专用目录文件,包括应用所有专用目录文件和基本文件。
基本文件EF
文件引用
文件标识符(FID)用于定位或标识一个特定的文件。
FID由两个字节组成,应以十六进制表示。
FID应遵从于以下条件:
-在有关文件建立时,应设定其FID;
-同一上级目录之下的两个文件的ID不相同;
-当前目录的子文件及当前目录的父文件及直接子目录不能具有相同的FID值
FID的串连接就是路径。
路径以MF或当前DF开始,以文件本身的标识符为结束。
如果当前DF的标识符未知,在路径开始处应使用保留值‘3FFF’。
FID的顺序总是从上级目录到子目录。
短文件标识符(SFI)占5个比特,范围是1到30。
同一上级目录下的任意两个文件的SFI不相同。
DF名称占1至16个字节。
DF的名称是AID,在同一张卡上,应是唯一的。
选择文件的方法
在UICC激活(定义见6.1)并且返回复位应答(ATR)后,根目录被默认为当前目录。
利用“SELECT”功能,通过本章中定义的3个文件引用方法中的一种可选择每一个文件。
通过标识符引用
选择一个DF、ADF和MF设置为当前目录,在这次选择之后,不存在当前EF。
选择EF设置当前EF,当前目录仍为DF、ADF或MF,这是EF的上级目录。
当前EF总是当前目录的一个子文件。
只有当前应用的ADF可以通过FID选择。
任何应用的专用命令都应仅在该应用是当前目录时才可操作。
下列文件可以从最后选中的文件通过文件ID标识符(FID)引用被选中。
-任何当前目录的直接子文件;
-任何当前DF的父目录的直接子目录;
-当前目录的父目录;
-当前DF或ADF;
-MF
图8.4是遵循当前文档的应用的逻辑结构实例。
图8.4:
逻辑结构实例
表8.1给出了使用FID引用时,遵循图8.4中所示逻辑结构的本文档定义的应用有效选择方式。
最后选定的文件的重新选择也是允许的,但并不显示。
表8.1:
文件选择
最后选定的文件
有效选择
MF
DF1
ADF1
DF3
DF4
DF5
EF1
EF2
EF3
EF4
EF5
EF6
EF7
DF1,EF1,EF-DIR
MF,EF2,
MF,DF3,DF4,EF3
MF,ADF1,DF4,DF5,EF4
MF,ADF1,DF3,EF5,EF6
MF,DF3,EF7
MF,DF1,EF-DIR
MF,DF1
MF,ADF1,DF3,DF4
MF,ADF1,DF3,DF5,
MF,DF4,ADF1,EF6
MF,DF4,ADF1,EF5
MF,DF3,DF5
通过路径引用
一个文件,DF或EF,可以象8.3节中定义的那样通过路径引用进行选择。
表8.2中包括图8.4通过路径选择的实例。
本例中还考虑了当前应用(ADF1)此前已经通过DF名被选中的情况。
下表中的ADF1的FID为'7FFF'(见8.5)
表8.2:
通过路径选择文件的实例
最后选中的DF
路径的开始
选择实例
任意
MF
'EF1','EF-DIR','DF1','DF1||EF2'
任意
MF
'7FFF||DF3','7FFF||DF3||EF4',
'7FFF||DF3||DF5','7FFF||DF3||DF5||EF7'
'7FFF||DF4','7FFF||DF4||EF5',
'7FFF||DF4||EF6,
'7FFF||EF3'
DF1
CurrentDF
'EF2'
DF3
CurrentDF
'DF5','DF5||EF7','EF4'
DF4
CurrentDF
'EF5','EF6'
DF5
CurrentDF
'EF7'
在“从MF通过路径选择”中,终端不应在路径起始位置使用MF的文件标识(如:
‘3F00’)。
在“从MF通过路径选择”中,终端可以在路径开始处使用特定的FID'7FFF'(见8.5节)。
既在该逻辑通道中,路径开始于当前被激活应用的ADF。
在“从当前DF通过路径选择”中,终端不应在路径开始处使用特定文件ID'7FFF'。
在“从MF通过路径选择”或“从当前DF通过路径选择”中,终端不应使用当前DF(如:
‘3FFF’)的标识。
在“从MF通过路径选择”或“从当前DF通过路径选择”中,终端不应使用空数据字段。
短文件标识符
DF中的任何EF可在DF或ADF级别通过以下命令并将短文件标识符(SFI)作为命令的一部分默认地实现对文件的选择,而无需使用SELECT命令。
-READBINARY
-UPDATEBINARY
-READRECORD
-UPDATERECORD
-INCREASE
-SEARCHRECORD
当文件的FCP包括带标识‘88’的TLVDO,SFI对特定文件的支持。
如果长度字节的值为0,表示该文件不支持短文件标识符。
如果文件的FCP中没有TLVDO字段,则表示该文件的FID的低5位数据为文件的SFI。
当READRECORD命令包含一个有效的SFI时,本文件被设为当前EF,且复位当前指针。
后续的记录通过READRECORD命令读入,且无需SFI。
当UPDATERECORD命令包括一个有效的SFI时,本文件被设为当前EF,且复位当前指针。
后续的记录通过updateRECORD命令更新,无需SFI。
当INCREASE命令包括一个有效的SFI时,本文件被设为当前EF,且复位当前指针。
后续的记录通过INCREASE命令增加,无需SFI。
当SEARCHRECORD命令包括一个有效的SFI时,本文件被设为当前EF,且复位当前指针。
后续的记录通过SEARCHRECORD命令搜索,无需SFI。
应用的特性
应用既可以被显式引用,也可隐式引用。
应用可通过带AID的显式选择激活。
这会将应用的ADF设为当前ADF。
当前ADF可通过带隐式引用值‘7FFF’的FID引用。
显式应用选择
1.用DF名选择
一个通过AID在UICC中被描述的可选应用,应通过一个以1到16字节方式编码的DF名称来引用。
每个名称在一个UICC中都应是唯一的。
DF名称可被用在SELECT命令中,选择一个可选应用。
2.用局部DF名称选择
一个可选应用也可通过局部DF名称的方式进行选择:
P1=‘04’,P2参数必选符合ISO/IEC7816-4中的定义first、next、previous或last方式。
在这种情况下,DF的名称被右截短。
若在卡上存在几个AID中起始字节内容相同的应用,选中的应用则取决于P2中指定的值。
即使卡片正处于“previous”对话中,如果P2中指定为“last”选项,则选中的应用就是与局部DF名称相匹配的最后被激活的应用。
利用局部DF名称选择应用对于单一应用卡片为可选项,对于多应用卡为必选项。
卡片应在由ISO/IEC7816-4中规定之ATR历史字节的压缩-TLV对象定义的“卡片服务参数”以及“卡片性能”中指明对这一性能的支持。
对next、previous和first的解释应在应用中指明。
用这些参数选中的应用与SELECT命令中提供的局部DF名次相匹配。
如果UICC不支持局部DF名称的选择,UICC应作出适当的响应(如:
命令参数不支持‘6A86’)。
应用对话的激活
当终端发送一个带应用AID且在命令参数中指明应用应被激活的SELECT命令时,应用对话被初始化。
在激活后,应用可能会需要一个初始化进程。
该过程不在文档范围内,但应在应用规范中描述。
本进程用来为终端和UICC中的应用提供一个定义良好的状态。
在选中应用后,UICC评估应用的安全环境。
SE依应用的校验需求(见表9.1)设定。
应用PIN的校验状态依应用指定的应用对话激活进程更新。
终端会向UICC发送一个特定的STATUS命令指出应用的初始化进程已被成功执行。
在一个假定的逻辑通道上,仅允许存在一个活动的可选应用对话。
因此,为激活一个新的可选应用对话与原有的对话并行,必须打开一个新的逻辑通道。
可选的应用对话可以在几个通道对话中发生。
应用对话的终止
在应用终止之前,应用可以执行一个对话终止进程。
本进程应在应用规范中描述。
在进程执行之前,终端应向UICC发送一个特定的STATUS命令指明应用的终止进程将启动。
在终止进程执行后,终端及应用将处于一个定义良好的状态。
如果下列状况在任何一个应用对话被激活的逻辑通道上发生,应用对话将被终止:
-隐含地;一个的带有不同于当前活动应用AID的的SELECT命令(通过DFNAME)被UICC执行,且命令参数中表明该应用应被激活。
-明确地;一个的带有当前活动应用AID的的SELECT命令(通过DFNAME)被UICC执行,且命令参数中表明该应用应被终止。
-若逻辑通道被关闭。
当终端对UICC进行复位时,应用对话也被终止。
应用PIN的校验状态会被应用对话终止程序依据程序中所描述的方式来进行更新。
应用对话的复位
如果一个的带有当前活动应用AID的的SELECT命令(通过DFNAME)被UICC执行,且命令参数中表明该应用应被激活。
则应用对话被复位。
复位使得应用对话的激活进程被初始化。
应用的安全状态依应用指明的应用对话激活进程更新。
GSM/USIM应用交互作用和限制
USIM对话的激活排斥GSM对话的激活。
即指出一旦USIM应用对话被激活,带有字节置为‘A0’的Class的发送给UICC的命令将会把SW1SW2'6E 00'(指令不支持)返回给终端。
类似地,GSM的激活排斥USIM对话的激活。
一次最多仅有一个USIM对话可被激活。
文件ID的保留
以下FID被本规范保留:
ADF:
-操作用途:
'7FFF'
专用目录:
-管理用途
'7F4X','5F1X','5F2X'.
-操作用途:
'7F10'(DFTELECOM),'7F20'(DFGSM),'7F21'(DFDCS1800),'7F22'(DFIS-41),'7F23'(DFFP-CTS),'7F24'(DFTIA/EIA-136'),'7F25'(DFTIA/EIA-95')and'7F2X',whereXrangesfrom'6'to'F'.
注释:
'7F80'(DFPDC)用于日本PDC规范。
'7F90'(DFTETRA)用于TETRA规范。
'7F31'(DFi