繁体   English   中英

基于软件的卡仿真(HCE)如何保证NFC安全?

[英]How Software Based Card Emulation (HCE) Guarantees NFC Security?

通过引入HCE,不需要安全元件(SE)来模拟卡。 因此,没有存储空间来保存模拟卡的应用程序的敏感信息,如余额,CVV2,PIN等。

我只是想知道android如何解决这个问题? 应该存储应用程序的敏感信息? Google电子钱包是否使用此技术? 如果是,敏感信息如何保密?

更新1:网络上的某些链接在使用HCE时会引用基于云的SE(云端SE),但我无法理解此Cloud SE的功能。 有关此主题的任何链接,文档或其他材料?

HCE带来的主要特点是,当NFC设备处于卡仿真模式(CEM)时,来自NFC控制器的所有数据默认路由到设备的CPU(读取Android OS)。 事实并非如此 - 当CEM中的默认路由已经转向安全元素(SE)时。 在设备“植根”的情况下,将敏感数据存储在操作系统内存中会引发严重的安全问题 - 您提出的问题。 有两种方法可以缓解这些安全风险:

A)为敏感数据提供更安全的位置

这个“更安全的位置”可能是可信执行环境(TEE) - CPU的特殊部分,它运行自己独立的操作系统,因此在主操作系统植根时不会受到损害。 在安全级别上,TEE提供了比OS和“SE in the cloud”更高的安全性,但低于SE。 如果TEE不够(对于诸如开环支付,身份验证服务 - 身份证,护照等服务的情况),没有人禁止您在提供HCE服务的电话上使用SE。 在这种情况下,可以通过使用路由表来防止到CPU(Android OS HCE服务)的默认路由(用于具有特定AID的应用的数据被路由到SE)。

B)实施安全机制以使现有位置更安全

如果您没有TEE且无法使用SE,您可以通过以下技术使事情变得更加安全:用户验证(“用户知道”像PIN一样,或者如果可能的话甚至更好“用户是” - 生物识别技术),交易限制(低价值交易,一个时间范围内有限的交易数量等),标记化,在事先交易时做Android OS检查(即用户是否拥有root权限)等。

最好的是结合A和B.

您需要了解的是HCE不适用于高安全性服务。 HCE视为更简单但不太安全的解决方案,旨在加速NFC服务的采用 它为SP提供了很大的附加值,可以接受降低的安全级别,以换取其他因素的改进,例如上市时间,开发成本和与其他方合作的需要。

您可以在由Thom Janssen和Mark Zandstra撰写的文件中阅读更多相关信息,这些文章来自UL-TS(前Collis),名为“HCE安全隐患”。 您可以从这里下载: http//www.ul-ts.com/downloads/whitepapers/finish/6-whitepapers/289-hce-security-implications

我只是想知道android如何解决这个问题?

简单的回答:它没有 Google电子钱包将卡相关数据(卡号,有效性信息,动态卡验证码等)存储在手机内存(RAM,部分闪存?)上。 请注意,信用卡上没有存储余额信息。 Google电子钱包(它实际上是万事达卡)也不存储CVC2或卡片密码。

应该存储应用程序的敏感信息? Google电子钱包是否使用此技术?

应该 ......好吧......它确实将(临时)卡数据存储在RAM中,也可能存储在手机(内部)闪存中。 这里通常不涉及安全存储器。

如果是,敏感信息如何保密?

这是棘手的部分。 这就是基于云的SE的用武之地.Cloud SE意味着敏感的卡数据存储在“云端”,而不是(或者只是临时)存储在最终用户的设备上。 实际上,这可以通过两种方式实现:

  1. 云SE的行为就像普通的智能卡/安全元素一样。 在这种情况下,最终用户设备上的HCE应用程序会立即将所有收到的智能卡命令(APDU)重定向到“云”。 云SE将处理命令并生成响应。 然后,应用程序通过NFC接口(HCE)将此响应发送回支付终端。 这种情况的主要缺点是HCE通信需要在整个通信过程中与“云”的稳定(且相对快速)连接。

  2. [这有点像谷歌钱包的工作方式。]云SE充当令牌服务,生成临时卡数据(临时卡号和临时动态验证码),仅对有限数量的交易有效且在非常有限的时间范围内。 每当此临时信息到期时,HCE应用程序就会请求一组新的临时卡数据并将其存储在手机的内存中。 当支付终端建立到HCE应用程序(模拟信用卡)的连接时,应用程序与支付卡协议(EMV)通信并将临时信息嵌入到模拟卡数据中。

我不认为Android“修复了这个问题”或者它甚至打算:它对于应用程序设计者来说更像是一项任务。 可能的方法是:

  • 将敏感信息存储在手机外:“云中的SE”。 一个明显的缺点是手机需要在线才能使交易成功。
  • 生成敏感信息处理一些秘密输入(例如,用户输入密码或PIN)并在手机外验证它,例如通过非接触式基础设施。

Android OS不提供安全存储来存储HCE事务中使用的敏感数据。

在HCE(基于云的SE)的情况下,移动应用程序不将敏感数据存储为安全元素。

用于生成支付密码的敏感数据PAN对称卡主密钥等,受以下方式保护: -

保护PAN

EMV的令牌化规范用于使用令牌化PAN替换PAN,其中令牌化PAN被限制到特定域。

保护对称密钥

Symmetric Card Master Key被限制版的对称密钥替换。

VISA的HCE规范定义了限制使用密钥(LUK),该密钥仅限于在有限的时间段和事务中使用。

MasterCard的HCE规范定义了单一使用密钥(SUK)限制用于单个事务。

其他HCE规范遵循类似的机制。

因此,云存储敏感数据(PAN,Symmetric Key)和移动应用程序存储限制版本的敏感数据。 因此,它将风险降至最低。

移动应用程序使用白盒密码术来阻止数据被VISA,万事达卡和其他人建议窃取。 白盒密码学难以打破。

顺便说一下,它被称为基于云的SE,因为敏感数据存储在云而不是移动应用程序上,这与安全元素的方式不同(在SE中,SE / Mobile SE敏感数据存储在SE中)。

将标记化与“云中的SE”结合使用......这可以避免“电话需要在线”的依赖性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM