7

这要了我的命......我正在尝试找到一个 NFC/RFID 标签:

  1. 对发送到标签的数据实施加密和/或加密签名,以便阅读器可以对标签进行身份验证。我不在乎标签是否尝试对阅读器进行身份验证,并且

  2. 得到 Android 手机和标准 NFC 库的广泛支持,并且

  3. 以安全的方式存储加密密钥(在配置保险丝熔断后读取它应该是不可能的)。

我不在乎标签上可以存储什么样的有效负载,我对 NDEF 消息没有用处。我不在乎使用的加密是对称的还是非对称的。我想要做的就是向标签发送一些数据并拥有它,使用共享密钥,加密或签署该数据并将其发送回手机,然后我的代码将执行相同的功能并将结果与标签的响应以验证标签。

我有 Atmel CryptoRF* 标签的样本,虽然它们可能会满足我的大部分需求,但我拥有的唯一一部 Android 手机无法正确检测到它们。电话响了,我正在使用适当的技术列表条目过滤“android.nfc.action.TECH_DISCOVERED”,但我什么也没得到。Atmel 的技术支持比无用更糟糕(因为我浪费了时间问他们从不费心回答的问题)。Logcat 看起来像:

  • 09-04 21:03:53.474 1012-1012/? D/NativeNfcTag:连接失败 - 状态 = 146
  • 09-04 21:03:53.474 1012-1012/? E/NFCJNI: doDisconnect() - 目标已经断开

我没有看到任何以前的条目表明该标签曾被 Android 识别。

这似乎是一种如此简单、明显和需要的标签类型,它必须存在于某个地方。

NFCGuy 或其他人 - 有什么想法吗?

谢谢!

* Atmel CryptoRF 数据表说明了以下内容,这可能有助于确定这些内容是否可以被 Android 手机读取:

  • 符合 ISO/IEC 14443-2:2001 B 类标准
  • 符合 ISO/IEC 14443-3:2001 类型 B 的防碰撞协议
4

1 回答 1

3

Mifare Desfire 会按照您的要求做,除了一件事:

API 级别不提供加密支持。

您必须编写执行所有身份验证和加密的代码,并直接与 Desfire 标签对话。Android API 通过低级访问功能提供了执行此操作的工具IsoDep.transceive。加密函数本身可以在javax.crypto.spec

与其他标签不同,在 Internet 上提供了进行身份验证和加密所需步骤的加密文档。

于 2013-09-05T06:50:17.573 回答