金鑰派生函數Key derivation function也能用在儲存密碼中,一般的儲存密碼只用單純的雜湊可能還不夠,因此就能使用金鑰衍生函數,因為金鑰衍生函數的做法是把密碼(任意字串)、鹽巴(salt)、疊代次數、要輸出的字串長度給雜湊起來之後輸出。
Key=H(密碼,鹽巴(salt),疊代次數,要輸出的字串長度)
其最主要的算法就是在疊代次數,使用的是區塊加密的方式,就類似DES的那個方法從頭算到尾巴。
最常見的是PBKDF2。
當初在看金鑰派生函數覺得蠻特別的,因為在我的想法裡用一般的雜湊就好了,何必還要這麼麻煩,比如說:我把密碼和鹽巴一起雜湊,並且把雜湊的值和鹽巴做儲存就好,或是我把密碼做2次雜湊若2次不夠就3次以此類推。
但我後來想了一下,最主要會有密鑰衍生函數是因為如果是使用弱密碼做雜湊或是只用鹽巴的雜湊還是很容易被破解,再多了疊代次數就能讓輸出更混亂,這邊的混亂可以用熵來解釋。