问题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个附加的保障机制来确保非接触式交易的安全: