站点图标 Linux-技术共享

eSim如何写入到实体Sim卡

简称

专有名词

以下内容可在 GSMA SGP.21 标准的 “Definitions and Terms” 章节找到。

关系图

以下图片来自 GSMA SGP.21 标准

1. 背景

eSIM (embedded-SIM, eUICC) 是一种嵌入式可编程的 SIM 卡,集成在设备主板或模块上,可以通过 LPA (Local Profile Assistants) 进行管理。eSIM 与 SoftSIM 不是同一个东西,但都是虚拟 SIM 卡的实现,两者都可以通过 OTA (Over-The-Air) 进行更新。

几天前 Apple 发布了国行 iPad(第 10 代)无线局域网 + 蜂窝网络机型(A3162),支持 eSIM,但是反向锁区,只能在境内激活中国大陆运营商(中国联通)的 eSIM Profile,在境外需要开启定位才能激活境外运营商的 eSIM Profile。借此机会也了解到一个新东西:eSIM 转物理 USIM。

早期这项技术被用于以下场景:

  1. 提取智能手表、廉价 4G Wi-Fi dongle 的内置物联网卡的 eUICC 芯片,将其改变为 USIM 的形态,安装到 CPE 或者手机里。一般用于“双不限”流量卡。
    • 反向操作 0 成本将 eSIM 卡魔改成物理 SIM 卡
    • 魔改内置 eSIM 为普通卡槽 打造不到 20 元的 4G 随身 Wi-Fi 狗 兼廉价热点机
  2. 拆除 eSIM 手表的 eUICC 芯片,在原位置焊接上转接板,然后将自己的 eUICC 白卡放入转接板。利用“一号双终端”业务,将自己的手机号码写入到 eUICC 白卡,再将其安装至手机,从而实现两台手机同时在网,共享号码、通话、短信和数据业务。参考链接 1、2。

除此之外,我们可以使用 eUICC 测试白卡写入境外运营商的 eSIM Profile,畅游 Internet 或接收短信验证码(接码)。

2. 购买 eSIM 实体卡

由于缺失 China CI 和 GSMA Test CI,所有品牌(5ber.eSIM、eSIM.me 和速易卡科技等)发行的 eUICC 卡片均不能写入中国大陆运营商的 eSIM Profile。具体原因参见下文 Certificate Issuer (CI) 证书颁发者。此外,部分中国运营商采取了 IMEI 和 EID 绑定制度。

速易卡科技

淘宝店“速易卡科技”目前提供两种规格的 eUICC 成品卡片

无法直邮海外,港澳台及海外用户需要自行联系转运仓。

除此外,店内还提供 USB-C 接口的 eUICC 读卡器、Nano SIM (4FF) to Mini SIM (2FF) 转接板、eSIM (MFF2) to Nano SIM (4FF) 转接板、植锡、ST33 芯片等。

注意:由于 iOS 限制,速易卡科技销售的 eUICC 白卡不能在国行 iPhone 中使用。iPhone 用户可以购买 5ber.eSIM 标准版搭配速易卡科技的读卡器写卡,或者购买 eSTK.me 一步到位。

eSTK.me

更多关于 eSTK.me 的信息请阅读 eSTK.me: 下一代可插拔消费者 eSIM 卡。

无法直邮海外,港澳台及海外用户需要自行联系转运仓。

eSTKme-ECO 10% OFF 优惠码:4JEMHFAS

eSTK.me 调用 USIM 卡的 Applet 实现在 iOS 内自助切换 Profile。写卡仍然需要借助硬件读卡器或者兼容 eSIM 的 Android 手机。支持国行 iPhone

eSTK.me(固件 v2.x 及以后的版本)基于 ETSI 的 Bearer Independent Protocol (BIP) 协议,使得 eUICC 通过基带与远程服务器建立 TCP 连接,手动实现了 eSIM Profile 的远程配置(类似于 M2M 的形式)。本质上是让 STK 直接联网读写 APDU,而不是通过手机的 LPA 进行管理。因此,eSTK.me 是目前市面上唯一可以在 iOS 上实现自主写卡和 eSIM Profile 管理的解决方案。

