我只是想知道安卓如何解决这个问题?应用程序的敏感信息应该存储在哪里?Google Wallet是否使用了这项技术?如果是,那么敏感信息是如何保持安全的?
更新1:一些网络链接在使用HCE时提到了基于云的安全元素(Cloud SE),但我无法理解这个Cloud SE具体是做什么的。对于这个话题,有没有链接、文件或更多资料?
您可以阅读由Thom Janssen和Mark Zandstra编写的文档,这两位都是来自UL-TS(前Collis)的人员,名为“HCE安全性影响”。您可以从此处下载:http://www.ul-ts.com/downloads/whitepapers/finish/6-whitepapers/289-hce-security-implications。
我只想知道安卓是如何解决这个问题的?
简单的回答:它根本没有解决。Google钱包将与卡相关的数据(卡号、有效期信息、动态卡验证码等)存储在移动电话的存储器(RAM,部分闪存)中。请注意,信用卡上没有余额信息。 Google Wallet(实际上是MasterCard)也不存储CVC2或卡PIN。
应用程序的敏感信息应该存储在哪里?Google Wallet使用了这项技术吗?
“应该”...嗯...它确实在RAM和可能存在于手机(内部)闪存中存储(临时)卡数据。通常不涉及安全存储器。
如果是,那么敏感信息是如何保持安全的?
这就是棘手的部分。这就是所谓的基于云的SE的作用。 Cloud SE意味着敏感的卡数据存储在“云”中,而不是(或仅是临时的)存储在最终用户的设备上。在实践中,这可以通过两种方式实现:
云SE的功能与普通的智能卡/安全元件完全相同。在这种情况下,最终用户设备上的HCE应用程序将立即将所有接收到的智能卡命令(APDU)重定向到“云”中。云SE会处理该命令并生成响应。然后该应用将通过NFC接口(HCE)将此响应发送回支付终端。这种场景的主要劣势是,HCE通信需要在整个通信期间与“云”保持稳定(且相对快速的)连接。
(这在某种程度上就是Google Wallet的工作方式。)云SE充当令牌服务,生成临时卡数据(临时卡号和临时动态验证代码),仅在有限数量的交易期间内有效并在非常有限的时间范围内有效。每当此临时信息过期时,HCE应用程序都会请求一组新的临时卡数据并将其存储在手机存储器中。当支付终端建立与HCE应用程序(模拟信用卡)的连接时,该应用程序将与支付卡协议(EMV)进行通信,并将临时信息嵌入模拟的卡数据中。
我认为Android并没有“解决这个问题”,甚至也没有打算去解决它:这更多是应用程序设计者的任务。可能的方法有:
使用Tokenization与“云中的SE”相结合...这可以避免“手机需要在线”的依赖。