Argon2

Argon2

Argon2  je klíčová derivační funkce vyvinutá Alexem Biryukovem , Danielem  Dinu a Dmitrijem Khovratovičem z Lucemburské univerzity v roce 2015 [1] .  

Jedná se o moderní jednoduchý algoritmus zaměřený na vysokou rychlost zaplňování paměti a efektivní využití více výpočetních jednotek [2] . Algoritmus je vydán pod licencí Creative Commons .

Historie

V roce 2013 byla vyhlášena soutěž Password Hashing Competition s cílem vytvořit novou funkci hashování hesel. Požadavky na nový algoritmus byly množství použité paměti, počet průchodů paměťovými bloky a odolnost vůči kryptoanalýze.

V roce 2015 byl Argon2 vyhlášen vítězem soutěže [1] . Od té doby prošel algoritmus 4 zásadními změnami. Byly opraveny některé popisy algoritmů pro generování některých bloků a překlepů, přidány doporučené parametry [1] [3] .

Vstupní data

Argon2 používá základní a pokročilé parametry pro hashování:

Hlavní:

Další:

Verze algoritmu

Existují dvě verze algoritmu:

Popis

Argon2 funguje na následujícím principu:

  1. Heslo je hašováno pomocí hašovací funkce Blake2b .
  2. Výsledek hash je zapsán do paměťových bloků.
  3. Paměťové bloky se převádějí pomocí funkce komprese
  4. V důsledku algoritmu je vygenerován klíč ( eng.  Tag ).

Plnění paměťových bloků

, , kde

 — indexační funkce ,  — paměťové pole,  — kompresní funkce,  — zpráva (heslo), —  hašovací funkce Blake2b .

Funkce indexování závisí na verzi algoritmu Argon2:

V případě sekvenčního provozu se kompresní funkce použije jednou. U verze Argon2d je v -tém kroku blok s indexem určeným předchozím blokem přiveden na funkční vstup . U verze Argon2i se bere hodnota generátoru náhodných čísel ( v režimu čítače).

V případě paralelního režimu (algoritmus je paralelizován do vláken ) jsou data distribuována po blocích matice , kde první bloky jsou výsledkem hashování vstupních dat a další jsou nastaveny kompresní funkcí. pro předchozí bloky a referenční blok :

, kde  je počet paměťových bloků o velikosti 1024 bajtů,  je hašovací funkce, která jako vstup přebírá 32bitovou reprezentaci vstupních parametrů, jejímž výstupem je 64bitová hodnota,  je hašovací funkce proměnné délky from ,  je množství paměti,  je počet iterací.

Nakonec:

[5]

Nalezení podpůrného bloku

Dále se určí index řádku, ze kterého blok pochází. Když , je hodnota brána jako aktuální číslo řádku . Pak je sada indexů určena podle 2 pravidel:

  1. Pokud odpovídá číslu aktuálního řádku, pak jsou všechny dříve nezaznamenané bloky přidány do sady indexů bez
  2. Pokud se neshoduje, bloky se převezmou ze všech segmentů čáry a posledních částí.

V důsledku toho se číslo bloku vypočítá z , což se bere jako reference:

[6]

Funkce H'

Blake2b je 64bitová verze funkce BLAKE , takže je postavena takto:

Celkově je výstupní hodnota funkce postavena na prvních 32 bitech bloků – a na posledním bloku  :

G kompresní funkce

Na základě funkce komprese Blake2b. Jako vstup přijímá dva 8192bitové bloky a vytváří 1024bitový blok. Nejprve se přidají dva bloky ( ), poté se matice zpracuje řádek po řádku ( ), poté se výsledná matice zpracuje sloupec po sloupci ( ) a výstupem je [6] .

Kryptoanalýza

Ochrana proti kolizi : Samotná funkce Blake2b je považována za kryptograficky bezpečnou. Autoři algoritmu také s odkazem na pravidla indexování prokázali absenci kolizí v datových blocích a nízkou pravděpodobnost jejich výskytu při aplikaci kompresní funkce.

