2010-03-23 119 views
5

我想知道我是否也可以使用在两个客户端之间建立的共享密钥作为HMAC密钥。使用一个密钥进行加密和HMAC

我看到当它被用作CBC-MAC时存在问题,但是我还没有发现任何证据表明这对于HMAC是不好的做法。

感谢, 弗拉基米尔

回答

6

我相信它是目前在类别“似乎大概OK,但为什么要冒险呢?”。

最佳做法是让每个侧生成共享密钥两个新按键:

encryption-key := HMAC(shared-key, "Encryption Nonce") 
hmac-key := HMAC(shared-key, "Authenticity Nonce") 
2

由于CAF躲避到。正确的做法之一是对共享密钥加上一些额外的数据。

例如:

enc-key = HASH(shared-key || 1) 
hmac-key = HASH(share-key || 2) 

这具有不需要传递2个额外的随机数,以及易于实现的利益。

我不会在不同的函数(enc + hmac)中使用相同的密钥。这是要求麻烦和一个坏主意。

相关问题