eSTK.me 还支持以下特色功能

Lenovo

仅在联想海外官网提供购买,发 UPS Worldwide Express Saver。

群友 @Lockestek 订购了一盒 FRU 为 4XC1L91362 的 Thales eSIM 卡:

EUICCinfo2 信息如下

{  "profile_version": "2.1.0",  "sgp22_version_supported": "2.2.0",  "euicc_firmware_version": "66.81.1",  "free_nvram": 528532,  "uicc_capability": [    "USIM Support",    "ISIM Support",    "CSIM Support",    "DeviceInfo Extensibility Support",    "AkaMilenage",    "AkaCave",    "AkaTuak128",    "RFU2",    "GBA Authentication USIM",    "EAP Client",    "MultOS",    "Multiple USIM Support",    "Multiple ISIM Support"  ],  "ts102241_version": "9.2.0",  "gp_version": "2.3.0",  "rsp_capability": [    "additionalProfile",    "crlSupport",    "testProfileSupport"  ],  "issuer_for_verification": [    "81370f5125d0b1d408d4c3b232e6d25e795bebfb"  ],  "issuer_for_signing": [    "81370f5125d0b1d408d4c3b232e6d25e795bebfb"  ],  "category": "Medium eUICC",  "sas_accreditation_number": "TS-CA-UP-0823"}

5ber.eSIM 和 eSIM.me

5ber.eSIM(¥180)和 eSIM.me(€70)都提供 eSIM 实体卡片,用户可以使用它们的 Android App 将 eSIM Profile 下载至实体卡中(无需读卡器),然后插入手机、CPE 等设备使用。但这两家均软件限制了 Profile 的写入次数,并以此收费。

扩展阅读

以上内容均为网友分享,仅供参考。

SakuraSIM - 已停售

由名为 Sakura 的 Telegram 用户发行的、从 ECP 直接采购的 eUICC 卡片。由于各种原因,SakuraSIM 已经停售。

9eSIM(9ber)

9eSIM(9ber)是简单的 eUICC 白卡,未设置 ARA-M,只能使用读卡器写卡。据悉是 G+D 的产品。

据悉,9ber 将于 2024 年 11 月推出 STK 切卡功能。

PlanB

Plan B Technology 的淘宝商家推出了 planB 卡,使用闭源 LPA 管理,支持不限次数写入。

TLDR

针对使用场景,可以分为以下几种选择:

3. 获取支持 eSIM 的 WWAN 模块或 PC/SC 读卡器

支持 eSIM 的 WWAN 模块

移动宽带(Mobile Broadband)是自 Windows XP 时代就存在的功能。Windows 通过独立的 WWAN 模块(Wireless Wide Area Network)来实现移动宽带功能。Windows 10/11 内置了 MB eSIM Operations,用户可以通过系统内置的 LPA 管理 eSIM 配置。

模块参数和购买事项请阅读:5G WWAN 模块。

PC/SC 读卡器

4. 获取 eSIM Profile

购买 eSIM 套餐

注意:除了下列运营商,其他区域运营商(如香港)通常需要 KYC(客户身份审查)认证,需要提供护照等实名身份信息。

常见的用于接收验证码的境外 Pay As You Go (PAYG) 现收现付 eSIM:

注意:苹果用户激活 iMessage 和 FaceTime 时需要发送短信,会产生费用。

部分运营商例如英国 Giffgaff 不直接提供 QR Code 和 eSIM Activation Code,只能使用运营商自有的 App 写入到手机中,不能加载至外部 eUICC。但是根据这个帖子,Giffgaff 用户可以在手机上进行 MITM 抓包,查看 URL 为 https://publicapi.giffgaff.com/gateway/graphql 的请求 body,其中的 lpaString 字段即 Giffgaff 的 eSIM Activation Code。Telegram 用户 @kkkwatt 提供了一份 Frida 的脚本:点 Giffgaff App 的“安装 eSIM 按钮”时 Frida 会在终端输出激活码。

