6 最小功能集
在其他环境中运行的应用程序通常使用安全元件作为增强系统安全性的手段。 因此,任何符合 Open Mobile API 的移动设备都应该提供对设备上所有 SE 的访问。 因此,传输 API 对于兼容 Open Mobile API 的设备是强制性的。 目前最常见的 SE 是 SIM 卡、智能 SD 卡和嵌入式 SE,但未来可能会出现新的 SE。 因此,SE 提供者接口是强制性的,以确保设备可以支持未来的 SE。 传输 API 应根据 [ISO 7816-4] 支持最大数量的扩展逻辑通道(除了基本通道外还有 19 个逻辑通道)。 如果 ATR 不可用,或者 ATR 可用并指示支持 8 个或更多通道(包括基本通道),API 应尝试打开逻辑通道,前提是没有指示错误。 如果 ATR 可用并指示支持 7 个或更少的通道(包括基本通道),则 API 应通过使用 ATR 信息或通过打开逻辑通道来管理 ATR 指示的尽可能多的逻辑通道,前提是没有错误 表示。 传输 API 应支持长度至少为 2048 字节的扩展长度 APDU 命令。
7 插件
第 2 节将插件定义为在开放移动 API 的核心功能和与安全元素通信的低级机制之间提供接口抽象。 每个 Reader 都有一个插件实例。 插件的作用是从 Open Mobile API 规范的核心功能中抽象出特定于平台的行为,如本文档中所述,以便核心功能独立于其执行的硬件。 实际上,这可能包括以下部分或全部内容:
• 安全元件的电源管理。
• 处理底层协议实现细节(例如,用于与安全元件通信的 T=0 或 T=1 协议——这完全由 Open Mobile API 抽象)
• 将物理接口(例如 HCI 网络中的 SPI、I2C、APDU 门)的设备驱动程序连接到安全元件。
• 当安全元件是UICC 时,与RIL 等调制解调器抽象层通信。 由于不同的调制解调器实现行为不同,这可能包括对 expectDataWithWarningSW 属性的处理。
• 支持“即插即用”机制,通过安装或删除可下载的应用程序和/或驱动程序包,提供一种在运行时为SE 添加和删除驱动程序的方法。
这种插件接口的 API 可能是特定于实现的,或者可能在特定编程语言或软件平台的平台绑定文档中定义。 插件接口的具体定义应考虑以下几个方面:
• 实现应该强制它只能从传输层访问,而不是直接从应用程序访问,以确保不能绕过传输层中的通道管理和安全机制。
• 插件API 应该允许不同类型的安全元件与相同的开放移动API 传输层接口。 典型的插件 API 可能包括
o 当终端连接到安全元件时调用的 API。
o 当终端与安全元件断开连接时调用的 API。
o 当打开和/或关闭逻辑通道时调用的 API。
o 基础通道开启时调用的API。
o 收发 APDU 时调用的 API。
o 加载和/或卸载插件时调用的 API。
• 实现应该确保内置插件不能被动态加载的插件替代。
如果插件API是为了支持第三方插件创作,建议提供参考插件实现。
8 Access Control
GlobalPlatform Secure Element Access Control specification [SEAC]) 定义了一种机制来防止非授权设备应用程序访问 SE 应用程序。 安全元件访问规则存储在 SE 中,并由在开放移动 API 的传输层中实现的访问控制执行器读取和应用。 当通道打开时,OMAPI 实现应根据 [SEAC] 更新设备上的访问控制规则。 当不满足访问控制规则时,本规范中的 API 将指示错误(例如声明安全错误)。