为了从Diffie Hellman密钥协议协议中生成多个会话密钥,我尝试使用HKDF来生成这个会话密钥。HKDF算法使用一个提取-扩展过程。在提取过程中,它接受一个salt和一个源键作为输入(在我的例子中,它将是Diffie生成的键)。我知道盐它是一个随机的非秘密值。
我的问题是:如何在两个实体之间建立这个随机盐值?我可以通过将哈希函数应用到Diffie键(比如Salt = HashFunction(DiffieHellmanKey) )来设置这个值吗?
发布于 2013-09-19 20:49:50
如果使用Diffie-Hellman生成会话密钥,则不需要salt (默认为零长度salt)。但是,对于函数的展开部分中的每个键,您应该使用不同的info (八进制)字符串。
其思想是,如果输入键控材料(IKM)重复,则salt确保派生键是不同的。如果在密钥派生中没有使用salt,那么每次执行密钥派生功能时,会话键将是相同的。然而,Diffie-Hellman不应该产生相同的输入键材料(见注)。
每个密钥的信息字符串应该是静态的,例如,对加密密钥使用"enc"的ASCII编码是个好主意。
这里是香港发展基金的RFC链接. 这是与Hugo Krawczyk的论文的链接详细描述香港发展基金。
注: DH密钥协议中至少有一方应生成足够随机的临时密钥材料。如果随机数发生器(RNG)被破坏,那么您可能得到相同的输入密钥材料。但是,如果您的RNG被破坏了,则不可能生成随机盐。换句话说,不管你做什么,你都需要一个好的RNG。
https://crypto.stackexchange.com/questions/10453
复制相似问题