好的,我们继续接续上一篇文章,对 3GPP TS 31.102 规范的第5章“应用协议”进行深度拆解。
深度解析 3GPP TS 31.102:5.3 & 5.4 订阅相关流程 & USAT能力 - USIM的“业务办理大厅”
本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“5.3 Subscription related procedures”和“5.4 USIM Application Toolkit related procedures”的核心章节,旨在为读者系统性地梳理手机(ME)是如何与USIM卡协作,来执行一系列与用户日常业务紧密相关的“业务办理”流程,如电话本管理、短信收发、拨号控制等,并揭示USIM是如何通过USAT(USIM应用工具包)这一“超能力”,从一个被动的服务提供者,变身为一个能够主动发起命令、与用户和网络进行智能交互的主动服务引擎。
在完成了初始化和安全认证这两场“开场大戏”之后,USIM卡和手机已经建立起了牢固的信任关系,准备好为我们的主角“李想”提供各种丰富的通信服务了。第5章的5.3和5.4节,正是这些日常服务的“标准操作规程 (SOP)”手册。
-
5.3 订阅相关流程 (Subscription related procedures): 这一节可以被看作是USIM的“业务办理大厅”。它详细规定了手机在执行最基础、最核心的通信业务时,应该如何与USIM中相应的“档案柜”(EF文件)进行交互。这包括了我们每天都在使用的电话本、短信、通话记录等功能。
-
5.4 USAT相关流程 (USIM Application Toolkit related procedures): 这一节则揭示了USIM的“隐藏超能力”。USAT赋予了USIM主动向手机下达命令的能力,使其不再仅仅是一个被动查询的数据库,而是一个能够发起“主动服务”、与用户和网络进行智能交互的微型应用平台。
今天,我们将首先巡览“业务办理大厅”中的几个典型流程,然后重点揭秘USAT是如何让一张小小的SIM卡变得“聪明”起来的。
1. “业务办理大厅”:5.3 订阅相关流程
这一节包含了数十个具体的流程定义,每一个都对应着一项用户可感知的功能。它们将我们在第4章学到的静态文件,与用户的实际操作动态地关联了起来。
5.3.1 电话本流程 (Phone book procedures)
这部分定义了手机的联系人应用,应该如何与DF_PHONEBOOK下的文件进行交互。
The ME shall support the capability of searching the phone book for entries having an alpha-identifier starting with a given string…
The ME shall follow the procedure described in this subclause for creating, amending and deleting phone book entries…
规范定义了一系列精细的操作流程:
-
搜索 (Searching): 当李想在联系人搜索框中输入“王”时,手机应该如何高效地遍历
EFADN文件,并找出所有以“王”开头的联系人。 -
创建/修改/删除: 定义了操作一个复杂联系人(包含多个号码、邮箱、分组)的完整步骤。例如,要创建一个包含家庭和工作两个号码的联系人:
-
手机首先在
EFADN(主号码簿)中创建一个记录,存入姓名和主号码。 -
然后,在
EFANR(附加号码)中创建一个记录,存入工作号码。 -
最关键的是,手机需要在
EFADN记录中,通过一个指针,指向EFANR中的相应记录,从而建立起“主-从”关联。
-
-
同步 (Synchronization): 定义了当
EFADN被修改后,如何更新EFSNE(同步网络入口)等文件,以支持与网络侧电话本的同步。
这些流程,确保了无论李想使用的是哪个品牌的手机,他对USIM卡电话本的操作体验都是一致和可靠的。
5.3.3 短信流程 (Short messages procedures)
这部分定义了短信的收、发、存、删等操作如何与EFSMS文件进行交互。
The ME shall not delete or modify a short message in the UICC without a positive acknowledgement from the user.
一个关键的用户体验保障是:手机不能在未经用户明确同意的情况下,擅自删除或修改存储在USIM中的短信。
-
存储新短信: 当收到一条新短信,手机决定将其存入USIM时,它需要:
-
遍历
EFSMS,通过检查每条记录的状态字节 (Status),找到第一个“free space”(空闲)的记录。 -
将短信的完整TPDU写入该记录。
-
将该记录的状态字节更新为“used space”和“message to be read”(未读)。
-
-
更新短信状态: 当用户阅读了一条短信,手机需要:
-
定位到该短信在
EFSMS中的记录。 -
只更新该记录的第一个字节(状态字节),将其从“未读”改为“已读”。
-
-
删除短信: 当用户删除一条短信,手机需要:
-
定位到该记录。
-
同样只更新其状态字节,将其标记为“free space”。
-
这些原子化的操作,确保了短信在USIM中的存储和状态管理是高效和安全的。
其他核心业务流程
5.3节还涵盖了大量其他业务的SOP,例如:
-
5.3.5 MSISDN流程: 规定了手机如何从
EFMSISDN读取并向用户显示本机号码。 -
5.3.7 FDN/BDN流程: 规定了在启用FDN/BDN时,手机的拨号盘应用应该如何与USIM进行交互,以实现号码的白名单/黑名单检查。
-
5.3.8 AoC流程: 规定了在通话过程中,手机如何响应网络的计费脉冲,并向USIM发送
INCREASE命令来更新EFACM(累计通话计量器)。 -
5.3.26 CSG流程: 规定了手机如何读取
EFHPSCSG和EFOCSGL,来发现和选择封闭用户组网络。
这些流程共同构成了USIM与手机之间最基础、最核心的业务交互协议。它们是所有上层应用(联系人、短信、拨号盘)能够正常工作的基础。
2. “隐藏超能力”:5.4 USAT相关流程
如果说5.3节的流程,都是由手机主动发起、USIM被动响应的“ME → USIM”模式,那么5.4节的USAT(USIM Application Toolkit)流程,则开启了一个全新的、革命性的交互模式:“USIM → ME”。
USAT是一套机制,它赋予了USIM卡主动向手机发送命令 (Proactive Commands) 的能力。这让USIM从一个简单的“数据存储器”,一跃成为了一个可以主动发起业务逻辑的“微型应用服务器”。
USIM Application Toolkit (USAT) provides mechanisms which allow a USIM to initiate actions and to provide the ME with instructions. The ME shall support these mechanisms.
USAT的核心机制
USAT的核心交互机制是FETCH和TERMINAL RESPONSE。
-
USIM的“暗示”: 在初始化或某些事件发生后,USIM可以在其返回给手机的响应数据中,包含一个特殊的“Proactive command pending”状态。这就像是USIM在对手机说:“我有一件事想让你做,准备好接收指令。”
-
手机的“询问” (FETCH): 手机检测到这个状态后,必须立即向USIM发送一个
FETCH命令,意为:“请说出你的指令。” -
USIM的“指令”: USIM通过
FETCH命令的响应,将一条主动命令(如DISPLAY TEXT,SEND SHORT MESSAGE,SET UP CALL)返回给手机。 -
手机的“执行”: 手机解析这条主动命令,并必须执行它。例如,如果是
DISPLAY TEXT "Welcome!",手机就必须在屏幕上显示“Welcome!”。 -
手机的“汇报” (TERMINAL RESPONSE): 手机执行完命令后,必须向USIM发送一个
TERMINAL RESPONSE命令,汇报执行结果(成功、失败、用户取消等)。 -
闭环完成: USIM收到汇报后,可以根据结果决定下一步的动作,形成一个完整的业务闭环。
5.4.4 “呼叫的幕后黑手”:呼叫控制 (Call Control by USIM)
“呼叫控制”是USAT能力中最强大、也最常用的一个典型应用。
This procedure allows the USIM to examine, possibly modify or replace, and allow or bar the call details (dialled digits, associated parameters) that the ME is about to set-up.
当“呼叫控制”功能被激活时,李想的每一次拨号,都将置于USIM的“监视”之下:
-
用户拨号: 李想拨打一个号码
12345。 -
手机“上报”: 手机不会立即将呼叫发往网络。相反,它会将号码
12345和所有呼叫参数,通过一个ENVELOPE (CALL CONTROL)命令,“上报”给USIM。 -
USIM的“裁决”: USIM卡上的USAT应用(一个小程序)接收到这个上报。它可以根据预设的逻辑,做出裁决:
-
允许 (Allow): USIM返回一个允许的响应。手机这才将原始的
12345呼叫发往网络。 -
禁止 (Bar): USIM返回一个禁止的响应。手机直接挂断呼叫,并可能显示USIM下发的提示信息(如“余额不足”)。
-
修改 (Modify): USIM返回一个修改后的呼叫指令,例如,将号码
12345修改为17951-12345(自动加拨IP前缀),或者将普通呼叫修改为一个视频呼叫。手机必须执行这个修改后的呼叫。
-
应用场景:
-
预付费控制: 每次通话前,USIM内的计费应用先检查余额,余额不足则直接禁止呼叫。
-
IP电话卡: 自动为所有长途呼叫加上IP前缀,以节省话费。
-
企业虚拟网 (VPN): 自动将短号(如
6666)转换成完整的长号。
USAT的其他强大能力
除了呼叫控制,USAT还定义了大量的主动命令,让USIM可以做到:
-
SEND SHORT MESSAGE: 在用户不知情的情况下,自动发送一条短信(常用于业务激活、位置上报)。 -
SET UP EVENT LIST: 要求手机监视某些事件(如位置改变、网络状态改变、手机空闲),并在事件发生时通知USIM。 -
LAUNCH BROWSER: 自动打开手机浏览器,并访问一个指定的URL。 -
PROVIDE LOCAL INFORMATION: 查询手机的当前状态,如IMEI、位置信息(LAC/CELL ID)、网络测量结果等。
这些能力共同将USIM打造成了一个功能极其强大的、可远程编程的业务平台。我们手机上常见的“SIM卡应用”、“SIM卡工具包”(STK)菜单,其背后就是由USAT驱动的。
总结:从“数据库”到“微型操作系统”的飞跃
第5章的应用协议,特别是5.4节的USAT流程,彻底颠覆了我们对SIM卡的传统认知。它标志着USIM已经远远超越了一个简单的“认证与存储”模块。
-
5.3节 (订阅流程): 为USIM作为“标准化数据库”的角色,制定了严谨的读写操作规程 (SOP)。它确保了手机的上层应用,能够以一种统一、可靠的方式,与USIM中的数据进行交互。
-
5.4节 (USAT流程): 则为USIM作为“主动应用平台”的角色,赋予了强大的能力。通过Proactive Command机制,USIM能够“反客为主”,指挥手机执行复杂的业务逻辑,成为了运营商在终端侧部署增值业务的、最底层、最可靠的“滩头阵地”。
USAT的出现,是USIM发展史上的一次“图灵完备”式的飞跃。它让一张静态的、被动的卡片,变成了一个拥有“感知”(通过事件监控)、“决策”(通过内部应用逻辑)和“行动”(通过主动命令)能力的“微型操作系统”。对于李想而言,他手机里那个能够查询话费、订阅天气、办理业务的“SIM卡菜单”,正是USIM这张小卡片“思考”和“行动”的最直观体现。
FAQ环节
Q1:为什么需要把电话本、短信等业务流程都标准化?手机厂商自己实现不行吗?
A1:标准化是为了互操作性和数据可移植性。如果每个手机厂商都用自己私有的格式和流程来读写USIM卡电话本,那么当用户从A品牌手机换到B品牌手机时,新手机可能就无法识别旧手机写入的数据,导致用户的SIM卡联系人全部丢失。通过在3GPP TS 31.102中对这些流程进行标准化,确保了无论用户如何更换符合规范的手机,其存储在USIM中的核心数据(联系人、短信等)都能被正确地识别和使用。
Q2:USAT和我们手机上安装的APP有什么区别?
A2:它们运行在完全不同的层面,能力和定位也不同。
-
手机APP: 运行在手机的高层操作系统(Android/iOS)上,拥有丰富的UI能力和强大的计算能力,但受到操作系统的沙盒限制,通常无法访问底层的通信信令。
-
USAT应用: 运行在USIM卡的安全环境中,是一个轻量级的“小程序”。它几乎没有UI能力(只能通过
DISPLAY TEXT等简单命令与用户交互),但它能够直接访问USIM中的所有文件,并且可以通过Call Control、SEND SMS等命令,深度介入和控制手机最底层的通信行为。
Q3:什么是“USAT应用”?它是什么语言写的?
A3:USAT应用通常是使用Java Card技术或一些专有的智能卡语言编写的。Java Card允许开发者用Java语言的一个子集,编写能够在资源极其受限的智能卡上运行的小程序(Applet)。运营商或卡商可以将这些Applet预装或通过OTA下载到USIM卡上,来实现特定的增值业务,如话费查询、手机银行(SIM an ‘e’ Wallet)、一键导航等。
Q4:Call Control by USIM功能会影响我的通话隐私吗?
A4:会。当该功能启用时,你拨打的每一个号码,在呼出前都会先被发送给USIM卡。这意味着USIM卡上的应用,理论上可以记录你的所有外呼号码。正因为如此,Call Control的激活和相关USAT应用的安装,都受到运营商的严格控制,并且通常用于企业VPN、预付费控制等有明确授权和需求的场景。对于普通公众用户,这个功能很少被默认激活。
Q5:手机厂商可以拒绝执行USIM发来的USAT命令吗?
A5:不可以。规范中明确规定:“The ME shall support these mechanisms.”和“…the ME receives the command, it shall then carry out the instruction.”。这里的“shall”是3GPP规范中的最高强制等级。这意味着,只要是一部通过了认证的、符合规范的3GPP手机,它就必须无条件地、忠实地执行来自USIM的USAT指令。这种强制性,正是USAT能够成为运营商可靠业务部署平台的基础。