基于AES的CMAC算法、MAC、Hash、数字签名之间的关系

文章讲述了基于AES的CMAC算法,用于消息数据认证,确保数据未被篡改。同时介绍了Hash的概念,它是不可逆的,常用于文件的数字签名。数字签名通过Hash值加密和解密来验证文件真实性,使用非对称密钥,而CMAC则使用对称密钥进行加密比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是基于AES的CMAC算法?

采用AES加密算法,使用密钥K,对明文P进行加密,得到的密文C,作为明文P的认证码,和明文P一起传输给接收方。接收方收到后,再使用自己的密钥,对明文再做一次AES加密,生成新的认证码,与接收到的发送方的认证码进行对比验证。如果相等,说明明文没有被篡改,接收方就可以接收明文并处理;如果不相等,说明明文被篡改,数据不安全,则丢弃!

这就是基于AES的CMAC算法,多用于消息数据的正确性认证,生成的认证码,叫作message authentication code,消息认证码,简称MAC。

什么是Hash?

简单来说,把任意长度的输入数据通过散列算法变换成固定长度的输出数据(Hash值)。输入值的长度通常比输出值大,这是一种压缩映射。不同的输入可能会有相同的Hash值,所以你无法通过Hash值来逆向解出输入值。所以Hash值不能用在数据的加解密上,因为不可逆!

那可以用在哪呢?可以用在文件的数字签名上。

什么是签名?

当我们在手写一份文件或合同时,为了确认这份文件的正确性,会签上自己的姓名。别人拿到这份文件,想确认其真伪,不需要辨别里面的内容的真实性,只需要鉴定文件签名的真实性即可。签名正确,即代表文件真实。签名是假的,那么这份文件就是假的。

同样地,数字签名是互联网中用来替代人工签名的方式。通过对互联网中文件进行数字签名,来确保其真实性。具体操作如下:

  1. 发送者按双方约定的Hash算法对报文或文件进行计算,得到一个固定长度的Hash值。
  2. 然后用自己的密钥对这个Hash值进行加密,得到的密文就是签名。签名连同明文一起,发送给接收者。
  3. 接收者收到后,首先对明文进行Hash值计算,然后再用自己的密钥对密文部分进行解密,得到发送者的Hash值。两个Hash值进行比较,如果相等,说明数据为真。

以上可以看出:

  • 数字签名和CMAC算法很相似,都是为了实现明文的真实性,防止被篡改。
  • 数字签名是由明文的Hash值加密得到的密文。
  • 数字签名和CMAC不同的是:CMAC是对MAC值进行比较,而数字签名是对Hash值进行比较。
  • 由于CMAC里不管是发送方还是接收方,都只用到了加密,没有用到解密,所以它一般采用对称密钥。而数字签名中发送方用到加密,接收方用到解密,所以它一般采用非对称密钥。发送方保管的是私钥,接收方使用的是公钥。

详细介绍了AES-CMAC算法的原理与实现,附有C语言写的样例程序。 以下是原文的introduction: The National Institute of Standards and Technology (NIST) has recently specified the Cipher-based Message Authentication Code(CMAC). CMAC [NIST-CMAC] is a keyed hash function that is based on a symmetric key block cipher, such as the Advanced Encryption Standard [NIST-AES]. CMAC is equivalent to the One-Key CBC MAC1 (OMAC1) submitted by Iwata and Kurosawa [OMAC1a, OMAC1b]. OMAC1 is an improvement of the eXtended Cipher Block Chaining mode (XCBC) submitted by Black and Rogaway [XCBCa, XCBCb], which itself is an improvement of the basic Cipher Block Chaining-Message Authentication Code (CBC-MAC). XCBC efficiently addresses the security deficiencies of CBC-MAC, and OMAC1 efficiently reduces the key size of XCBC. AES-CMAC provides stronger assurance of data integrity than a checksum or an error-detecting code. The verification of a checksum or an error-detecting code detects only accidental modifications of the data, while CMAC is designed to detect intentional, unauthorized modifications of the data, as well as accidental modifications. AES-CMAC achieves a security goal similar to that of HMAC [RFC-HMAC]. Since AES-CMAC is based on a symmetric key block cipher, AES, and HMAC is based on a hash function, such as SHA-1, AES-CMAC is appropriate for information systems in which AES is more readily available than a hash function. This memo specifies the authentication algorithm based on CMAC with AES-128. This new authentication algorithm is named AES-CMAC.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车通信技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值