SIM卡结构及上电流程详解
1. sim卡概述
1.1 什么是SIM卡
SIM卡是(Subscriber Identity Module客户识别模块)的缩写,也成为用户身份识别卡,移动无线终端必须安装上此卡才能使用。SIM卡是整个GSM系统中唯一确认用户身份的设备,它是向网络标明用户合法身份的重要工具。
1.2 Sim卡的作用
- SIM卡是完全由运营商掌握的用户端设备,通过对SIM卡的控制,实现对终端功能的控制。
- SIM卡是手机终端功能的增强和补充,提升手机终端业务能力,降低在业务推广上的终端设备投入成本;
- SIM卡可以通过预置或OTA方式部署应用,满足日益增长的行业应用需求;
2. Sim卡的主要功能
2.1存储数据
SIM卡存储的数据可分为四类:
- 固定数据----这类数据在ME(Mobile Equipment)被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI)、鉴权密钥(KI)等;
- 临时数据----指的是网络相关的的临时数据,如位置区域识别码(LAI)、移动用户暂时识别码(TMSI)、禁止接入的公共电话网代码等;
- 业务代码----如个人识别码(PIN)、解锁码(PUK)、计费费率等;
- 电话号码、短消息等用户记录。
2.2 PIN码保护
SIM卡本身是通过PIN码来保护的,PIN是一个4~8位的个人密码,只有当用户输入正确的PIN码时,SIM卡才能被启用,移动终端才能对SIM卡进行存取,也只有PIN认证通过后,用户才能上网通话。
2.3 用户身份鉴权
确认用户身份是否合法,鉴权过程是在是在网络和SIM卡之间进行的,而鉴权时间一般是在移动终端登记入网和呼叫时。鉴权开始时,网络产生一个128比特的随机数RAND,经无线电控制信道传送到移动台, SIM卡依据卡中的密钥Ki和算法A3,对接收到的RAND计算出应答信号SRES,并将结果发回网络端。而网络端在鉴权中心查明该用户的密钥Ki,用同样的RAND和算法A3算出SRES,并与收到的SRES进行比较,如一致,鉴权通过。
2.4 Sim卡中的保密算法及密钥
SIM卡中最敏感的数据是保密算法A3、A8、密钥Ki、PIN、PUK和Kc。A3、A8算法是在生产SIM卡时写入的,无法读出。PIN码可由用户在手机上自己设定,PUK码由运营者持有,Kc是在加密过程中由Ki导出的。
2.5 SIM卡的类型
- mini SIM:25mm×15mm,有的文档将这种卡称为标准卡。
- micro SIM:15mm×12mm。
- nano SIM:12mm×9mm。
- 虚拟SIM:直接在手机或者其他移动设备中集成SIM卡功能,卡成为了手机芯片模块的一部分。使用虚拟SIM的设备,必定是运营商定制设备,或者设备供应商和运营商签订了协议。
2.6 Sim卡物理接口
- Vcc:电源输入
- RESET:复位信号
- CLK:时钟输入信号
- GND:接地
- VPP:编程电压,现在已经基本不用
- I/O:数据输入输出
2.7 SIM卡内部结构
- CPU:处理器单元
- RAM:用于存放临时数据
- ROM:用于存放系统程序,用户不可修改
- EEPROM:用于号码、短信等数据,可擦写的程序等
2.8 SIM卡文件结构
详细卡文件请参考:3GPP 31102 4.7
- MF(Master File):主文件,理解为根目录。MF文件的ID为3F00
- DF(Dedicated File):专用文件,理解为文件夹。常见的DF有:
- DF-GSM:ID为7F20
- DF-TELECOM:ID为7F10
- ADF:Application DF,ID为7FFF
- EF(Elementary File):基本文件,存储数据用的文件。基本文件又分为3类
- 透明EF:透明结构的 EF 由一个字节序列组成。简单理解为只有一条记录的文件
- 线性固定EF:线性固定 EF 文件由一个记录长度固定的记录序列组成。第一个记录记录号是 1。 简单理解为记录多条记录的文件。
- 循环EF:循环文件用于以时间顺序存储的记录,当所有的记录空间都占用时,新的存储数据将覆盖最旧的信息。 如果线型固定EF的记录是一个数组的话,循环EF的记录就是一
个循环链表。
注意:线性固定EF和循环EF最多只能存放255条记录
根据上面的描述,可以看得出来,要精确的定位到一个EF文件,完整的文件路径应该是:
MFID + DFID + EFID。
举例:DF-TELECOM下面的EF-SMS(保存短消息的SIM卡文件,ID为6F3C),完整路径就是“3F007F106F3C”。
2.9 常用的文件操作
2.9.1 常用的有如下操作
• SELECT:选择文件
• STATUS:查询当前目录的信息
• READ BINARY:读取透明EF内容
• UPDATE BINARY:更新透明EF内容
• READ RECORD:读取线性固定EF或者循环EF的记录
• UPDATE RECORD:更新线性固定EF或者循环EF的记录
2.9.2 PIN/PUK系列的命令:
• VERIFY CHV:验证PIN码
• CHANGE CHV:修改PIN码
• DISABLE CHV:关闭PIN码验证
• ENABLE CHV:打开PIN码验证
• UNBLOCK CHV:解锁
2.9.3 STK相关的命令:详细描述见STK主题文章
• TERMINAL PROFILE:告知SIM卡手机对STK的支持能力。初始化SIM卡的过程中发给SIM卡。
• FETCH:手机从SIM卡获取命令
• TERMINAL RESPONSE:手机返回SIM卡执行主动式命令的结果
• ENVELOPE:手机发送数据或者事件给SIM卡。
3. sim卡初始化流程
如上图所示,SIM 卡激活后(用指定的高低电平顺序给SIM卡的几个管脚上电,在ISO/IEC7816-3定义), ME 选择专有文件 DF-GSM,并查询语种文件EF-LP(language preferred)。如果语种文件不可得,或者 EF 中的语言不被支持,那么 ME 选择一种缺省语言。然后 ME 进行 CHV1 验证过程。如果 CHV1 验证过程执行成功, ME 接着执行 SIM 卡 PHASE 请求过程。如果 ME 检测到一个 PHASE 1 SIM 卡,它将忽略接.与 FDN(Fixed Dialing Number,固定拨号) 有关的过程,并进入GSM启动操作。
注:现在的SIM卡基本上都是Phase 2的
对于 PHASE 2 SIM 卡,只有在以下二个条件之一满足时,才能启动 GSM 操作:
- 如果EFIMSI和EFLOCL为失效,GSM操作立即启动;
- 如果EFIMSI 和 EFLOCI 已失效,ME 激活这二个 EF。
如果 FDN 功能满足以下3种情况,则GSM流程启动,否则GSM操作不应该启动
- FDN 在 SIM 卡中被分配并激活,并且FDN 被置为“ ENABLED”;
- FDN 在 SIM 卡中被分配并激活,并且 FDN 被置为“ DISABLED”;
- FDN 未被分配或未被激活;
然后, ME 执行下述GSM启动操作,包括:
- ADMINISTRATIVE 信息请求
- SIM 卡服务表请求
- IMSI 请求
- 存取控制请求
- HPLMN 搜索周期请求
- PLMN选择请求
- 位置信息请求
- 密钥请求Draft prETS 300 608:1996.08 HCCL GSM 11.11 Version4.18.0
- BCCH 信息请求
- 禁止 PLMN 请求
SIM 卡初始化成功完成以后, MS 准备 GSM 会话。
4. SIM卡常用协议
SIM卡相关协议都在以下3个协议系列中:
- 11系列:GSM only (before Rel-4)
- 51系列:GSM only (Rel-4 and later)
- 31系列:3G and beyond / GSM (R99 and later)
日常工作中经常用到的有:
- SIM/USIM:11.11 / 51.011 / 31.102
- STK:11.14 / 51.015 / 31.111
- SIM/USIM测试协议:51.010 / 31.121
- STK测试协议:51.010-4 / 31.124