news 2026/6/11 15:25:57

NTAG 424 DNA安全消息机制:AES与LRP双模式实战解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NTAG 424 DNA安全消息机制:AES与LRP双模式实战解析

1. 项目概述与核心价值

在物联网设备、智能门禁、产品防伪这些与我们日常工作生活紧密相连的场景里,NFC技术因其便捷的“碰一碰”交互方式而广泛应用。但便利的背后,安全是基石。一次非接触式的数据交换,如何确保传输的命令不被窃听、数据不被篡改、身份不被冒充?这正是安全消息机制要解决的核心问题。NXP的NTAG 424 DNA芯片,作为一款面向高安全需求的NFC标签IC,其内置的AES与LRP双模式安全消息机制,为我们提供了一个从算法到协议层的完整安全通信范例。理解它,不仅是读懂一份芯片手册,更是掌握在资源受限的嵌入式环境中构建可靠安全通信的实战思路。

简单来说,这套机制就像给设备间的对话加了两道锁:第一道是标准的AES-128加密锁,广泛通用且高效;第二道则是更高级的LRP(泄漏弹性原语)加密锁,它在AES的基础上做了“装甲加固”,专门防御那些通过监测芯片功耗、电磁辐射等物理侧信道来窃取密钥的攻击。芯片支持在首次通信时,根据读写器(PCD)和标签(PICC,即芯片)的协商,动态选择使用哪把“锁”来保护后续的所有对话。整个过程涉及双向身份认证、动态会话密钥生成、以及防重放攻击的计数器管理,是一套设计精巧的轻量级安全协议。

对于嵌入式开发者、物联网安全架构师或是智能硬件产品经理而言,深入理解NTAG 424 DNA的这套机制,意味着你能更自信地评估产品的安全边界,知道在什么场景下该启用哪种安全模式,也能在遇到通信异常时,快速定位问题是出在密钥协商、MAC校验还是加密解密环节。接下来,我将结合手册内容与实际开发中的经验,为你拆解这套机制的设计思路、实现细节以及那些手册上不会写的“坑”。

2. 安全消息机制的整体架构与设计哲学

2.1 双模式安全:AES与LRP的定位与选择

NTAG 424 DNA的安全消息机制并非单一方案,而是提供了AES和LRP两种模式。这并非简单的功能堆砌,而是针对不同安全威胁模型的精准设计。

AES模式基于我们熟知的AES-128算法,采用CBC加密模式和CMAC认证。这是行业内的“标准答案”,经过了长时间、广泛的分析与验证,其密码学强度是公认的。它的优势在于实现相对简单、计算资源消耗可预测,并且有大量成熟的软件和硬件库支持。对于大多数面临传统网络攻击(如窃听、重放)的应用场景,AES模式完全足够。

LRP模式则代表了对抗物理层攻击的前沿思路。它并非发明了一种新的密码算法,而是用AES作为基础构件,构建了一个名为“泄漏弹性原语”的防护结构。你可以把它想象成用AES砖块搭建了一座带有迷宫和陷阱的城堡。攻击者即使能探测到某一块砖(一次AES运算)的微弱物理信号(如功耗),也难以据此推断出整个城堡的结构(即密钥)。LRP模式的核心价值在于提升了“实现安全性”,使得针对芯片的侧信道攻击和故障注入攻击的难度和成本急剧上升。

那么,在产品中如何选择?手册指出,LRP模式可以通过SetConfiguration命令永久启用,且一旦启用无法回退到AES模式。这是一个关键的产品决策点。我的经验是:

  • 选择AES模式:如果你的产品面临的主要是逻辑层面的攻击,或者对功耗、通信时延有极致要求,且生产环境可控(芯片不易被攻击者物理获取并进行长时间分析),AES模式是稳妥高效的选择。
  • 选择LRP模式:如果你的产品用于高价值资产认证(如奢侈品防伪、支付凭证)、高安全门禁,或者产品本身可能暴露在不受控的物理环境中(例如共享设备),那么启用LRP模式是值得的。它相当于为你的安全增加了一道物理防护栏。需要注意的是,读写器端也必须实现对应的LRP协议栈,这会带来一定的开发复杂度。

