Answers:
有关Unix密码存储的早期历史,请阅读Robert Morris和Ken Thompson的“ 密码安全性:案例历史”。他们解释了为什么以及早期的Unix系统如何获得了大多数功能,而这些功能至今仍被视为密码存储的重要功能(但做得更好)。
crypt
散列密码的功能。之所以将其描述为“加密”而不是“散列”,是因为尚未建立现代的加密术语,并且尽管使用了非常规方式,但它使用了加密算法。他们使用密钥作为密钥,而不是使用密钥对密码进行加密(当您拥有密钥(必须将其存储在系统中)时,撤消该密钥很简单)。最初,密码哈希位于公共可读文件中/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的算法基于相同的原理,但内部设计略好一些,最重要的是,可配置的慢度因子。
我还没有主要消息来源,但是根据此TrustedSec帖子(强调我的说法):
早期的系统以明文形式存储密码,但最终被更安全的密码存储形式所取代。罗伯特·莫里斯(Robert Morris)基于m-209密码机开发了加密技术,它出现在Unix第3版中,尽管直到第六版Unix(1974年)才使用Crypt来存储密码。
根据多个消息来源,第3版UNIX于1973年2月发布。
从Thompson和Morris的原始论文中,我们可以确认原始存储是最初使用的:
UNIX系统首先使用包含所有用户实际密码的密码文件实现,因此,必须对密码文件进行严格保护,以防止其被读取或写入。
如其他答案所述,/ etc / shadow出现在UNIX的多个分支中。
根据维基百科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发行版中。