问题1:Apple Pay是什么,包含哪些必备组件?
Apple Pay是Apple公司的移动支付和数字钱包产品,结合了令牌化和NFC技术,使得用户可以完成应用内(in-app)和非接(contactless) 移动支付。目前只有Apple最新一代产品(iPhone 6/6+等)对该功能有支持。不同于Apple公司更早时推出的iBeacon产品,Apple Pay不需要专用的线下非接POS终端,在现有的POS终端上就可以完成支付。Apple Pay在2014年9月份正式宣布,10月发布支持该服务的系统更新,目前仅在美国推广使用。
Apple Pay是一个整合了各种技术以及资源的产品,其构成比较复杂,核心组件包括:
Secure Element:简称SE,就是我们常说的安全元件,是防物理攻击的电子元件,其内部包含微处理器、存储以及加解密 硬件等,可独立使用(例如:芯片卡)或嵌入到其他设备中(例如:Apple Pay和Google Wallet)提供高安全服务。一般来说,SE是普通人所能接触到的最高安全保证级别的硬件/软件设备了,Apple Pay使用的即是eSE这种形式,具体来说就是Apple Pay使用的是经过工业标准认证的、运行Java卡平台(JCP,Java Card Platform)的、兼容金融行业电子交易要求的安全元件。SE是Apple Pay安全保障的核心,本质上来说,所有和Apple Pay相关的支付处理和安全保障都是由SE负责的,其他组件只是起到辅助作用。
NFC controller:NFC控制器,在Apple Pay的场景中,NFC控制器相当于一个路由器,它同三个不同外部实体连接:外部近场设备(例如:销售终端POS,Point-Of-Sale)、应用处 理器(AP,Application Processor)以及Secure Element,进而形成两个通信通道:应用处理器到Secure Element的通信通道,以及POS到Secure Element之间的通信通道。
Passbook:Passbook是在Apple Pay产品推出之前就已经存在的服务,Apple Pay推出之后,Apple对其功能进行了扩充,使得其可以为Apple Pay添加和管理信用卡以及借记卡,当然还可以查看已添加的卡的信息、银行的隐私策略以及最近交易明细等等。对Apple Pay来说,Passbook相当于Secure Element的管理客户端,Secure Element中添加和删除信用卡或借记卡信息都可以经由Passbook服务进行。
Touch ID:也就是iPhone的指纹识别服务,其目的在于利用指纹识别使得访问设备更安全、更快速和更容易。Touch ID不是对设备安全密码的替换,而是让用户可以使用复杂的设备密码,同时不损失便利性。换句话说,用户可以使用复杂的密码来保护设备,同时还可以 使用Touch ID来方便的访问设备。
Secure Enclave:Secure Enclave是iOS设备内部的安全执行环境,可以用来进行一些敏感信息的处理,例如:Touch ID的指纹成像传感器获取的数据需要传递到Secure Enclave来进行实际的指纹识别过程。对于Apple Pay来说,Secure Element负责管理认证过程和使得支付交易可以进行。
Apple Pay Servers:Apple Pay服务器,其用来管理Passbook中的信用卡和借记卡的状态,以及存储在Secure Element中特定于设备的账户信息。Apple Pay服务器同时同设备以及支付网络(Payment Network)中的服务器进行通信,对于应用内支付来说,Apple Pay服务器还负责使用特定于商户的密钥,对Apple Pay产生的支付凭据(Payment Credentials)进行加密,然后将其发送到实际的商户服务器进行支付处理。
问题2:Secure Enclave是否就是ARM TrustZone?
Secure Enclave是Apple A7以及后续系列的应用处理器封装在一起的协处理器,它有自己的安全引导过程和个性化的软件更新过程,并且同iOS系统所在的应用处理器分离。 Secure Enclave使用加密(使用临时产生的密钥加密)的物理内存(和应用处理器共享的物理内存的一部分空间)进行业务处理,并且有自己的硬件随机数产生器。 Secure Enclave同应用处理器之间通过中断驱动的mailbox以及共享内存来进行通信,对外提供数据保护密钥管理相关的所有密码学服务。
ARM TrustZone技术本质上是一种虚拟化技术,通过将处理器状态分为安全和非安全状态,并且配合其他总线以及外设上的安全属性来实现遍布整个硬件系统的 安全。同Secure Enclave一样,ARM TrustZone也有自己的安全引导过程以及个性化的软件更新过程,也有自己的硬件随机数产生器(以及其他类似的安全外设),并且同应用处理器之间也是 通过中断驱动的Monitor模式以及共享内存来进行通信。可以看出,Secure Enclave所提供的安全特性并没有超出ARM TrustZone技术的范围。
不过就Apple的官方信息来说,Apple从未提过Secure Enclave就是ARM TrustZone安全扩展技术的实现(虽然根据Apple官方文档中关于几个安全通信通道的描述来看,Secure Enclave很可能是ARM TrustZone技术的一种实现),因此我们还是无法断定Secure Enclave究竟是独立的协处理器还是应用处理器的一种运行状态(两种架构都可以提供Secure Enclave必须的安全特性),这个有待于Apple公布更多的Secure Enclave的实现细节,就目前而言,可以得出的结论是:Secure Enclave所提供的安全特性,使用ARM TrustZone技术同样可以实现。
问题3:Apple Pay如何保证Secure Enclave和Touch ID之间的通信安全?
我们知道Touch ID成像阵列获取的指纹数据需要交由Secure Enclave进行实际的匹配处理,而在Apple Pay的实现中,Touch ID传感器通过串行外设接口总线(Serial Peripheral Interface Bus)同应用处理器进行连接,然后再连接到Secure Enclave,换句话说,指纹传感器获取的指纹成像数据需要经由应用处理器中转,这就带来了安全隐患:恶意程序可以截获Touch ID传感器产生的数据。Apple Pay通过简单的方式实现了指纹数据的安全传输,首先Touch ID传感器和Secure Enclave会预置一个共享密钥,然后利用该共享密钥协商一个会话密钥,再用协商获得的会话密钥使用AES-CCM算法对传输的数据进行加密,这样可以 确保应用处理器无法读取指纹数据,保证了整个指纹识别过程的安全。
问题4:Apple Pay如何保证Secure Enclave和Secure Element之间的通信安全?
前面介绍NFC控制器的时候已经提到,Secure Enclave和Secure Element之间的物理通信通道需要经过NFC控制器中转,而两者之间是没有直接的物理连接的,具体就是Secure Element同NFC控制器连接,然后NFC控制器同应用处理器连接,而没有提到NFC控制器如何同Secure Enclave连接(Apple的官方文档如此说,这里可以看出Secure Enclave很有可能不是一个独立的协处理器),那么既然Secure Element和Secure Enclave之间需要经由应用处理器中转,那么也就必须要考虑到通信安全问题。
实现方式同Touch ID和Secure Enclave通信的过程类似,也是通过共享配对密钥的方式来对通信内容加密,不过因为涉及到了Secure Element,所以共享配对密钥的预置比较复杂一些,具体就是:共享配对密钥是在生产阶段预置的,而且该密钥由Secure Enclave利用自己的UID密钥和Secure Element的唯一标识作为输入产生,然后在工厂内安全的传输到外部硬件安全模块(HSM,Hardware Security Module),再注入到Secure Element中。实际使用过程中,Secure Element和Secure Enclave之间的通信使用基于AES的密码学算法进行加密,而且还使用了密码学机制防止重放攻击(replay attacks)。
问题5:Apple Pay如何保证Secure Element和POS之间的通信安全?
严格来说,传统意义上Secure Element和POS终端之间的通信是不需要保证安全的,因为两者必须靠近才能发生通信,实际上相当于认证了人和卡的存在。而对于Apple Pay来说,由于应用处理器也会参与其中的某些步骤,因此情况稍微有些复杂,Apple Pay需要有3个附加的保障机制来确保非接触式交易的安全。
首先,Apple Pay确保只有经过用户的授权,例如:通过了指纹识别或输入了设备密码,非接触式交易才可能发生,否则装备了Apple Pay的设备只要处于RF通信场中,就可能在用户无意识的情况下发生交易。其次,Apple Pay必须确保只有来自外部非接触式POS终端的支付请求才能被标识为非接触式交易,这主要和交易费率相关(后面会对其进行说明),通过外部非接通信方式 进行的Apple Pay交易同应用内的Apple Pay交易费率是不同的。最后,如前面所说,非接触式支付的通信是不加密的,因此Apple Pay通过NFC控制器的卡模拟模式确保非接通信通道交互的数据无论如何不会暴露给应用处理器。