2.2 安全会话的生命周期:认证、通信与终止

一次安全通信会话的建立与维护,遵循一个清晰的生命周期,理解这个周期是调试一切相关问题的基础。

  1. 未认证状态:芯片上电后的初始状态。此时,只能执行少数不涉及敏感数据的命令(如读取UID),或进行首次认证(First Authentication)。
  2. 首次认证:这是建立安全会话的起点。无论是AuthenticateEV2First(AES)还是AuthenticateLRPFirst,其核心都是一个“三次传递认证”过程。读写器(PCD)和标签(PICC)通过交换随机数(RndA, RndB),并利用共享的密钥(KeyNo指定)进行加密验证,来向彼此证明“我知道密钥”。这个过程是后续一切安全通信的信任基石。
  3. 会话密钥生成:认证成功后,双方会利用刚才交换的随机数(RndA, RndB)和那个共享的密钥,通过一个密钥派生函数(KDF)动态生成两个会话密钥:SesAuthENCKey用于加密/解密数据,SesAuthMACKey用于计算消息认证码(MAC)。这意味着每次认证建立的会话密钥都是不同的,实现了“一次一密”,即使某次会话的密钥被破解,也不会危及其他会话。
  4. 已认证状态:认证成功后,芯片进入此状态。此时,可以执行需要安全消息保护的命令,如读写受保护的数据区。在此状态下,还可以执行“非首次认证”(Non-First Authentication),用于在不中断当前会话的情况下切换到另一个密钥进行认证(例如从应用密钥切换到管理员密钥)。
  5. 安全通信:在已认证状态下,命令可以根据配置以三种模式通信:
    • 明文模式:数据不加密也不加MAC。但命令计数器仍在递增,用于后续检测命令序列是否被篡改或删除。
    • MAC模式:数据明文传输,但附加一个基于SesAuthMACKey和计数器计算的MAC值,用于验证数据的完整性和来源真实性。
    • 全模式:数据先加密(使用SesAuthENCKey),再为加密后的数据计算并附加MAC。这同时提供了机密性和完整性保护。
  6. 会话终止:当发生MAC校验失败、加密解密错误、或执行了LeaveAuthenticate命令后,会话密钥被清除,芯片回到未认证状态。

实操心得:务必理解“交易标识符”和“命令计数器”在整个生命周期中的作用。交易标识符在首次认证时由芯片随机生成,并在一个会话内保持不变。它像一个会话ID,将所有属于本次“交易”的通信绑定在一起,防止多个读写器与同一个标签的会话交叉混淆。命令计数器则对每条命令进行递增计数,并参与MAC和加密IV的计算。它的核心作用是防御重放攻击——攻击者即使截获了之前有效的加密命令包,因为计数器值已经变化,重新发送也会因MAC校验失败而被拒绝。在调试时,如果遇到INTEGRITY_ERROR,除了检查密钥,一定要同步检查PCD和PICC两端的命令计数器值是否一致。

2.3 认证失败防护机制:从延迟到锁定

手册中一个非常实用的安全增强特性是认证失败计数器TotFailCtr。这不是一个简单的“试错三次就锁死”的机制,而是一个有弹性的防御策略。

  • 计数与延迟:每次认证失败(如密钥错误),TotFailCtr会增加。当连续失败达到一定次数(可配置),芯片不会立即永久锁定,而是开始用AUTHENTICATION_DELAY响应来“慢处理”后续的认证请求。每次延迟大约是最长帧等待时间(FWT)的65%。随着失败次数增加,总延迟时间会累加到一个最大值。这有效地增加了暴力破解的时间成本。
  • 锁定与恢复:当TotFailCtr达到上限TotFailCtrLimit时,对应的密钥将被锁定,无法再用于认证。这里有一个关键点:如果被锁定的不是AppMasterKey(应用主密钥),那么可以通过使用AppMasterKey成功认证后,执行ChangeKey命令来重置(解锁)那个被锁定的密钥。但如果AppMasterKey本身被锁死,则无法恢复。这强调了AppMasterKey的最高权限和需要被格外保护的重要性。
  • 成功复位:每次成功的AES认证,会使TotFailCtr减少TotFailCtrDecr(可配置)。这为合法用户的偶尔输错提供了容错空间。

