Solaris 11 哈希例程中是否存在重复?我可以加一些吗?

信息安全 哈希 太阳能
2021-08-21 19:35:33

Solaris 11现在使用 SHA-256,因此默认情况下我们现在可以拥有超过 8 个字符的密码。那很好。

我要明确表示,这个密码永远不会用作防线。只有少数人可以使用实际使用密码的工具。其他用户在受控环境下通过基于网络的管理系统。

然而,我力求完美,所以我注意到这一点并想知道。

我可以配置或安装 Solaris 11 密码哈希的重复参数吗?我希望散列需要 50 毫秒,这可能比默认值更安全。

理想情况下,我想将其切换到 bcrypt。你能给我一些指示吗?

1个回答

/etc/shadow 中的 unix/linux sha256/sha512 密码是否加强了?

是的。他们使用 crypt 程序,默认进行 5000 轮散列。sha256-crypt/sha512-crypt 过程在此处java中进行了描述

我可以更改轮数吗?

是的。只需编辑/etc/pam.d/passwd/etc/pam.d/common-password(或等效的 solaris)并在行尾添加“rounds=73500”,类似于:

password    [success=2 default=ignore]  pam_unix.so obscure sha512 rounds=73500

然后使用 passwd 更改您的密码。为什么是 73500?好吧,用 rounds=5000 计时 crypt,我得到每个密码大约 3.4 毫秒。(5000*50/3.4 ~ 73500)。您可以检查 /etc/shadow 文件中的密码是否执行了异常的轮数,如果它看起来以yourusername:$6$rounds=73500$RFzXZTGB$where$6$指示使用的 crypt 过程开头(sha256-crypt 是 $5$,sha512-crypt $6$),然后是轮数然后是盐。

但我想要 bcrypt;我可以切换到那个:

检查 /etc/pam.d/ 和 (1) 将所有引用更改pam_unix.sopam_unix2.so(检查文件是否存在) 和 (2) 然后更改sha512blowfish/etc/pam.d/common-password

https://serverfault.com/questions/10585/enable-blowfish-based-hash-support-for-crypt/11685#11685

bcrypt 与 sha512-crypt 之间的一个显着区别;是 bcrypt 工作因子呈指数增长;例如,12 的工作因数应该是 11 的工作因数的两倍,而 sha512-crypt 轮数是线性缩放的(例如,rounds=10000应该是 11 的两倍rounds=5000)。这仅仅是因为 bcrypt 说做 2 个工作因素轮次。作为我机器上的快速基准测试,一轮 bcrypt 比一轮 sha512-crypt 更昂贵;rounds=5000work-factor=6(2 6 =64 bcrypt-rounds)的约4 ms的粗略等价。int但是由于两者都可以按比例放大,所以在轮数溢出无符号 32 位/64 位(当轮数分别 = 40 亿或 10 19时)之前,这应该不是问题

使用 sha512-crypt 的 Python 计时工具

您可以通过 python 检查 crypt(在 linux 中,它的执行速度与 C 版本一样快,因为它只是用 C 编写的 crypt 库的薄包装器)

>>> import crypt
>>> crypt.crypt('testtest', '$6$6LzxTFam$')

在我的机器上使用 crypt 模块的 python 中,每个 sha512-crypt 密码在 5000 轮时大约需要 3.4 毫秒,在 73500 轮时大约需要 50 毫秒。

>>> import timeit
>>> timer = timeit.Timer("crypt.crypt('testtest', '$6$6LzxTFam$')", setup="import crypt")
>>> timer.timeit(1000)
3.4215329647064209
# with 73500 rounds:
>>> timeit.Timer("crypt.crypt('testtest', '$6$rounds=73500$RFzXTGB$')", 'import crypt').timeit(1000)
50.738550186157227