我正在使用 NFC 标签制作一个应用程序,并且必须防止 NFC 标签被克隆。我见过许多其他 NFC 标签,当尝试克隆时,会显示弹出消息“克隆受到限制,标签由密钥保护”,我希望我的 NFC 标签具有相同的安全性。
这取决于您使用的标签类型以及您想要的防克隆保护级别。
NFC 标签(由NFC论坛 http://www.nfc-forum.org)没有针对克隆的保护。此类标签旨在作为可自由读取的数据(所谓的 NDEF 消息)的容器。任何人都可以从一个标签读取 NDEF 消息并将其复制到另一个标签。
许多 NFC 标签还包含由标签制造商预编程的唯一标识符,并且无法在普通标签上进行修改。您可以使用此唯一标识符来确定标签是由您颁发的(即您知道其 ID)还是伪造的(即您不知道其 ID)。您还可以在标签的 ID 及其数据上创建数字签名,而不是使用真实 ID 列表。这样,您就可以查明数据和签名是否在具有不同唯一标识符的标签上使用。但是,仍然可以从您的标签中提取所有数据。因此,您应该意识到这样一个事实,即可以使用专用硬件(例如 Proxmark 等)和现成的标签,攻击者可以将唯一标识符更改为您的标签 id 的值。所以这当然不是完美的克隆保护。
您可以使用提供通信加密和基于共享密钥的访问控制的非接触式智能卡/标签(例如 MIFARE DESFire)。通过这种方法,您可以将不希望攻击者克隆的数据存储在受密钥保护的内存区域中。但是,如果您希望能够从应用程序内读取该数据(即没有直接与卡通信的在线后端),则需要存储密钥以访问应用程序内的内存区域。最后,离线场景下(即存储在应用程序中的密钥),攻击者可能能够提取该密钥并使用它来克隆标签。
您可以使用包含秘密非对称密钥并提供使用该密钥签署加密质询的命令的标签/智能卡。在这种情况下,为了验证标签是否真实,您可以向标签请求此类签名以进行随机质询,并根据标签相应的公钥验证签名。这肯定是最安全的解决方案,因为您不需要在应用程序中存储任何共享秘密。提供此类功能的唯一现成的 NFC 标签解决方案(据我目前所知)似乎是 Inside Secure 的 VaultIC。尽管您可以根据非接触式智能卡(例如 Java 卡)的非对称加密功能自行创建一个。
请注意,对于上述所有克隆保护方案,您必须创建一个应用程序来检查标签是真实的还是克隆的。默认情况下,NFC 手机仅使用 (1) 中的信息,因此不执行任何此类检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)