这个机制的设计非常巧妙,它在不牺牲合法用户体验(允许偶尔输错)的前提下,极大地提高了暴力破解和自动化攻击的门槛。在产品开发中,你需要根据应用场景合理配置TotFailCtrLimitTotFailCtrDecr。对于交互频繁的消费级应用,可以设置较大的TotFailCtrDecr和适中的TotFailCtrLimit;对于高安全场景,则可以减少TotFailCtrDecr,让失败惩罚更持久。

3. AES安全消息模式深度解析

3.1 认证协议详解:三次传递的信任建立

AuthenticateEV2First协议是AES安全消息的握手过程。它遵循典型的三次传递(Three-Pass)认证模式,但细节决定安全性。

第一部分:PICC发起挑战

  1. PCD发送AuthenticateEV2First命令,指定要使用的密钥编号(KeyNo)。
  2. PICC检查密钥是否存在。如果密钥不存在,直接拒绝。
  3. PICC生成一个16字节的随机数RndB,并使用指定的密钥Kx,以CBC模式(初始化向量IV为全0)加密RndB
  4. PICC重置命令计数器CmdCtr为0,并生成一个4字节的随机交易标识符TI
  5. PICC将加密后的E(Kx, RndB)以及TI返回给PCD。

第二部分:PCD回应挑战并发出挑战

  1. PCD收到响应后,用相同的密钥Kx解密得到RndB'
  2. PCD自己也生成一个16字节的随机数RndA
  3. PCD将RndARndB'(注意,这里将RndB'循环左移一个字节)连接起来,再次用密钥Kx加密,得到E(Kx, RndA || RndB'<<<1)
  4. PCD将此密文作为AuthenticateEV2First - Part2命令的数据发送给PICC。

第三部分:PICC确认并完成握手

  1. PICC解密第二部分的数据,得到RndARndB'
  2. PICC验证收到的RndB'是否与自己最初生成并左移一位后的RndB一致。如果不一致,认证失败。
  3. 如果一致,PICC将收到的RndA循环左移一个字节,得到RndA'
  4. PICC生成会话密钥SesAuthENCKeySesAuthMACKey(具体方法见3.3节)。
  5. PICC返回RndA'TI以及双方的能力参数(PDcap2和PCDcap2)给PCD。
  6. PCD验证RndA'是否与自己生成的RndA左移一位后一致。如果一致,PCD也使用相同的算法生成会话密钥。至此,双向认证完成,安全会话建立。

关键点解析:为什么要有RndB' <<< 1RndA' <<< 1这个“循环左移”操作?这是一个经典的防重放攻击设计。假设攻击者窃听了第一次认证的全过程,他手里有E(Kx, RndB)E(Kx, RndA || RndB'<<<1)。如果他试图冒充PCD发起第二次认证,他必须能构造出E(Kx, RndA_new || RndB_new'<<<1),但他无法知道PICC新生成的RndB_new,因此无法构造有效的第二部分响应。这个简单的移位操作,确保了每次认证的挑战-响应都是独一无二且不可预测的。

3.2 会话密钥生成:基于NIST SP 800-108的密钥派生

认证成功后生成的会话密钥,并非直接使用预共享的密钥Kx,而是通过一个密钥派生函数(KDF)从KxRndARndB衍生出来。这遵循NIST SP 800-108标准,确保了密钥的独立性和前向安全性。

具体计算过程如下:

  1. 构造两个32字节的会话向量SV1SV2。它们的结构是固定的标签+计数器+长度+上下文。
    • 标签:SV1A5 5A(表示加密密钥),SV25A A5(表示MAC密钥)。
    • 计数器:固定为00 01(因为只生成一个128位密钥)。
    • 长度:固定为00 80(表示生成128位密钥)。
    • 上下文:由RndARndB的特定字节通过异或操作混合而成。具体为:RndA[15..14] || (RndA[13..8] XOR RndB[15..10]) || RndB[9..0] || RndA[7..0]。这种混合确保了RndARndB都对最终密钥有贡献。
  2. 使用CMAC算法作为伪随机函数(PRF),以预共享密钥Kx为密钥,分别对SV1SV2进行计算。
    • SesAuthENCKey = CMAC(Kx, SV1)
    • SesAuthMACKey = CMAC(Kx, SV2)

这样,我们就得到了两个独立的128位会话密钥。由于RndARndB每次认证都不同,因此每次会话的密钥也不同。

3.3 通信模式实战:明文、MAC与全模式

在已认证状态下,命令的通信模式决定了其安全等级。

1. 明文模式

  • 数据流:命令和响应数据(CmdDataRespData)以明文形式传输。
  • 安全作用:看似不安全,但命令计数器CmdCtr仍在递增。它的妙用在于,如果后续有一个使用MAC模式或全模式的关键命令(例如CommitTransaction),攻击者如果在此前插入或删除了一个明文命令,会导致PCD和PICC两端的CmdCtr不同步,从而使那个关键命令的MAC校验失败。因此,明文模式可用于传输不敏感但需保证顺序的数据。

2. MAC模式

  • 作用:保证数据的完整性真实性。接收方可以确认数据在传输中未被篡改,且确实来自拥有正确SesAuthMACKey的发送方。
  • MAC计算范围
    • 命令MAC:计算覆盖命令码+当前CmdCtr+TI+命令头(如有)+命令数据(如有)。注意,CLA, P1, P2, Lc, Le 这些ISO 7816-4的头部字段不参与MAC计算,只有芯片自定义的CmdHeaderCmdData参与。
    • 响应MAC:计算覆盖返回码RC+递增后的CmdCtr+TI+响应数据(如有)
  • 传输:计算出的16字节CMAC,被截断为8字节(取偶数位字节),附加在明文数据后一起发送。
  • 验证:接收方用相同的密钥和输入数据重新计算MAC,并与收到的MAC比较。不一致则返回INTEGRITY_ERROR,并立即终止认证会话。

3. 全模式

  • 作用:在MAC模式的基础上,额外提供机密性保护。
  • 流程
    1. 对原始数据(CmdDataRespData)进行ISO/IEC 9797-1 Padding Method 2填充(先加0x80,再加0x00至16字节整数倍)。
    2. 使用SesAuthENCKey和特定的初始化向量(IV)进行CBC模式加密。
    3. 加密后的数据计算MAC(计算方式同MAC模式)。
    4. 将加密后的数据和MAC一起发送。
  • 初始化向量:全模式的IV是动态的,由SesAuthENCKey加密一个特定结构生成:IV = AES-ECB(SesAuthENCKey, 标签 || TI || CmdCtr || 8字节0)。命令和响应的标签不同(A55A5AA5),这确保了即使TI和CmdCtr相同,命令和响应的IV也不同,增强了安全性。

注意事项:手册特别指出,在认证命令(AuthenticateEV2FirstAuthenticateEV2NonFirst)的执行过程中,不应用任何填充。这是因为认证协议本身定义了固定的数据长度。而在其他全模式命令中,即使数据长度恰好是16字节的倍数,也必须添加一个完整的填充块(0x80后面跟15个0x00)。这是许多开发者在实现时容易出错的地方,错误的填充会导致PICC返回INTEGRITY_ERROR

4. LRP安全消息模式的核心差异与实现要点

LRP模式的目标是在不改变高级协议流程(认证、密钥派生、通信模式)的前提下,替换底层的密码学原语,以抵御侧信道攻击。因此,对于开发者而言,需要关注的是那些“不一样”的地方。

4.1 LRP认证与模式协商

LRP模式的认证命令为AuthenticateLRPFirstAuthenticateLRPNonFirst,其命令码与AES模式相同(0x71)。区分两者的关键在于PCDCap2.1字节的第1位(bit 1)。

  • 模式协商流程
    1. PCD在发送AuthenticateFirst命令时,通过PCDCap2.1表明意愿:0x00表示请求AES模式,0x02表示请求LRP模式。
    2. PICC检查自身的配置(通过SetConfiguration设置的PDCap2.1bit 1)。
      • 如果PICC配置为AES模式(bit 1 = 0):
        • 收到PCD的AES请求(0x00):接受,按AES流程处理。
        • 收到PCD的LRP请求(0x02):也接受,但返回的是17字节的AES认证响应(无AuthMode字节)。这给了PCD一个“回退”到AES模式的机会。
      • 如果PICC配置为LRP模式(bit 1 = 1):
        • 收到PCD的LRP请求(0x02):接受,按LRP流程处理,返回18字节的响应(包含AuthMode=0x01)。
        • 收到PCD的AES请求(0x00):拒绝,返回PERMISSION_DENIED

这个设计体现了兼容性与安全强制的平衡。当PICC被强制配置为LRP模式后,它将只接受LRP认证,确保了最高安全级别。而在AES模式下,PICC则更灵活,可以接受LRP请求并回退。

4.2 LRP的加密与MAC计算

这是LRP与AES最根本的不同。LRP并非直接使用AES-CBC和AES-CMAC,而是使用基于AES构建的LRICB(泄漏弹性索引码本)和CMAC_LRP结构。

  • 加密/解密:使用ELRP(key, plaintext)DLRP(key, ciphertext)函数。它们内部维护一个32位的加密计数器EncCtr每次加密或解密一个16字节的数据块,EncCtr都会递增。这个计数器作为LRICB操作的输入向量,确保了即使加密相同的明文,每次产生的密文也不同(类似于CBC,但机制更复杂以对抗泄漏)。EncCtr在LRP认证开始时重置,并在会话中持续递增,不会溢出(受支持文件大小限制)。

  • MAC计算:使用MACLRP(key, message) = CMAC_LRP(4, key, Len(message), message)。这里的4是一个常量参数,key是LRP上下文下的密钥状态(包含子密钥等)。最终的MAC同样被截断为8字节(MACtLRP)。

对开发者的影响:这意味着你不能直接使用标准的AES库(如OpenSSL的AES-CBC, AES-CMAC)来实现与LRP模式芯片的通信。你必须实现或集成NXP提供的或符合[10]号参考文献(即LRP规范)的密码学库。这通常是LRP模式推广的主要障碍——增加了读写器端的软件复杂性和维护成本。

4.3 密钥派生与TI/CmdCtr处理

好消息是,在更高层的协议层面,LRP与AES保持一致。

  • 交易标识符命令计数器的作用和处理方式与AES模式完全相同。TI用于绑定交易,CmdCtr用于防重放并参与MAC计算。
  • 会话密钥的生成流程和输入RndARndB, 标签, 计数器, 长度, 上下文)也完全相同。唯一的区别在于,用于派生密钥的伪随机函数PRF,在LRP模式下是CMAC_LRP,而不是标准的CMAC。但密钥派生函数(KDF)的结构(NIST SP 800-108)不变。

