PBKDF2 - PBKDF2
![]() | tento článek má nejasný styl citace.Prosinec 2012) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v kryptografie, PBKDF1 a PBKDF2 (Funkce odvození klíče podle hesla 2) jsou funkce odvození klíče s klouzavými výpočetními náklady, které se používají ke snížení zranitelnosti vůči útoky hrubou silou.
PBKDF2 je součástí RSA Laboratories ' Standardy kryptografie veřejného klíče (PKCS) série, konkrétně PKCS # 5 v2.0, také publikované jako Pracovní skupina pro internetové inženýrství je RFC 2898. Nahrazuje PBKDF1, který mohl produkovat pouze odvozené klíče dlouhé až 160 bitů.[1] RFC 8018 (PKCS # 5 v2.1), publikováno v roce 2017, doporučuje PBKDF2 pro hashování hesel.[2]
Účel a provoz
PBKDF2 platí a pseudonáhodná funkce, jako ověřovací kód založený na hash (HMAC) na vstup Heslo nebo přístupová fráze spolu s a sůl hodnotu a opakuje proces mnohokrát, aby vytvořil a odvozený klíč, které lze poté použít jako a kryptografický klíč v dalších operacích. Přidaná výpočetní práce umožňuje prolomení hesla mnohem obtížnější a je známá jako protahování klíčů.
Když byl standard napsán v roce 2000, doporučený minimální počet iterací byl 1 000, ale parametr se má v průběhu času zvyšovat s rostoucí rychlostí CPU. Standard Kerberos v roce 2005 doporučil 4096 iterací;[3] Apple údajně použil 2000 pro iOS 3 a 10000 pro iOS 4;[4] zatímco LastPass v roce 2011 použil 5 000 iterací pro klienty JavaScript a 100000 iterace pro hašování na straně serveru.[5]

