UICC 之 USIM 详解全系列——UICC基础知识介绍

本文深入解析UICC卡中的USIM模块,介绍了UICC的基础知识,包括SIM卡、UICC卡、USIM卡的分类及其在不同网络系统中的应用。同时,详细阐述了SIM卡的内部结构、运行原理以及外部接口。此外,文章还梳理了SIM卡的常见流程,如初始化、插拔卡处理、电压选择等,并探讨了热插拔中断防抖。最后,作者提及自己目前正负责6G算力网络技术标准的研究。
摘要由CSDN通过智能技术生成

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。

UICC 之 USIM 详解全系列——UICC(TS102221-v16)

一、UICC基础知识介绍

什么是SIM卡

通常我们所说的“SIM卡” ,是一种习惯性的称号,其实单纯意义上的SIM卡指的是仅包含SIM应用的智能卡,只是由于我们最先接触这种内含“SIM应用模块”的智能卡,后续就一直沿用“SIM卡”指代所有模式的手机智能卡了。

什么是UICC卡

UICC卡:指通用集成电路卡,是各种智能卡的统称,是多种应用模块(比如SIM、USIM、UIM、RUIM等)的载体。主要用于用户身份识别(鉴权),存储信息(如电话号)、注册网络等。没有UICC卡,用户就无法注册网络,运营商就无法提供相应的服务,所以我们使用手机前需要插入SIM卡。

UICC卡内部包含多种应用模块,比如SIM、USIM等。不同应用模块对应不同的场景:
1.SIM应用于GSM系统;
2.USIM应用于WCDMA系统和4G网络系统;
3.UIM和RUIM应用于CDMA系统。
4.复合USIM卡:由于其包含SIM和USIM两个模块,故可以同时应用于GSM和WCDMA系统。
注:目前4G/5G网络采用的智能卡通常是含USIM模块的智能卡。

专业名词记不清,相关注释请看这!

UICC: Universal Integrated Circuit Card 即通用集成电路卡;
USIM:Universal Subscriber Identity Module 即通用用户识别模块
UIM:User Identity Model 即用户身份模型
RUIM:Removable User Identity Module 即可移动用户标识模块
SIM:Subscriber Identity Module 即用户识别模块
上述模块主要功能就是用于用户识别

GSM: Global System for Mobile Communications 即全球移动通信系统
WCDMA:Wide band Code Division Multiple Access 即宽带码分多址
CDMA:Code Division Multiple Access 即码分多址

单纯SIM卡指的是用于GSM(全球移动通信系统)的UICC卡,内部仅包含SIM应用模块。主要用于在移动终端设备与网络通讯时提供身份识别信息及存储数据(比如电话号码),用户通过它接入网络,实现接打电话等功能。不论是单纯SIM卡还是其他UICC卡,主要作用都是进行身份识别,为了更符合习惯,接下来的课程我们同样使用“SIM卡”指代手机使用的“UICC卡”

USIM卡分类

类型长(mm)宽(mm)厚(mm)
Standard SIM(1FF)85.653.980.76
Mini SIM(2FF)25150.76
Micro SIM(3FF)15120.76
Nano SIM(4FF)12.38.80.67

USIM分类

SIM卡内部结构

“SIM卡”是一个装有微处理器的芯片卡,它的内部有5个模块:
1.微处理器CPU:控制SIM卡的运算和操作
2.程序存储器ROM:存放片内操作系统,用户不可操作。
3.工作存储器RAM:存放计算过程中的临时数据
4.数据存储器EEPROM:存放整个文件系统和应用程序读写的信息,比如号码、短信等数据并可擦写
5.串行通信单元:用于信号通信,信息传递的“桥梁”

SIM卡内部模块运行原理:

CPU把从串行通信单元获取的信息临时存放在RAM,再利用ROM中的程序对数据进行处理,
然后存储到EEPROM中,同时也可能会产生应答信号再通过串行通信单元发出,完成交互。
SIM运行原理

SIM卡外部接口

接下来,咱们接着讲SIM卡实现将移动终端设备接入网络的“桥梁”——SIM卡外部接口。
“SIM卡”的外部接口主要有6个:
C1:电源输入VCC
C2:复位输入RST
C3:时钟信号CLK
C5:GND
C6:VPP(“可编程电压”信号,当前手机端一般应用为NFC的SWP功能)
C7:数据信号I/O(DATA)
注:C4、C8:应用于USB UICC卡,作为USB的信号脚,用于传输数据,手机端暂无应用。
SIM卡外部接口

另外需要强调下UICC卡的种类多种多样,但是接口都是满足ISO/IEC7816标准