这种设计极大地降低了协议层的实现差异。一旦你完成了底层的LRP加密和MAC原语,上层的协议状态机、数据包组装解析、TI/CmdCtr管理都可以与AES模式复用。

5. 开发实战:从配置到调试的完整指南

5.1 芯片初始配置与密钥管理

在开始安全通信前,必须对芯片进行正确配置。这通常通过工厂初始化或个性化流程完成。

  1. 设置安全模式:使用SetConfiguration命令。这是最重要的决策之一。
    • 配置PDCap2.1的bit 1:0为AES模式,1为LRP模式。注意:设为LRP模式后不可逆!
    • 配置认证失败计数器参数:TotFailCtrLimit(失败上限)和TotFailCtrDecr(成功认证后的递减值)。根据你的安全策略设定。
  2. 密钥注入:NTAG 424 DNA支持多个密钥槽。通常至少需要配置:
    • AppMasterKey:应用主密钥,权限最高,可用于解锁其他被TotFailCtr锁定的密钥。务必安全存储。
    • 一个或多个应用密钥:用于日常操作的认证。可以使用ChangeKey命令(需用AppMasterKey认证后)来更新它们。
    • OriginalityKey:用于产品真伪验证的密钥。LRP模式下的真伪验证使用AuthenticateLRPNonFirst命令。
  3. 文件与访问权限配置:使用CreateStdDataFileCreateValueFile等命令创建数据存储结构,并为每个文件设置读、写、增减值所需的密钥编号。确保安全操作(写、增减值)绑定到正确的应用密钥。

