您可以在不同模式下对NFC进行编程。任务是发送双向信息。在NFC中,您可以使用多种组合操作模式来实现这一点:
-
选项1
- 手机>读写器模式
- 读卡器>卡模拟模式
- 此选项使用ISO-DEP(ISO/IEC 7816-4)协议
-
选项2
- 手机>对等
- 读卡器>对等
- 此选项可以使用多种P2P协议,例如SNEP
-
选项3
- 手机>卡模拟
- 读卡器>读写器模式
- 此选项使用ISO-DEP(ISO/IEC 7816-4)协议
我有两个不同方面的问题:
使用方面
有了这三个选项,你就可以双向通信,基本上可以发送任何你想要的东西。你为什么不在其他选项之上使用一个选项呢?
安全方面
安全性是指窃听、数据破坏、数据修改和中间人攻击等滥用漏洞。
我读到选项3(HCE)也用于例如移动支付。当您使用数据加密等附加措施时,这是安全的选项,还是选项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支付系统中使用)。