对于移动/联通4G手机卡,通常为复合USIM卡,对于电信4G手机卡,通常为复合USIM卡并同时兼容CDMA。采用这种复合USIM卡时,使用5G是无需换卡的,主要是因为复合USIM卡的鉴权(身份识别)机制已经足够安全。

常见流程梳理

SIM用户业务状态图

SIM用户业务状态图

SIM初始化程序
Created with Raphaël 2.2.0 激活 复位 ATR PPS APDU 鉴权 注网
  • ATR(Answer To Reset):复位应答信号,有SIM卡传输给终端,包括SIM卡自身的一些信息,比如支持的传输速率,传输模式等
  • PPS(protocol and parameters selection):确定一个新的传输速率
  • APDU(Application Protocol Data Unit):机卡通信的命令
插卡处理流程(识卡)
Created with Raphaël 2.2.0 插入卡托 触发中断响应处理 读取卡托检测引脚状态 防抖检测,持续检测卡托状态 防抖成功? 复位SIM卡 SIM卡返回ATR? APDU命令交互 识别SIM卡 注册网络 重试达到3次? 下电SIM卡 判定为无卡 下电SIM卡 防抖失败处理 yes no yes no yes no
电压选择

对于Class B(3V)和Class C(1.8V)进行识别

Created with Raphaël 2.2.0 开始 给SIM卡供电 卡是否返回ATR? ATR是否有效? 卡是否指定电压? 指定电压和当前电压相同? PSS和APDU交互 给SIM下电去激活 重试达到3次? 判定无卡 选择另一种电压上电(1.8V 或者 3V) 错误处理 yes no yes no yes no yes no yes no

SIM卡电压选择

轮询

SIM卡重确认动作,这是SIM协议中自带的一个功能,即在SIM卡和手机交互讯息完成,后面没有数据交换了,相当于SIM模块待机状态,这时SIM模块和手机有个不间断的重复确认动作

Created with Raphaël 2.2.0 需要进行APDU命令交互 是否已启动Poll定时器? 清除Poll定时器 APDU命令交互 命令交互是否完成? 启动Poll定时器,定时28s 定时时间到? ME给SIM发送Status命令 SIM返回数据正常? 异常处理 yes no yes no yes yes no
拔卡
Created with Raphaël 2.2.0 拔出卡托 触发中断响应处理 读取卡托检测引脚状态 防抖检测,持续检测卡托状态 防抖成功? 原来是否有卡? 执行Polling通信,发送Status给SIM卡 和SIM卡通信正常? 识别Rx break异常 识别掉卡异常 启动Extended recovery,每隔15秒上电一次,共60次,持续15分钟 原来是否有卡? 下点SIM卡,更新SIM卡为激活状态 识别掉卡异常 yes yes no no yes
救卡

救卡的目的是为了异常掉卡但实际用户没有拔卡时。能够再一次正常识卡,不影响用户使用

Created with Raphaël 2.2.0 SIM数据返回超时或Rx break 下电SIM卡 复位SIM卡 复位成功? 复位次数超过3次? 识别掉卡异常 下电SIM卡 更新SIM卡为未激活状态 启动Extended Recovery定时器 15秒定时时间到 复位SIM卡 复位成功? 下电SIM卡 复位次数超过60次? 结束 no yes no yes no yes no
热插拔中断防抖

热插拔中断防抖


返回系列目录

Shiro框架与Spring Boot的整合相对简单,可以通过一些配置和依赖来实现。以下是一个基本的整合示例: 1. 在Spring Boot的pom.xml文件中添加Shiro和Web依赖: ```xml <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring-boot-web-starter</artifactId> <version>1.8.0</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-ehcache</artifactId> <version>1.8.0</version> </dependency> ``` 2. 创建一个Shiro配置类,用于配置Shiro相关的Bean和过滤器: ```java @Configuration public class ShiroConfig { @Bean public Realm realm() { return new MyRealm(); // 自定义的Realm实现 } @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) { ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); factoryBean.setSecurityManager(securityManager); // 配置过滤规则等 // factoryBean.setFilterChainDefinitionMap(...); return factoryBean; } @Bean public DefaultWebSecurityManager securityManager(Realm realm) { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(realm); return securityManager; } } ``` 3. 创建一个自定义的Realm实现,用于处理身份认证和权限授权逻辑: ```java public class MyRealm extends AuthorizingRealm { @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // 处理授权逻辑 return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // 处理认证逻辑 return null; } } ``` 4. 在Spring Boot的application.properties或application.yml文件中配置Shiro相关属性: ```yaml shiro: loginUrl: /login successUrl: /home unauthorizedUrl: /unauthorized ``` 这样,你就完成了Shiro框架与Spring Boot的整合。你可以根据自己的需求继续配置Shiro的过滤规则、权限配置等。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从善若水

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值