AES-CMAC算法解析与C源码实现

5星 · 超过95%的资源 需积分: 50 256 下载量 39 浏览量 更新于2024-11-02 8 收藏 24KB PDF 举报
"AES-CMAC算法c源码解析的pdf文档,由三星电子人员编写,包含C语言实现的源码。" AES-CMAC算法是一种基于高级加密标准(AES)的密文反馈模式消息认证码(CMAC)。这个算法在互联网社区中提供了信息安全性,但并不是互联网标准。NIST(美国国家标准与技术研究所)已经定义了CMAC,它等同于Iwata和Kurosawa提出的One-Key CBC MAC(OMAC1)。AES-CMAC是专门为了128位的AES设计的一种认证算法,旨在为互联网社区提供方便的安全服务。 1. **介绍** AES-CMAC算法是用于验证数据完整性和来源的一种安全机制。它通过结合AES加密算法和CMAC机制,能够有效地检测消息是否在传输过程中被篡改。由于AES的广泛应用和强安全性,AES-CMAC成为了许多应用场景中的首选认证算法。 2. **AES-CMAC的规范** - **基本定义** 在AES-CMAC中,主要涉及到的元素包括密钥(Key)、明文消息(Plaintext)、密文消息(Ciphertext)和MAC值(MAC)。其中,密钥是用于生成和验证MAC的,而MAC值则是对消息进行哈希处理后的结果,用于验证消息的完整性。 - **概述** AES-CMAC的工作流程大致如下: 1. 对较长的消息进行分块,每个块大小与AES的块大小相同(通常为128位)。 2. 使用AES加密算法,对一个特殊的初始向量(通常是所有零的向量)进行加密,生成一个中间密文。 3. 对每个消息块,如果它是第一个块,则直接与中间密文进行异或操作后加密;如果不是第一个块,则先将前一块的加密结果与当前块进行异或操作,再进行加密。 4. 最后,对最后一个消息块处理后,可能会生成超过MAC长度的密文,此时需要对超出部分进行截断,得到最终的MAC值。 源码部分通常会包括初始化函数(用于设置密钥),处理单个块的函数,以及生成和验证MAC值的函数。在实际应用中,开发者需要确保正确地实现了这些函数,以保证算法的安全性。 AES-CMAC算法通过在AES加密基础上构建,为数据传输提供了可靠的保护,防止数据被篡改。其C语言实现的源码对于理解算法工作原理和在实际项目中集成该功能至关重要。提供的PDF文档和源码可以帮助开发者深入理解AES-CMAC,并将其应用于实际的系统中。
2009-11-22 上传
详细介绍了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.