9

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

提前原谅重写圣经,但我无法总结更多。

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

它带有 AES 加密、CMAC 协议和 3-pass-authentication 系统,这就是我开始需要帮助的时候。

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 才能正常工作,在每一步都应用会话密钥。如果我发布了野蛮人的错误,请纠正我)

/*********/

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

PSS:我完全不知道主密钥和会话密钥保存在 Tag 端的什么位置。是否需要将它们与主 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

4

2 回答 2

4

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

我的建议是从初始身份验证开始简单地追溯他们的个性化示例,然后逐步达到您想要实现的目标。也可以使用这些示例来测试加密和 apdu 命令的构建。大部分工作并不难,但有时 NXP 文档可能会有点混乱。

一个小提示,如果你正在使用 python,在github上有一些可用的代码,你可以重用它们。

于 2020-04-07T09:39:04.450 回答
2

对于 iOS,我正在开发一个用于 DNA 通信的库 NfcDnaKit:

https://github.com/johnnyb/nfc-dna-kit

于 2021-07-17T17:13:11.363 回答