Password
Unix 何時停止以明文形式儲存密碼?
Unix 什麼時候不再在 passwd 中儲存明文密碼了?另外,影子文件是什麼時候引入的?
有關 Unix 密碼儲存的早期歷史,請閱讀 Robert Morris 和 Ken Thompson 的Password Security: A Case History。他們解釋了早期 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 個鹽字元的限制,並增加了速度。請參閱IEEE 的使用開源軟體進行開發,1 月至 2 月。2004 年,第 7-8。作為當今事實上的標準的基於 SHA-2 的算法基於相同的原理,但內部設計稍好一些,最重要的是,具有可配置的慢速因素。