我需要在NFC标签的读取器之间实施身份验证过程,但是由于我在该领域的知识有限,我将感谢一些帮助,以便理解一些概念。
请原谅以重写圣经,但我无法再对其进行总结。
有很多标签家族(ICODE,MIFARE,NTAG ...),但是经过研究后,我认为NTAG 424 DNA符合我的要求(我主要需要身份验证功能)。
它带有AES加密,CMAC协议和3遍身份验证系统,这是我开始需要帮助的时候。
AES ->我担心这是一种通过置换和映射对纯文本进行加密的分组密码。是对称标准,它不使用主密钥,而是使用会话密钥,因为它们是从主密钥派生的。 (Q01:我不知道该密钥在标签中的存储位置。密钥必须存储在专门的硬件上,但是除了MIFARE SAM标签外,没有标签“ specs”对此加以说明。) >
CMAC ->这是CBC-MAC的一种变体,可确保对动态大小的邮件进行身份验证。如果数据不是机密的,则可以在纯文本上使用MAC进行验证,但是必须获得机密性和身份验证功能,“ Encrypt-than-mac”是必不可少的。这里也使用了会话密钥,但不使用加密步骤中使用的相同密钥。(Q02:CMAC的总体视图可能是实现验证和机密性的协议,这是我的观点,并且可能是错误的。)
3-pass-protocol -> ISO / IEC 9798-2规范,其中标签和读取器相互验证。它也可以使用MAC和会话密钥来完成此任务。(Q03:我认为这是验证标签和读取器的所有系统的上层。MAC中的“ 3 pass协议”中继功能正常且,如果还需要保密功能,则可以使用CMAC代替单个MAC。CMAC需要AES才能起作用,并在每个步骤上应用会话密钥。如果我发布野人错误,请纠正我)
/ ********* /
P.S:我知道这是一个与编码有关的论坛,但是我可以肯定在这里找到比我更了解密码的人来回答这个问题。
P.S.S:我完全不知道主密钥和会话密钥保存在Tag侧。是否需要将它们与NFC主电路一起包括在单独的硬件中?
(目标)
这是使用NTAG 424 DNA TagTamper标签在标签和读取器之间实施相互验证的过程。 (目标是避免3º方复制,而不是消息机密,而将身份验证作为主要部分)
缺乏密码学知识,并且试图了解如何在此NTAG上使用AES,CMAC和相互认证。
(其他信息)
3遍验证: https://prezi.com/p/rk6rhd03jjo5/3-pass-mutual-authentication/
密钥存储硬件:https://www.microchip.com/design-centers/security-ics/cryptoauthentication
答案 0 :(得分:3)
NTAG424芯片并不是特别易于使用,但是它们提供了一些不错的功能,可以用于不同的安全应用程序。但是要注意的一件事是,尽管它很大程度上依赖于加密,但从实现方面来说,这并不是主要挑战,因为所有的aes加密,cmac计算等都已经可以作为某种包或库来使用。在大多数编程语言中。 nxp甚至在其application note中给出了一些示例。例如,在python中,您将能够使用one of the examples of the application note中所述的AES
软件包from Crypto.Cipher import AES
。
我的建议是简单地从初始身份验证开始追溯他们的personalization example,然后按照自己的方式努力达到目标。也可以使用这些示例来测试apdu命令的加密和构建。大部分工作并不艰辛,但有时恩智浦文档可能会有些混乱。
一个小小的注意事项,如果您使用的是python,则github上有一些代码可以重用。
答案 1 :(得分:0)
对于 iOS,我正在开发一个用于 DNA 通信的库,NfcDnaKit: