PROJEKT R

2021/22

slika

Pobjednici natječaja CAESAR

ACORN-128

Autor teksta: V. Sabolčec

Specifikacija algoritma
Ulazni podaci za funkciju enkripcije ACORN-128 su:
  • Jasan tekst P duljine do 264 bita
  • Tajni ključ K duljine 128 bita
  • Pridruženi podaci AD duljine do 264 bita
  • Javni broj poruke N (nonce) duljine 128 bita

Izlazni podaci funkcije za enkripciju ACORN-128 su:
  • Šifrirana poruka C duljine |P| bita
  • Autentifikacijska oznaka T duljine 128 bita

ACORN-128 kao IV koristi javni broj poruke N (nonce).
Stanje algoritma u i-tom koraku Si ACORN-128 je opisano sa 293 bita.
Enkriptiranje i dekriptiranje
Prilikom rada, ACORN koristi vektor bitova f gdje je sa fi opisan bit i-tog koraka algoritma, vektor keystream bitova ks gdje je sa ksi opisan bit i-tog koraka algoritma te vektore kontrolnih bitova ca i cb gdje su sa cai i cbi opisani kontrolni bitovi i-tog koraka algoritma.

Funkcija za generiranje novog stanja izračunava novo stanje Si+1 na temelju trenutnog stanja Si, podatkovnog bita mi te kontrolnih bitova cai i cbi. Funkcija na početku modificira stanje Si koristeći šest LFSR-a (linear-feedback shift register) te koristi to modificirano stanje za generiranje keystream bita i feedback bita te nakon toga posmiče registar stanja za jedan bit te zadnji bit izračunava pomoću feedback bita fi i podatkovnog bita mi.

U svakom koraku se provodi generiranje keystream bita za i-ti korak ksi pomoću modificiranog stanja algoritma u i-tom koraku Si.

U svakom koraku se provodi i generiranje feedback bita za i-ti korak fi pomoću modificiranog stanja u i-tom koraku Si te kontrolnih bitova cai i cbi.

Algoritam započinje inicijalizacijom. Inicijalizacija učitava ključ K i inicijalizacijski vektor IV (jedan par ključa K i inicijalizacijskog vektora IV se koriste za sigurno šifriranje poruke) u stanje i vrti se 1792 koraka šifriranja. U inicijalizaciji su kontrolni bitovi cbi postavljeni u 1 pa se za generiranje novog stanja koristi keystream bit.

Sljedeći korak je procesiranje pridruženih podataka AD. AD se učitava u m (od nultog bita do |AD| – 1 bita). Iza toga se u m stavlja uzorak od 256 bita koji započinje jedinicom, a svi ostali bitovi su nule (1000...0000). Kontrolni bitovi u cbi su postavljeni u 1 da se za generiranje novog stanja koristi ksi. Kontrolni bitovi cai su postavljeni tako da se odvoji AD od poruke koji se šifrira ili šifrirane poruke, odnosno da se onemogući korištenje dijela AD kao poruke ili obrnuto.

Nakon toga slijedi šifriranje. U podatkovne bitove m se upisuje nešifrirana poruka te iza nje uzorak od 256 bita koji započinje jedinicom, a svi ostali bitovi su nule (1000...0000). U svakom koraku se računa novo stanje te se j-ti bit šifrirane poruke računa kao operacija eksluzivni ili između j-tog bita nešifrirane poruke i keystream bita za i-ti korak algoritma. Bitovi cbi su postavljeni u 0 tako da se ne koristi keystream bit ne koristi za generiranje novog stanja. Kontrolni bitovi cai su postavljeni tako da se odvoji procesuiranje nešifiranog poruke ili šifrirane poruke kao autentifikacijske oznake u sljedećem koraku.

Nakon enkripcije se generira autentifikacijska oznaka T. U podatkovne bitove mi se stavlja 768 bitova nula. 768 puta se računa novo stanje. Kontrolni bitovi cbi su postavljeni u 1 tako da se koristi keystream bit za generiranje novog stanja. Autentifikacijska oznaka T se računa kao zadnjih |T| bitova (|T| <= 128) keystream ks bitova.

Dekripcija i verifikacija ima sličan postupak s napomenom da ukoliko verifikacija ne prolazi uspješno, algoritam ne smije vratiti autentifikacijsku oznaku i dešifriranu poruku.
Obilježja
ACORN je bitovno orijentiran sekvencijski autentifikacijski algoritam. Ne koristi blokove bitova te zbog toga nije potrebno prenositi duljinu parametara i dodatavati punjenje. Za sigurno korištenje algoritma, ključ treba biti generiran na siguran i nasumičan način te se jedna kombinacija ključa i inicijalizacijskog vektora smiju koristiti za šifriranje samo jedne poruke. Također, jedan par ključa i inicijalizacijskog vektora se koriste s jednom fiksnom duljinom autentifikacijske oznake.

Inicijalizacija ACORN-a je dizajnirana za sprječavanje linear napada, differential napada i cube napada. S obzirom na to da ACORN nije blokovno orijentiran, napadi karakteristčni za algoritme koji jesu ne mogu direktno biti korišteni na ACORN. Stanje se ažurira na ne-linearan način te je zbog toga ACORN otporan na klasične napade na šifriranje.

ACORN je otporan na guess-and-determine napade te forgery napade.
Uporaba
ACORN je dizajniran kao lightweight algoritam. U jednom koraku se procesuira točno jedan bit te se zbog toga lako izvodi jednostavna hardverska implementacija. ACORN dozvoljava paralelizaciju 32 koraka istovremeno što znatno ubrzava izvođenje na hardverskim i softverskim implementacijama. Softverska implementacija ACORN-a ima mali broj linija koda te zbog toga pogoduje sustavima s ograničenom količinom memorije.