PROJEKT R

2021/22

slika

Pobjednici natječaja CAESAR

AEGIS

Autor teksta: K. Šutalo

Specifikacija algoritma
Preporučene vrijednosti parametara za AEGIS algoritme:

AEGIS-128 AEGIS-128L AEGIS-256
Ključ / [bit] 128 128 256
Inicijalizacijski vektor / [bit] 128 128 256
Stanje / [bit] 640 1024 768
Oznaka / [bit] 128 128 128
Maksimalna duljina poruke / [bit] 128 128 128

Opis varijabli i konstanti:

AD Pridruženi podaci
C Kriptirani tekst
IV Inicijalizacijski vektor
D Ključ
P Običan tekst
Si Stanje na početku i-tog koraka
Si,j j-tih 16 bajtova stanja Si
T Autentifikacijska oznaka


AEGIS algoritmi koriste AESRound funkciju koja se sastoji od 3 manje funkcije: SubBytes, ShiftRows, MixColumns. SubBytes prima na ulazu 128 bitova odnosno 16 bajtova te svaki od njih mijenja s određenom vrijednosti iz S-tablice koja je konstantna. Izlaz SubBytes funkcije je 4x4 matrica koja je ujedno i ulaz u ShiftRows funkciju. Redci se pomiču u lijevo tako da se prvi redak ne pomiče, drugi redak se pomiče za jednu poziciju (bajt), treći redak za dvije pozicije i četvrti redak za tri pozicije. Vrijednosti koje „ispadnu“ ponovno se vraćaju u matricu s desne strane. Izlaz ShiftRows funkcije je 4x4 matrica koja ima iste elemente kao matrica s ulaza, ali su u drugačijem međusobnom odnosu. Funkcija MixColumns vrši transformaciju nad stupcima matrice. Kao ulaz funkcija dobiva 4 bajta iz jednog stupca te primjenom specijalne matematičke funkcije generira 4 potpuno nova bajta koji mijenjaju ulazne bajtove. Izlaz funkcije je 4x4 matrica koja se sastoji od potpuno novih elemenata.
sbox
Rijndael S-box
Enkriptiranje i dekriptiranje
Izvođenje AEGIS algoritama odvija se u koracima. Funkcija koja se izvodi pri svakom koraku je StateUpdate koja služi za ažuriranje stanja određenog koraka algoritma.

Za algoritam AEGIS-128 funkcija StateUpdate128() koja se koristi nad 80-bajtnim stanjem i 16-bajtnim blokovima poruke, a definirana je kao Si+1=StateUpdate128(Si,mi).

Za algoritam AEGIS-256 koristi se funkcija StateUpdate256() koja radi na istom principu kao i StateUpdate128, ali djeluje nad 96-bajtnim stanjem pa je podijeljena na 6 dijelova. Definirana je kao Si+1=StateUpdate256(Si,mi).

Za algoritam AEGIS-128L koristi se funkcija StateUpdate128L() koja djeluje nad 128-bajtnim stanjem i dvjema 16-bajtnim blokovima poruka. Definirana je kao Si+1=StateUpdate128L(Si,ma,mb).

Rad AEGIS algoritama podijeljen je u 5 faza, a one su: inicijalizacija podataka, procesiranje pridruženih podataka, kriptiranje, generiranje autentifikacijske oznake i dekriptiranje. Inicijalizacija podataka služi kako bi se inicijalizacijski vektor i ključ učitali u stanje. Sastoji se od deset iteracija ažuriranja stanja u kojima se inicijalizacijski vektor koristi kao poruka.
sbox
Ažuriranje stanja
Prvi korak je inicijalizacija podataka koja služi učitavanju inicijalizacijskog vektora, ključa i konstanti u stanje. Drugi korak služi za određivanje poruke koja se koristi u ažuriranju stanja u i-toj iteraciji inicijalizacije. U trećem koraku se u iteracijama ažurira stanje. Broj iteracija inicijalizacije podataka ovisi o odabiru algoritma iz razloga što algoritmi imaju drugačiju duljinu stanja

