各位,
我们使用cc2642这款mcu,协议栈版本为:simplelink_cc13x2_26x2_sdk_3_10_00_53
现在想利用aes_128来计算cmac,关于aes已经使用了AESECB来对数据进行了加密,请问2642里边有没有计算cmac的相关例程
Viki Shi:
所有支持的加密例程请看这边:dev.ti.com/…/node
user6074090:
回复 Viki Shi:
你好,准确的来说,我们现在并不是要进行加密,因为数据已经利用AES_ECB进行加密过了,现在只是想计算一下cmac。
有关cmac的解释如下: MessageAuthentication Code(MAC)是一种保障信息完整性和认证的密码学方法,其中CMAC的全称是Cypher-Based Message Authentication Code,基于AES等对称加密方式实现消息认证。通信双方需要共享一个对称密钥,由发送方生成一个MAC值,附在消息后面,接收方计算收到消息的MAC,如果和收到的MAC一致,则说明没有被篡改,并且能确认发送方一定拥有相同的密钥,即认证身份。
美国国家标准与技术研究院NIST推荐了一种CMAC计算方式,可以避免CBC-MAC带来的缺点,编号为800-3B,文档可以从其官网上下载。该算法通过MAC密钥生成k1和k2两个子密钥,并规定了数据位填充的规则,可以通过AES-128、AES-192、AES-256三种模式进行MAC计算,支持所有整数字节的数据以及长度为0的输入。下图为MAC算法处理不需要位填充和需要位填充的两种情况。本文介绍AES-128生成的CMAC实现在协议栈里边我们也找到了关于cmac的.c与,h文件,但是不知道这个文件是不是可以直接调用。
文件路径:C:\BLB1_CC2642\simplelink_cc13x2_26x2_sdk_3_10_00_53\source\third_party\openthread\third_party\mbedtls\repo\include\mbedtls\cmac.h
C:\BLB1_CC2642\simplelink_cc13x2_26x2_sdk_3_10_00_53\source\third_party\openthread\third_party\mbedtls\repo\library\cmac.c
Viki Shi:
回复 user6074090:
推荐看一下这个:e2e.ti.com/…/606901 如果有加密方面的问题建议直接到英文E2E发布帖子
user6074090:
回复 Viki Shi:
Viki Shi:你好我在您推荐的加密例程里边找到了AESCCM的加密方式,其实就是CBC_MAC,那有没有这样加密方式对应的参考例程,因为这个里边需要写入的参数比较多;
operation.key = &cryptoKey; operation.aad = aad; operation.aadLength = sizeof(aad); operation.input = plaintext; operation.output = ciphertext; operation.inputLength = sizeof(plaintext); operation.nonce = nonce; operation.nonceLength = sizeof(nonce); operation.mac = mac; operation.macLength = sizeof(mac);
Viki Shi:
回复 user6074090:
所有提供的加密方式例程都在之前发的那个链接里