您可以在不同模式下对NFC进行编程。任务是发送双向消息。在NFC中,您可以使用多种组合操作模式来实现此目的:
我在不同方面有两个问题:
使用方面
通过所有三个选项,您可以进行双向通信,并且您可以基本上发送任何您想要的内容。为什么你不会在其他选项之上使用一个选项?
安全方面
在窃听,数据破坏,数据修改和中间人攻击等滥用漏洞的安全性方面。
我读选项3 (HCE)也用于例如移动支付。当您使用数据加密等其他措施时,这是安全选项,还是选项1 也是安全的?
谢谢!
答案 0 :(得分:1)
为什么有不同的操作模式?
NFC背后的最初想法是将现有标准(特别是ISO / IEC 14443非接触式智能卡技术和FeliCa / JIS X 6319-4)整合到一个系统中,该系统既可以与现有的转发器/智能卡/标签通信,也可以与现有的读卡器基础设施进行通信这可以用来轻松地与专用的NFC设备进行通信。
因此,初始NFC标准(ISO / IEC 18092)基于那些现有协议定义了对等通信模式。除了向后兼容之外,NFC标准还允许两个NFC设备(自动)握手两个NFC设备之间的连接。这在读卡器+卡设置中是不可能的:两个读卡器和两个卡都不能相互通信,因此必须在读卡器/卡场景中预定义角色。
因此,最初,读写器模式仅用于访问NFC标签(被动数据存储设备)和可能的非接触式智能卡。卡仿真模式(基于HCE或SE)旨在与现有的ISO / IEC 14443(或FeliCa)基础设施(例如,在演进到NFC之前已经就位的读取器)进行交互。并且点对点模式专门用于NFC设备之间的通信。
为什么现在几乎可以在所有情况下使用所有模式?
我猜测这个开发的驱动因素之一是Android上的点对点模式缺乏API支持。 Android上的点对点模式只能通过Android Beam访问,因此不能真正用于双向通信。另一个因素可能是对等模式协议栈比读写器模式(NFC-DEP + LLCP(+ SNEP)+应用程序协议与ISO-DEP +应用程序更复杂)协议)。
所以主要使用选项1 ,因为它(在Android 4.4之前)是通过NFC实现双向通信的唯一选择。由于Android 4.4也可以使用选项3 来构建类似的场景。
选项3 比其他选项更安全吗?
不,一点也不。在所有三种方案中,安全性必须由应用程序层处理。底层通信协议不使用任何加密/完整性保护/等。机制。
选项3 首选移动支付的原因仅仅是向后兼容方面:使用HCE,您可以实现与现有非接触式智能卡读卡器交互的应用程序(例如,它们用于EMV支付系统)。