首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES CBC MAC生成

AES CBC MAC生成
EN

Cryptography用户
提问于 2018-06-28 11:19:06
回答 1查看 1.6K关注 0票数 0

我正在与爱特梅尔/微芯片的ATAES132A 32K AES系列EEPROM芯片进行硬件加密和解密。这是我第一次涉足密码学。我一直在阅读数据表,并有一个关于如何生成MAC解密的问题。我在Atmel论坛上问过这个问题,但没有得到任何回应。我想这更像是一个密码学的问题,而不是一个技术性的问题。

根据数据表:

I.3 MAC生成下面的示例演示如何为只需要多达14字节的认证数据的身份验证操作计算完整性MAC。此操作涉及三次通过AES密码引擎;三次使用相同的密钥。如果有超过14个字节的纯身份验证数据,则需要另一个通过AES加密引擎。在CBC模式下,有两次通过AES加密引擎来创建明文MAC。这些块的密码引擎输入标记为B0和B1,输出分别为B‘0和B’1。·B0由以下128位组成:-1字节标志,固定值为b0111 1001。- 12字节Nonce,由Nonce命令生成。-1字节MacCount,一个用于第一代MAC。-2字节长度字段,始终为0x00,仅用于身份验证。·B1是B‘0的异或,具有以下128位:-2字节长度字段,仅验证数据的大小。-仅对14个字节数据进行身份验证。B‘1是明文MAC,必须在发送到系统之前进行加密。在CTR模式下,还有一次通过AES加密引擎来创建用于加密MAC的密钥块。这个块的密码引擎的输入被标记为A0,输出是A‘0。A‘0是作为Auth命令的输出参数发送到系统的MAC。·A0由以下128位组成:-1字节标志-- b0000 0001的固定值。- 12字节Nonce由ATAES132A在Nonce命令期间生成。-1字节MacCount -一个用于第一代MAC。-2字节计数器字段-总是0x00表示A0。·A‘0是XOR,带有明文MAC (B’1)并发送到系统。输入完整MACs的8月,计数器,KeyCreate和锁也计算使用此程序。如果输入MAC与A‘0不匹配,则命令返回一个AUTH错误。

所以我的问题是,在绒面码中,我的步骤正确吗?

B'0 = B0 XOR与秘密Key

B'1 = B1 XOR和B'0

A'0 = B'1 XOR和A0

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-06-28 12:00:47

您正在阅读的是关于CCM在“加密元素设备”中如何执行的描述。块名是来自NIST的CCM描述

更明确的说明如下:

代码语言:javascript
复制
N = Nonce(12)

# this implements CBC(key, IV, 79 | NONCE | 01 | 00 00 | LL LL | DATA)
# taking only the last block (AES / CBC-MAC)

IV = 00000000000000000000000000000000 # presumed, it's logical

B0 = 79 | NONCE | 01 | 00 00
B'0 = CBC(key, IV, B0)

B1 = XOR(B'0, LL LL | DATA)
B'1 = CBC(key, IV, B1)

N2 = Nonce(12) # it may be that N2 should be identical to N1, look into spec

# this implements CTR(key, A0, B'1)

A0 = 01 | N | 01 | 0000 # this is the initial counter for CTR mode
A'0 = CTR(key, A0, 00000000000000000000000000000000)
R = XOR(A'0, B'1)

这是一个逐块描述CCM模式是如何在内部执行时,多达14个字节的数据只是MAC‘编辑-没有加密。如果您只得到了AES-CBC和AES-CTR,或者只是AES,您可以使用它来模拟实现。在普通计算机上,您只需使用包含CCM的现有库即可。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/60370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档