NFC标签的密码保护与唯一标识符

3
我想要将数据写入NFC标签,以便在读取时能够确认是我写的。我可以将标签永久设为只读,但这只能防止对该特定标签的写入。恶意操作者可以复制数据并冒充标签。如何防止这种情况呢?
我可以使用我的私钥加密数据,然后用我的公钥签名,这意味着它肯定来自我且只有我能读取。但这是否可以阻止某人简单地复制数据并冒充标签呢?
是否有一些针对每个标签都独有且无法更改的唯一内容,可以被读取和记录,并且对所有标签永久有效?我可以记录这些内容以确保标签是我编写的。
2个回答

3
大多数NFC标签都有一个硬件UID,它是唯一的。例如,Mifare Ultralight标签有一个7字节的UID,用于唯一标识该标签。可以将其视为网络卡的MAC地址。
这个UID是只读的,在制造后无法更改。如果您阅读特定标签的规格,您可以看到它的位置。对于Mifare Ultralight,这7个字节位于前几页。请参见此处的规格:

http://www.nxp.com/acrobat_download2/other/identification/M028634_MF0ICU1_Functional_Spec_V3.4.pdf

有一个免费的安卓应用叫做NFC Tag Info,我用它来查看标签的页面结构,以及找到标签的UID: https://market.android.com/details?id=at.mroland.android.apps.nfctaginfo


如果您希望Android设备本身成为标签,那么这个解决方案将不起作用,因为UID会随每次读取而改变。 - neufuture
您提供的NXP页面链接已经失效,请问能否更新一下? - Ingmar

1

有人仍然可以冒充自定义卡上的UID。如果您制作了自己的自定义卡,您可以包含某种验证算法,以便您可以发送随机数据并从中获得预期的响应。但是标准标签非常容易被冒充。


嗨,本,谢谢。当你说“制作自己的定制卡”时,你是指实际创建硬件标签吗?还是仅仅编写一个自定义算法到卡上。如果是后者,那么有什么能阻止别人读取该算法并在他们的标签上复制它呢? - Ralph Yozzo
不,我确实是指自己创建硬件标签。这会使事情变得更加复杂。大多数(如果不是全部)我见过的标签只是保存数据,并且可以被复制。当然,要想精确地复制一个标签,他们需要自己定制一个可编程标签。 - Ben Ward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接