好的,我们继续接下来的深度拆解。
深度解析 3GPP TS 31.102:3 Definitions, symbols, abbreviations and coding conventions (定义、符号、缩略语和编码约定)
本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“第3章 Definitions, symbols, abbreviations and coding conventions”的核心章节,旨在为读者提供一本解读USIM规范必备的“罗塞塔石碑”,系统性地掌握规范语言的基石。在进入USIM文件系统和协议流程的复杂世界之前,我们必须先学会它的“语言”。
在上一篇文章中,我们探讨了TS 31.102规范的第1章“范围”,明确了这部规范的宏伟蓝图和技术边界。紧随其后的第2章“References (参考文献)”,正如其名,它是一份详尽的文献列表,列出了TS 31.102在制定过程中所引用到的所有其他3GPP及外部标准。这份列表是标准研究和开发的“索引”,但本身不包含需要深度解读的技术原理。因此,遵照我们短章节合并说明的原则,我们在此简要说明后,将直接进入技术性更强的第3章。
我们的主角,通信专业学生“李想”,在通读了规范的范围之后,迫不及待地翻到了后续章节,却发现自己仿佛在阅读一本“天书”。满眼的缩写、符号和特定术语让他寸步难行。他意识到,要真正读懂这部“法典”,他首先需要一本权威的“字典”。3GPP TS 31.102的第3章,正是为了解决这个问题而存在的。
本章是整部规范的语言基础,它为所有后续章节中出现的关键概念、密码学符号、海量缩略语以及数据编码方式提供了官方的、唯一的、不容混淆的定义。掌握了这一章,就如同掌握了与3GPP标准对话的钥匙。现在,让我们跟随李想,一同来学习这门精确而严谨的“USIM语言学”。
1. 核心概念的基石:3.1 Definitions (定义)
本节只定义了几个看似简单,实则贯穿整个USIM访问控制体系的核心术语。它们划定了权限的边界,决定了谁能在何时何地对USIM中的数据进行何种操作。
1.1.1 ADM: 运营商的“上帝之手”
ADM: access condition to an EF which is under the control of the authority which creates this file.
Allocation of these levels and the respective requirements for their fulfilment are the responsibility of the appropriate administrative authority
A terminal does not need to evaluate access conditions indicated as ADM in the present document.
深度解析:
ADM,即Administrative Management(行政管理),是一种访问控制级别。当一个文件的访问条件被标记为ADM时,意味着对这个文件的操作权限完全掌握在“行政管理机构”手中。在USIM的语境下,这个机构通常就是发行这张卡的运营商。
更直白地说,标记为ADM的操作,是李想和他的手机都无法执行的。比如,要更新EF_IMSI(国际移动用户识别码),这个操作的权限就是ADM。这是理所当然的,用户的身份标识一旦写入,就不应该允许用户或手机随意更改。
规范中提到的“终端不需要评估ADM访问条件”,是因为这些操作本就不是为终端设计的。它们通常在USIM卡的“个人化”阶段,由运营商通过专用的设备和安全密钥来完成。
场景化举例:
李想拿到的这张5G卡,在出厂时是一张“白卡”。运营商通过一套安全的后台系统和专用的读写设备,向卡中写入了李想的IMSI、根密钥K、运营商偏好网络列表(EF_OPLMNwAcT)等核心数据。这些写入操作,其权限级别就是ADM。一旦写入完成,李想的手机在日常使用中,面对这些文件的更新(UPDATE)权限时,看到的将是一堵名为ADM的“墙”,手机知道自己无权操作,甚至都不会去尝试。
1.1.2 PIN/ADM: 用户与运营商共享的权限空间
PIN/ADM: A terminal is required to evaluate the access condition and verify it in order to access the EF if the access condition is set to PIN or PIN2.
深度解析:
PIN/ADM则定义了一个权限共存的场景。这里的核心是 终端需要评估(A terminal is required to evaluate)。
当一个操作(如读取某个文件)的权限被标记为PIN/ADM时,意味着它既可能受到PIN码的保护,也可能被运营商设置为ADM级别。手机必须先检查具体的权限设置。
-
如果是PIN或PIN2:手机必须提示李想输入对应的PIN码。只有在李想正确输入,USIM验证通过后,手机才能执行后续操作。这赋予了用户对自己数据的控制权。
-
如果是ADM:那么权限就回到了运营商手中,手机无法操作。
场景化举例:
李想的电话本EF_ADN的读取(READ)权限通常是PIN。当他打开联系人应用时,如果设置了PIN码保护,手机就需要他先解锁USIM。而对EF_ADN的更新(UPDATE)权限,运营商在个人化时可以设置为PIN2(允许用户通过PIN2码自行修改),也可以设置为ADM(完全锁定,不允许用户修改,这种情况比较少见)。手机在执行操作前,必须先查询这个具体的权限设置,然后决定是提示李想输入PIN2,还是直接放弃操作。
1.1.3 EHPLMN: 漫游世界的“近亲网络”
EHPLMN: represents the Equivalent HPLMNs for network selection purposes. The behaviour of EHPLMNs is defined in TS 23.122.
深度解析:
EHPLMN,全称Equivalent Home PLMN(等效归属PLMN)。PLMN由MCC(移动国家码)和MNC(移动网络码)组成,是运营商网络的唯一标识。HPLMN就是李想的归属运营商网络。
那么,为什么还需要一个“等效”的归属网络呢?这主要是为了应对现代电信市场的复杂合作模式,如:
-
运营商并购:A运营商收购了B运营商,B网络的用户现在在A网络里也应被视作“归属用户”。
-
网络共享:C和D两家运营商共享一套物理网络设备,对于C的用户来说,接入这套共享网络时,即使显示的是D的标识,也应享受归属网络待遇。
-
跨国运营商集团:某个大的电信集团在多个国家都有子公司,集团可能希望用户在这些子公司网络之间漫游时,体验如同在本地一样。
EHPLMN列表就记录了除了真正的HPLMN之外,还有哪些网络可以被“视同”归属网络。
场景化举例:
李想的运营商是A公司。后来A公司与B公司达成了深度漫游合作协议。运营商通过OTA(空中下载)技术,更新了李想USIM卡中的EF_EHPLMN文件,将B公司的网络标识加了进去。
现在,当李想到一个只有B公司网络覆盖的地区时,他的手机在搜索网络时,会读取EF_EHPLMN文件。发现B网络在EHPLMN列表中后,手机会认为这和找到了自己的归属网络A一样,会立即尝试驻留,并且不会在状态栏显示漫游“R”标志。李想在此网络下打电话、上网,可能享受与归属网络相同的资费,这就是EHPLMN带来的实际好处。
2. 安全的密码本:3.2 Symbols (符号)
本节定义了规范中用于描述密码学运算的符号。这些符号是理解USIM核心安全功能——AKA认证和密钥协商机制的“钥匙”。
| || | Concatenation |
| :--- | :--- | :------------------------------------ |
| | Exclusive OR |
| f1 | Message authentication function … |
| f1* | A message authentication code (MAC) function … for re-synchronisation |
| f2 | Message authentication function … to compute RES and XRES |
| f3 | Key generating function used to compute CK |
| f4 | Key generating function used to compute IK |
| f5 | Key generating function used to compute AK |
深度解析:
这些符号不仅仅是数学符号,它们代表了一整套被称为“Milenage”的算法族。这个算法族是3GPP AKA机制的核心。它们都以两个输入为基础:一个是USIM中存储的128位或256位根密钥 K,另一个是网络下发的128位随机数 RAND。
-
|| (Concatenation): 表示“拼接”。例如
SQN || RAND意味着将SQN和RAND两个数据块首尾相连,形成一个更长的数据块。 -
(Exclusive OR): 异或运算,密码学中常用的基础运算。
-
f1 (MAC Function): 用于计算消息认证码(MAC)。USIM用它来验证网络下发的认证令牌(AUTN)是否合法,从而确认网络的身份。这是网络认证的关键。
-
f2 (Response Function): 用于计算响应(RES)。USIM计算出RES后,由手机返回给网络。网络侧也会计算一个期望的响应(XRES),通过比对RES和XRES,来确认用户的身份。这是用户认证的关键。
-
f3 (Ciphering Key Function): 用于生成128位的加密密钥 CK。这个密钥将用于保护后续用户数据和信令的机密性,防止被窃听。
-
f4 (Integrity Key Function): 用于生成128位的完整性密钥 IK。这个密钥将用于保护后续信令的完整性,防止被篡改。
-
f5 (Anonymity Key Function): 用于生成64位的匿名密钥 AK。这个密钥的作用是加密序列号(SQN),防止通过观察SQN的规律来追踪用户。
-
f1* 和 f5*: 它们是f1和f5的变体,专门用于“重同步(re-synchronisation)”过程。当USIM和网络侧的序列号(SQN)出现不同步时,USIM会发起重同步流程,此时就会用到这两个特殊函数来生成证明,以便网络能够安全地校正SQN。
场景化举例:
李想的5G手机开机后尝试注册到网络。
-
网络向手机发送一个RAND和一个AUTN。AUTN中包含了加密后的序列号SQN和网络计算出的认证码MAC。
-
手机将RAND和AUTN传递给USIM。
-
USIM内部开始了一场高速的密码风暴:
-
首先用 f5 函数和根密钥K,基于RAND计算出匿名密钥AK (
AK = f5(K, RAND))。 -
用AK解密AUTN中的SQN。
-
检查解密后的SQN是否在可接受的范围内,防止重放攻击。
-
用 f1 函数,基于K、RAND、SQN和AUTN中的AMF字段,计算出一个期望的认证码XMAC (
XMAC = f1(K, SQN || RAND || AMF))。 -
将自己计算的XMAC与AUTN中网络发来的MAC进行比对。如果一致,则证明网络是合法的!
-
-
网络认证成功后,USIM继续计算:
-
用 f2 函数计算出响应RES (
RES = f2(K, RAND))。 -
用 f3 函数生成加密密钥CK (
CK = f3(K, RAND))。 -
用 f4 函数生成完整性密钥IK (
IK = f4(K, RAND))。
-
-
USIM将计算出的RES、CK、IK返回给手机。手机将RES发回给网络,并将CK、IK存储起来用于后续的通信加密。
-
网络侧用同样的K和RAND,也计算出一个期望的响应XRES。收到手机返回的RES后,进行比对。如果一致,则证明用户是合法的!
至此,一次完整的、基于TS 31.102符号定义的双向认证和密钥协商过程就完成了。李想的手机和网络之间建立了安全的信任关系。
3. 通信界的“行话”:3.3 Abbreviations (缩略语)
这是篇幅最长但也是最实用的一节。移动通信领域充斥着大量的缩略语,本节就是官方的“缩略语大全”。对于初学者李想来说,这是一份必须时时翻阅的宝典。我们无法一一列举,但可以将其分为几类,并挑选最重要的进行解读。
A. 核心身份与安全类
-
IMSI (International Mobile Subscriber Identity): 国际移动用户识别码,用户的永久身份标识。
-
SUPI (Subscription Permanent Identifier): 订阅永久标识符,5G时代对IMSI的泛化称呼,IMSI是SUPI的一种。
-
SUCI (Subscription Concealed Identifier): 订阅隐藏标识符,加密后的SUPI,用于在5G空口安全传输。
-
AuC (Authentication Centre): 鉴权中心,位于运营商核心网,存储用户根密钥K,是安全认证的“大脑”。
-
AMF (Authentication Management Field / Access and Mobility Management Function): 这个缩写在不同上下文有不同含义。在AKA流程中,它是认证管理字段;在5G核心网架构中,它是接入和移动性管理功能网元。
-
GUTI (Globally Unique Temporary Identifier): 全球唯一临时标识符,4G/5G网络分配给UE的临时身份,用于替代IMSI。
B. 文件系统与接口类
-
ADF (Application Dedicated File): 应用专用文件,特指USIM应用本身这个“大文件夹”。
-
DF (Dedicated File): 专用文件,文件夹。
-
EF (Elementary File): 基本文件。
-
ICCID (Integrated Circuit Card ID): UICC卡的唯一物理序列号,印在卡表面。
-
USAT (USIM Application Toolkit): USIM应用工具包,一套允许USIM主动向手机发起命令(Proactive Command)的机制,用于实现各类增值业务。
C. 网络与业务类
-
5GCN (5G Core Network): 5G核心网。
-
NG-RAN (Next Generation Radio Access Network): 下一代无线接入网,即5G基站网络。
-
PLMN (Public Land Mobile Network): 公共陆地移动网络,即我们说的运营商网络。
-
APN (Access Point Name): 接入点名称,用于标识要连接的外部数据网络(如Internet、企业内网)。
-
PSM (Power Saving Mode): 省电模式,一种让物联网设备等可以长时间深度休眠以节省电力的机制。
-
MICO (Mobile Initiated Connection Only): 移动发起的连接模式,5G中一种比PSM更进一步的省电模式。
通过不断查阅和学习这些缩略语,李想逐渐能够像业内人士一样,用简洁高效的“行话”来描述复杂的通信过程。
4. 数据的编码规则:3.4 Coding Conventions (编码约定)
本节为二进制数据的表示方式制定了统一规则,确保了跨平台、跨厂商的数据一致性。
All lengths are presented in bytes, unless otherwise stated. Each byte is represented by bits b8 to b1, where b8 is the most significant bit (MSB) and b1 is the least significant bit (LSB). In each representation, the leftmost bit is the MSB.
The coding of Data Objects in the present document is according to TS 31.101.
‘XX’: Single quotes indicate hexadecimal values.
深度解析:
这几条简单的规则,解决了数据表示的根本问题:
-
字节序 (Byte Order): 规范了比特在一个字节内的排列顺序。b8是最高位(MSB),b1是最低位(LSB),并且最左边的比特是MSB。这定义了一种“大端(Big-Endian)”的比特序。所有厂商在处理USIM数据时,都必须遵循这个约定,否则就会出现数据解析错误。
-
单位 (Unit): 默认长度单位是字节(byte)。
-
十六进制表示 (Hexadecimal): 用单引号
'XX'表示十六进制数值。例如,'FF'代表十进制的255。
场景化举例:
假设EF_UST(USIM服务表)的第一个字节是十六进制的'C9'。李想的手机读取到这个字节后,需要根据编码约定来解析它。
-
'C9'转换为二进制是1100 1001。 -
根据b8到b1的约定,这个字节的8个比特位分别是:
- b8=1, b7=1, b6=0, b5=0, b4=1, b3=0, b2=0, b1=1。
-
EF_UST的编码规则是每个比特代表一个服务,b1代表服务1,b2代表服务2,以此类推。 -
因此,手机解析出的结果是:服务1、服务4、服务7、服务8是“可用(available)”的,而服务2、3、5、6是“不可用(not available)”的。
如果手机厂商误用了“小端(Little-Endian)”的约定来解析,把1001 0011当作数据,那么就会得出完全错误的服务支持列表,导致后续业务流程的混乱。因此,统一的编码约定是互操作性的底层保障。
总结:构建标准对话的基础
第3章虽然没有任何复杂的流程图或算法描述,但其重要性不亚于任何一个技术章节。它通过精确的定义、统一的符号、全面的缩略语和严格的编码约定,为整个3GPP TS 31.102规范乃至更广泛的3GPP标准体系,构建了一套通用的、无歧义的“语言系统”。
对于李想而言,攻克了这一章,就仿佛掌握了阅读“天书”的秘诀。从此,EF_5GS3GPPNSC不再是乱码,AUTHENTICATE命令背后的f1到f5函数也不再神秘。他已经具备了深入探索USIM内部每一个文件、理解每一个协议流程所需的基础语言能力。
FAQ环节
Q1:ADM 和 PIN 访问控制权限有什么实际区别?
A1:实际区别在于控制权的主体不同。ADM(行政管理) 的控制权完全在运营商手中,用户和手机无法更改。这通常用于保护最核心、最敏感的数据,如IMSI和根密钥K。PIN(个人识别码) 的控制权则赋予了用户,用户可以通过输入PIN码来授权手机访问受其保护的数据,如电话本、短信等。PIN/ADM则表示该权限是可配置的,出厂时由运营商决定是开放给用户(PIN)还是自己保留(ADM)。
Q2:AKA认证流程中的f1 和 f5 函数是做什么的?为什么需要它们?**
A2:f1* 和 f5* 是专门用于重同步过程的。AKA机制依赖于USIM和网络侧同步的序列号(SQN)来防范重放攻击。但有时(如网络故障恢复)两者可能会失步。此时,USIM会拒绝认证并返回一个包含由f1和f5计算出的值的认证响应(AUTS)。f1和f5的设计特性保证了即使在重同步过程中,也不会泄露关于主密钥K的任何有用信息,网络侧可以安全地利用这个AUTS来重新校准自己的SQN,恢复同步。它们是AKA机制鲁棒性的重要保障。
Q3:IMSI、SUPI、SUCI 这三个缩略语经常一起出现,它们究竟有什么区别和联系?
A3:它们是用户身份在5G时代演进的体现。IMSI 是从2G时代沿用至今的永久用户身份标识。SUPI 是5G中对永久身份的通用叫法,IMSI是SUPI的一种(最常见的一种),但SUPI也可以是其他形式,如非3GPP网络的身份标识。SUCI 则是5G为了保护隐私而生的,它是对SUPI进行加密后的结果,是在空口中实际传输的身份信息。可以简单理解为:IMSI ⊂ SUPI,而 SUCI = Encrypt(SUPI)。
Q4:DF 和 EF 是什么关系?为什么需要这种层级结构?
A4:DF(Dedicated File)和EF(Elementary File)是USIM文件系统中的“文件夹”和“文件”的关系。EF是存储具体数据的最小单元,而DF用于组织和归类这些EF。这种层级结构(MF → DF → EF)带来了清晰的组织结构和良好的可扩展性。例如,所有与5G相关的新文件都可以被 neatly 放在DF_5GS这个“文件夹”下,而不会与原有的3G/4G文件混淆,使得规范的演进和手机的实现都更加清晰。
Q5:为什么开发者必须严格遵守3.4节的编码约定?
A5:编码约定是数据解析的“语法”。如果不严格遵守,就会导致“鸡同鸭讲”。例如,规范定义了比特b8是最高位(MSB),如果一个开发者错误地将其作为最低位(LSB)来处理,那么他解析出来的所有数值、状态位、标志位都将是错误的。对于USIM这样一个需要全球不同厂商设备进行精确交互的系统来说,任何对编码约定的偏离都将直接导致互操作性失败,轻则业务无法使用,重则可能导致安全漏洞。