Oll*_*e C 7 android nfc mifare
我很可能正在开展一个项目,现有的Desfire卡(用于访问付费服务)将被支持NFC的移动设备取代.任何人都可以向我指出任何资源,以帮助我了解a)将Desfire卡的数据复制到移动设备上所涉及的内容,以便它可以代替卡,以及b)让应用程序提供NFC数据以便呈现给读者好像是卡片.所有相关的密钥和访问权限都将由发卡机构提供(如果项目继续进行),但我很想提前了解该流程.
我还需要了解Android NFC API如何支持Desfire,因为据我所知它只能正确支持Classic.http://developer.android.com/reference/android/nfc/tech/package-summary.html
NFC*_*guy 15
MIFARE DESFire符合ISO 14443-4标准.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可以从应用程序访问安全元素.
Android NFC应用程序通过NFC与另一台设备(不是卡)进行通信的唯一方法是使用Android Beam.然而,这是与卡和读卡器之间使用的协议不同的协议.
Lor*_*tté 13
NFC家伙的答案非常好,但有点过时,所以我决定添加一个更新.
从KitKat(4.4)开始,您现在可以模拟没有安全元素的卡片.
它被称为基于主机的卡仿真(Hce),你可以模拟ISO 14443 A型卡..就像一个desfire卡.
有两个小警告:
您的读者必须在使用您选择的固定应用程序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读取desfire卡),所以这对我们来说很容易.
如果您依赖卡UID进行身份验证..现在是改变它的好时机:)
归档时间: |
|
查看次数: |
19214 次 |
最近记录: |