Funkce odvození klíče - Key derivation function

V kryptografii je funkce odvozování klíčů ( KDF ) kryptografická hashovací funkce, která odvozuje jeden nebo více tajných klíčů od tajné hodnoty, jako je hlavní klíč, heslo nebo přístupová fráze pomocí pseudonáhodné funkce . KDF lze použít k roztažení klíčů na delší klíče nebo k získání klíčů požadovaného formátu, jako je například převod prvku skupiny, který je výsledkem výměny klíčů Diffie – Hellman, na symetrický klíč pro použití s AES . Klíčové kryptografické hashovací funkce jsou oblíbenými příklady pseudonáhodných funkcí používaných pro odvozování klíčů.

Odvození klíče

Původní použití pro KDF je odvozování klíčů, generování klíčů z tajných hesel nebo přístupových frází. Variace na toto téma zahrnují:

  • Ve spojení s netajenými parametry odvodit jeden nebo více klíčů ze společné tajné hodnoty (která se někdy také označuje jako „ diverzifikace klíčů “). Takové použití může zabránit útočníkovi, který získá odvozený klíč, naučit se užitečné informace o vstupní tajné hodnotě nebo o kterémkoli jiném odvozeném klíči. Lze také použít KDF, aby se zajistilo, že odvozené klíče mají další žádoucí vlastnosti, jako je například vyhýbání se „slabým klíčům“ v některých konkrétních šifrovacích systémech.
  • Jako součásti vícestranných protokolů o dohodě klíčů . Mezi příklady takových funkcí odvozování klíčů patří KDF1, definovaný v IEEE Std 1363-2000 , a podobné funkce v ANSI X9.42.
  • Odvození klíčů z tajných hesel nebo přístupových frází ( KDF založené na heslech ).
  • Odvození klíčů různé délky od poskytnutých: jedním příkladem KDF navržených pro tento účel je HKDF .
  • Protahování a posilování klíčů.

Protahování a posilování klíčů

Funkce odvozování klíčů se také používají v aplikacích k odvozování klíčů od tajných hesel nebo přístupových frází, které obvykle nemají požadované vlastnosti pro použití přímo jako kryptografické klíče. V takových aplikacích se obecně doporučuje, aby funkce odvozování klíčů byla prováděna záměrně pomalu, aby se zmařil útok hrubou silou nebo slovníkový útok na vstupní hodnotu hesla nebo přístupové fráze.

Takové použití může být vyjádřeno jako DK = KDF (klíč, sůl, iterace) , kde DK je odvozený klíč, KDF je funkce odvození klíče , klíč je původní klíč nebo heslo, sůl je náhodné číslo, které funguje jako kryptografická sůl , a iterace odkazuje na počet iterací dílčí funkce. Odvozený klíč se používá místo původního klíče nebo hesla jako klíč k systému. Hodnoty soli a počet iterací (pokud není pevná) jsou uloženy s hašovaným heslem nebo odeslány jako čistý text (nešifrované) se š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řihlašování k počítači nebo při sledování dešifrované zprávy. Použití soli brání útočníkům předpočítat slovník odvozených klíčů.

Alternativní přístup, nazývaný posílení klíče , rozšiřuje klíč o náhodnou sůl, ale poté (na rozdíl od roztahování klíčů) sůl bezpečně odstraní. To nutí útočníka i legitimní uživatele provést hrubou silou hledání hodnoty soli. Ačkoli článek, který zavedl roztahování klíčů, odkazoval na tuto dřívější techniku ​​a záměrně zvolil jiný název, termín „posílení klíče“ se nyní často (pravděpodobně nesprávně) používá k označení roztažení klíče.

Hashování hesla

Navzdory svému původnímu použití pro odvozování klíčů jsou KDF možná lépe známé pro jejich použití při hašování hesel ( ověření hesla porovnáním hash ), jak je používá soubor passwd nebo stínový soubor hesel . Funkce hash hesel by měly být relativně drahé pro výpočet v případě útoků hrubou silou a klíčové roztažení KDF náhodou tuto charakteristiku poskytuje. Nenápadné parametry se v tomto kontextu nazývají „ sůl “.

