好的,我们继续接续上一篇文章,对 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的关键特性:

  1. 服务关联: 它的存在与EF_UST中的服务n°37相关联。

  2. 功能核心: 包含一个合作网络列表

  3. 多重个性化: 这个列表是为多重网络个性化服务 (multiple network personalization services) 而设计的,其具体机制由 TS 22.022 (手机个性化规范) 定义。

EFCNL在网络锁机制中的角色

EFCNL是TS 22.022定义的多级个性化机制中的一个重要组成部分。手机的“锁”可以被设置为不同的检查模式:

  • 模式1 (简单网络锁): 手机只检查SIM卡的PLMN(MCC+MNC)是否与手机中锁定的单一PLMN匹配。

  • 模式2 (合作网络锁): 手机除了执行模式1的检查,还会进一步检查SIM卡的网络标识是否出现在USIM卡的EFCNL列表中。只要满足其中之一,即可通过。

工作流程:

  1. 配置: 我们的主角“李想”,现在是一家全球运营商集团的终端策略工程师。集团要求,所有在欧洲销售的合约机,必须能够兼容集团在德国(DE)、法国(FR)、西班牙(ES)三家子公司的SIM卡。

    • 在定制USIM卡时,李想需要在EFCNL文件中,写入德国、法国、西班牙三家子公司的网络标识。

    • 同时,在手机出厂时,需要将其网络锁模式设置为检查EFCNL的模式。

  2. 验证:

    • 一位德国用户购买了这部合约机,插入了德国子公司的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',表示不对企业做任何限制。

编码示例:

  1. 场景A:只锁定到一个完整的PLMN

    李想只想在列表中加入法国子公司(PLMN=20801)。那么对应的6字节条目将是:

    02 F8 10 FF FF FF

    (前3字节是PLMN,后3字节全为FF,表示无任何子集、SP或企业限制)

  2. 场景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)的安全模块中。

当一部被配置为“多重网络个性化”的手机启动时:

  1. 手机首先读取插入的USIM卡的IMSI,解析出其PLMN、网络子集等身份信息。

  2. 然后,手机读取这张USIM卡中的EFCNL列表。

  3. 手机将从IMSI中解析出的身份信息,与EFCNL列表中的每一条6字节记录进行逐一比对

  4. 只要有一条记录能够完全匹配(PLMN、子集、SP、企业都匹配),手机就认为这张SIM卡是“联盟”内的合法卡,验证通过。

  5. 如果遍历完整个EFCNL列表,都找不到任何一条可以匹配的记录,手机则判定该SIM卡非法,拒绝服务。

EFCNL因此成为了手机判断SIM卡是否属于“自己人”的权威依据。

总结:从“单兵作战”到“联盟体系”

EFCNL文件是USIM中一个服务于高级商业模式的精细化配置文件。它将手机网络锁的概念,从简单的“一对一”绑定,提升到了灵活的“多对多”的联盟体系。

  • 支持复杂的商业合作: 为运营商集团、MVNO生态、漫游联盟等复杂的商业合作模式,提供了标准化的终端锁定技术方案。

  • 提供了多维度的锁定能力: 通过6字节的精细“身份画像”,将锁定策略从简单的PLMN级别,扩展到了网络子集、服务提供商、企业等多个维度,实现了前所未有的精细化。

  • 数据与逻辑分离: EFCNL只负责存储“联盟”的数据定义,而匹配的逻辑则在手机端实现。这种分离使得锁定策略的更新(只需更新USIM文件)与手机软件的升级解耦。

对于李想这位终端策略工程师而言,EFCNL是他手中一把强大的“尚方宝剑”。通过在这张小小的列表上运筹帷幄,他能够为公司的全球终端策略,制定出既能保护商业利益,又能适应复杂合作关系的灵活锁定方案。EFCNL让每一部合约机,都深刻地理解了谁是“朋友”,谁是“路人”。


FAQ环节

Q1:EFCNLEFPLMNwAcT(用户偏好列表)有什么区别?

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,才被允许下载到这台设备上。其技术实现细节会有所不同,但“合作网络白名单”的核心思想得以延续。