Útok na nalezení předobrazu : nechejte útočníka zvednout tak, žepak, aby mohl pokračovat v útoku, musí zvednout předobraz:, což je nemožné. Stejná úvaha se hodí i pro útok nalezení druhého předobrazu.

Časové útoky: Pokud se uživatel potřebuje přizpůsobit časovacímu útoku , pak by měla být použita verze Argon2i, protože používá nezávislou paměť [7] .

Útoky

Útok optimalizace paměti

Dan Bonet , Henry Corrigan-Gibbs a Stuart Schechter ukázali ve své práci zranitelnost Argon2i verze 1.2. U jednoprůchodové verze jejich útok snížil spotřebu paměti o faktor 4, aniž by zpomalil provádění. Pro víceprůchodovou verzi - 2,72 krát. Později, ve verzi 1.3, byla operace přepsání nahrazena XOR [8] .

AB16

Joel Alwen a Jeremiah Blocki ve své práci dokázali, že jejich algoritmus útoku AB16 je účinný nejen pro Argon2i-A (od první verze specifikace), ale také pro Argon2i-B (od nejnovější verze 1.3). Ukázali, že útok na Argon2 s 1 GB RAM zkracuje dobu výpočtu na polovinu. Pro účinnou ochranu je třeba zadat více než 10 průchodů. Ale s doporučeným přístupem pro výběr parametrů algoritmu lze v praxi často vybrat pouze 1 průchod. Vývojáři Argon2 tvrdí, že použitím útoku AB16 na Argon2i-B v , se čas zkrátí maximálně 2krát až na 32 GB paměti a doporučují použít počet průchodů, který přesahuje binární logaritmus velikosti.[ objasnit ] použitá paměť [9] .

The ranking tradeoff attack

Tento útok je pro Argon2d jedním z nejúčinnějších. Zkracuje dobu zpracování 1,33krát. Pro Argon2i at je koeficient 3 [10] .

Útoky sběračů odpadků

Hlavní podmínkou pro prezentovaný útok je přístup útočníka do vnitřní paměti cílového stroje, a to buď po ukončení hashovacího schématu, nebo v určitém okamžiku, kdy je samotné heslo stále přítomno v paměti. Díky přepisování informací pomocí funkce jsou Argon2i a Argon2d vůči těmto útokům odolné [11] .

Aplikace

Argon2 je optimalizován pro architekturu x86 a může být implementován na Linuxu , OS X , Windows .

Argon2d je určen pro systémy, kde útočník pravidelně nepřistupuje k systémové paměti nebo procesoru. Například pro backend servery a kryptomery . Při použití jednoho jádra na 2GHz CPU a 250 MB RAM s Argon2d (p=2) trvá kryptominace 0,1 s a při použití 4 jader a 4 GB paměti (p=8) trvá ověření na backend serveru 0,5 s .

Argon2i je vhodnější pro frontend servery a šifrování pevných disků . Generování klíče pro šifrování na 2GHz CPU pomocí 2 jader a 6 GB RAM s Argon2i (p=4) trvá 3 s, zatímco ověřování na frontend serveru pomocí 2 jader a 1 GB paměti s Argon2i (p=4) , trvá 0,5 s [12] .

Poznámky

  1. Soutěž v hašování hesel 1 2 3 4 .
  2. Argon, 2016 , str. 293.
  3. Argon, 2016 , str. 292.
  4. Argon, 2016 , str. 294.
  5. Argon, 2016 , str. 294-295.
  6. 1 2 Argon, 2016 , str. 295.
  7. Argon, 2016 , str. 296-297.
  8. Henry Corrigan-Gibbs, 2016 .
  9. Alwen, Blocki, 2016 .
  10. Argon, 2016 , str. 297.
  11. Přehled, 2015 .
  12. Argon, 2016 , str. 300.

Literatura

Odkazy