Argon 2

Argon 2

Argon2  on keskeinen johdannaisfunktio, jonka ovat kehittäneet Alex Biryukov , Daniel  Dinu ja Dmitry Khovratovich Luxemburgin yliopistosta vuonna 2015 [ 1] .  

Tämä on moderni yksinkertainen algoritmi, joka tähtää korkeaan muistin täyttöasteeseen ja useiden laskentayksiköiden tehokkaaseen käyttöön [2] . Algoritmi julkaistaan ​​Creative Commons -lisenssillä .

Historia

Vuonna 2013 Password Hashing Competition julkistettiin uuden salasanan hajautustoiminnon luomiseksi. Vaatimukset uudelle algoritmille olivat käytetyn muistin määrä, muistilohkojen läpikulkujen määrä ja kryptausanalyysin kestävyys.

Vuonna 2015 Argon2 julistettiin kilpailun voittajaksi [1] . Sen jälkeen algoritmiin on tehty 4 suurta muutosta. Joitakin lohkojen ja kirjoitusvirheiden muodostavien algoritmien kuvauksia on korjattu, suositeltuja parametreja on lisätty [1] [3] .

Syöttötiedot

Argon2 käyttää perus- ja lisäparametreja tiivistykseen:

Pääasiallinen:

Lisätiedot:

Algoritmin versiot

Algoritmista on kaksi versiota:

Kuvaus

Argon2 toimii seuraavan periaatteen mukaisesti:

  1. Salasana tiivistetään Blake2b- hajautustoiminnolla .
  2. Hajautustulos kirjoitetaan muistilohkoihin.
  3. Muistilohkot muunnetaan käyttämällä pakkaustoimintoa
  4. Algoritmin tuloksena syntyy avain ( eng.  Tag ).

Muistilohkojen täyttäminen

,, missä

 — indeksointitoiminto —  muistitaulukko  — pakkaustoiminto  — viesti (salasana), — ​​Blake2b-  hajautustoiminto .

Indeksointitoiminnot riippuvat Argon2-algoritmin versiosta:

Jos kyseessä on peräkkäinen toiminta, pakkaustoimintoa käytetään kerran. Argon2d-versiossa -:nnessa vaiheessa edellisen lohkon määrittämä indeksi syötetään funktion tuloon . Argon2i-versiossa otetaan satunnaislukugeneraattorin arvo ( laskuritilassa).

Rinnakkaistilassa (algoritmi rinnastetaan säikeiksi ) tiedot jaetaan matriisin lohkoille , jolloin ensimmäiset lohkot ovat tulotietojen hajautustuloksia ja seuraavat asetetaan pakkausfunktiolla. edellisille lohkoille ja viitelohkolle :

, jossa  on 1024 tavun kokoisten muistilohkojen lukumäärä,  on hash-funktio, joka ottaa syötteeksi 32-bittisen esityksen tuloparametreista, jonka lähtö on 64-bittinen arvo,  on muuttuvan pituinen hash-funktio alkaen ,  on muistin määrä,  on iteraatioiden lukumäärä.

Lopulta:

[5]

Tukilohkon etsiminen

Seuraavaksi määritetään sen rivin indeksi , josta lohko tulee. Kun arvoksi otetaan nykyinen rivinumero . Sitten joukko indeksejä määritetään kahden säännön mukaisesti:

  1. Jos se vastaa nykyisen rivin numeroa, kaikki aiemmin tallentamattomat lohkot lisätään indeksijoukkoon ilman
  2. Jos se ei täsmää, lohkot otetaan kaikista viivan osista ja viimeisistä osista.

Tämän seurauksena lohkon numero lasketaan kohdasta , jota pidetään viitteenä:

[6]

Funktio H'

Blake2b on 64-bittinen versio BLAKE -funktiosta , joten se on rakennettu seuraavasti:

Yleisesti ottaen funktion lähtöarvo rakentuu lohkojen ensimmäisille 32 bitille - ja viimeiselle lohkolle  :

G-pakkaustoiminto

Perustuu Blake2b-pakkausominaisuuteen. Se vastaanottaa kaksi 8192-bittistä lohkoa tulona ja tuottaa 1024-bittisen lohkon. Ensin lisätään kaksi lohkoa ( ), sitten matriisi käsitellään rivi riviltä ( ), sitten tuloksena oleva matriisi käsitellään sarake sarakkeelta ( ) ja tulos on [6] .

Kryptanalysis

Törmäyssuojaus : Itse Blake2b-toimintoa pidetään kryptografisesti turvallisena. Lisäksi algoritmin laatijat osoittivat indeksointisääntöihin viitaten törmäysten puuttumisen datalohkojen sisällä ja niiden esiintymisen pienen todennäköisyyden pakkausfunktiota käytettäessä.

