eSIM 的固件升级
概述
本文档介绍支持 eSIM 设备的固件更新的 Windows OS 更改。
Windows 更新 (WU) 是用于固件修补程序的模型。 在此模型中,eSIM 设备供应商会创建 UMDF 驱动程序,并将其与固件修补程序一起添加到 WU 包。 包将发布到 WU,并将下载 & 安装在包含卡供应商 eSIM 设备的 Windows 设备上。 安装后,卡供应商的驱动程序使用智能卡 WinRT API 写入固件修补程序。 Microsoft 通过为 eSIM 的 ISO 接口提供 UMDF 驱动程序,并通过现有的智能卡 WinRT API 将其公开为智能卡来启用此功能。
调制解调器 ISO 接口具有 255 字节的限制,因为最大应用程序协议数据单元 (APDU) 大小,因此对于 (TRC/PBL 映像) 的完整固件 OS 更新速度太慢。 对于完整的固件 OS 更新,Microsoft 提供了一个单独的智能卡 UMDF 驱动程序,该驱动程序使用 eSIM 的 SPB 接口作为传输。
本部分使用以下首字母缩略词:
- ACPI: 高级配置和电源接口
- APDU: 应用程序协议数据单元
- Atr: 重置的答案
- eUICC: 嵌入式通用集成电路卡
- Fw: 固件
- HCP: 主机控制器协议
- HWID: 硬件 ID
- Iso: 国际标准化组织
- Mf: 主文件
- 微软: 微软
- Oem: 原始设备制造商
- Pbl: 主引导加载程序
- Rpc: 远程过程调用
- ScardSvr: 适用于 Windows 服务的智能卡
- Scard WinRT:智能卡Windows 运行时
- SC DDI: 智能卡 DDI
- sHDLC: 简化的高级数据链接控制
- SPB: 简单外围总线
- Spi: 串行外设接口
- TRC: 防篡改芯片
- WwanSvc: WWAN 服务
固件修补程序更新的高级设计
固件 OS 更新的高级设计
固件升级体系结构
对于Windows 10版本 1703,卡供应商将通过 ISO 接口在 APTU 上提供固件更新。 针对通过 SPI 接口的 HCP 数据包 (PBL HCP) 的完整映像,计划在 Windows 10 版本 1709 时间范围内汇报。
当 WWAN 服务基于 ATR 信息检测到 eSIM 时,WWAN 服务将加载 ISO UMDF 驱动程序。 ISO UMDF 驱动程序使用 WWAN 服务的低级别 UICC 访问 RPC,通过调制解调器将 APTU 发送到 eUICC。
SPI UMDF 驱动程序由 PnP 根据 eSIM 卡 ACPI 条目中的硬件 ID 加载。 SPI UMDF 驱动程序通过 SPB IOCTL 接口将 sHDLC 帧发送到卡上的 TRC。
在上层,两个驱动程序将实现智能卡 DDI,该智能卡提供用于与智能卡交互的低级别访问。 这将通过智能卡 WinRT API 将 eSIM 的 ISO 和 SPI 接口公开为智能卡。
在提供 eSIM 的 SPI 接口的设备中,OEM 应将 Microsoft UICC SPI 驱动程序 HWID 作为硬件兼容 ID 添加到 ACPI 表。 Microsoft UICC SPI 驱动程序的 HWID 为 ACPI\MSFTUICCSPB。
UMDF 驱动程序
UMDF 驱动程序将实现以下智能卡 IOCTL:
使用情况 | DDI |
---|---|
智能卡状态 | IOCTL_SMARTCARD_GET_STATE IOCTL_SMARTCARD_IS_ABSENT IOCTL_SMARTCARD_IS_PRESENT IOCTL_SMARTCARD_POWER |
智能卡属性 | IOCTL_SMARTCARD_GET_ATTRIBUTE IOCTL_SMARTCARD_SET_ATTRIBUTE |
智能卡通信 | IOCTL_SMARTCARD_SET_PROTOCOL IOCTL_SMARTCARD_TRANSMIT |
智能卡设备的要求
定义以下设备属性:
定义 | 名称 | 类型 | FormatID | 值 |
---|---|---|---|---|
设备接口 guid | System.Devices.InterfaceClassGuid -- PKEY_Devices_InterfaceClassGuid | Guid -- VT_CLSID | {026E516E-B814-414B-83CD-856D6FEF4822}, 4, DEVPROP_TYPE_GUID | {DEEBE6AD-9E01-47E2-A3B2-A66AA2C036C9} |
ReaderKind | System.Devices.SmartCards.ReaderKind -- PKEY_Devices_SmartCards_ReaderKind | 字节 -- VT_UI1 (应为 INT16 Bug 9550228) | {D6B5B883-18BD-4B4D-B2EC-9E38AFFEDA82}, 2, DEVPROP_TYPE_BYTE | SmartCardReaderKind_Uicc |
ReaderName | DEVPKEY_Device_ReaderName (0xD6B5B883、0x18BD、0x4B4D、0xB2、0xEC、0x9E、0x38、0xAF、0xFE、0xDA、0x82、0x03) | 字符串 -- VT_LPWSTR (变体:VT_BSTR) | {D6B5B883-18BD-4B4D-B2EC-9E38AFFEDA82}, 3, DEVPROP_TYPE_STRING | CustomName |
AppAccessRestrictionsFlags | System.Devices.SmartCards.ReaderKind -- PKEY_Devices_SmartCards_AppAccessRestrictionsFlags | 字节 -- VT_UI1 | {D6B5B883-18BD-4B4D-B2EC-9E38AFFEDA82}, 4, DEVPROP_TYPE_BYTE | PrivilegedAppOnly (1) |
ISO UMDF 驱动程序在智能卡读卡器开发节点上设置其他自定义开发属性:
定义 | 名称 | 类型 | FormatID | 值 |
---|---|---|---|---|
RadioName | DEVPKEY_MbbDevice_RadioName | :DEVPROP_TYPE_GUID | {41e061f2-9999-4b33-bf42-f950cbfd5f2e}, 1, DEVPROP_TYPE_GUID | RadioInterfaceGuid |
SlotId | DEVPKEY_MbbDevice_SlotId | DEVPROP_TYPE_UINT32 | {c4c66992-3bcc-4f96-9a85-bd807235fbe1}, 2, DEVPROP_TYPE_UINT32 | SlotId |
IsEmbedded | DEVPKEY_MbbDevice_IsEmbedded | DEVPROP_TYPE_BOOLEAN | {7d08a710-b448-4148-8049-0aa12e5fd2d}, 3, DEVPROP_TYPE_BOOLEAN | IsEmbedded |
这些属性用于唯一命名智能卡读取器,并标识附加到正确 eSIM 卡的读取器。 例如:IsEmbedded=True 和 SlotId=1。
需要 TRC 映像更新代理才能具有允许访问智能卡 WinRT API 的 sharedUserCertificates 功能。 sharedUserCertificates 功能是一种受限功能,仅提供给具有特定凭据的企业。 授予访问权限后,应用可以通过智能卡 API 连接到设备上的 TRC,并将命令发送到卡。
固件修补程序预期会通过 APTU 进行。 由于智能卡 WinRT API 仅公开传输 APTU 而不是通道管理功能(例如打开/关闭),因此 UMDF 驱动程序将检查 APTU 并查找 SELECT by AID 命令。 如果驱动程序找到 SELECT by AID 命令,则会将其解释为使用 Wwan RPC API 打开逻辑通道。 UMDF 驱动程序将始终验证 AID 是否已列入允许列表,否则将拒绝请求。 由于 SC DDI 中没有关闭或断开连接的 IOCTL,因此 UMDF 驱动程序无法知道传输何时结束以及何时关闭逻辑通道。 为防止逻辑通道泄漏,UMDF 驱动程序将在打开逻辑通道时设置 5 分钟的计时器,并在该计时器过期时关闭通道。 5 分钟应该足够长,因为固件更新预计最多运行 2.5 分钟。 如果 UMDF 驱动程序检测到新的 SELECT by AID 命令,则会关闭以前打开的通道并重置新逻辑通道的计时器。 请注意,从上次传输的 APDU 开始测量 5 分钟超时。 换句话说,通过现有通道传输 APDU 会重置计时器。
为了防止针对随机 UICC 应用打开通道,ISO UMDF 驱动程序将允许更新所需的应用 ID,并限制仅访问这些应用。 卡供应商可帮助识别应用 ID,OEM 会将 ID 添加为注册表项。 预计卡中的 UICC 应用将对固件执行数字签名检查,以防止发送数据的恶意应用。
COSA 设置
CellCore/PerDevice/eSIM/FwUpdate/AllowedAppIdList
在完整固件 OS 更新期间,调制解调器不会访问涉及的 UICC 应用,这一点很重要。 为此,TRC 映像更新代理将发送一个特殊的 APDU,指示 eUICC 进入 TRC/PBL 模式。 然后,TRC 应用将要求调制解调器进入直通模式并重置卡。 卡将以空 MF 的形式启动。 更新完成后,将要求调制解调器再次重置卡。 这一次,调制解调器和卡都将返回到正常模式。
流程图
连接
传输 (开放通道)
传输 (发送 APDU 和关闭通道)
获取 ATR
直通模式