繁体   English   中英

Android NFC API对Mifare Desfire的支持程度如何?

[英]How well does the Android NFC API support Mifare Desfire?

我很可能在一个项目中,将现有的Desfire卡(用于访问付费服务)替换为支持NFC的移动设备。 任何人都可以指向我使用任何资源来帮助我了解涉及以下内容的内容:a)将Desfire卡的数据复制到移动设备上,以便可以代替卡; b)应用程序传递NFC数据以呈现给读者就像卡一样。 发卡机构将提供所有相关的密钥和访问权限(如果项目继续进行的话),但我很想提前了解该过程。

我还需要了解Android NFC API支持Desfire的程度,因为据我所知,它仅正确支持Classic。 http://developer.android.com/reference/android/nfc/tech/package-summary.html

MIFARE DESFire符合ISO 14443-4。 IsoDep类可为Android提供对ISO 14443-4(因此也支持MIFARE DESFire)的IsoDep 您可以使用该类的transceive()方法发送任何DESFire命令。

除此之外,DESFire可以配置为符合NFC论坛4类标签。 在这种情况下,Android会自动从标记中读取所有NDEF消息,并有意将其分发。 因此,当扫描特定标签时,您可以使您的应用自动启动。 (Android还可以格式化DESFire芯片以包含NDEF并向其中写入NDEF数据。)

用移动NFC设备更换DESFire卡是另一回事。 当前可用的Android设备上的卡模拟是通过连接到NFC芯片的嵌入式安全元件完成的。 Android应用程序不能模拟卡(也没有用于此的API),安全元素也不能模拟DESFire芯片。 此外,没有开放的API可以从应用程序访问Secure Element。

Android NFC应用程序可以通过NFC与另一台设备(不是卡)通信的唯一方法是使用Android Beam 但是,这是与卡和读卡器之间使用的协议不同的协议。

NFC家伙的回答非​​常好,但是有点过时了,所以我决定添加一个更新。

从KitKat(4.4)开始,您现在可以仿真没有安全元素的卡。

它被称为基于主机的卡仿真( Hce ),可以用来模拟ISO 14443 A型卡。

有两个小警告:

  • 您的读者必须在轮询“卡”后立即发出带有您选择的固定应用程序ID(帮助)的ISO SELECT(帮助)。 此AID必须在您的应用清单中注册。 Android会拦截此ISO SELECT,阅读辅助信息,并仅在清单中的辅助信息与之匹配时才打电话给您。 然后,您可以交换任何东西,它甚至不必是ISO APDU(ISO 14443封装由android完成)。 因此,例如, 如果您愿意 ,甚至可以模拟desfire的质询响应身份验证(0xA0 key_num,0xAF质询,0xAF响应,0x00 session_key)

  • 您不能依赖UID(但是您不对,对吗?无论如何这是一种不好的做法,所以没有人这样做...对吗?:)),因为它是随机的,并且会不断地变化(而不是在一个内部)会话,当然,但是...)

我们正在模拟desfire卡,唯一要做的更改是从最初的desfire选择应用程序(0x5A)切换到ISO SELECT(0x00 0xA4 0x04)。

模拟身份验证(挑战响应事件)可能很棘手,但是我们已经“另辟(径”了(使用NFC读取除火卡),因此对我们来说很容易。

如果您依靠卡UID进行身份验证,那么现在是更改它的好时机了:)

考虑到您的情况,我想说Android SDK足以解决您的问题。 您的案例分为两部分:

  1. 从现有卡中读取信息。
  2. 使用您从卡中读取的信息制作应用。

第1部分:

您唯一需要担心的就是读取DESFire卡。 如果DESFire卡中的信息以NDEF格式存储,它将使事情变得更加容易。

Ndef是SDK中的一个类,可用于检索NdefMessage类型的信息,然后可将其用于将检索到的信息保存到本地数据库,远程数据库或仅在应用程序内存中的存储工具。

以上是在该卡未受保护的假设下。 如果是这样,则必须使用transceive功能通过原始字节通信进行交互。 这将解锁以读取其余信息。 从这里您可以阅读NDEF记录。

第2部分:我的建议是跳过其卡仿真方面。 您将在某个时间点碰壁。

如果在现有解决方案中已在读取卡的设备已连接到android设备,则可以使用Android Beam。 除了Android App与Android App的交流之外,别无所求! Android已经完成了繁重的工作,因此您的大部分工作将变得很容易。

卡上的信息可以存储为ndef消息并通过Beam发送,或者您可以简单地创建一个自定义对象并将其发送出去。

您可能想看看Mifare4Mobile,它是从Mifare卡过渡到NFC设备的主动性:

http://mifare4mobile.org/

暂无
暂无

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

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