Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在PBKDF2中,INT(i)是有符号的吗?_Security_Sha_Hmac_Integer Overflow_Pbkdf2 - Fatal编程技术网

Security 在PBKDF2中,INT(i)是有符号的吗?

Security 在PBKDF2中,INT(i)是有符号的吗?,security,sha,hmac,integer-overflow,pbkdf2,Security,Sha,Hmac,Integer Overflow,Pbkdf2,RFC 2898第11页指出,对于U_1=PRF(p,S | | INT(i)),INT(i)是整数i的四个八位组编码,最重要的八位组在前 这是否意味着i是一个有符号的值,如果是的话,溢出会发生什么?没有说它会有符号。dkLen的上限为(2^32-1)*hLen这一事实表明它是一个无符号整数,不能从0xffffff(2^32-1)滚动到0x00000000 当然,在您请求34359738368字节之前,PBKDF2(MD5)不会达到2^31。这是非常多的字节 SHA-1:42949672960

RFC 2898第11页指出,对于U_1=PRF(p,S | | INT(i)),INT(i)是整数i的四个八位组编码,最重要的八位组在前


这是否意味着i是一个有符号的值,如果是的话,溢出会发生什么?

没有说它会有符号。
dkLen
的上限为
(2^32-1)*hLen
这一事实表明它是一个无符号整数,不能从
0xffffff
(2^32-1)滚动到
0x00000000

当然,在您请求34359738368字节之前,PBKDF2(MD5)不会达到2^31。这是非常多的字节

  • SHA-1:42949672960
  • SHA-2-256/SHA-3-256:68719476736
  • SHA-2-384/SHA-3-384:103079215104
  • SHA-2-512/SHA-3-512:137438953472
由于.NET实现(在Rfc2898DeriveBytes中)是一个迭代流,因此可以通过(长)系列调用对其进行32GB的轮询。大多数平台都将PBKDF2一次性公开,因此您需要给它们32GB(或更大)的内存范围,以确定它们是否有那么大的错误。因此,即使大多数平台的标志有点错误。。。这并不重要


PBKDF2是一个KDF(密钥派生函数),因此用于派生密钥。AES-256是32字节,如果使用相同的PBKDF2生成IV(实际上不应该这样),则为48字节。为ECC曲线生成一个私钥的长度为14157字节(如果我算对了的话)。远低于32GB标记。

i
范围从1到
l=CEIL(dkLen/hLen)
,而
dkLen
hLen
是正整数。因此,
i
是严格正的


但是,您可以将
i
存储为有符号的32位整数类型,而无需任何特殊处理。如果
i
滚动(从
0x7FFFFFFF
递增到
0xF0000000
),它将继续正确编码,并继续正确递增。使用2的补码编码,只要所有值都被视为有符号或无符号,加法、减法和乘法的逐位结果都是相同的。

34359738368位不是字节:),但i的范围不在[1..l]之间,其中l=CEIL(dkLen/hLen)因此,如果dkLen>2^31的hLen=1,它仍然会溢出,这在理论上是有效的,我同意这是从实际使用案例中可以得到的,2^31是2G,*128bit(MD5)=256Gbit,或32GB。是的,8位PRF会在2GB时进入混淆区,但正如@erickson所建议的,它最终不会有任何影响,因为您只需添加位模式,并且不涉及除法或不等式。