RFC声明如下:
3.2。在HKDF的定义中,“info”值是可选的,但它在应用程序中往往是非常重要的。其主要目标是将导出的关键材料绑定到特定于应用程序和上下文的信息。例如,“info”可能包含协议号、算法标识符、用户标识等。特别是,它可能阻止针对不同上下文(在不同的上下文中使用相同的输入密钥材料(IKM)时)派生相同的密钥材料。如果需要的话,它还可以容纳到密钥扩展部分的额外输入(例如,应用程序可能希望将关键材料绑定到其长度L,从而使L成为'info‘字段的一部分)。“信息”中有一个技术要求:它应该独立于输入的关键物质价值IKM。
对于如何使用这个输入,我还有点不清楚。“信息”输入功能是否有点像盐?如果我正在开发一个多用户应用程序,并且每个用户:
是否应该使用用户的电子邮件地址和使用密钥的算法的名称?任何类比,以更好地理解这一输入的使用,将不胜感激。
发布于 2013-03-03 00:26:56
不,信息不是盐。KBKDF (基于键的密钥派生函数)的输入密钥材料应该已经是伪随机的,因此应该包含足够的熵来不需要盐。
如果用户已经拥有唯一的16+伪随机字节密钥,那么几乎没有理由使用电子邮件地址作为信息的一部分。电子邮件地址可以用于使派生的密钥特定于用户,但情况已经如此(在您的示例中)。
KBKDF的主要原因是创建更多的键或更长的键。如果算法不使用相同的密钥材料,则需要使用算法名作为信息的一部分。
信息是关键的派生数据。使用相同的输入键材料创建多个派生键。信息区分了这些键。KBKDF确保密钥与伪随机数(因此相互独立)是不可区分的。
示例使用:从相同的输入密钥材料创建加密和mac密钥(info是ASCII编码的"ENC“和"MAC”或计数器值1或2)。
另一个例子:使用相同的密钥加密文件而不使用IV:info部件的输入是文件名的UTF-8编码。
https://crypto.stackexchange.com/questions/6553
复制相似问题