您好,这里有任何传递给基于hkdf的密钥派生的盐类和信息的最小长度吗?或者使用32字节随机生成的位进行盐分,并且所有hkdf都可以使用info。
发布于 2022-07-23 08:31:35
在HKDF中,salt或info字符串都没有最小长度。实际上,如果您的特定应用程序不需要它们,则可以忽略它们。
唯一真正的要求是,这对(salt,info)对每个派生子键都应该是唯一的,因为如果不是,那么相同的输入键控材料(可能会发生在您无法控制的原因,例如,由于生成IKM时使用的密码不够随机)将产生相同的输出,这通常是不想要的。
更具体地说,对于HKDF,您可以认为盐类可以确保(无意或故意)在两个应用程序(或同一个应用程序的两个实例)中重用相同的IKM仍然会产生不同的PRK,从而产生不同的OKM。同时,信息字符串允许多个不同的、准独立的OKM(例如用于加密和身份验证的单独密钥,或用于多条消息中的每条消息的单独密钥等)。可以从一个PRK,这是有用的许多应用,并使KDF更多用途。
对于一个典型的应用程序,可以随机生成salt,而对于应用程序所需的每种不同类型的OKM (例如"enc“和"auth"),信息字符串可能是固定的,也可以是唯一的消息/文件/帐户标识符,或者两者的组合。
对于随机生成的盐,你会想让它足够长,给每个IKM/PRK分配一个独特的盐,然后--由于生日悖论 --使它的长度增加一倍。这很有可能确保你所有的盐类都是独一无二的。因此,例如,一个32位的盐就足够了,如果您只需要在最多的2^{16} = 65536上派生不同的PRKs,而64位的盐则可以用于2^{32} \approx 40亿个用途。
在实践中,您只需使用一个随机的128位盐(或者版本4 UUID ),而不必担心盐的唯一性。
有关更多信息,请参见RFC 5869中的3.1 (“向盐或不向盐”)和3.2 (“香港发展基金的”资料“输入”)部分。
https://crypto.stackexchange.com/questions/101163
复制相似问题