Přidání soli do hesla snižuje možnost používat předpočítané hashy (duhové stoly ) pro útoky a znamená, že více hesel musí být testováno jednotlivě, ne všechna najednou. Norma doporučuje délku soli nejméně 64 bitů.[6] Americký národní institut pro standardy a technologie doporučuje délku soli 128 bitů.[7]
Proces odvození klíče
Funkce odvození klíče PBKDF2 má pět vstupních parametrů:[8]
DK = PBKDF2 (PRF, heslo, sůl, c, dkLen)
kde:
- PRF je pseudonáhodná funkce dvou parametrů s výstupní délkou hLen (např. klíčovaný HMAC)
- Heslo je hlavní heslo, ze kterého je generován odvozený klíč
- Sůl je sekvence bitů, známá jako a kryptografická sůl
- C je počet požadovaných iterací
- dkLen je požadovaná bitová délka odvozeného klíče
- DK je vygenerovaný odvozený klíč
Každý hLen-bitový blok Ti odvozeného klíče DK se počítá následovně (s +
zřetězení značkovacího řetězce):
DK = T1 + T.2 + ... + Tdklen / hlenTi = F (heslo, sůl, c, i)
Funkce F je xor (^) z C iterace zřetězených PRF. První iterace použití PRF Heslo jako klíč PRF a Sůl zřetězeno s i zakódováno jako 32bitové celé číslo big-endian jako vstup. (Všimněte si, že i je index založený na 1.) Následné iterace použití PRF Heslo jako klíč PRF a výstup předchozího výpočtu PRF jako vstup:
F (heslo, sůl, c, i) = U1 ^ U2 ^ ... ^ UC
kde:
U1 = PRF (heslo, sůl + INT_32_BE (i)) U2 = PRF (heslo, U1) ... UC = PRF (heslo, Uc-1)
Například, WPA2 používá:
DK = PBKDF2 (HMAC − SHA1, přístupová fráze, ssid, 4096, 256)
PBKDF1 měl jednodušší proces: počáteční U (volala T v této verzi) vytvořil PRF (heslo + sůl)
a následující jsou jednoduše PRF (Upředchozí)
. Klíč je extrahován jako první dkLen bity posledního hash, což je důvod, proč existuje limit velikosti.[8]
Kolize HMAC
PBKDF2 má zajímavou vlastnost při použití HMAC jako své pseudonáhodné funkce. Je možné triviálně postavit libovolný počet různých párů hesel s kolizemi uvnitř každé dvojice.[9] Pokud je dodané heslo delší než velikost bloku základní hashovací funkce HMAC, heslo je nejprve předem hašováno do souhrnu a tento souhrn je místo toho použit jako heslo. Například následující heslo je příliš dlouhé:
- Heslo:
plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd
proto (když například používáte HMAC-SHA1) je předem hašován pomocí SHA-1 do:
- SHA1 (hex):
65426b585154667542717027635463617226672a
Které lze v ASCII reprezentovat jako:
- SHA1 (ASCII):
eBkXQTfuBqp'cTcar & g *
To znamená bez ohledu na sůl nebo iterace, PBKDF2-HMAC-SHA1 vygeneruje stejné bajty klíčů pro hesla:
- „plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd“
- „eBkXQTfuBqp'cTcar & g *“
Například pomocí:
- PRF: HMAC-SHA1
- Sůl: A009C1A485912C6AE630D3E744240B04
- Iterace: 1,000
- Odvozená délka klíče: 16 bytů
následující dvě volání funkcí:
PBKDF2-HMAC-SHA1 ("plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd", ...) PBKDF2-HMAC-SHA1 ("eBkXQTfuBqp'cTcar & g *", ...
vygeneruje stejné odvozené bajty klíčů (17EB4014C8C461C300E9B61518B9A18B
). Tyto odvozené kolize klíčů nepředstavují chybu zabezpečení - protože k vygenerování souboru je stále nutné znát původní heslo hash hesla.[10]
Alternativy k PBKDF2
Jednou slabinou PBKDF2 je, že zatímco jeho počet iterací lze upravit tak, aby to zabralo libovolně velké množství výpočetního času, lze jej implementovat s malým obvodem a velmi malou RAM, což umožňuje útoky hrubou silou aplikačně specifické integrované obvody nebo jednotky grafického zpracování relativně levné.[11] The bcrypt funkce hašování hesla vyžaduje větší množství paměti RAM (ale stále ji nelze samostatně vyladit, tj. opraveno pro dané množství času CPU) a je proti těmto útokům o něco silnější,[12] zatímco modernější scrypt funkce odvození klíče může využívat libovolně velké množství paměti, a je proto odolnější vůči útokům ASIC a GPU.[11]
V roce 2013 Soutěž o hašování hesel (PHC) bylo rozhodnuto vyvinout odolnější přístup. Dne 20. července 2015 Argon2 byl vybrán jako konečný vítěz PHC se zvláštním uznáním uděleným dalším čtyřem schématům hašování hesel: Catena, Lyra2, ano, krypta a Makwa.[13]
Viz také
Reference
- ^
, Burt Kaliski. „PKCS # 5: Specifikace kryptografie založená na heslech verze 2.0“. tools.ietf.org. Citováno 2015-10-23. - ^ „PKCS # 5: Specifikace kryptografie založená na heslech verze 2.1“. tools.ietf.org.
- ^ Kenneth Raeburn. „Advanced Encryption Standard (AES) Encryption for Kerberos 5“. tools.ietf.org. Citováno 2015-10-23.
- ^ „Smartphone Forensics: Cracking BlackBerry Backup Passwords“. Pokročilé prolomení hesla - přehled (ElcomSoft). Citováno 2015-10-23.
- ^ „Oznámení o zabezpečení LastPass“. Blog LastPass. Citováno 2015-10-23.
- ^ K. Moriarty; et al. „RFC 8018 - PKCS # 5: Specifikace kryptografie založená na heslech, verze 2.1“. tools.ietf.org. Citováno 2018-01-24.
- ^ Meltem Sönmez Turan, Elaine Barker, William Burr a Lily Chen. „NIST SP 800-132, Doporučení pro odvozování klíčů na základě hesla, část 1: Aplikace úložiště“ (PDF). www.nist.gov. Citováno 2018-12-20.CS1 maint: více jmen: seznam autorů (odkaz)
- ^ A b RFC 2898
- ^ https://mathiasbynens.be/notes/pbkdf2-hmac
- ^ https://crypto.stackexchange.com/questions/26510/why-is-hmac-sha1-still-considered-secure
- ^ A b Colin Percival.scrypt Jak je uvedeno v„Silnější odvozování kláves pomocí sekvenčních funkcí náročných na paměť“. zastoupen na BSDCan'09, květen 2009.
- ^ „Nové 25 GPU monstrum pohltí hesla během několika sekund“. Hlavní kniha zabezpečení. 2012-12-04. Citováno 2013-09-07.
- ^ „Soutěž o hašování hesel“
externí odkazy
- RSA PKCS # 5 - RSA Laboratories PKCS # 5 v2.1.
- RFC 2898 - Specifikace PKCS # 5 v2.0.
- RFC 6070 - Testujte vektory na PBKDF2 s HMAC-SHA1.
- Speciální publikace NIST 800-132 Doporučení pro odvozování klíčů na základě hesla