Sleutelafleidingsfunctie
In de cryptografie maakt een sleutelafleidingsfunctie (KDF) een lange geheime sleutel (die een "hash" wordt genoemd) van een geheime zin, zoals een wachtwoord. Het resultaat van een sleutelafleidingsfunctie lijkt op een ander resultaat van een willekeurige zin. Ze worden ook gebruikt om geheime sleutels in een specifiek formaat opnieuw te gebruiken, zoals het gebruik van een gedeelde geheime sleutel van de Diffie-Hellman-sleuteluitwisseling voor het verzenden van geheimen in AES.
Gebruik
Sleutelafleidingsfuncties zijn belangrijk voor de veiligheid. Zij maken het mogelijk een kleinere "geheime zin" uit te breiden tot een grotere sleutel (van een vaste lengte, bepaald door de digest-grootte van de KDF). Dit maakt het moeilijker om de oorspronkelijke "geheime zin" terug te vinden. De lengte van de sleutel maakt het moeilijker om de zin of het verborgen geheim met vallen en opstaan (d.w.z. door brute-forcing) te ontdekken, doordat het voor een computer moeilijk wordt om te raden. Soms wordt een klein stukje willekeurige gegevens (een "salt" genoemd) toegevoegd aan de geheime zin voordat deze wordt gebruikt met een KDF, om het moeilijker te maken de oorspronkelijke "geheime zin" te raden met een lijst van bekende "hashes".
Het maakt het controleren van wachtwoorden veiliger zonder het echte wachtwoord te gebruiken. In plaats van het echte wachtwoord wordt een "hash" van de sleutel bewaard en bij het controleren van het wachtwoord wordt de "hash" van het echte wachtwoord gecontroleerd met de invoer. Sommige software stelt een limiet aan de lengte van een wachtwoord en wordt soms gebruikt om grotere geheime zinnen kleiner te maken. KDF's zijn ook zo gemaakt dat het een computer enige moeite kost om de "hash" te maken. Dit maakt het maken van een lijst van mogelijke combinaties moeilijk.
Vaak gebruikte KDF's
- SHA-2
- PBKDF2
- Scrypt
- Bcrypt
- Argon2
- Chacha20