Anahtar türetme fonksiyonu
Tarihçe

İlk [kaynak belirtilmeli] kasıtlı olarak yavaş (anahtar uzatılması) parola tabanlı anahtar türetme fonksiyonu "crypt " (veya el kitabı sayfasından belirtildiği gibi "crypt(3)") olarak adlandırıldı ve 1978'de Robert Morris tarafından icat edildi. Bu fonksiyonla kullanıcı şifresinin ilk 8 karakterini anahtar olarak kullanarak, değiştirilmiş bir DES şifreleme algoritmasıyla 25 yineleme gerçekleştirip (hesaplamalar için gerçek zamanlı bilgisayar saatinden okunan 12 bitlik bir sayının kullanıldığı ) bir sabiti (sıfır) şifrelenir ve elde edilen 64 bitlik sayı yazdırılabilir 11 karakter olarak kodlanır ve daha sonra Unix şifre dosyasına kaydedilir. O zamanlar için büyük bir ilerleme olsa da, PDP-11 döneminden itibaren işlemci hızlarının artmasıyla birlikte, kaba kuvvet saldırıları crypt'e karşı uygulanabilir hale geldi ve depolama alanındaki ilerleme 12 bit tuzlamayı yetersiz hale getirdi. Ayrıca crypt fonksiyonlarının kullanıcı şifrelerini 8 karakter ile sınırlaması, anahtar alanını ve güçlü geçit parolası oluşturmayı sınırlandırdı. [kaynak belirtilmeli]
PBKDF2 ([rfc:2898 RFC 2898'de] belirtilen) gibi modern parola tabanlı anahtar türetme işlevleri, SHA-2, daha fazla tuz (örneğin 64 bit ve daha büyük) gibi bir şifreleme karma ve yüksek yineleme sayısı gibi kriptografik özetleme kullanırlar. (genellikle on veya yüz binlerce).
NIST, en az 128 bit rastgele tuz ve NIST tarafından onaylanmış bir şifreleme işlevi gerektirir, örneğin SHA serisi veya AES gibi(MD5 onaylanmadı). Her ne kadar yüksek verim, genel amaçlı özet fonksiyonlarında arzulanan bir özellik olsa da, kaba kuvvet kırılmasına karşı savunmanın birincil öncelik olduğu şifre güvenliği uygulamalarında durum bunun tersi geçerlidir. GPU'lar, FPGA'lar ve hatta ASIC'ler gibi paralel donanımların artan kullanımı, kaba kuvvet saldırısı için uygun algoritmaların seçimini daha da kritik hale getirdi, çünkü iyi algoritma sadece belirli bir miktarda hesaplama maliyetini artırmamalı, aynı zamanda bu tür görevler için modern paralel platformların maliyet / performans avantajlarına da karşı da dirençli olmalıdır. Bu amaçla, bcrypt, scrypt ve daha yakın bir zamanda Argon2 (Parola Özetleme Yarışmasının galibi) dahil olmak üzere çeşitli algoritmalar tasarlandı. Saldırganlar tarafından kabaca 36 milyon parola özetinin çalındığı büyük ölçekli Ashley Madison veri ihlali, parolaların korunmasında algoritma seçiminin önemini göstermiştir. Her ne kadar karma özetleri korumak için bcrypt kullanılsa da (büyük ölçekli kaba kuvvet saldırılarının yapılmasını masraflı ve zaman alıcı hale getirdi), risk altındaki verilerdeki hesapların önemli bir kısmı,11 milyondan fazla parolanın haftalar içerisinde kırılmasını mümkün kılacak genel amaçlı MD5 algoritmasına dayanan bir parola özeti içeriyordu.
Haziran 2017'de, NIST dijital kimlik doğrulama kılavuzlarının yeni bir revizyonunu yayınladı: NIST SP 800-63B-3.  Kılavuza göre: "Sağlayıcılar hafızaya aldıkları gizli bilgileri(parolalar gibi) çevrimdışı saldırılara karşı dayanıklı olacak bir şekilde depolayabilirler. Hafızaya alınan sırlar, uygun bir tek yönlü anahtar türetme işlevi kullanılarak tuzlanır ve karıştırılabilirler. Anahtar türetme fonksiyonları parola, tuz ve bir maliyet faktörü girdisi alır, ardından bir parola özeti oluşturur. Amaçları, parola özet dosyası elde etmiş bir saldırgan tarafından yapılan tüm şifre tahmin denemelerini daha masraflı hale getirmektir ve bu nedenle tahmin saldırılarının maliyeti yüksektir." ve "Tuz, depo edilmiş özetler arasındaki çakışmayı en aza indirmek için, en az 32 bir uzunluğunda olmalı ve rastgele olarak seçilmelidir."