Hyökkäys esikuvan löytämiseksi : anna hyökkääjän poimianiin, ettäjatkaakseen hyökkäystä hänen täytyy poimia esikuva:, mikä on mahdotonta. Sama päättely soveltuu toisen esikuvan etsimiseen.

Ajoitushyökkäykset : Jos käyttäjän on sopeuduttava ajoitushyökkäykseen , tulee käyttää Argon2i-versiota, koska se käyttää itsenäistä muistia [7] .

Hyökkäykset

Muistin optimointihyökkäys

Dan Bonet , Henry Corrigan-Gibbs ja Stuart Schechter osoittivat Argon2i version 1.2 haavoittuvuuden työssään. Yksikierrosversiossa heidän hyökkäyksensä vähensi muistin kulutusta kertoimella 4 hidastamatta suoritusta. Monikierrosversiolle - 2,72 kertaa. Myöhemmin versiossa 1.3 korvausoperaatio korvattiin XOR :lla [8] .

AB16

Joel Alwen ja Jeremiah Blocki osoittivat työssään, että heidän AB16-hyökkäysalgoritminsa on tehokas paitsi Argon2i-A:lle (erittelyn ensimmäisestä versiosta), mutta myös Argon2i-B:lle (uusimmasta versiosta 1.3). He osoittivat, että Argon2:n hyökkääminen 1 Gt RAM-muistilla vähentää laskenta-aikaa puoleen. Tehokas suojaus edellyttää yli 10 läpimenoa. Mutta suositellulla menetelmällä algoritmiparametrien valintaan käytännössä usein voidaan valita vain 1 kierros. Argon2:n kehittäjät väittävät, että käyttämällä AB16-hyökkäystä Argon2i-B:lle klo , aika lyhenee enintään 2 kertaa muistiin asti, ja suosittelevat käyttämään koon binäärilogaritmin ylittävää läpikulkua.[ selventää ] käytetty muisti [9] .

Sijoituksen kompromissihyökkäys

Tämä hyökkäys on yksi tehokkaimmista Argon2d:lle. Se lyhentää käsittelyaikaa 1,33 kertaa. Argon2i: n kohdalla kerroin on 3 [10] .

Roskakeräilijöiden hyökkäykset

Esitetyn hyökkäyksen pääehto on hyökkääjän pääsy kohdekoneen sisäiseen muistiin joko hajautusjärjestelmän päätyttyä tai jossain vaiheessa, kun itse salasana on vielä muistissa. Toiminnon avulla tapahtuvan tietojen uudelleenkirjoituksen ansiosta Argon2i ja Argon2d kestävät näitä hyökkäyksiä [11] .

Sovellus

Argon2 on optimoitu x86 - arkkitehtuurille ja voidaan toteuttaa Linuxissa , OS X :ssä ja Windowsissa .

Argon2d on tarkoitettu järjestelmiin, joissa hyökkääjä ei käytä säännöllisesti järjestelmämuistia tai prosessoria. Esimerkiksi taustapalvelimille ja kryptomineraajille . Käytettäessä yhtä ydintä 2 GHz:n suorittimessa ja 250 Mt RAM-muistia Argon2d:n kanssa (p=2), kryptominointi kestää 0,1 s, ja käytettäessä 4 ydintä ja 4 Gt muistia (p=8 ) todennus taustapalvelimella kestää 0, 5 s .

Argon2i sopii paremmin käyttöliittymäpalvelimiin ja kiintolevyn salaukseen . Avaimen luominen salausta varten 2 GHz:n suorittimessa , jossa on 2 ydintä ja 6 Gt RAM-muistia Argon2i:n kanssa (p=4), kestää 3 sekuntia, kun taas todennus käyttöliittymäpalvelimella käyttämällä kahta ydintä ja 1 Gt muistia Argon2i:n avulla (p=4) , kestää 0,5 s [12] .

Muistiinpanot

  1. 1 2 3 4 Salasanan hajautuskilpailu .
  2. Argon, 2016 , s. 293.
  3. Argon, 2016 , s. 292.
  4. Argon, 2016 , s. 294.
  5. Argon, 2016 , s. 294-295.
  6. 1 2 Argon, 2016 , s. 295.
  7. Argon, 2016 , s. 296-297.
  8. Henry Corrigan-Gibbs, 2016 .
  9. Alwen, Blocki, 2016 .
  10. Argon, 2016 , s. 297.
  11. Yleiskatsaus, 2015 .
  12. Argon, 2016 , s. 300.

Kirjallisuus

Linkit