首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有SHA-256/512低熵输入的PBKDF2?

具有SHA-256/512低熵输入的PBKDF2?
EN

Cryptography用户
提问于 2019-11-08 18:10:21
回答 2查看 829关注 0票数 2

如果我的输入是相当低的熵,有什么理由在PBKDF2中使用比SHA-1更强的东西吗?也就是说,如果被散列的密码只有大约30位的熵。

我现在找不到,但是有人说,如果你想保持高熵输入的熵,那么使用PBKDF2和更高的SHA。所以,我想知道,如果你的输入是低熵,那么使用SHA-512就没有真正的收益。

我见过一个案例提到,使用SHA-512会增加攻击者的内存需求。在某些情况下,我知道增加内存需求会降低GPU哈希的效率。不确定这种情况是否属实。https://cryptosense.com/blog/parameter-choice-for-pbkdf2/

EN

回答 2

Cryptography用户

回答已采纳

发布于 2019-11-08 22:01:56

我见过一个案例提到,使用SHA-512会增加攻击者的内存需求。在某些情况下,我知道增加内存需求会降低GPU哈希的效率。不确定这种情况是否属实。

如果您要使用PBKDF2 (而不是Argon2),并且可以选择使用SHA-512,那么您肯定应该选择它,因为计算需要更多的内存,这对基于GPU的密码破解器是不利的。以下是来自一个任意选择的Hashcat基准的报道:

代码语言:javascript
复制
Hashtype: SHA1

Speed.Dev.#1.:  8538.1 MH/s (96.95ms)
Speed.Dev.#2.:  8511.0 MH/s (97.22ms)
Speed.Dev.#3.:  8625.6 MH/s (97.79ms)
Speed.Dev.#4.:  8599.6 MH/s (96.85ms)
Speed.Dev.#5.:  8617.4 MH/s (97.89ms)
Speed.Dev.#6.:  8560.9 MH/s (97.30ms)
Speed.Dev.#7.:  8640.8 MH/s (97.61ms)
Speed.Dev.#8.:  8677.5 MH/s (97.22ms)
Speed.Dev.#*.: 68771.0 MH/s

Hashtype: SHA256

Speed.Dev.#1.:  2865.2 MH/s (96.18ms)
Speed.Dev.#2.:  2839.8 MH/s (96.65ms)
Speed.Dev.#3.:  2879.5 MH/s (97.14ms)
Speed.Dev.#4.:  2870.6 MH/s (96.32ms)
Speed.Dev.#5.:  2894.2 MH/s (96.64ms)
Speed.Dev.#6.:  2857.7 MH/s (96.78ms)
Speed.Dev.#7.:  2899.3 MH/s (96.46ms)
Speed.Dev.#8.:  2905.7 MH/s (96.26ms)
Speed.Dev.#*.: 23012.1 MH/s

Hashtype: SHA512

Speed.Dev.#1.:  1071.1 MH/s (96.43ms)
Speed.Dev.#2.:  1063.9 MH/s (96.40ms)
Speed.Dev.#3.:  1084.2 MH/s (96.25ms)
Speed.Dev.#4.:  1076.9 MH/s (96.03ms)
Speed.Dev.#5.:  1080.2 MH/s (96.64ms)
Speed.Dev.#6.:  1074.1 MH/s (96.16ms)
Speed.Dev.#7.:  1086.3 MH/s (96.01ms)
Speed.Dev.#8.:  1088.1 MH/s (95.91ms)
Speed.Dev.#*.:  8624.7 MH/s

这个GPU只能计算SHA-512,大约是SHA-1的13%,和SHA-256的37%。64位CPU可以比SHA-256更快地计算SHA-512,所以这是一个更大的胜利。

注意,这些结果是针对原始SHA-*的,当使用PBKDF2时,迭代会进一步减慢攻击者的速度,例如(从同一页面):

代码语言:javascript
复制
Hashtype: PBKDF2-HMAC-SHA1