Giffgaff 现在可以使用中国大陆 IP 直接订购 eSIM,无需实体卡板转换、无需通过中介办理。

注意:

eSIM Profile Activation Code 格式定义

详细的式定义可以参考 GSMA SGP.22。MOC 字段意思为 Mandatory, Optional or Conditional。

常见格式如下:

LPA:1${SM-DP+_ADDRESS}${MATCHING_ID}

SM-DP+_ADDRESS 即 Subscription Manager Data Preparation Address,是运营商侧的 eSIM 配置服务器地址。MATCHING_ID 则用于匹配对应的 eSIM Profile,可以理解为传递至 SM-DP+ 的 Bearer Token。为了方便用户,运营商一般会将 eSIM Activation Code 转换为 QR Code。终端扫描 QR Code 后,会自动将字符串写入到 eUICC 中。

如图是 Remote eSIM Provisioning (RSP) 的过程图,来源自 Android 文档。

MATCHING_ID 字段是可选的。例如 T-Mobile 绑定 eSIM 卡的 EID,所以在下载时无需提供 MATCHING_ID

SM-DP+ OID 字段一般不会出现。

5. 写入 eSIM Profile 至 eUICC 卡片

Android

Android 设备可以使用以下方式管理 eUICC 卡片:

国行 Android 手机不一定双卡都支持 OMAPI,可以使用 eUICC Probe 检测各卡槽是否支持 OMAPI。

已经 root 的用户可以使用 OMAPI-Bypass 或 XposedOMAPIOverrideSEAccessRules(适用于 Android 6-8)绕过 OMAPI 限制,不验证 ARA 和 ArF。更多关于 OMAPI 的信息可以参考 Open Mobile API - eUICC Manual。

Windows、macOS 和 Linux 平台

PC/SC 读卡器需要搭配以下 LPA 使用:

速易卡科技销售的读卡器(Alcor Micro USB Smart Card Reader)可以在 macOS Sonoma 和 Windows 10 下免驱使用。如果出现 APDU library init error 或 SCardTransmit() failed: 8010002f,请手动安装 Alcor Micro USB Smart Card Reader 驱动。

执行如下命令运行 LPAdesktop:

java -jar LPA-1.0.0.0-jar-with-dependencies.jar

如果你的 macOS Sonoma 无法识别第三方读卡器,可以尝试安装 ACSCCID 驱动。

出厂预置了 SIM 插槽且已经安装了对应 WWAN 网卡(例如 L850-GL, L860-GL 等)的 ThinkPad/HP/Dell 笔记本用户,可以使用 Windows 10/11 系统自带的 LPA 管理 eSIM:Use an eSIM to get a cellular data connection on your Windows PC

淘宝上有网店销售 M.2 (NGFF) 转 USB 的 WWAN 转接卡,集成了 SIM 卡插槽。可以搭配 eUICC 卡和支持 eSIM 的 Fibocom(广和通)或 Quectel(移远)的 4G/5G WWAN 模块使用。部分转接卡存在兼容性问题。

6. eSIM 实体卡行业动态

7. 常见问题

M2M eUICC

M2M eUICC 与 Consumer eUICC(消费者 eSIM)都属于标准的 GSMA eSIM 实现,但 M2M eUICC 不能写入 Consumer eSIM Profile,只能通过原厂的 OTA 平台进行云管理,仅用于集中管理 IoT 场景(例如共享单车)。若读者想进一步了解 M2M 和 Consumer eSIM 区别,可以参考下文部分的参考文献。

国行 Android 能否支持 eSIM?

eSIM.me 和 5ber.eSIM 如何实现在没有 eUICCManager 的 Android 设备上管理 eSIM?

