RFID 卡编程加密安全

Gro*_*ick 1 security cryptography rfid smartcard nfc

我正在尝试开发一个自定义的加密安全协议,用于通过 RFID 智能卡进行身份验证,我在互联网上所能找到的只是关于如何将静态标签写入卡中的通用信息。对于我的项目,我需要读卡器向卡发送挑战随机数(固定长度的随机字节),然后卡应该发回使用硬编码密钥(例如使用 AES CBC)或哈希 HMAC 加密的挑战。

问题是:我如何对卡进行编程以执行此类行为?我可以编写代码来做到这一点,但如何将它“闪存”到卡上。此外,阅读器的代码不是问题(我想使用带有阅读器模块的 Arduino)。

然后有一个无源芯片有足够的功率来进行这种计算,还是最好使用有源芯片,考虑到距离只有几厘米,例如在门后?

dim*_*dim 5

被动标签无法做到这一点。那些只是持有他们吐出的序列号。

你需要一些更智能的卡。您基本上有两种选择:

1) 选择适合您需求的通用卡

您描述的身份验证方案使用非常广泛,并且几乎由所有通用智能卡实现,无论是接触式还是非接触式 (RF) 接口(或两者兼有)。如果你这样做,你不需要用你自己的代码对卡进行编程,你只需要通过发送适当的命令来获取规格并使用你想要的键值初始化卡。实际上,对于这些卡,通常有通用工具可用于初始化它们。简单。

例如,Mifare(由 NXP 开发)使用非常广泛,容易获得,而且卡片很便宜(缺点:它肯定不是有史以来最安全的卡片)。您可以使用 Mifare Classic - 带有专有 NXP 安全协议 -此处的规范(请注意,阅读器必须兼容)或 Mifare UltraLight C此处带有开放的 3DES 加密规范。还有其他变体(例如使用 AES 的 Mifare Plus)。只是不要选择简单的 Mifare Ultralight,它不提供身份验证方法。您会看到,对于所有这些类型的卡,都有一个可以在功能上满足您的需求的内置身份验证方案(它实际上是一种相互身份验证,因此它可以做的比您需要的要多,但很好)。

FeliCa(由 Sony 制造)、ACOS3(由 ACS 制造 -此处的规格)是其他可能性,尽管我对它不太熟悉。

2)获取可编程卡

有一些,但非接触式不是很容易找到,而且它们非常昂贵。您可以查找:

BasicCard (ZeitControl),双界面存在。这些卡在 Basic 中是可编程的,并且有一些可用的套件(但我也不熟悉它)。

JavaCard(任何制造商),这是一个标准,但很难找到小批量的。不过,一些网上商店似乎有一些。这些卡可以用 Java 编程(实际上是 Java 的一个子集)。有一些可用于开发阶段的工具(例如来自 Oracle,甚至是 Eclipse 插件)。然后,为了在智能卡中加载您的自定义小程序,您需要熟悉GlobalPlatform,这是另一个(公开可用的)标准,描述了在智能卡中管理应用程序的方式。不过,这太宽泛了,无法在这里详细描述。网上可以找资源,但这条路绝对是最难的。