Unix何时停止以明文形式存储密码?


Answers:


62

有关Unix密码存储的早期历史,请阅读Robert Morris和Ken Thompson的“ 密码安全性:案例历史”。他们解释了为什么以及早期的Unix系统如何获得了大多数功能,而这些功能至今仍被视为密码存储的重要功能(但做得更好)。

  • 第一个Unix系统以明文形式存储密码。Unix第三版引入了crypt散列密码的功能。之所以将其描述为“加密”而不是“散列”,是因为尚未建立现代的加密术语,并且尽管使用了非常规方式,但它使用了加密算法。他们使用密钥作为密钥,而不是使用密钥对密码进行加密(当您拥有密钥(必须将其存储在系统中)时,撤消该密钥很简单)。
  • 当Unix从较早的密码转换为当时的DES时,通过多次迭代DES使其速度也变慢。我不知道那是什么时候发生的:V6?V7?
  • 仅对密码进行散列很容易受到多目标攻击:一劳永逸地对所有最常用的密码进行散列,然后在密码表中查找匹配项。在哈希机制中添加一个盐(每个帐户都有一个唯一的盐)会破坏这种预计算。Unix 在1979年的第七版中获得了成功。
  • Unix还获得了密码复杂性规则,例如1970年代的最小长度。

最初,密码哈希位于公共可读文件中/etc/passwd。将哈希值放在单独的文件中/etc/shadow,只有系统(和系统管理员)可以访问,这是Sun的众多创新之一,可追溯到1980年代中期的SunOS 4。它逐渐扩展到其他Unix变体(部分通过第三方影子套件,其后代至今仍在Linux上使用),直到1990年代中期才在任何地方都可用。

多年来,对散列算法进行了改进。最大的飞跃是1994年Poul-Henning Kamp基于MD5的算法,该算法以更好的设计取代了基于DES的算法。它取消了对8个密码字符和2个盐字符的限制,并增加了速度。请参阅1月至2月IEEE的“ 使用开源软件进行开发”。2004,p。7-8。如今已成为事实上的标准的基于SHA-2的算法基于相同的原理,但内部设计略好一些,最重要的是,可配置的慢度因子。


顺便说一句,盐就是被加密的东西。
约书亚

对于那些没有Postscript查看器的人,我在这里
grahamj42

8

我还没有主要消息来源,但是根据此TrustedSec帖子(强调我的说法):

早期的系统以明文形式存储密码,但最终被更安全的密码存储形式所取代。罗伯特·莫里斯(Robert Morris)基于m-209密码机开发了加密技术,它出现在Unix第3版中,尽管直到第六版Unix(1974年)才使用Crypt来存储密码。

根据多个消息来源,第3版UNIX于1973年2月发布。

Thompson和Morris的原始论文中,我们可以确认原始存储是最初使用的:

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

如其他答案所述,/ etc / shadow出现在UNIX的多个分支中。


6

根据维基百科passwd页面上的“ 历史记录”部分,

密码阴影最早出现在Unix系统中,是在1980年代中期的SunOS的发展中。[10] 1988年的System V Release 3.2和1990年的BSD4.3 Reno。但是,执行早期UNIX版本的端口的供应商并不总是包括其发行版中的新密码屏蔽功能使这些系统的用户容易受到密码文件攻击。

系统管理员还可以安排将密码存储在NIS和LDAP等分布式数据库中,而不是在每个连接的系统上的文件中存储。对于NIS,通常在NIS服务器上仍使用影子口令机制。在其他分布式机制中,访问各种用户身份验证组件的问题由基础数据存储库的安全机制处理。

1987年,最初的Shadow Password Suite的作者Julie Haugh经历了一次计算机入侵,并编写了包含登录,passwd和su命令的Shadow Suite的初始版本。为SCO Xenix操作系统编写的原始发行版很快移植到其他平台。Shadow Suite在最初宣布Linux项目一年后于1992年移植到Linux,并已包含在许多早期发行版中,并继续包含在当前的许多Linux发行版中。


5
非影子密码存储!=未加密的纯文本存储。
rackandboneman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.