根据这篇博客和这篇博客,eSIM.me 的 App(即 LPA)使用 Open Mobile API (OMAPI) 与 UICC 进行通信,而非标准的 eUICC API。5ber.eSIM 也是如此。这也正是它们产品的使用场景:在不支持原生 eSIM 管理(LPA)的设备上使用 eSIM。

eUICC 使用 ARA-M 字段储存 Android 开发者证书的 SHA-1 或者 SHA-256 值,从而告知 Android 系统来自哪个开发者的应用可以访问自身,容许第三方 App 提权获得 Carrier Privileges。因此,用户只能使用特定的 App 通过 OMAPI 管理 eUICC。eSTK.me 可以宣告五个 ARA-M SHA-1 值,因此同时支持 5ber.eSIM、eSIM.me 和 EasyUICC 等 App。

OMAPI 是 Android 为外置安全组件(Secure Element,SE)提供的标准接口。eUICC 是智能卡(Smart Card)的一种,因此用 OMAPI 与 eUICC 通信是 by design 的,算不上 hack。至于 eSIM.me 想因此起诉 5ber.eSIM,是没有依据的。版权应该只保护代码实现,而不是接口。

查看 5ber.eSIM 的 min SDK 版本,可知 5ber 最低兼容 Android 5.0:

$ apkanalyzer manifest min-sdk 5ber.eSIM.apk21

关于 OMAPI 的更多细节请参考 eUICC Manual。

什么是 EID?

eUICC Identifier(简称:EID)是 eUICC (embedded UICC) 的全球唯一物理标识(类似于网卡的 MAC 地址),存储在 eUICC 的 ECASD (eUICC Controlling Authority Security Domain) 中,主要用于 eUICC 卡管理和远程配置。EID 可以被读取但不能被更改,在远程配置中和 ICCID 一起共同关联某个 Profile 信息。

下图是 GSMA SGP.29 规范对于 EID 的格式定义。

为什么 Virtual EID 只能骗 app 不能骗 RSP?

EID 是 EUM 使用对应的 EUM 证书签发的 eUICC 证书的序列号。执行 Profile 下载过程时,eUICC 与 SM-DP+ 交换证书信息,并用上游的证书来验证其合法性。

当 LPA 使用 OMAPI 与 eUICC 通信时,使用 ES10c#GetEID 方法获取 Hex 形式的 EID。因此,eSTK.me 的 vEID 只能欺骗依赖此行为获取 EID 的 App,而无法欺骗 SM-DP+ 和使用 eUICC 证书验证的 App。

下图为 eSIM、LPA、网络与 SM-DP+ 之间的通讯过程:

无法读取 eSIM 卡片(通用)

  1. 购买的读卡器并非 PC/SC 标准兼容,无法被系统识别。
  2. 未安装正确的读卡器驱动。
  3. 卡片没插好。
  4. 卡片损坏—— ST33 芯片非常脆弱,施加外力会导致芯片损坏。

macOS 无法读取 eSIM 卡片

在 macOS Sonoma 上使用 LPA 操作 eUICC 时可能会遇到以下错误:

这是 Apple 自行开发的 USB CCID 智能卡读卡器驱动在 macOS Sonoma 上的 bug:

建议更新至最新的 macOS Sonoma 14.4 Beta,或遵照上文替换读卡器驱动。

如何批量获取 Consumer eSIM

如果您是 eSIM 从业者,可以通过以下渠道采购符合 SGP.26 标准的 Consumer eSIM 测试卡:

如果您是普通用户,可以通过速易卡科技购买 MFF2 或 nano SIM 形式的 eUICC。

eUICC Manufacturer (EUM)

eUICC Manufacturer (EUM) 是 eUICC 卡片的制造商,通过 EID 的 8 位前缀进行区分。

你可以在 eUICC Manual 查询已知的 EUM 信息。

使用 RSP Dump 提取 eUICC 的 CI、EUM 等信息