Speed.Dev.#1.:  3233.9 kH/s (67.40ms)
Speed.Dev.#2.:  3198.7 kH/s (68.17ms)
Speed.Dev.#3.:  3286.2 kH/s (67.40ms)
Speed.Dev.#4.:  3275.8 kH/s (67.07ms)
Speed.Dev.#5.:  3305.3 kH/s (66.98ms)
Speed.Dev.#6.:  3239.7 kH/s (67.85ms)
Speed.Dev.#7.:  3302.3 kH/s (66.97ms)
Speed.Dev.#8.:  3314.4 kH/s (66.78ms)
Speed.Dev.#*.: 26156.2 kH/s

Hashtype: PBKDF2-HMAC-SHA256

Speed.Dev.#1.:  1173.1 kH/s (81.39ms)
Speed.Dev.#2.:  1171.6 kH/s (85.26ms)
Speed.Dev.#3.:  1194.3 kH/s (77.60ms)
Speed.Dev.#4.:  1182.9 kH/s (80.93ms)
Speed.Dev.#5.:  1182.3 kH/s (86.08ms)
Speed.Dev.#6.:  1174.8 kH/s (81.28ms)
Speed.Dev.#7.:  1191.0 kH/s (77.58ms)
Speed.Dev.#8.:  1203.1 kH/s (80.72ms)
Speed.Dev.#*.:  9473.2 kH/s

Hashtype: PBKDF2-HMAC-SHA512

Speed.Dev.#1.:   431.4 kH/s (88.54ms)
Speed.Dev.#2.:   425.8 kH/s (89.24ms)
Speed.Dev.#3.:   432.5 kH/s (89.37ms)
Speed.Dev.#4.:   433.5 kH/s (89.18ms)
Speed.Dev.#5.:   433.4 kH/s (90.16ms)
Speed.Dev.#6.:   427.2 kH/s (85.02ms)
Speed.Dev.#7.:   432.7 kH/s (88.89ms)
Speed.Dev.#8.:   433.7 kH/s (88.67ms)
Speed.Dev.#*.:  3450.1 kH/s

我现在找不到,但是有人说,如果你想保持高熵输入的熵,那么使用PBKDF2和更高的SHA。所以,我想知道,如果你的输入是低熵,那么使用SHA-512就没有真正的收益。

“熵”这个词非常技术性,容易使人感到困惑。在这种情况下考虑它的一个有用的实际方法是,密码的熵是一种估计攻击者猜测它需要多少次尝试的方法。如果你这样看的话,应该清楚的是,降低攻击者尝试猜测的速度是很好的,只要它不会给防守者带来不合理的代价。在我的电脑上运行openssl benchmark sha1 sha256 sha512我得到:

代码语言:javascript
复制
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
sha1            111320.78k   284724.68k   566193.99k   754458.21k   867765.68k   884538.07k
sha256           67121.90k   161239.47k   297468.75k   357967.84k   383634.68k   404701.29k
sha512           46691.15k   181327.42k   330951.90k   501714.45k   523881.21k   582528.17k

因此,使用16和64字节数,在我的64位CPU上,SHA-512的速度是SHA-1的40-60%。但正如我们在上面看到的,在GPU基准测试中,SHA-512的速度仅为SHA-1的12.5%。因此,对于CPU时间的适度成本,您将在GPU时间中增加更大的成本。这就是你想要看到的!

票数 4
EN

Cryptography用户

发布于 2019-11-08 18:20:09

使用SHA-1或SHA-256与PBKDF2散列密码没有太大的区别:它们使用的内存数量几乎相同(状态为20字节,而状态为32字节,加上8字节的消息长度和64字节的输入缓冲区),而SHA-512只使用SHA-256使用的两倍(64字节状态,16字节长度,128字节缓冲区)。

如果可以的话,忘记PBKDF2,考虑使用Argon2id,这样如果您有(比方说) 128 MB的免费密码散列--也许还有几个额外的CPU核--您可以使用它来提高对手的成本。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/75607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档