影子文件是否有加密密码?

影子文件是否有加密密码?

man 5 shadow关于第二个字段是这样说

加密密码

如今确实如此吗?我认为它应该说“哈希密码”。我对么?

答案1

不,影子文件不包含加密密码,在我见过的任何 Unix 变体上都不包含。这需要在某个地方有一个加密密钥——它会在哪里?

就连原版的crypt功能实际上是一个哈希函数。它通过使用密码作为密钥进行操作DES。的输出crypt是所有位都为零的块的加密。虽然这使用了加密函数作为实现的一部分,但该crypt操作不是加密操作,而是一个哈希函数:一个函数,其反函数很难计算,因此很难找到产生相同输出的两个值。

在其局限性范围内,最初的基于 DES 的crypt实现遵循以下基本原则:好的密码哈希函数:不可逆函数,具有,以及减速因子。考虑到当今的计算能力,它不适合的是限制,而不是设计:密码中最多 8 个字符、总大小使其易于暴力破解、salt 太短、迭代计数太短。

由于这个crypt名称(由于内部使用加密的事实crypt),并且由于直到最近很少有人接受过密码学教育,因此该函数的大量文档crypt以及其他环境中的等效项将其描述为“密码加密”。但它实际上是一个密码哈希,而且一直都是。

现代系统使用基于更强大算法的密码散列函数。虽然其中一些算法被称为“MD5”、“SHA-256”和“SHA-512”,但哈希计算并不是像MD5(密码+盐)那样,而是满足慢速要求的迭代哈希(尽管常见方法缺乏防止基于 GPU 的加速的内存硬度)。

答案2

man 5 shadow“加密密码”部分指的是crypt(3).如果您阅读该手册 ( man 3 crypt),您将看到传统 DES 加密密码和当前使用的哈希算法都可以使用。因此,您认为“加密密码”并未完全涵盖该字段可能包含的内容,这是正确的。更好的描述应该是“加密或散列密码”

答案3

这取决于设置。影子文件仍然可以包含加密的(带有其本身和盐)密码,但它是否经过散列取决于形式。

您的系统可能会根据哈希函数输入新密码,但很可能仍支持旧格式。

如果该条目不以 a 开头,则假定它是从未使用受支持的哈希函数之一$输出的。crypt

来自关于影子文件的维基百科条目:

“$1$”代表 MD5,“$2a$”是 Blowfish,“$2y$”是 Blowfish(正确处理 8 位字符),“$5$”是 SHA-256,“$6$”是 SHA-512 ,

相关内容