SHA-1
SHA-1 (Secure Hash Algorithm 1) je hash funkcija, odnosno funkcija sažetka, koja iz danog ulaza proizvodi 160-bitni sažetak. Jasni tekst dijeli se na 512-bitne blokove, nakon čega se nadopunjavanje zadjneg bloka (padding) odvija na isti način kao i kod MD5. Osim načina nadopunjavanja, SHA-1 s MD5 dijeli i Merkle-Damgård konstrukciju.
Sažetak H od 160 bitova sastoji se od 5 nadovezanih 32-bitovnih varijabli koje se inicijaliziraju s heksadekadskim vrijednostima:
A0 = 67452301 B0 =EFCDAB89 C0 =98BADCFE D0 =10325476 E0=C3D2E1F0
podblokovi M0 , …, M15 služe za stvaranje 80 riječi W1, …,,W80. Sažimanje svakog podbloka obavlja se u 4 kruga, svaki sa po 20 koraka. Svaki od krugova koristi jednu od 4 funkcije i konstante:
Fi(x, y, z) = (X ^ Y) v (!X ^ Z) 1 ≤ i ≤ 20 Fi(x, y, z) = X ⊕ Y ⊕ Z 21 ≤ i ≤ 40 Fi(x, y, z) = (X ^ Y) v (X ^ Z) v (X ^ Z) 41 ≤ i ≤ 60 Fi(x, y, z) = X ⊕ Y ⊕ Z 61 ≤ i ≤ 80 Ki = 5A827999 1 ≤ i ≤ 20 Ki = 6ED9EBA1 21 ≤ i ≤ 40 Ki = 8F1BBCDC 41 ≤ i ≤ 60 Ki = CA62C1D6 61 ≤ i ≤ 80
SHA-1 je kriptografski slomljena, a već 2005. se smatrala nesigurnom protiv napadača sa velikom količinom resursa zbog svog kratkog sažetka. Danas se napadi na SHA-1 pomoću kolizijskog napada s odabranim prefiksom smatraju praktičnima, što je Google i dokazao 2017. generiranjem dvaju PDF-ova s istim sažetkom, tako da većina komercijalnih preglednika više ne prihvaća SSL certifikate temeljene na SHA-1 funkciji. Unatoč tome, SHA-1 se i dalje koristi.
Izvori
[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://security.googleblog.com/2017/02/announcing-first-sha1-collision.html