RSP Dump 是基于 AWS Lambda 的中间件。它拦截(intercepts)LPA 与 SM-DP+ 之间的通信,提取 eUICC 卡片的 CI、EUM、EUM 证书、eUICC 证书、EID、剩余空间等信息,并发送至用户指定的邮箱。

只需将 rsp.septs.app 作为 SM-DP+ 地址,将邮箱地址作为 Matching ID(也就是 eSIM Activation Code),执行下载 Profile 操作,即可收到邮件。

对应的命令行操作:lpac.exe profile download -s rsp.septs.app -m 邮箱

邮件附件为 EUICCInfo2 和提取到的 EUM、eUICC 证书。

邮件正文格式大致如下:

EID: 8903302300121136000000000XXXXXXX
Issuer: 665a1433d67c1a2c5db8b52c967f10a057ba5cb2
Free NVRAM: 359.73 KiB
SGP.22 Version: 2.2.0

SAS Accreditation Number: ??????????

If you need to download other CIs, please run:

./lpac profile download -s "cdf6d1.rsp.septs.app" -m "邮箱"
./lpac profile download -s "7c0e54.rsp.septs.app" -m "邮箱"
./lpac profile download -s "4eb94e.rsp.septs.app" -m "邮箱"
./lpac profile download -s "062a9a.rsp.septs.app" -m "邮箱"

Certificate Issuer (CI)

阅读本章节之前,建议先阅读 GSMA: eSIM 白皮书(中文翻译)。

你可以在 eUICC Manual 查询到已知的 CI 信息。

根据 GSMA 信息,目前消费者 eSIM 的证书颁发者有 DigiCert 和 WISeKey。

根据 PKI 数字证书在 eSIM 安全上的应用研究 | 中国联通研究院:GSMA 特别准许国内运营商自己选择 CI,CA 证书签发者必须是工业与信息化部公布的具有电子认证服务行政许可的认证机构,目前,三家运营商各自有 CA,国内的电信终端产业协会 (TAF) 也是具备为 eSIM 平台及 EUM 颁发证书的 CA。

根据 eSTK.me 和速易卡科技的信息,目前市面上存在同时支持 GSMA 和国内 CI 的 eUICC 卡片(内置了 CI 的根证书),可以同时写入国内运营商和国外运营商的 eSIM Profile。比如说,前文提到的 iPad 10 (A3162) 国行版。

根据 SGP.22 标准中关于 ES9+.InitiateAuthentication 函数的定义:SM-DP+ 会返回 serverCertificate 给 LPA。

你可以使用 Infineon LPA、LPAc 或 EasyEUICC 读取 eSIM 中的 euiccCiPKIdListForVerification 和 euiccCiPKIdListForSigning信息,对比 RSP 所支持的 CI,从而判断此 eSIM 卡片是否支持该 RSP(以及使用该 RSP 的运营商)。

以下是中国区 RSP 及其支持的 CI:

根据以上列表可以发现,三大运营商(中国移动、中国联通、中国电信)和中国信通院的 RSP 都交叉信任了对方的 CI,因此,若 eUICC 拥有任意国内运营商的 CI,即可写入所有国内运营商的 eSIM Profile。

申请 eUICC 证书请联系证书签发主管单位。

购买 eSIM 兼容的手机

8. 扩展阅读

技术演进

标准与规范

eUICC

9. 其他参考

10. 截图素材

11. 致谢

感谢 eSTK.me、速易卡科技和不愿意透露 ID 的匿名网友对文本的校对和补充。

最近因为注册某些app需要用到海外的电话号码,目前海外大部分国家都支持esim,但国内大部分手机都是不支持esim的,所以还需要把esim写入到实体sim卡。

前排提示,国内的esim标准和国际不一样,所以国内手机/设备是无法写入海外esim,同样,海外手机也无法写入国内esim,ara-m(证书)不一样,下文也会有相关解释,所以收起各位的小心思。

