Digitalni potpisi i raspršivanje
Digitalni potpisi i kriptografske hash funkcije sastoje se od tajnog umaka zbog kojeg kriptovaluta djeluje. Kripto su stavili u valutu, da tako kažem. Vaš digitalni potpis dokazuje da imate privatni ključ koji polaže pravo na vlasništvo nad imovinom opisanom u transakciji. Hash funkcija definira i osigurava transakciju.
Kriptografija – želite li znati tajnu?
Digitalni potpisi i hash funkcije žive u kriptografiji, pa što je kriptografija? Kriptografija definira umjetnost i znanost kodiranja i dekodiranja poruka radi održavanja privatnosti između komunikatora.
Dani salate kriptografije
Tijekom godina u različitim razdobljima prevladavaju različiti oblici kriptografije. U doba Julija Cezara bilo je dovoljno jednostavno okretanje abecede. A kriptografi to tako nazivaju “Cezarovom šifrom”. Umjesto riječi “mačka”, šifrirana poruka može jednostavno okretati sva slova jedan korak ulijevo, pa se “mačka” prevodi u “dbu”. U filmu 2001: Svemirska odiseja, rotirajte slova “HAL” na isti način i što ćete dobiti?
Kako vrijeme prolazi, kriptografski sustavi se lome dok kriptoanalitičari rješavaju svaki zadani sustav.
Kriptografija javnog ključa
Trenutno prevladava asimetrična kriptografija, poznata i kao šifriranje javnog ključa / privatnog ključa ili jednostavno kriptografija javnog ključa. Javni i privatni ključevi jednostavno su brojevi.
Pojam asimetričan razlikuje ga od simetrične kriptografije. U simetričnoj kriptografiji isti ključ šifrira i dešifrira poruku. Slijedom toga, ključ mora ostati skriven. To stvara ključni problem distribucije – kako sigurno prenijeti ključ primatelju, kao i šifriranu poruku?
Kriptografija javnog ključa rješava ovaj problem objavljivanjem javnog ključa koji svatko može koristiti za šifriranje poruke, a korisnik zadržava privatni ključ za sebe kako bi se koristio za dešifriranje poruke. To djeluje kroz magiju jednosmjernih matematičkih funkcija. Jednosmjerne funkcije računaju jednostavno i jednostavno, ali odolevaju obrnutom inženjeringu.
Primjer kriptografije javnog ključa
Da ilustriram vrlo jednostavnim primjerom, pomnožite dva prosta broja: prosti1 * prosti2 = rezultat. S obzirom na dovoljno velike brojeve, svatko može pogledati rezultat, ali utvrđivanje koja su dva prosta broja korištena za postizanje tog rezultata predstavlja veliku poteškoću. Rezultat predstavlja javni ključ, a prime1 i prime2 predstavljaju privatni ključ.
Asimetrična kriptografija puca kada hakeri protiv nje koriste dovoljnu računarsku snagu. Međutim, hakeri trebaju superračunala da bi to postigli u razumnom roku. Šifriranje će se trebati razvijati kad kvantna računala postanu norma.
Digitalni potpisi
Stvoren privatnim ključem, digitalni potpis predstavlja privatni ključ i time prikazuje korisnika odjavljenog na datoj transakciji.
Digitalni potpis možete smatrati nečim što je varijacija šifrirane poruke. Baš kao što kriptografija javnog ključa stvara šifriranu poruku, privatni ključ također stvara digitalni potpis. Javnim ključem možete brzo potvrditi da je digitalni potpis stvorio privatni ključ. Shvatite ovo kao nešto poput slagalice. Slagalicu je možda vrlo teško ispuniti, ali kad je točno dovršite, jednim je pogledom provjerite.
Gozba u Hash Houseu
Kriptografsko raspršivanje rezultat je matematičke funkcije koja preslikava podatke proizvoljne veličine u niz bitova fiksne veličine, poznat kao vrijednost raspršivanja ili jednostavno raspršivanje. Dati ulazni podaci uvijek rezultiraju istim hashom. Slijedom toga, ako se poruka ne podudara s hash vrijednošću koja je s njom povezana, znate da je poruka promijenjena. Dvije različite poruke nikada ne bi trebale stvoriti istu hash vrijednost. Ako to učine, to predstavlja koliziju, a hash funkcija koja je stvorila tu vrijednost fatalno je manjkava.
Jednostavan primjer raspršivanja
Da bismo ilustrirali, pretpostavimo da kao ulazne podatke želimo hashirati jednostavni niz “ABCDE”.
Stvorimo jednostavan algoritam raspršivanja. Prvo prevedemo slova u brojeve: A = 1, B = 2, C = 3, D = 4, E = 5. Dobivena hash vrijednost mora biti jedna znamenka. Osnovna metoda jednostavno zbraja sve znamenke: 1 + 2 + 3 + 4 + 5 = 15. To daje dvoznamenkasti broj, pa naš algoritam nastavlja rekurzivno zbrajanje svake znamenke ovog broja: 1 + 5 = 6. To čini 6 naša hash vrijednost, a 6 predstavlja “ABCDE” kao svoj hash.
Ako primite “ABCDE” kao poruku koja je označena s 6 kao svoj hash, smatrate da je poruka točna. Ali ako ste primili poruku “ABCXE” predstavljenu hashom 6, postoji neusklađenost, očito zbog neovlaštenog predstavljanja poruke.
Naš jednostavni algoritam raspršivanja, naravno, zakazuje na mnogim razinama. Za jedan niz “EDCBA” ili bilo koja njihova kombinacija stvara isto raspršivanje kao “ABCDE”, stvarajući tako sudare. Složena matematika prevladava ta pitanja. Algoritam raspršivanja koji se trenutno najviše koristi u kriptovaluti nosi naziv SHA-256 (kratica je skraćenica od Secure Hash Algorithm). U algoritmu SHA-256 fiksna veličina hash vrijednosti iznosi 256 bita.
Digitalni potpisi i raspršivanje u kriptovaluti
Dobro, pa kako zapravo koristimo digitalne potpise i hashiranje u kriptovalutama?
Pogledajmo Bitcoin transakciju da vidimo tehnologiju na djelu.
Bitcoin transakcija razdvaja se na dva dijela: 1) ulazni odjeljak i 2) izlazni odjeljak.
Odjeljak za unos sadrži javni ključ pošiljatelja, informacije koje pokazuju da pošiljatelj posjeduje dovoljno Bitcoina za pokrivanje transakcije i druge korisne informacije. Privatni ključ pošiljatelja stvara digitalni potpis za potpisivanje ove transakcije. Ovaj digitalni potpis ide u ulazni odjeljak transakcije.
Izlazni odjeljak sadrži adresu novčanika primatelja i indeks jer postoji više od jednog izlaza (različiti izlazi ići će primatelju, pošiljatelju i rudaru).
Hashing dolazi u obzir kako bi se zaštitio integritet transakcije. Podaci poput platitelja, primatelja i plaćenog iznosa zahtijevaju raspršivanje radi zaštite od zlonamjernih čimbenika koji mijenjaju ove podatke. Kombinacijom kriptografskog ključa i ovih ulaznih parametara za dodavanje hash funkcije stvara se ID transakcije. Sada s kriptografskom sigurnošću znamo da pošiljatelj zapravo ima ovlast izvršiti plaćanje i da su detalji transakcije točni i da nisu promijenjeni..
Muha u mlaćenici
Poznati problem s Bitcoin transakcijama nastao je s nečim tzv podatnost transakcija.
Dolazi do fleksibilnosti transakcija jer Bitcoin raspršuje različita polja u transakciji. Tijekom obrade transakcije, neka od ovih polja mogu se promijeniti na naizgled marginalno i beznačajno. Ali budući da se mijenjaju, mijenja se vrijednost raspršivanja, zbog čega se mijenja ID transakcije.
Da biste to vizualizirali, zamislite polje koje sadrži cjelobrojni broj 123, ali tijekom obrade sustav to proširuje da bi postalo 0123. Oboje čine isti broj, a gledajući ih znamo da su isti, ali hash funkcija ih vidi kao različit i naknadno stvara različite hash vrijednosti za svaku. Ova neobičnost predstavlja priliku lošim glumcima da igraju sustav.
SegWit to Rescue
Tehnologija odvojenog svjedoka (SegWit) riješila je ovaj problem. SegWit stvara strukturu odvojenu od bloka (odvojeno). Ova odvojena struktura sadrži informacije potrebne za utvrđivanje valjanosti transakcije (svjedoče o valjanosti transakcije), ali ne sadrži same podatke o transakciji. Odvajanje podataka o transakcijama na ovaj način uklonilo je mogućnost fleksibilnosti.
Zaključne misli
Kriptografija se razvija kako se razvija tehnologija. Računala u budućnosti zasigurno će slomiti današnju kriptografiju. Ali za trenutni svijet u kojem živimo, digitalni potpisi i kriptografski hashovi pružaju dovoljne zaštitne mjere da osiguraju sigurnost i integritet naših transakcija.