使用 NTAG 424 DNA TT 的认证技巧

use*_*441 9 authentication encryption aes nfc cmac

我需要在阅读器和 NFC 标签之间实施身份验证程序,但由于我在这方面的知识有限,我将感谢一些帮助以理解一些概念。

提前原谅我改写圣经,但我无法对其进行更多总结。

有很多标签系列(ICODE、MIFARE、NTAG...),但经过研究,我认为 NTAG 424 DNA 符合我的要求(我主要需要身份验证功能)。

它带有 AES 加密、CMAC 协议和 3 遍身份验证系统,这就是我开始需要帮助的时候。

AES -> 正如我所关心的,这是一种通过排列和映射来加密纯文本的分组密码。是一种对称标准,它不使用主密钥,而是使用会话密钥,它们是从主密钥派生的。(Q01:我不知道这些密钥在标签中的存储位置。密钥必须存储在专门的硬件上,但除了 MIFARE SAM 标签外,没有标签“规格”对此进行说明。)

CMAC -> 它是 CBC-MAC 的一种改变,使动态大小消息的身份验证安全。如果数据不是机密的,那么 MAC 可以用于明文来验证它们,但是为了获得机密性和身份验证功能,必须追求“加密比 mac”。这里也使用了会话密钥,但与加密步骤中使用的密钥不同。(Q02:CMAC的整体观点可能是一个实现验证和保密的协议,这是我的观点,可能是错误的。)

3-pass-protocol -> ISO/IEC 9798-2 规范,其中标签和阅读器相互验证。它还可以使用 MAC 和会话密钥来完成此任务。(Q03:我认为这是所有系统的上层来验证标签和阅读器。“3 pass 协议”在 MAC 中中继才能起作用,如果还需要机密性功能,那么可能会使用 CMAC 而不是单个 MAC .CMAC 需要 AES 才能正常工作,在每个步骤中应用会话密钥。如果我发布了 savages 错误,请纠正我)

/*********/

PS:我知道这是一个与编码相关的论坛,但我肯定可以在这里找到比我更了解密码学的人来回答这个问题。

PSS:我完全不知道标签端的主密钥和会话密钥保存在哪里。它们是否需要与主 NFC 电路一起包含在单独的硬件中?

(目标)

这是为了实现标签和阅读器之间的相互验证过程,使用 NTAG 424 DNA TagTamper 标签。(目标是避免 3º 方复制,以身份验证而不是消息机密性为主要部分)

缺乏密码学知识并试图了解如何在此 NTAG 上使用 AES、CMAC 和相互验证。

(额外信息)

NTAG 424 DNA TT: https ://www.nxp.com/products/identification-security/rfid/nfc-hf/ntag/ntag-for-tags-labels/ntag-424-dna-424-dna-tagtamper-advanced - 可信物联网应用程序的安全和隐私:NTAG424DNA

ISO 9798-2: http ://bcc.portal.gov.bd/sites/default/files/files/bcc.portal.gov.bd/page/adeaf3e5_cc55_4222_8767_f26bcaec3f70/ISO_IEC_9798-2.pdf

3-pass-authentication: https://prezi.com/p/rk6rhd03jjo5/3-pass-mutual-authentication/

密钥存储硬件https : //www.microchip.com/design-centers/security-ics/cryptoauthentication

小智 6

NTAG424 芯片不是特别容易使用,但它们提供了一些很好的功能,可用于不同的安全应用。然而需要注意的一件重要的事情是,虽然它严重依赖于加密,但从实现方面来看,这并不是主要挑战,因为所有 aes 加密、cmac 计算等都已经作为某种包或库提供了在大多数编程语言中。恩智浦甚至在其应用说明中给出了一些示例。例如,在 python 中,您将能够使用应用说明示例之一中所述的AESfrom Crypto.Cipher import AES

我的建议是简单地追溯他们的个性化示例,然后逐步实现您想要实现的目标。还可以使用这些示例来测试 apdu 命令的加密和构建。大多数工作并不难,但有时 NXP 文档可能有点令人困惑。

需要注意的是,如果您使用 python,github上有一些可用的代码,您也许可以重用。