首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMAC可以用作128位密钥派生函数吗?

CMAC可以用作128位密钥派生函数吗?
EN

Cryptography用户
提问于 2016-05-09 12:20:05
回答 1查看 1.7K关注 0票数 5

对于确定性场景,我想要多次派生出一个键,其中我可以从单个场景中获得n个键。

逻辑看起来是这样的:

代码语言:javascript
复制
masterKey = random 128-bit
For i from 0 to n:
    let key[i] = CMAC(masterKey, i)

这是一种生成多个键的正确方法,还是有缺陷?

EN

回答 1

Cryptography用户

发布于 2016-05-09 16:14:04

CMAC(masterKey, i)通常应该就足够了,是的。请注意,您需要为i指定一个编码(例如,八进制字符串由i的大端编码组成,左填充为零值八进制,最多可达4个八进制)。

不过,最好是实现NIST SP 800-108:“使用伪随机函数进行密钥推导的建议”中定义的方案之一。请注意,CMAC是一个伪随机函数(PRF),并在本标准中明确提到。

我推荐NIST SP 800-108计数器模式(5.1节),这是比较常见的,易于实现。注意,标准中的计数器i与您对i的定义不同。标准中的i用于为单个密钥导出比PRF能够生成的更多的密钥材料(例如,在AES-CMAC情况下,超过128位)。如果您遵循标准,那么您的i应该在Context变量中进行编码。

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

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

复制
相关文章

相似问题

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