seb*_*elk 6 password terminology shadow
man 5 shadow关于第二个字段是这样说的:
加密密码
今天是真的吗?我认为它应该说“散列密码”。我对么?
不,影子文件不包含加密密码,在我见过的任何 Unix 变体上都不包含。这需要在某处使用加密密钥——它会在哪里?
甚至该crypt函数的原始版本实际上也是一个散列函数。它通过使用密码作为DES变体的密钥进行操作。的输出crypt是所有位为零的块的加密。虽然这使用加密函数作为实现的一部分,但该crypt操作不是加密操作,它是一个散列函数:一个函数的逆很难计算,因此很难找到产生相同输出的两个值。
在其局限性内,最初的基于 DES 的crypt实现遵循了良好密码散列函数的基本原则:不可逆函数、带盐和减速因子。考虑到当今的计算能力,使其不适合的是限制,而不是设计:密码中最多 8 个字符,总大小使其适合蛮力,盐太短,迭代次数太短。
由于crypt名称(由于crypt内部使用加密的事实),并且因为直到最近很少有人受过密码学教育,因此该crypt函数和其他环境中的等价物的许多文档将其描述为“密码加密”。但它实际上是一个密码哈希,而且一直都是。
现代系统使用基于更强大算法的密码散列函数。虽然其中一些算法被称为“MD5”、“SHA-256”和“SHA-512”,但散列计算并不是像 MD5(密码 + 盐)那样的东西,而是满足慢速要求的迭代散列(尽管常见的方法缺乏防止基于 GPU 加速的内存硬度)。
man 5 shadow“加密密码”部分是指crypt(3)。如果您阅读该手册 ( man 3 crypt),您将看到可以使用作为当前使用的散列算法的两种传统 DES 加密密码。因此,“加密密码”并未完全涵盖该字段可能包含的内容是对的。更好的描述应该是“加密或散列密码”
| 归档时间: |
|
| 查看次数: |
1886 次 |
| 最近记录: |