在HMAC-SHA256中使用128位密钥是否安全?

时间:2012-08-31 00:13:19

标签: cryptography hmac

Facebook app secret是一个包含32个字符(0-9,a-f)的字符串,因此它代表一个128位字节数组。 Facebook uses this as the key to generate signed request using HMAC-SHA256。这是正确的用法吗?我认为HMAC-SHA256应该使用256位密钥。

2 个答案:

答案 0 :(得分:7)

如果密钥的长度大于散列的内部块大小,HMAC将使用HASH(密钥)并将其用作密钥。因此,大于散列的内部块大小的密钥不会提供比相同大小的密钥更好的安全性。根据HMAC规范,较短的键被填零以等于散列的内部块大小。

使用HMAC-SHA-256的128位密钥是不可能的。如果你的意思是用零填充到512位的128位,那么对于短期认证来说它可能是正常的。我建议至少256位,理想情况下你会想要使用与底层哈希的内部块大小相等的东西。

答案 1 :(得分:6)

该页面显示256位signature来自有效负载(Facebook正在签名)+您的128位salt

所以是的,这听起来像是正确的用法。

秘密16字节(32个字符)实际上并不是一个密钥,因为它用于加密和解密某些东西。相反,它是一些用于改变数字签名结果的数据(盐),通过稍微改变输入,以便只有知道确切秘密和确切负载的人才能创建签名。