在Android上使用主密钥进行Mifare Desfire对称身份验证

时间:2016-12-21 22:40:44

标签: android authentication nfc mifare encryption-symmetric

我想使用Mifare Desfire芯片进行产品认证,芯片将嵌入到产品中。因此,我正在寻找一种NFC解决方案,使得克隆芯片几乎不可能(或尽可能地难以实现)。

我使用Desfire时想到的当前解决方案是使用支持的对称身份验证来拥有芯片的内存锁定部分,我们将存储产品信息。然后我们将创建多样化的密钥,使用主密钥,芯片的UID和一些元数据,并使用该多样化密钥进行对称认证(可以找到有关它的更多信息here

现在,问题在于对称身份验证必须在Android应用程序上完成,这意味着我们必须将主密钥存储在Android应用程序上,或者通过网络将其发送到应用程序的潜在恶意版本。所以我想知道是否有人建议如何保护主密钥或完全不同的身份验证解决方案,以防止使用Mifare Desfire或其他类似的NFC芯片进行芯片克隆。

2 个答案:

答案 0 :(得分:0)

主密钥绝对没有办法在应用程序中安全。

相反,只使用您的应用程序将使用密钥加密的收到的随机数发送到您的服务器,并使用您的服务器中的主密钥实现该过程以解码此信息,以便您可以使用新的随机数返回响应加密到您的应用程序。

经过身份验证后,您还可以发送和接收要写入的信息。

通过这种方式,您可以确保您的密钥和您处理的信息不会泄露给任何人。

<强>更新

由于您使用的是Android,请相信我,您将需要此库,以便您可以在服务器中进行验证而不会出现0x1C错误(ILLEGAL COMMAND)。当身份验证中的步骤2延迟超过100毫秒时,会发生此错误。

https://gist.github.com/Thorbear/f7c48e90d3e71bde13cb

希望这有助于解决此问题的任何人

答案 1 :(得分:0)

您需要访问安全元素。根据您的使用情况,您可以使用外部(如在USB中)安全元件加密狗。