12
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.

ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

  • Upload
    buihanh

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 2: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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

Page 3: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 4: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 5: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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

Page 6: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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

Page 7: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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

Page 8: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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

Page 9: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 10: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 11: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.

Page 12: ALGORITAM SHA-1 - nevena.lss.hrnevena.lss.hr/recordings/fer/predmeti/racfor/2018/seminari/... · Ovo svojstvo algoritma SHA-1 koristi se u sustavima Git i Mercurial kako bi se osiguralo

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.