SHA-3 je hash funkcija, odnosno funkcija sažetka, temeljna na Keccak algoritmu, novoj spužvastoj konstrukciji te značajno izmjenjenim matematičkim principima u odnosu na prethodne iteracije SHA standarda. U odnosu na prethodne iteracije standarda, izmjenjen je i način nadopunjavanja zadnjeg bloka teksta (padding), koji se u SHA-3 obavlja po shemi M||10*1
Kao i kod SHA-2, postoje 4 verzije SHA-3 algoritma, ovisno o duljini ulaznog bloka, ali se same duljine ulaznih blokova razlikuju. Tako razlikujemo SHA3-224 (1152 bitova), SHA3-256 (1088 bitova), SHA3-384 (832 bitova) i SHA3-512 (576 bitova).
Broj riječi i veličina bloka u SHA3 također ovise o verziji SHA3 koja se koristi i računaju se po formuli 25w = c + r, gdje je w broj riječi, c kapacitet (2 puta veličina sažetka), a r veličina bloka (ostatak).
SHA-3 funkcija f se obavlja u nr = 12 + w koraka. Sama funkcija se sastoji od 5 osnovnih funkcija za manipulaciju bitovima stanja: θ, ρ, π, χ i ι. Pseudokod je dan u nastavku:
Keccak-f[b](A) za i 0 do nr-1 // (x,y) element {0…4} // funkcija θ C[x] = A[x,0] xor A[x,1] xor A[x,2] xor A[x,3] xor A[x,4]; D[x] = C[x-1] xor rot(C[x+1],1); A[x,y] = A[x,y] xor D[x]; // funkcije ρ i π B[y,2*x+3*y] = rot(A[x,y], r[x,y]); // funkcija χ A[x,y] = B[x,y] xor ((not B[x+1,y]) and B[x+2,y]); // funkcija ι A[0,0] = A[0,0] xor RC; return A;
[1] Christof Paar, Jan Pelzl, Understanding Cryptography, Springer-Verlag Berlin Heidelberg, 2009.
[2] https://platforma.hacknite.hr/challenges
[3] Kriptografija i kriptoanaliza, predavanja, FER
[4] https://keccak.team/index.html