Faza procesiranja pridruženih podataka služi kako bi se u stanje dodali pridruženi podatci koji služe kao kontekst poruci koju kriptiramo. Potrebno je provjeriti je li zadnji blok pridruženih podataka puni blok, odnosno ima li 128 bitova za AEGIS-128 i AEGIS-256, odnosno 256 bitova za AEGIS-128L te ako nema blok se dopunjuje nulama. Ako je duljina pridruženih podataka (adlen) nula, stanje se neće ažurirati.

U fazi kriptiranja svaki se blok poruke koristi za ažuriranje stanja i za dobivanje kriptiranog bloka. Potrebno je provjeriti je li zadnji blok poruke puni blok, odnosno ima li 128 bitova za AEGIS-128 i AEGIS-256, odnosno 256 bitova za AEGIS-128L te ako nema blok se dopunjuje nulama.

Nakon faze kriptiranja potrebno je generirati autentifikacijsku oznaku koja će osigurati nepromijenjenost podataka. Generiranje oznake događa se u 3 koraka i koriste se duljine pridruženih podataka i poruke. U prvom koraku definiramo varijablu temp koja će nam služiti kao poruka u ažuriranju stanja pri generiranju oznake, a ta varijabla se sastoji od bloka stanja XOR adlen || msglen, gdje su adlen i msglen reprezentirani kao 64-bitni cijeli brojevi. U drugom koraku ažuriramo stanje pomoćnom varijablom temp. Zadnji korak je generiranje oznake iz blokova zadnjeg stanja operacijom XOR. Autentifikacijska oznaka T je prvih t bitova oznake T'.

Da bi dekriptiranje bilo moguće moraju biti poznati podatci o duljini ključa, duljinu inicijalizacijskog vektora, i duljinu oznake. Početak dekriptiranja sastoji se od inicijalizacije podataka i procesiranja pridruženih podataka. Nakon toga potrebno je provjeriti je li zadnji blok kriptiranog teksta puni blok te ako nije popunjava se nulama. U idućem koraku se događa dekriptiranje pojedinih blokova kriptiranog teksta koji se koriste i za ažuriranje stanja. Provjera autentifikacijske oznake radi se na način da se iz dekriptiranog teksta generira nova oznaka te se provjeri jednakost dobivenih oznaka.
Obilježja
Kako bi se dobila tražena svojstva algoritama za kriptiranje, postoje zahtjevi koji moraju biti zadovoljeni. Prvi zahtjev algoritama jest da se ključ mora generirati slučajno iz uniformnog prostora ključeva. Također, poruke koje se kriptiraju parom (ključ, IV) moraju imati istu duljinu autentifikacijske oznake i moraju imati jedinstveni par za svaku poruku. Zadnje svojstvo koje mora biti zadovoljeno jest da, ako kriptirani tekst ne prođe verifikaciju, dekriptirani tekst i kriva autentifikacijska oznaka ne smiju biti vidljivi na izlazu. Korištenje AEGIS algoritama smatra se sigurnim ako su zadovoljena sva tri uvjeta.

U sigurnim uvjetima korištenja, prednost napadača u forgery attack-u je 2-t, a ako se napad ponovi n puta onda je (n×2)-t. Ako napadač nije uspio otkriti informacije tijekom forgery attack-a, nije moguće razotkriti ključ i stanje brže od iscrpnog pretraživanja ključeva. Preporučeno je korištenje autentifikacijske oznake duljine 128 bitova, no bitno je uočiti da prilikom korištenja AEGIS-256 algoritma s oznakom duljine 128 bitova postoji način pronalaska stanja brže od iscrpnog pretraživanja ključeva ako se napravi forgery attack oko 2128 puta za isti par (ključ, IV).

Cilj ovih algoritama jest visoka sigurnost i visoke performanse kriptiranja. Visoke performanse postignute su korištenjem AESRound funkcije koja je implementirana u najnovijim Intel i AMD procesorima. Uz to, algoritam je dizajniran tako da koristi što više paralelnih AESRound poziva kako bi se ubrzao rad algoritma. Visoka sigurnost algoritama postiže se stvaranjem nasumičnih razlika u inicijalizacijskom vektoru i autentifikacijskoj oznaci u koraku inicijalizacije stanja kako „differential attack“ ne bi bio moguć.