答案1
类似的短语出现在其他地方(例如,此红帽 5 页面),其中给出了更多细节:
LUKS 提供密码强化。
- 这可以防止字典攻击。
由此看来,我认为这意味着密码正在被加盐,并且可能对该过程应用了其他改进(例如,对其进行哈希 N 次以增加成本)。
谷歌搜索一下,这个短语似乎第一次与 LUKS 一起出现在 2006 年左右维基百科关于磁盘加密软件比较的文章。那里有“密码强化”的描述关于“按键拉伸”的文章,其中涉及使密码更能抵御暴力攻击的各种技术,包括使用PBKDF2。事实上,LUKS1 确实使用了 PBKDF2(LUKS2 改用了 Argon2),根据 LUKS 常见问题解答。
这就是密码强化在这种情况下的含义:使用 PBKDF2 和类似的方法使密码更难以破解。常见问题解答也有一个简短的描述:
如果密码的熵较低,您希望此过程花费一些精力,以便每次尝试都需要时间和资源并减慢攻击者的速度。 LUKS1 为此使用 PBKDF2,添加迭代计数和盐。迭代计数默认设置为在设置相应密码的设备的 CPU 上每次尝试需要 1 秒。盐的存在是为了防止预先计算。
具体来说,LUKS 在 PBKDF2 中使用 SHA1 作为哈希机制(从 1.7.0 开始为 SHA256),并设置迭代计数,以便大约需要 1 秒。也可以看看常见问题解答第 5.1 节:安全密码有多长?比较 LUKS1 中使用 PBKDF2 相对于 dm-crypt 的显着改进:
对于普通的 dm-crypt(无哈希迭代)来说就是这样。这给出了(使用 SHA1,普通 dm-crypt 默认值是ripemd160,它似乎比 SHA1 稍慢):
Passphrase entropy Cost to break 60 bit EUR/USD 6k 65 bit EUR/USD 200K 70 bit EUR/USD 6M 75 bit EUR/USD 200M 80 bit EUR/USD 6B 85 bit EUR/USD 200B ... ...
对于 LUKS1,您必须考虑 PBKDF2 中的哈希迭代。对于当前的CPU,大约有100k次迭代(可以使用 查询
cryptsetup luksDump
。则上表变为:Passphrase entropy Cost to break 50 bit EUR/USD 600k 55 bit EUR/USD 20M 60 bit EUR/USD 600M 65 bit EUR/USD 20B 70 bit EUR/USD 600B 75 bit EUR/USD 20T ... ...