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 更新的高级设计

显示固件 OS 更新的高级设计的关系图。

固件升级体系结构

说明 eSIM 固件升级过程的方块图。

对于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。

显示 UICC ISO 智能卡驱动程序 DevNode 的其他自定义属性的关系图。

需要 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 的形式启动。 更新完成后,将要求调制解调器再次重置卡。 这一次,调制解调器和卡都将返回到正常模式。

流程图

连接

演示连接到智能卡Windows 运行时过程的流程图。

传输 (开放通道)

演示打开通道过程的流程图。

传输 (发送 APDU 和关闭通道)

演示传输数据、发送 APDU 和关闭通道的过程的流程图。

获取 ATR

演示获取 ATR 的过程的流程图。

直通模式

演示在直通模式下操作过程的流程图。

使用 DISM 预安装已发布的应用

将预安装的应用添加到桌面映像

适用于移动设备的可预装应用

预安装任务