Avaimen johdannaisfunktio
Kryptografiassa avainten johdannaisfunktio (key derivation function, KDF) muodostaa pitkän salaisen avaimen (jota kutsutaan "hashiksi") salaisesta lausekkeesta, kuten salasanasta. Avaimen derivointifunktion tulos näyttää samalta kuin toinen satunnaisesta lauseesta tehty tulos. Niitä käytetään myös salaisen avaimen uudelleenkäyttöön tietyssä muodossa, kuten Diffie-Hellman-avaintenvaihdon jaetun salaisen avaimen käyttämiseen salaisuuksien lähettämiseen AES:ssä.
Käytä
Avainten johdannaistoiminnot ovat tärkeitä tietoturvan kannalta. Niiden avulla pienempi "salainen lause" voidaan laajentaa suuremmaksi avaimeksi (jonka pituus määräytyy KDF:n digest-koon mukaan). Tämä vaikeuttaa alkuperäisen "salaisen lauseen" löytämistä. Avaimen pituus vaikeuttaa lauseen tai piilotetun salaisuuden löytämistä kokeilemalla ja erehtymällä (eli brute-forcingin avulla), koska tietokoneen on vaikea arvata sitä. Joskus salaiseen lausekkeeseen lisätään pieni satunnaisdatan pala (jota kutsutaan "suolaksi") ennen kuin sitä käytetään KDF:n kanssa, jotta alkuperäisen "salaisen lausekkeen" arvaaminen tunnettujen "hashien" luettelon avulla olisi vaikeampaa.
Se tekee salasanojen tarkistamisesta turvallisempaa ilman todellisen salasanan käyttöä. Oikean salasanan säilyttämisen sijaan säilytetään avaimen "hash", ja salasanaa tarkistettaessa oikean salasanan "hash" tarkistetaan syötteen perusteella. Jotkin ohjelmistot rajoittavat salasanan pituutta, ja niitä käytetään joskus tekemään suuremmista salaisista lausekkeista pienempiä. KDF-tietokannat on myös tehty siten, että "hashin" muodostaminen vaatii tietokoneelta jonkin verran vaivaa. Tämä vaikeuttaa mahdollisten yhdistelmien luettelon laatimista.
Yleisesti käytetyt KDF:t
- SHA-2
- PBKDF2
- Scrypt
- Bcrypt
- Argon2
- Chacha20