问题2:是否就是ARM TrustZone?
A7以及后续系列的应用处理器封装在一起的协处理器,它有自己的安全引导过程和个性化的软件更新过程,并且同iOS系统所在的应用处理器分离。 使用加密(使用临时产生的密钥加密)的物理内存(和应用处理器共享的物理内存的一部分空间)进行业务处理,并且有自己的硬件随机数产生器。同应用处理器之间通过中断驱动的mailbox以及共享内存来进行通信,对外提供数据保护密钥管理相关的所有密码学服务。
ARM TrustZone技术本质上是一种虚拟化技术,通过将处理器状态分为安全和非安全状态,并且配合其他总线以及外设上的安全属性来实现遍布整个硬件系统的 安全。同一样,ARM TrustZone也有自己的安全引导过程以及个性化的软件更新过程,也有自己的硬件随机数产生器(以及其他类似的安全外设),并且同应用处理器之间也是 通过中断驱动的Monitor模式以及共享内存来进行通信。可以看出,所提供的安全特性并没有超出ARM TrustZone技术的范围。
不过就的官方信息来说,从未提过就是ARM TrustZone安全扩展技术的实现(虽然根据官方文档中关于几个安全通信通道的描述来看,很可能是ARM TrustZone技术的一种实现),因此我们还是无法断定究竟是独立的协处理器还是应用处理器的一种运行状态(两种架构都可以提供必须的安全特性),这个有待于公布更多的的实现细节,就目前而言,可以得出的结论是:Apple Pay所提供的安全特性,使用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控制器的卡模拟模式确保非接通信通道交互的数据,因此无论如何不会暴露给应用处理器。