好的,我们继续接续上一篇文章,对 3GPP TS 31.102 规范进行深度拆解。
深度解析 3GPP TS 31.102:4.2.50 EFCNL (合作网络列表)
本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“4.2.50 EFCNL (Co-operative Network List)”的核心章节,旨在为读者深入剖析在手机“网络锁”这一复杂机制下,
EFCNL文件是如何作为一张特殊的“通行证”列表,实现更精细、更灵活的多运营商锁定策略的。
在前一篇文章中,我们深入探讨了EFDCK(去个人化控制密钥),了解了手机如何通过OTA接收解锁码来解除网络锁(SIM Lock)。网络锁的核心是将手机“个性化 (Personalisation)”到特定的网络。最简单的网络锁,是让手机只能使用某一个运营商(如AT&T)的SIM卡。
然而,现代电信市场的合作模式远比这复杂。运营商之间可能存在各种联盟、合作或从属关系。例如:
-
运营商集团: Vodafone集团在全球多个国家都有子公司(Vodafone UK, Vodafone DE, Vodafone ES…)。集团可能希望,一部Vodafone DE的合约机,不仅能用德国Vodafone的卡,也能用英国、西班牙Vodafone的卡。
-
MVNO合作: 一家基础运营商(MNO)旗下,可能有多家租用其网络的虚拟运营商(MVNO)。MNO可能希望,它的合约机能够使用所有这些MVNO的SIM卡。
-
漫游联盟: 几家不同国家的运营商组成一个漫游联盟,希望它们的合约机能够互相兼容彼此的SIM卡,以提升用户体验。
为了满足这种**“一对多”的锁定策略**,即一部手机可以被锁定到一组相关的网络,而不仅仅是一个网络,3GPP规范设计了EFCNL文件。
EFCNL,全称 Co-operative Network List,即“合作网络列表”。它的使命非常清晰:定义一个“合作网络”的白名单。当手机被配置为使用“多重网络个性化”模式时,它会检查插入的SIM卡是否属于EFCNL列表中定义的任何一个网络。如果是,则允许使用;如果不是,则拒绝。
1. “联盟通行证”:EFCNL的核心价值与工作机制
EFCNL的核心价值在于,它将手机的网络锁从“单点锁定”升级为了“多点锁定”,为运营商实现复杂的、基于合作关系的锁定策略提供了标准化的技术手段。
If service n° 37 is “available”, this file shall be present.
This EF contains the Co-operative Network List for the multiple network personalization services defined in TS 22.022.
这段原文揭示了EFCNL的关键特性:
-
服务关联: 它的存在与
EF_UST中的服务n°37相关联。 -
功能核心: 包含一个合作网络列表。
-
多重个性化: 这个列表是为多重网络个性化服务 (multiple network personalization services) 而设计的,其具体机制由 TS 22.022 (手机个性化规范) 定义。
EFCNL在网络锁机制中的角色
EFCNL是TS 22.022定义的多级个性化机制中的一个重要组成部分。手机的“锁”可以被设置为不同的检查模式:
-
模式1 (简单网络锁): 手机只检查SIM卡的PLMN(MCC+MNC)是否与手机中锁定的单一PLMN匹配。
-
模式2 (合作网络锁): 手机除了执行模式1的检查,还会进一步检查SIM卡的网络标识是否出现在USIM卡的
EFCNL列表中。只要满足其中之一,即可通过。
工作流程:
-
配置: 我们的主角“李想”,现在是一家全球运营商集团的终端策略工程师。集团要求,所有在欧洲销售的合约机,必须能够兼容集团在德国(DE)、法国(FR)、西班牙(ES)三家子公司的SIM卡。
-
在定制USIM卡时,李想需要在
EFCNL文件中,写入德国、法国、西班牙三家子公司的网络标识。 -
同时,在手机出厂时,需要将其网络锁模式设置为检查
EFCNL的模式。
-
-
验证:
-
一位德国用户购买了这部合约机,插入了德国子公司的SIM卡。手机启动时,读取SIM卡的IMSI,解析出其PLMN为德国子公司的ID。手机发现这个ID存在于
EFCNL列表中,验证通过,手机正常工作。 -
这位用户去法国出差,购买了一张法国子公司的临时SIM卡。插入手机后,手机同样发现这张卡的PLMN ID也在
EFCNL列表中,验证通过。 -
但如果他插入一张非该集团的、其他运营商的SIM卡,手机会发现其PLMN ID不在
EFCNL列表中,于是提示“SIM卡无效”,拒绝服务。
-
通过EFCNL,李想成功地为集团的合约机,实现了一个“集团内通用”的灵活锁定策略。
2. 精细的身份画像:EFCNL文件结构与编码剖析
EFCNL的每一条记录,不仅仅是一个简单的PLMN ID,它定义了一个更精细的“网络身份画像”,可以精确到网络的一个子集。
2.1 文件结构
表 4.2.50-1: EFCNL 文件结构
| 属性 | 值 |
| :--- | :--- |
| Identifier | ‘6F32’ |
| Structure | Transparent |
| File size | 6n bytes, (n ≥ 1) |
| Access Conditions| READ: PIN, UPDATE: ADM |
字节内容
| 字节 | 描述 | M/O | 长度 |
| :--- | :--- | :--- | :--- |
| 1 to 6 | Element 1 of co-operative net list (合作网络列表元素1) | M | 6 bytes |
| … | … | O | … |
| 6n-5 to 6n | Element n of co-operative net list (元素n) | O | 6 bytes |
逐项解读:
-
Structure: 透明文件。所有“合作网络”的定义被连续地存储在一起。
-
File size: 6n字节,因为每个“合作网络”的定义条目固定占用6个字节。
-
Access Conditions: 读取需要PIN权限,而更新则由ADM控制。这意味着合作网络的“朋友圈”是由运营商定义的,用户不可更改。
2.2 6字节的“身份画像”
每个6字节的列表元素,被精细地划分为三个部分,分别对应TS 22.022中定义的三个锁定层级。
Bytes 1 to 3: PLMN (MCC + MNC): according to TS 24.008.
Byte 4: PLMN network subset digit
Byte 5: service provider digit
Byte 6: corporate digit
这6个字节的编码艺术:
-
字节1-3 (PLMN): 存储合作网络的MCC+MNC,采用我们熟悉的打包BCD码。这是最基础的层级,对应“网络锁”。
-
字节4 (网络子集):
-
这个字节用来定义网络的一个子集。它通过IMSI中的特定数字位来进行匹配。
-
例如,可以定义“只允许IMSI的第6、7位是‘25’”的SIM卡使用。这对应了“网络子集锁”。
-
如果这个字节为
'FF',表示不对网络子集做任何限制。
-
-
字节5 (服务提供商):
-
这个字节用来匹配特定的服务提供商 (SP)。SP的身份由
EFSPDI等文件定义。 -
这对应了“服务提供商锁”。
-
如果这个字节为
'FF',表示不对SP做任何限制。
-
-
字节6 (企业):
-
这个字节用来匹配特定的企业客户 (Corporate)。企业身份可能由
EFGID1/2等文件定义。 -
这对应了“企业锁”。
-
如果这个字节为
'FF',表示不对企业做任何限制。
-
编码示例:
-
场景A:只锁定到一个完整的PLMN
李想只想在列表中加入法国子公司(PLMN=20801)。那么对应的6字节条目将是:
02 F8 10 FF FF FF(前3字节是PLMN,后3字节全为
FF,表示无任何子集、SP或企业限制) -
场景B:锁定到一个PLMN的网络子集
李想希望只允许德国子公司(PLMN=27602)中,IMSI的第6、7位是
34的特定批次SIM卡。-
字节1-3:
72 F6 20(27602的BCD码) -
字节4:
43(代表数字34的BCD码) -
字节5-6:
FF FF
最终的6字节条目是:
72 F6 20 43 FF FF -
通过对这6个字节的不同组合,运营商可以构建出极其精细和复杂的“联盟”规则。
3. EFCNL与手机锁的交互
EFCNL这张列表存储在USIM卡中,但真正的“锁”和匹配逻辑是在手机(ME)的安全模块中。
当一部被配置为“多重网络个性化”的手机启动时:
-
手机首先读取插入的USIM卡的IMSI,解析出其PLMN、网络子集等身份信息。
-
然后,手机读取这张USIM卡中的
EFCNL列表。 -
手机将从IMSI中解析出的身份信息,与
EFCNL列表中的每一条6字节记录进行逐一比对。 -
只要有一条记录能够完全匹配(PLMN、子集、SP、企业都匹配),手机就认为这张SIM卡是“联盟”内的合法卡,验证通过。
-
如果遍历完整个
EFCNL列表,都找不到任何一条可以匹配的记录,手机则判定该SIM卡非法,拒绝服务。
EFCNL因此成为了手机判断SIM卡是否属于“自己人”的权威依据。
总结:从“单兵作战”到“联盟体系”
EFCNL文件是USIM中一个服务于高级商业模式的精细化配置文件。它将手机网络锁的概念,从简单的“一对一”绑定,提升到了灵活的“多对多”的联盟体系。
-
支持复杂的商业合作: 为运营商集团、MVNO生态、漫游联盟等复杂的商业合作模式,提供了标准化的终端锁定技术方案。
-
提供了多维度的锁定能力: 通过6字节的精细“身份画像”,将锁定策略从简单的PLMN级别,扩展到了网络子集、服务提供商、企业等多个维度,实现了前所未有的精细化。
-
数据与逻辑分离:
EFCNL只负责存储“联盟”的数据定义,而匹配的逻辑则在手机端实现。这种分离使得锁定策略的更新(只需更新USIM文件)与手机软件的升级解耦。
对于李想这位终端策略工程师而言,EFCNL是他手中一把强大的“尚方宝剑”。通过在这张小小的列表上运筹帷幄,他能够为公司的全球终端策略,制定出既能保护商业利益,又能适应复杂合作关系的灵活锁定方案。EFCNL让每一部合约机,都深刻地理解了谁是“朋友”,谁是“路人”。
FAQ环节
Q1:EFCNL和EFPLMNwAcT(用户偏好列表)有什么区别?
A1:它们的功能完全不同。EFPLMNwAcT是用于网络选择/漫游的,它告诉手机在搜到多个网络时,应该优先连接哪个。它是一份“导航地图”。而EFCNL是用于手机个性化/网络锁的,它告诉手机,一张SIM卡是否被允许使用。它是一份“准入名单”或“通行证”。前者决定“去哪里”,后者决定“让不让进”。
Q2:EFCNL是存储在哪张SIM卡上?是被锁手机里的那张,还是我新插入的这张?
A2:这是EFCNL机制的一个关键点:EFCNL列表总是存储在当前被插入的、正在接受验证的SIM卡上。手机的逻辑是:“你好,新来的SIM卡。请出示你自己的EFCNL,让我看看你宣称的‘朋友圈’里,是否包含你自己。” 这种自证其属的方式,使得每张SIM卡都自带其所属“联盟”的证明。
Q3:如果EFCNL文件为空(元素数量为0),会发生什么?
A3:如果手机被设置为检查EFCNL的锁定模式,而插入的SIM卡中EFCNL为空,那么手机在比对时会发现,这张卡的身份无法匹配EFCNL中的任何一条记录(因为一条都没有),因此验证会失败,手机将拒绝服务。
Q4:为什么EFCNL的更新权限是ADM?我不能自己修改我的“合作网络”吗?
A4:绝对不能。EFCNL定义的是手机锁定策略的一部分,这是运营商或设备销售方的核心商业利益。如果允许用户自行修改,就等于允许用户绕开网络锁,将一部合约机随意变成全网通手机,这将彻底破坏合约机商业模式。因此,EFCNL必须由运营商通过最高级别的ADM权限进行严格管控。
Q5:这个功能在eSIM时代还适用吗?
A5:适用,而且可能更重要。在eSIM时代,用户可以更方便地切换运营商的Profile。手机制造商或首发合作运营商,为了保证其商业利益,更有可能对设备进行锁定,限制用户在合约期内下载和激活其他运营商的eSIM Profile。EFCNL所代表的这种“多重网络个性化”机制,可以被eSIM的Profile管理平台(SM-DP+)所利用。例如,平台可以规定,只有EFCNL列表中定义的那些运营商的eSIM Profile,才被允许下载到这台设备上。其技术实现细节会有所不同,但“合作网络白名单”的核心思想得以延续。