Security RFID卡编程加密安全

Security RFID卡编程加密安全,security,cryptography,nfc,smartcard,rfid,Security,Cryptography,Nfc,Smartcard,Rfid,我正在尝试开发一个自定义的加密安全协议,用于通过RFID智能卡进行身份验证,我在互联网上所能找到的只是关于如何将静态标签写入卡的通用信息。 对于我的项目,我需要读卡器向卡发送质询nonce(固定长度的随机字节),然后卡应该发回使用硬编码密钥(例如,使用AES CBC)或哈希HMAC加密的质询 问题是:如何编程卡来执行这种行为?我可以写代码这样做,但如何“闪光”它的卡。此外,读取器的代码也不是问题(我想将Arduino与读取器模块一起使用) 然后是一个无源芯片,它有足够的能力进行这种计算,或者最好

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

问题是:如何编程卡来执行这种行为?我可以写代码这样做,但如何“闪光”它的卡。此外,读取器的代码也不是问题(我想将Arduino与读取器模块一起使用)


然后是一个无源芯片,它有足够的能力进行这种计算,或者最好是使用有源芯片,考虑到距离只有几厘米,比如在门后?

无源标签做不到这一点。那些只是保留着他们吐出来的序列号

你需要一些更聪明的卡片。您基本上有两种选择:

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

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

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

FeliCa(索尼制造)、ACOS3(ACS-specs制造)还有其他可能性,尽管我对它不太熟悉

2)获取可编程卡

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

BasicCard(ZeitControl),具有双接口。这些卡是用Basic编程的,并且有一些工具包可用(但我也不熟悉)


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

被动标签做不到这一点。那些只是保留着他们吐出来的序列号

你需要一些更聪明的卡片。您基本上有两种选择:

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

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

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

FeliCa
(索尼制造)、ACOS3(ACS-specs制造)还有其他可能性,尽管我对它不太熟悉

2)获取可编程卡

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

BasicCard(ZeitControl),具有双接口。这些卡是用Basic编程的,并且有一些工具包可用(但我也不熟悉)

JavaCard(任何制造商),这是一个标准,但对于小批量产品来说很难找到。不过,一些网上商店似乎有一些。这些卡可以用Java编程(实际上是Java的一个子集)。开发阶段有可用的工具(例如,来自Oracle,甚至作为Eclipse插件)。然后,要在智能卡中加载自定义小程序,您需要熟悉