避坑指南:密钥的版本号。ChangeKey命令在更新密钥时,会同时更新一个密钥版本号。在后续的认证中,PCD需要知道当前密钥的版本号才能成功计算会话密钥。一种常见的做法是将密钥版本号存储在芯片的某个可读区域(例如一个未受保护的文件),或者在PCD端与芯片UID关联存储。否则,更新密钥后,旧的PCD固件将无法再认证。

5.2 PCD端协议栈实现步骤

在读写器(PCD)端,你需要实现一个状态机来处理与NTAG 424 DNA的安全通信。

  1. 选择模式与发起认证
    • 根据产品需求,决定使用AES还是LRP模式。
    • 构造AuthenticateFirst命令,设置正确的PCDCap2.1
    • 处理PICC的响应。如果请求LRP但收到17字节响应(无AuthMode),说明芯片是AES模式,应切换回AES流程。如果请求AES但收到PERMISSION_DENIED,说明芯片是LRP模式且不可回退,应报错。
  2. 实现认证协议
    • AES模式:实现标准的AES-128 CBC加密/解密和CMAC计算。注意认证过程中的“循环左移”操作和全0 IV。
    • LRP模式:集成LRP密码库,实现LRICB加密/解密和CMAC_LRP计算。确保EncCtr的正确初始化和递增。
  3. 生成会话密钥:根据收到的RndARndB(解密并移位后),按照KDF规范生成SesAuthENCKeySesAuthMACKey务必验证PICC返回的RndA',这是认证成功的最终确认。
  4. 安全通信
    • 维护好TICmdCtrCmdCtr在发送命令前用于计算命令MAC/IV,在收到响应后递增(用于验证响应MAC)。
    • 根据命令要求,选择明文、MAC或全模式构造数据帧。
    • 对于MAC/全模式:严格按照手册规定的数据顺序(命令码、CmdCtr、TI、数据)计算MAC。字节序(LSB first)要特别注意。
    • 对于全模式:正确生成动态IV,并正确应用Padding。
  5. 错误处理
    • INTEGRITY_ERROR要敏感。这通常意味着MAC校验失败、Padding错误或CmdCtr不同步。应终止当前会话,重新进行认证。
    • 处理AUTHENTICATION_DELAY。当收到此响应时,应等待指定的时间后再重试认证,并提示用户(如“认证失败,请稍后再试”),而不是盲目快速重试。

