在 Linux/Debian 中,密码(/etc/passwd)是否曾以纯文本形式存储?

在 Linux/Debian 中,密码(/etc/passwd)是否曾以纯文本形式存储?

有人这样告诉我,但我有些怀疑,但我在网上找不到任何信息。

答案1

摘自罗伯特·莫里斯和肯·汤普森所著的《密码安全:案例历史》(1979 年)(http://www.cs.yale.edu/homes/arvind/cs422/doc/unix-sec.pdf),引自序言:

UNIX 系统首先实现了一个密码文件,其中包含所有用户的实际密码,因此必须严密保护密码文件以防止被读取或写入。

是的,最初密码文件包含的是实际密码

编辑

这是在 UNIX 中。甚至在上述论文发表时,人们也认为这是一个坏主意。由于 Debian 是 1991 年以后的版本,因此假设或相信 Linux 发行版会在没有加密保护的情况下启用密码文件是荒谬的。

更有可能的是,Debian passwd 套件的初始版本使用了非影子密码,即在 /etc/passwd 本身中存储加密密码。当时使用的机制是“crypt”,从数学上讲,它比当前使用 md5 的做法更易于计算(尽管还有其他选项可用)。

如果有机会,请阅读 Linux Pro Magazine 的“Shell Handbook”版。我有一篇关于命令行用户操作的 4 页文章,其中讨论了 UNIX 密码安全的历史。

答案2

我从 1992 年起就一直担任 Unix 系统管理员,那时我们还没有 /etc/shadow。

之前/etc/shadow/etc/passwd条目看起来像这样:

user:XDjfiejfiejf:1001:1001:Joe User:/home/user:/bin/sh

第二个字段是用户的加密(非散列)密码条目。与今天一样,/etc/passwd权限设置为 644,这意味着每个人都可以读取该文件。/etc/passwd需要全世界都可以读取,以便(例如)程序可以将用户 ID 转换为用户名。

但这也使得暴力攻击可以在无需实际尝试登录的情况下破解用户密码 - 只需不断加密不同的字符串,当攻击程序的加密结果与存储在 /etc/passwd 中的字符串相同时,您就得到了用户密码。

于是诞生了/etc/shadow。现在 /etc/passwd 文件的第二个字段只是 '*',加密的密码存储在 /etc/shadow 中,它的权限设置为 640(有时是 600)——这意味着您甚至需要特权才能读取加密字符串。不再有暴力攻击。

答案3

如果你真的对 Debian 感兴趣,可以在这里找到所有原始软件包(http://archive.debian.org/debian/)。

通过查看 Packages 文件,我得知阴影工具是在 1.3 版中添加的。快速查看 1.1 版源代码登录实用程序这是最早的版本之一,它使用旧的 crypt() 函数,我相信它使用了三重 DES

答案4

是的。影子密码文件是后来才引入的。我曾经不得不升级 Slackware Linux 系统以支持影子密码。我记不清是哪个版本了。不过,我猜大概是 2.0 版。

这里有一份 Linux HOWTO1提供更多详细信息。

编辑

我最初误读了。密码从未以明文形式存储在 Linux 的 /etc/passwd 中。如前所述,Linux 中并不总是使用影子密码文件。

相关内容