Upload
buihanh
View
218
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
Seminarski rad u okviru predmeta „Računalna forenzika“ 2017/18.
ALGORITAM SHA-1
Marija Kalebota Kodžoman
Zagreb, siječanj 2018.
Sadržaj
Uvod ...................................................................................................................................... 1
1. Općenito o algoritmu SHA-1 ......................................................................................... 2
2. Opis rada algoritma SHA-1 ........................................................................................... 3
3. Slabosti algoritma SHA-1 .............................................................................................. 6
3.1. „The SHAppening“ ............................................................................................... 6
3.2. „SHAttered“........................................................................................................... 7
4. Današnje primjene algoritma SHA-1 ............................................................................ 8
4.1. Provjeravanje integriteta podataka ........................................................................ 8
4.2. Tablice za raspršeno adresiranje ............................................................................ 8
4.3. Usporedba podataka .............................................................................................. 8
Zaključak ............................................................................................................................... 9
Literatura ............................................................................................................................. 10
1
Uvod
Algoritam SHA-1 dio je skupine algoritama SHA, tj. Secure Hash Algorithms. Razvila ga
je Agencija za nacionalnu sigurnost Sjedinjenih Američkih Država 1995. godine. Po vrsti
pripada u skupinu jednosmjernih algoritama za računanje sažetka, što znači da iz
dobivenog sažetka kojeg generira nije moguće u realnom vremenu pronaći poruku kojoj taj
sažetak odgovara. Algoritam kao ulaz prima podatke proizvoljne duljine, a kao izlaz dalje
160-bitni sažetak, koji se najčešće prikazuje u obliku četrdesetoznamenkastog
heksadekadskog broja. Jedan je od prvih algoritama iz SHA-skupine, koja danas broji
petnaestak različitih algoritama. Razvijan je kako bi se koristio kao kriptografska funkcija
za računanje sažetka., pa je tako ugrađen u mnoge sigurnosne aplikacije i protokole koji
danas imaju široku primjenu, poput TLS-a, SSL-a, PGP-a, SSH-a i S/MIME-a. Međutim, s
vremenom se pokazalo da ima određene sigurnosne slabosti zbog kojih više nije primjeren
za korištenje u sigurnosne svrhe.
2
1. Općenito o algoritmu SHA-1
Agencija za nacionalnu sigurnost Sjedinjenih Američkih Država (eng. National Security
Agency, NSA), u okviru projekta za razvijanje kriptografskih standarda pod nazivom
Capstone, razvila je, između stalog, i algoritam SHA-1. Prvotna inačica algoritma
objavljena je 1993. godine pod nazivom Secure Hash Standard, i danas ju se obično naziva
SHA-0. Ona je brzo povučena iz upotrebe, i potom je 1995. godine objavljena ažurirana
inačica kojoj je pridijeljen naziv SHA-1. Jedino što je kod nje različito u odnosu na SHA-0
jest promijenjena rotacija po bitovima u jednom dijelu algoritma. Po objašnenju Agencije
za nacionalnu sigurnost, to je učinjeno kako bi se izbjegla sigurnosna mana koja se javljala
kod algoritma SHA-0. Kasnije se algoritam SHA-0 uistinu pokazao sigurnosno slabijim od
SHA-1.
Algoritam SHA-1 razvijan je kako bi se koristio kao kriptografska funkcija za računanje
sažetka. Takve funkcije za ulazne podatke proizvoljne duljine generiraju nizove bitova koji
su uvijek jednake, dogovorom određene, duljine. Da bi se funkcija smatrala sigurnom za
korištenje u kriptografske svrhe, mora zadovoljavati sljedeća svojstva:
• Isti ulazni podatak (poruka) uvijek daje isti sažetak
• Za bilo kakvu poruku, sažetak je moguće izračunati brzo
• Mala promjena poruke treba prouzrokovati veliku promjenu sažetka
• Ako je poznat sažetak, u realnom vremenu nije moguće pronaći poruku kojoj on
odgovara, osim isprobavanjem svih mogućih poruka
• U realnom vremenu nije moguće pronaći dvije različite poruke s istim sažetkom
Prva tri svojstva algoritam SHA-1 zadovoljava, i kada je razvijen, smatralo se da
zadovoljava i posljednja dva. S vremenom je ugrađen u mnoge sigurnosne aplikacije i
protokole koji danas imaju široku primjenu, poput TLS-a, SSL-a, PGP-a, SSH-a i
S/MIME-a. Međutim, u razdoblju od 2005. godine do danas, zbog brojnih otkrivenih
sigurnosnih ranjivosti, sve se više prestaje koristiti u kriptografske svrhe, no ostaje prisutan
u drugim primjenama.
3
2. Opis rada algoritma SHA-1
Algoritam SHA-1 kao ulaz prima podatke proizvoljne duljine, a kao izlaz dalje 160-bitni
sažetak, koji se najčešće prikazuje u obliku četrdesetoznamenkastog heksadecimalnog
broja. U nastavku su, uz pomoć pseudokoda, podrobnije objašnjeni koraci rada algoritma
SHA-1. Sve su varijable koje se spominju 32-bitne vrijednosti bez predznaka, i pri
računanju se koristi modulo-aritmetika. Jedine varijable koje su različite duljine od
navedene su:
• Varijabla ml, koja označava duljinu poruke, ima 64 bita
• Varijabla hh, konačni sažetak poruke i izlaz algoritma, ima 160 bitova
Na početku se inicijalizira pet varijabli, h0-h4, koje će se koristiti pri računanju konačnog
sažetka. Vrijednosti ovih varijabli određene su dogovorom.
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0
U varijablu ml pohrani se duljina poruke u bitovima:
ml = duljina poruke u bitovima
Poruka se tada promijeni tako da joj konačna duljina bude djeljiva s 512. To se postigne
tako da joj se prvo na kraj nadoda bit vrijednosti 1, pa k bitova vrijednosti 0 (0 ≤ k < 512), i
onda varijabla ml koja je duga 64 bita. Broj k odabere se tako da bude zadovoljeno
navedeno svojstvo djeljivosti konačne duljine s 512.
Sada je moguće poruku podijeliti na dijelove (nizove) duljine 512 bita. Za svaki taj niz
obavlja se pseudokod u nastavku.
Podijeli niz na šesnaest 32-bitnih riječi w[i], 0 ≤ i ≤ 15
Od tih šesnaest 32-bitnih riječi stvori osamdeset 32-bitnih riječi:
Za i od 16 to 79
w[i] = (w[i-3] X-ILI w[i-8] X-ILI w[i-14] X-ILI w[i-16])
Rotiraj w[i] ulijevo za 1
4
Inicijaliziraj sažetak za ovaj niz na temelju varijabli h0-h4:
a = h0
b = h1
c = h2
d = h3
e = h4
Glavna petlja:
Za i od 0 do 79
ako 0 ≤ i ≤ 19 onda
f = (b I c) ILI ((NE b) I d)
k = 0x5A827999
Inače ako 20 ≤ i ≤ 39
f = b X-ILI c X-ILI d
k = 0x6ED9EBA1
Inače ako 40 ≤ i ≤ 59
f = (b I c) ILI (b I d) ILI (c I d)
k = 0x8F1BBCDC
Inače ako 60 ≤ i ≤ 79
f = b X-ILI c X-ILI d
k = 0xCA62C1D6
temp = (a rotiran za 5 ulijevo ) + f + e + k + w[i]
e = d
d = c
c = b rotiran za 30 ulijevo
b = a
a = temp
Dodaj sažetak ovog niza na ukupni rezultat:
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
Kôd 2.1 – Pseudokod obrade 512-bitnog dijela poruke
5
Konačno, nakon što je na ovaj način obrađen svaki 512-bitni dio poruke, konačni se
sažetak računa na sljedeći način:
hh = (h0 posmaknut ulijevo za 128) ILI (h1 posmaknut ulijevo
za 96) ILI (h2 posmaknut ulijevo za 64) ILI (h3 posmaknut
ulijevo za 32) ILI h4
6
3. Slabosti algoritma SHA-1
U općenitom slučaju, ako funkcija za računanje sažetka generira sažetak duljine L bitova,
primjenom potpunog pretraživanja (eng. brute force search) moguće je pronaći poruku
koja odgovara izračunatom sažetku nakon približno 2L ispitivanja. Koliziju, tj. dvije
različite poruke koje daju isti sažetak, pak, mnogo je lakše naći: u općenitom je slučaju
potrebno samo 1.2 * 2L/2 ispitivanja. Zbog toga se za funkcije za računanje sažetka smatra
da imaju (L/2)-bitnu sigurnost (tj., da je potrebno približno 2L/2 ispitivanja da bi se iz
poznate šifre pronašla odgovarajuća poruka) . Za algoritam SHA-1 tako se smatralo da ima
80-bitnu sigurnost, zbog toga što generira sažetak duljine 160 bita.
Međutim, 2005. su godine kriptografi Xiaoyun Wang, Yiqun Lisa Yin i Hongbo Yu
objavili napad na algoritam SHA-1 koji može pronaći kolizijske parove poruka nakon
manje od 269 ispitivanja, što je mnogo manji broj od prvotno očekivanih 280.
Uslijedilo je razdoblje mnogih pokušaja pronalaženja napada na algoritam SHA-1, i do
2010. su godine objavljeni mnogi napadi, od kojih je svaki dodatno smanjivao složenost
pronalaska kolizije. U studenom 2010. godine, Marc Stevens objavio je rad u kojem je
opisao način za pronalazak djelomične kolizije uz složenost 257.5. Procjenjivao je da bi se
taj napad mogao proširiti kako bi mogao pronalaziti potpune kolizije uz složenost 261.
3.1. „The SHAppening“
U listopadu 2015. godine, Marc Stevens je zajedno s Pierreom Karpmanom i Thomasom
Peyrinom objavio napad koji je pronašao kolizije sa složenosti 257 za neke dijelove
algoritma SHA-1, no ne i za potpuni algoritam. Poseban je po tome što je tada po prvi put
napad na SHA-1 uistinu i izveden - svi su do tada objavljeni napadi bili preskupi za
izvođenje. Autori su procijenili da bi se ekvivalentan napad mogao reproducirati za samo
dvije tisuće dolara, a da bi pronalazak potpune kolizije mogao koštati između 75 tisuća i
7
120 tisuća dolara. Napomenuli su da je to sasvim prihvatljiva cijena kako zločinačkim
organizacijama, tako i državnim obavještajnim agencijama, i predložili da se SHA-1 što
prije izbaci iz svih sigurnosnih primjena. Ovom je značajnom događaju u povijesti napada
na algoritam SHA-1 pridijeljen naziv “The SHAppening”.
3.2. „SHAttered“
U veljači 2017. godine, tvrtka Google u suradnji sa nizozemskim centrom za istraživanje
CWI objavila je napad pod nazivom “SHAttered”. To je prvi put da je uspješno pronađena
kolizija za potpuni algoritam SHA-1. U otprilike 263.1 ispitivanja pronađene su dvije
različite PDF datoteke sa istim SHA-1 sažetkom. Tvrtka Google je, pri objavi rezultata
napada, na svojim službenim stranicama izrazila nadu da će se time algoritam SHA-1
konačno prestati koristiti u kriptografske svrhe.
8
4. Današnje primjene algoritma SHA-1
Zbog svega navedenog u prethodnom poglavlju, algoritam SHA-1 sve se manje koristi u
kriptografske i sigurnosne svrhe, i sve se više zamjenjuje drugim algoritmima iz SHA-
skupine algoritama, najčešće algoritmom SHA-256. Međutim, zbog svog povijesnog
značaja i dalje se široko primjenjuje u mnogim drugim granama računarstva. Neke od njih
opisane su u nastavku:
4.1. Provjeravanje integriteta podataka
Već je ranije spomenuto da jednosmjerne funkcije za generiranje sažetka uvijek za isti ulaz
daju isti izlaz. To se svojstvo može iskoristiti za provjeravanje integriteta podataka. Ako je
poznat sažetak neke datoteke i ako se želi provjeriti je li ona ispravna, može se ponovno
izračunati njen sažetak, i ako se pokaže da je drugačiji, to je pokazatelj na to da je datoteka
neispravna. Na mnogim je internetskim stranicama tako, uz podatke koje je moguće
dohvatiti, ponuđen i njihov ispravan sažetak, kako bi svi koji ih dohvaćaju mogli na svom
računalu provjeriti jesu li dohvaćeni podaci ispravni.
Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo
da nije došlo do slučajnih oštećenja datoteka.
4.2. Tablice za raspršeno adresiranje
Sažetak izračunat pomoću algoritma SHA-1 može se koristiti u tablicama za raspršeno
adresiranje. To su podatkovne strukture koje na temelju izračunatog sažetka omogućuju
dohvaćanje ili spremanje podataka.
4.3. Usporedba podataka
Pri radu s vrlo velikim podacima, ako se pokaže potreba za njihovim uspoređivanjem, to
može biti vrlo računalno zahtjevno. Tada je, umjesto izravnog uspoređivanja dvaju
podataka, moguće izračunati njihove sažetke i usporediti njih.
9
Zaključak
Algoritam SHA-1 dio je skupine algoritama SHA, tj. Secure Hash Algorithms. Razvila ga
je Agencija za nacionalnu sigurnost Sjedinjenih Američkih Država 1995. godine. Kao ulaz
prima podatke proizvoljne duljine, a kao izlaz dalje 160-bitni sažetak, koji se najčešće
prikazuje u obliku četrdesetoznamenkastog heksadekadskog broja. Razvijan je kako bi se
koristio kao kriptografska funkcija za računanje sažetka. Međutim, s vremenm se pokazalo
da ima određene sigurnosne slabosti zbog kojih više nije primjeren za korištenje u
sigurnosne svrhe. Ipak, danas se i dalje koristi u druge svrhe, poput provjeravanja
integriteta podataka, usporedbe podataka, ili u tablicama raspršenog adresiranja.
10
Literatura
[1] SHA-1, 18.1.2018., SHA-1, https://en.wikipedia.org/wiki/SHA-1, 25.1.2018.
[2] Cryptographic hash function, 12.1.2018., Cryptographic hash function,
https://en.wikipedia.org/wiki/Cryptographic_hash_function, 25.1.2018.
[3] Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, Yarik Markov,
Alex Petit Bianco, Clement Baisse; Announcing the first SHA-1 collision, 23.2.2017.,
Announcing the first SHA-1 collision,
https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html, 25.1.2018.
[4] Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, Yarik Markov; The
first collision for full SHA-1, The first collision for full SHA-1,
https://shattered.it/static/shattered.pdf, 25.1.2018.