crypt' 機制
Contributed by Garrett Wollman
<wollman@FreeBSD.ORG>
24 September 1995.
為了保護 UN*X 系統的密碼不易被破解,傳統的作法是將密碼檔用某種方式弄混。 最早由 Bell Labs' Seventh Edition Unix 開始,密碼檔使用一種所謂的 ``one-way hash function''來加密。換句話說,此密碼檔經由此種方法變換後,無法再轉回原來的 密碼,除非用暴力的方法-將所有可能的密碼逐一試過。不幸地,當時唯一安全的方法 是由 AT&T 的研究員依據 DES (Data Encryption Standard) 研究出來。這對一些商業 軟體並不會造成嚴重問題,但對於一些原始碼 (source code) 公開的作業系統而言是一 個很大的問題,因為許多地方的國家政府習慣於對於 DES 和其他加密軟體跨國傳播加以 設限。
所以,the FreeBSD team 面臨了一個無法滿意地解決的問題:我們如何提供一個完
整的相容性使所有國外 UNIX 系統不違法使用?我們計劃採取兩面並行的方式:做一個
只有包含不規則密碼的產生器,然後另外再提供根據 DES 原理的外加函式庫 (library)
。而產生密碼的 funtion 則從 C 的函式庫獨立移出來,由於是根據 C 的 funtion call
`crypt',因此取名為 `libcrypt'。在 FreeBSD 1.x 和部份 2.0
搶鮮版 (snapshots),不規則密碼產生器是使用 Nate Williams 所寫的 function,
而此 function 並不安全,在之後所發表的版本則是使用 RSA Data Security, Inc.
的機制,也就是 MD5 的 one-way hash function。因為上述所提的都沒有牽扯到加密法
,因此可被用來從美國傳出且可適用於其他國家。
在這期間,以 DES 做加密方式的工作仍然在進行中。首先一個 `crypt'
function版本在美國境外寫出,因此可以同步了 US 與 non-US 的版本。再來,整個函
式庫分為兩部份; DES `libcrypt' 只包含執行 one-way password hash 的
函式庫,而`libcipher' 則是根據整體執行加密工作的原理而寫出的函式庫
。這些原始碼以這類方式分類是為了較易取得編譯好的函式庫輸出的執照。
crypt' 機制crypt' 機制