5.3 常见问题排查与调试技巧

在实际开发中,你会遇到各种问题。下面是一个快速排查清单:

问题现象可能原因排查步骤
认证失败,返回错误码(非延迟)1. 密钥错误。
2. 密钥版本号不匹配。
3. 芯片未配置该密钥。
4. 密钥已被TotFailCtr锁定。
1. 确认PCD使用的密钥值与芯片中注入的一致。
2. 检查密钥版本号。
3. 使用GetKeyVersion命令确认密钥存在。
4. 尝试用AppMasterKey认证后ChangeKey重置。
认证第一部分成功,第二部分失败1.RndB解密或移位错误。
2. 第二部分命令数据构造错误。
3. 芯片与PCD的PCDCap2/PDCap2能力不匹配。
1. 核对AES解密算法和CBC模式(IV为0)。
2. 确认RndARndB'的连接顺序和移位操作。
3. 检查模式协商流程,确认双方是否就AES/LRP模式达成一致。
MAC校验失败 (INTEGRITY_ERROR)1. 会话密钥生成错误。
2. MAC计算输入数据顺序或内容错误。
3.CmdCtrTI不同步。
4. 全模式下Padding错误。
1. 重新核对KDF计算过程,特别是SV1/SV2的构造。
2. 逐字节对比PCD计算MAC的输入数据与手册规定是否一致。
3. 检查PCD和PICC的CmdCtr值,确认在每条命令后是否同步递增。
4. 确认Padding规则:总是添加0x80,必要时补0x00至16字节倍数。
加密/解密失败1. 错误的会话密钥 (SesAuthENCKey)。
2. 全模式下IV计算错误。
3. LRP模式下EncCtr管理错误。
1. 回溯检查会话密钥生成。
2. 确认IV计算中使用的标签(A55A/5AA5)、TICmdCtr是否正确。
3. 在LRP模式,确保EncCtr在每个16字节块加密/解密后正确递增。
通信一段时间后突然失败1.CmdCtr溢出(达到FFFF)。
2. 会话超时(如果应用层有设置)。
3. 芯片掉电或离开场域。
1. 单次会话中命令数量不应超过65535条。需设计会话管理,在计数器接近上限时重新认证。
2. 检查是否有外部超时机制。
3. NFC通信不稳定,检查天线匹配和场强。

