scram-sha-256 设置在 PostgreSQL 10 中使用了多少次迭代?
文档只是说
将此参数设置为 scram-sha-256 将使用 SCRAM-SHA-256 加密密码。
构建日志读取。
添加对密码协商和存储的 SCRAM-SHA-256 支持 (Michael Paquier, Heikki Linnakangas) 这证明了比现有的 md5 协商和存储方法更好的安全性。
它是一个编译时变量,scram-common.h
称为SCRAM_ITERATIONS_DEFAULT
. 目前它设置为 4096。
这基本上符合 2015 年 11 月引用的规格“经验法则”为 15,000。它是当前允许迭代的最低值。来自RFC-7677
这种机制的强度部分取决于散列迭代计数,如 [RFC5802] 中的“i”表示。根据经验,哈希迭代计数应该是现代机器执行完整算法需要 0.1 秒;然而,这在移动设备和其他性能相对较低的系统上不太可能实现。在撰写本文时,经验法则给出了大约需要 15,000 次迭代;然而,在当前的手机上,4096 的哈希迭代计数大约需要 0.5 秒。这种计算成本可以通过缓存 ClientKey 来避免(假设 Salt 和哈希迭代计数是稳定的)。 因此,本规范的建议是哈希迭代计数应至少为 4096,但应仔细考虑使用显着更高的值,特别是在移动使用不太重要的情况下。