随着电子支付的兴起,越来越多的支付方式出现在我们的生活中。其中就有基于NFC的“碰一碰”的支付,支付宝的“扫一扫”支付,我们还知道有Google Pay(Wallet), Apple Pay(Wallet)。作为Android BSP的开发者,我比较关心的是Google Pay。
因为项目处于调研阶段,对PRS我基本上是进行了逐字逐句的学习。其中有一条就是要支持secure element。并要求要使能Android14的Strongbox功能。同时,需要支持透过NFC的Apple Value Added Servied 简称VAS功能。
一开始以为就是为了支持VAS才引进的secure element,于是进行了必要性研究。VAS究竟要不要SE?一场有意思的旅程就此开始:
Apple VAS (Value-added services) is a proprietary NFC protocol that can be used for sending data from a mobile device to an NFC terminal.
首先VAS是一个苹果开发的通信协议,这个协议是基于NFC的。透过这个协议,能够从一台手机发送数据到另外一个NFC终端上。这个终端,可以是一个读卡器,一个有NFC功能的手机(作为reader)。
而巧了,我就是要负责开发这个手机终端的人。
现在的情况就是,如果要支持Apple VAS,我们需要NFC能够支持Apple的ECP协议,通常VAS的协议依赖ECP,但是ECP协议确可以独立运行。这里先不做细究。后面有机会再详细的说明,因为这里涉及到Apple的一些信息。
那么NFC厂家是需要实现Apple的ECP协议的,然后才能和Apple 手机上的Apple Wallet进行通信。例如,NXP的某些NFC芯片支持ECP,有的则不支持。举个例子:PN7220不支持,PN7221却支持的。这个是NFC的选型需要注意的事项。
和NXP的工程师电话沟通后知道,ECP1.0和ECP2.0的最大差异是帧的payload不同,ECP1.0支持最大为5Bytes,ECP2.0支持到12Bytes。最为Reader的终端完全不需要使用SE,至少ECP不需要。
那么关于SE,为什么必要呢?
Google Wallet需要使用SE进行敏感信息的存储,所以最初的时候,手机中如果要Google Wallet能够工作的话,得有一颗SE。听说现在有种新的基于云的SE,这部分后面我们在讨论。
那么,这个SE可以是直接包裹在NFC芯片中,或者SIM卡中或者SD卡中,也可以指独立的一颗IC,例如ST33Jxxx。
关于Google Wallet如何使用Secure element,从“digitaltrends”截取一段优美的解释如下:
大概就是这样喽,一颗计算机芯片,这个说法还是头一次见。
后面,我也需要在自己的平台上集成一颗SE,拭目以待。