写入实体sim卡

开头前先了解一下基础知识,所谓的写入实体sim卡,是自己购买euicc卡,然后通过软件或者读卡器把esim信息写入到euicc。euicc就是一个能写入多个esim的实体卡,不同euicc卡片容量不同,能写入的数量也不同,一般都是500k,可以写20个esim(可以不同运营商),这样当你需要哪个卡的适合就直接切换到对应的esim,一个卡顶20个传统卡。

可能大火有听说过5ber/9esim这种,其实都是euicc卡,只是前者有牌子,卖的非常贵,普通euicc卡俗称小白卡,即小作坊产品,质量不好说(有人写入一次就炸鸡),但是非常便宜,40不到就能拿下(500k容量)。需要注意的是,安卓目前写入和切卡(切换euicc内的esim信息)非常方便,但是苹果只能切卡,而且需要特定的euicc才支持,这类euicc也要贵几块钱,如果自己用苹果的建议买海外esim版的。

刚刚说了,苹果只支持切卡,不能写卡,所以苹果写卡是需要专门的读卡器,这玩意也要40多,安卓则不需要,直接用app写入就行。本篇就用安卓做演示,至于苹果,我也没设备。苹果不但卖的比安卓贵,在各个方面都要多掏一笔钱hhhhh。忘记说了,买之前记得问问店家这个卡带不带ara-m(证书),如果不带这玩意安卓需要root才能写入,如果带的话就不用。

顺便提一下,我猜肯定有人会问这个能不能写入国内的esim,不行,因为国内国外esim标准不用,ara-m不兼容。ARA-M是eSIM Profile 的 Region/Type 标识符之一在 eSIM(嵌入式 SIM 卡)或 MNO(移动网络运营商)分发配置中,ARA-M 往往代表:"Authorized Reporting Authority – Mobile"它用于标识 移动网络配置文件的授权来源,也可出现在 eSIM profile 或运营商域名(如 SM-DP+)中。写入esim信息的时候是需要验证ara-m的,如果不对是直接拒绝写入。但是国内ara-m签发是和国外不一样,这就导致国内的esim设备无法写入海外esim信息,反过来国外设备也无法写入国内esim,因为没对应ara-m,苹果也不例外,但好像海外版可以额外导入国内的ara-m。

安卓写入需要用到一个叫做“easyeuicc”的app,这个自己谷歌下载,安装好后可以运行检测下,前三项能通过就没问题,基本上大部分手机都可以通过,我这好几年前的红米都可以,至于后面几项不用管。对了,有些手机只能sim卡1槽才支持写卡,卡2槽不行,,,,

上面的检查没问题后就可以准备把euicc卡插到手机准备写卡,但是,我要说但是了,如果是小米手机,请务必关闭手机查找功能,这玩意会插入新的sim卡自动发短信,乌龟卡发一条就会扣0.24欧,给我气的,我一共就冲了0.3欧,一下子就被小米给花了0.24欧??????然后小米还会偷跑流量,我干,后面又给我跑了0.3k流量扣了0.0001欧,本来就不富裕的家庭更是雪上加霜。

上面的务必要注意,不然你就会和我一样被扣钱。言归正传,回到正题,插入euicc后,打开easyeuicc app,我这个是从没写入过esim,所以是空的,点击右下角的+号,扫描刚刚乌龟卡的esim二维码,确认写入的sim卡以及esim信息,就可以写卡了。

最后写入完成,就可以启用这个esim卡。

如果要写入其他的esim卡,步骤和刚刚的一样,例如我后面又写入了一张非常便宜的esim(一年保号不要1元),这个卡就以后再介绍。

安卓写卡完成后,可以直接通过easyeuicc app切卡,想要哪个启用哪个卡就行。至于苹果,可以通过stk切卡,也就是说,你可以安卓写卡后放到苹果里面用,要么就是买sim读卡器写卡。

退出移动版