调试建议

  • 日志记录:在PCD端,详细记录每个步骤的中间数据:发送/接收的原始APDU、生成的随机数、计算出的会话密钥、MAC计算前的明文数据、加密前的明文/填充后数据等。出现问题时,对比这些日志与芯片预期值。
  • 使用已知向量测试:如果可能,从NXP获取或与已知正确的参考实现进行交叉测试,使用固定的密钥和随机数,验证每一步的输出是否符合预期。
  • 分阶段验证:先确保明文通信和认证流程通过,再测试MAC模式,最后测试全模式。在AES模式完全稳定后,再移植到LRP模式。

理解并实现NTAG 424 DNA的安全消息机制,是一个将密码学理论付诸嵌入式实践的过程。它要求开发者不仅关注协议流程,更要深究每个密码学操作细节。这份详解希望能为你扫清障碍,当你成功建立起第一条受LRP保护的安全通信时,你会对“安全”二字有更切实的体会。安全无小事,细节定成败。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 15:25:04

别再乱用clear_flag了!LVGL v8中正确管理滚动与滚动条的完整指南

LVGL v8滚动控制终极指南&#xff1a;从误用标志到精准管理在嵌入式UI开发领域&#xff0c;LVGL因其轻量级和高度可定制性成为众多开发者的首选。随着v8版本的发布&#xff0c;滚动系统经历了重大重构&#xff0c;但这也带来了新的学习曲线。许多开发者发现&#xff0c;原本在v…

作者头像 李华
网站建设 2026/6/11 15:21:53

黄金已跌至890,国际金价4086

黄金已跌至890&#xff0c;国际金价4086 打开行情页的第一反应&#xff1a;国内黄金已经到 892 元/克附近&#xff0c;国际现货报 4086 美元/盎司。放在两周前&#xff0c;国际金价还在 4300 往上走&#xff0c;现在一下子掉了两百多美元&#xff0c;国内也从 950 元/克一带滑到…

作者头像 李华
网站建设 2026/6/11 15:21:51

KF 冷启动调校记:gap-fill、max 与 steady_mode

KF 冷启动调校记&#xff1a;gap-fill、max 与 steady_mode 问题&#xff1a;KF 的下沉与冷启动的饥饿 全局 Kalman BDP 估计 kf_x 的值会在真实竞争中下降——这本身是好事。它就是来做这个的&#xff1a;跟踪公平份额、反馈多流压力。坏的是&#xff0c;它下降之后回不来——…

作者头像 李华
网站建设 2026/6/11 15:18:54

社交媒体恶意账号检测:行为策略分析方法与实践

1. 项目概述与核心挑战 在当今社交媒体生态系统中&#xff0c;信息操作&#xff08;Information Operations, IOs&#xff09;已成为影响公众舆论的重要威胁。这类操作通过精心设计的数字和心理战术&#xff0c;系统性地塑造公众认知和行为模式。传统检测方法主要依赖两大信号类…

作者头像 李华
网站建设 2026/6/11 15:18:51

模型编辑技术:精准更新预训练语言模型知识

1. 模型编辑技术概述模型编辑技术是近年来自然语言处理领域兴起的一项重要研究方向&#xff0c;它解决了传统预训练语言模型知识更新困难的核心痛点。想象一下&#xff0c;当你发现ChatGPT回答"现任美国总统是谁"这个问题的答案已经过时&#xff0c;传统做法只能重新…

作者头像 李华
网站建设 2026/6/11 15:18:12

Vin象棋:如何在5分钟内免费打造你的AI象棋大师?

Vin象棋&#xff1a;如何在5分钟内免费打造你的AI象棋大师&#xff1f; 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 还在为象棋水平提升缓慢而烦恼吗&a…

作者头像 李华