V roce 2013 byla vyhlášena soutěž hashování hesel, která měla vybrat nový standardní algoritmus pro hash hesel. Dne 20. července 2015 soutěž skončila a Argon2 byl vyhlášen jako konečný vítěz. Čtyři další algoritmy získaly zvláštní uznání: Catena, Lyra2, Makwa a yescrypt.

Dějiny

První záměrně pomalá (na klíč se táhnoucí) funkce odvozování klíčů založená na heslech se nazývala „ krypta “ (nebo „krypta (3)“ podle její manuálové stránky ) a byla vynalezena Robertem Morrisem v roce 1978. Šifrovala by konstantu (nula) pomocí prvních 8 znaků hesla uživatele jako klíče provedením 25 iterací upraveného šifrovacího algoritmu DES (ve kterém se k narušení výpočtů používá 12bitové číslo načtené z hodin počítače v reálném čase). Výsledné 64bitové číslo je zakódováno jako 11 tisknutelných znaků a poté uloženo do souboru hesel Unixu . I když to byl v té době velký pokrok, zvýšení rychlosti procesoru od doby PDP-11 učinilo útoky hrubou silou proti kryptám proveditelné a pokroky v skladování učinily 12bitovou sůl neadekvátní. Design funkce crypt také omezuje uživatelské heslo na 8 znaků, což omezuje prostor pro klíče a znemožňuje silné přístupové fráze .

Přestože je vysoká propustnost žádoucí vlastností hashovacích funkcí pro obecné účely, opak je pravdou v aplikacích zabezpečení heslem, ve kterých je ochrana před praskáním hrubou silou primárním problémem. Rostoucí využívání masivně paralelního hardwaru, jako jsou GPU, FPGA, a dokonce i ASIC pro praskání hrubou silou, způsobilo, že výběr vhodných algoritmů je ještě kritičtější, protože dobrý algoritmus by měl nejen vynutit určité množství výpočetních nákladů nejen na CPU, ale také odolávají výhodám nákladů/výkonu moderních masivně paralelních platforem pro takové úkoly. Různé algoritmy byly navrženy speciálně pro tento účel, včetně bcrypt , scrypt a v poslední době, Lyra2 a Argon2 (druhé bytí vítězem Heslo Hešování pro hospodářskou soutěž ). Rozsáhlé narušení dat Ashley Madison, při kterém útočníci ukradli zhruba 36 milionů hash hesel, ilustrovalo důležitost výběru algoritmů při zabezpečení hesel. Ačkoli byl k ochraně hashů použit bcrypt (což způsobuje, že praskání hrubou silou ve velkém je drahé a časově náročné), významná část účtů v kompromitovaných datech také obsahovala hash hesel na základě rychlého obecného algoritmu MD5 , který je možné, že více než 11 milionů hesel bude prolomeno během několika týdnů.

V červnu 2017 vydal americký národní institut pro standardy a technologie (NIST) novou revizi svých pokynů pro digitální autentizaci, NIST SP 800-63B-3, a uvádí, že: „Ověřovatelé MUSÍ ukládat zapamatovaná tajemství [tj. Hesla] ve formě který je odolný vůči offline útokům. Uložená tajemství MUSÍ být solena a hašována pomocí vhodné jednosměrné funkce odvozování klíčů. Funkce odvozování klíčů vyžadují jako vstupy heslo, sůl a nákladový faktor a poté generují hash hesla. Jejich účelem je aby každá zkouška hádání hesel útočníkem, který získal soubor hash hesla, byla drahá, a proto náklady na hádající útok vysoké nebo nepřiměřené. “

Moderní funkce odvozování klíčů založené na heslech, jako je PBKDF2 (specifikovaná v RFC 2898), jsou založeny na uznávaném kryptografickém hashu, jako je SHA-2 , používají více soli (alespoň 64 bitů a jsou vybrány náhodně) a vysoký počet iterací. NIST doporučuje minimální počet iterací 10 000. „U zvláště důležitých klíčů nebo u velmi výkonných systémů nebo systémů, kde výkon vnímaný uživatelem není rozhodující, může být vhodný počet iterací 10 000 000.“

Reference

Další čtení