Funkce odvození klíče (anglicky Key Derivation Function, KDF) je kryptografický mechanismus, který z proměnlivé a často kratší tajné hodnoty vytvoří jedna nebo více klíčových hodnot vhodných pro symetrické šifrování, autentizaci nebo jiná kryptografická použití. KDF zajistí, že výstup vypadá jako náhodný binární řetězec a lze jej bezpečně použít místo původní fráze, například hesla či sdíleného tajemství z výměny klíčů.

Vstupy a hlavní vlastnosti

Typické vstupy do KDF jsou: tajná fráze (heslo nebo sdílený klíč), náhodný sůl (salt) a volitelné kontextové informace (např. identifikátor účelu). KDF obvykle poskytuje parametry pro nastavení výpočetní náročnosti (počet iterací) a někdy i paměťové náročnosti, což ztěžuje útok hrubou silou. Správné použití soli zabraňuje použití předpočítaných slovníků a zajišťuje jedinečnost výstupu pro odlišné účely.

Typy a vývoj

  • PBKDF2: starší standard založený na iterovaném HMACu, široce rozšířený a uvedený v RFC.
  • bcrypt: adaptivní hash založený na Blowfishu, navržený pro ukládání hesel s možnou úpravou náročnosti.
  • scrypt: přidává paměťovou náročnost, aby znesnadnil paralelní útoky pomocí specializovaného hardwaru.
  • Argon2: vítěz soutěže Password Hashing Competition, moderní návrh s konfigurovatelnou paměťovou a výpočetní zátěží.

Pro derivaci klíčů z kryptografických sdílených sekretů se často používají konstrukce jako HKDF, které vycházejí z pevného pseudonáhodného funkčního bloku a umožňují odvození více nezávislých klíčů.

Použití a příklady

KDF se používají pro bezpečné ukládání hesel, rozšíření síly hesel (key stretching), odvození šifrovacích klíčů z hesel nebo z výsledku protokolu Diffie–Hellman. Praktické příklady: odvození klíče pro symetrické šifry (např. AES) z hesla, vytváření MAC klíčů, nebo generování samostatných klíčů pro šifrování a autentizaci v protokolech jako TLS či SSH. Obecně platí, že výstup KDF je rovnocenný s klíčem získaným z náhodné fráze.

Bezpečnostní doporučení a rozdíly

Bezpečné nasazení KDF vyžaduje: použití unikátního, náhodného saltu; nastavení parametrů tak, aby odolávaly aktuálním možnostem útočníků (vyšší počet iterací nebo větší paměť); a volbu vhodného algoritmu podle hrozeb (např. Argon2 nebo scrypt proti útokům na specializovaný hardware). KDF se liší od jednosměrných hashovacích funkcí tím, že jsou navrženy konkrétně pro odvození klíčů a mohou mít adaptivní nastavení zátěže; oproti čistým PRF nebo MAC konstrukcím kladou důraz na parametry proti útokům hrubou silou.

Další informace o roli KDF v kryptografii, použití s hesly (heslo), ochraně proti slovníkovým útokům (náhodná fráze) a v protokolech jako Diffie–Hellman (Diffie–Hellman) či při šifrování dat v AES (AES) lze nalézt v odborné literatuře a standardech.