Funkce pro odvození klíče

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Funkce pro odvození klíče ( odtud zkratka KDF) je v kryptografii označení funkce, která odvozuje (vytvoří) jeden nebo více šifrovacích klíčů z nějakého tajemství (hlavní klíč, heslo, heslová fráze), typicky za použití kryptografické hašovací funkce (obecně lze použít jakýkoliv generátor pseudonáhodných čísel). KDF zajišťuje kryptografickou bezpečnost odvození klíče.

Použití

KDF je často použita, ve spojení s veřejnými parametry, k odvození jednoho nebo více klíčů ze společných tajných hodnot (někdy označováno jako „diverzifikace klíčů“). Takové použití může zabránit útočníkovi, který získal odvozený klíč, zjistit užitečné informace buď o vstupní tajné hodnotě nebo o kterémkoli odvozeném klíči. +more KDF může být také použita k zajištění toho, aby odvozené klíče měly požadované vlastnosti, například mohou být vyloučeny slabé klíče v některých specifických šifrovacích systémech.

Funkce pro odvození klíče jsou často používány jako součásti v tzv. pluralitních key-agreement protokolech. +more Příkladem takové funkce pro odvozování klíčů je KDF1, která je definovaná v IEEE Std 1363-2000, a podobné funkce v ANSI X9. 42.

Funkce pro odvození klíče je používána pro odvození klíče ze známého tajemství. Je-li například potřeba předsdílený klíč , používá se často heslová fráze, ze které je šifrovací klíč generován právě pomocí funkce pro odvození klíče. +more Odvozený klíč je pak možné použít pro symetrickou šifru.

Funkce pro odvození klíče slouží společně s kryptografickou solí k bezpečnému uložení hesel na pevném disku počítače, protože pak z uloženého tvaru nelze zpětně získat hesla pomocí slovníkového útoku nebo pomocí duhové tabulky.

Natažení klíčů (key stretching)

Funkce pro odvození klíčů jsou také použity v aplikacích k odvození klíčů z tajných hesel a heslových frází, které obvykle nemají takové požadované vlastnosti aby byly použity přímo jako šifrovací klíč. V takových aplikacích se obecně doporučuje, aby funkce pro odvození klíčů byly záměrně pomalé a tím znemožnily útok hrubou silou nebo slovníkový útok na vstupní hodnotu hesla nebo přístupového hesla.

Takové použití může být vyjádřeno jako OK=KDF(Klic, Sul, Iterace), kde OK je Odvozený Klíč, KDF je funkce pro odvození klíče, Klic je originální klíč nebo heslo, Sul je náhodné číslo které slouží jako kryptografická sůl a Iterace vyjadřuje počet opakování (iterací) sub-funkce. Odvozený klíč je použit namísto původního klíče nebo hesla jako klíč do systému. +more Hodnoty Soli a počtu iterací (pokud není tento počet stanoven pevně) jsou uloženy spolu s hašem hesla nebo poslány jako prostý text se zašifrovanou zprávou.

Obtížnost útoku hrubou silou se zvyšuje s počtem iterací. Praktickým limitem počtu iterací je neochota uživatelů tolerovat znatelné zpoždění při přihlášení k počítači nebo doba zobrazení zprávy o dešifrování zprávy. +more Použití soli brání útočníkům v použití před počítaných slovníků odvozených klíčů.

Alternativním přístupem je tzv. posilování klíče . +more Takováto funkce rozšiřuje klíč o náhodnou sůl, ale potom (na rozdíl od „natažení“ klíče) sůl bezpečně maže. To nutí jak útočníka tak i legitimního uživatele provádět hledání hodnoty soli hrubou silou. Ačkoliv pojednání které představuje funkci „natahování“ klíčů odkazuje na dřívější metodu (posilování klíčů) a záměrně bylo zvoleno jiné jméno, je výraz „posilování klíčů“ často (pravděpodobně nesprávně) spojován s výrazem „natahování“ klíčů.

První záměrně pomalou (klíč „natahující“) funkcí pro odvození klíče založenou na bázi hesla byla funkce nazývaná „crypt“ (nebo „crypt(3)“ podle její manuálové stránky). Tuto funkci vynalezl Robert Morris v roce 1978 k zašifrování Unixových hesel. +more I když to byl v té době velký pokrok, zvyšující se rychlosti procesorů od dob PDP-11 zapříčinily proveditelnost útoku hrubou silou proti šifře crypt a neadekvátnost 12bitové soli. Návrh funkce crypt také omezoval délku hesla pouze na 8 znaků, což znemožnilo používání silných hesel.

Moderní heslově-založené funkce na odvození hesel, jako je PBKDF2 (specifikovaná v RFC 2898), používá kryptografický hash, jako je MD5 nebo SHA1, více soli (např. 64 bitů) a vysoký počet iterací (často 1000 a více). +more Objevily se návrhy aby byly použity algoritmy, které vyžadují velké množství paměti a jiných počítačových zdrojů, aby byly útoky více náročné (konkrétně custom hardware attacks). Jedním konkrétním příkladem takovéhoto algoritmu je funkce scrypt, založená na koncepci sekvenčních funkcích s pevnou pamětí, které jsou použity pro dodatečné zabezpečení soukromých klíčů a přístupových hesel.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top