Blokkjeder for smarte mennesker*

(*Som føler seg som dumrianer når noen nevner blokkjeder)
Scrive var den første e-signaturleverandøren som brukte blokkjedeteknologi for å ivareta dokumenters integritet.

Hva er en blokkjede?

“Blokkjede” er betegnelsen på en type teknologi som ble til i 2009, og er mest kjent for sin bruk innen kryptovaluta. Blokkjeder har blitt en svært populær teknologi, som på kort tid har gjort store endringer innen en rekke ulike sektorer, som for eksempel cybersikkerhet, valg, eiendom, analyser og transportnettverk.

Når det gjelder kryptovaluta, fungerer en blokkjede som en distribuert reskontro, og er en sikker måte å bokføre peer-to-peer-transaksjoner på, slik at de blir offentlig verifiserbare. Blokkjeder er ikke avhengige av sentrale myndigheter, og gjør det umulig å forfalske mynter eller bruke dem flere ganger, noe som er helt avgjørende innen kryptovaluta. Teoretisk sett er det mulig å forfalske og bruke mynter flere ganger, men tiden det vil ta å oppnå dette er lengre enn universets alder.

Å gi en grundig forklaring av blokkjedeteknologien i løpet av denne korte artikkelen ville vært enda mer umulig! Vi vil i stedet forklare noen av de grunnleggende begrepene ved å forklare hvordan Scrive bruker blokkjeder. Avhengig av hvor datakyndig du er, vil det følgende enten gi deg et overblikk på høyt nivå eller et detaljert dypdykk i blokkjedeteknologien.

Hvorfor bruker Scrive en blokkjede?

Scrive gir en garanti for integriteten til dokumentet ditt ved å forsegle det med en digital signatur. Blokkjedeteknologien gjør det mulig å sikre den digitale signaturen ved å feste den til et permanent, verifiserbart offentlig register. Hvis det skulle oppstå en tvist, kan du dermed bevise at dokumentet ditt:

  • Ikke har blitt endret
  • Ikke er en forfalskning
  • Ble opprettet på den spesifikke datoen og det tidspunktet som den digitale signaturen viser

Kryptografisk hash

Man kan gi en hvilken som helst digital fil et unikt fingeravtrykk som er umulig å forfalske ved å angi en algoritme til de binære dataene. Verdien av dette fingeravtrykket kalles for en kryptografisk hash.

Et eksempel på en helt enkel hash-funksjon kan være:

  • Bruk annenhver bokstav
  • Bruk maksimalt 6 bokstaver i hashen
  • Fyll mellomrom med X om nødvendig

Blockchain –> BOKHIX
To be, or not to be, that is the question –> TBONTO

De ulike bokstavkombinasjonene gjør at denne algoritmen ikke klarer å skape helt unike fingeravtrykk med disse tekstkjedene. Men det finnes mer sofistikerte måter å gjøre det på. Bokstavene kan representeres av binære data, og du kan bruke funksjoner som er mye mer avanserte enn “annenhver bokstav”. Siden en enkel fil på 100 Kb kan representeres av en 800 000 siffer lang streng av 1-ere og 0-er, er det enkelt å forstå hvorfor noen skriver PhD-avhandlingene sine om hash-funksjoner.

Når du oppretter et Scrive-dokument, består filen av en PDF av det elektronisk signerte dokumentet, bevispakken og eventuelt andre vedlegg. For å forsegle et elektronisk signert dokument, bruker Scrive algoritmen SHA-256. Dette gjør det umulig å generere en identisk hash fra et annet dokument eller fil. Den kryptografiske hashen gjør det dessuten umulig å gjenskape innholdet i dokumentet. Hashen sendes deretter til Scrives leverandør og partner Guardtime.

Merkle-tre

For å sikre integriteten til flere filer, kan du integrere hash-verdiene i et såkalt Merkle-tre. Hver hash blir da en node i treets struktur.

Hvert blad (nodene på det laveste nivået av treet) er en hash som representerer en digital fil (ikke hovedfilen). Du kan kombinere hashene fra to tilstøtende blader (Hash G og Hash H), og bruke den samme hash-funksjonen (algoritmen SHA-256) for å regne ut en tredje hash-verdi, og dermed opprette en node et nivå høyere på treet (Hash C). Ved å gjenta denne prosessen videre opp i treet, kan du regne ut verdien til hashen på toppnivået (Top).

Alle nodene i treet (både bladene og de mellomliggende hash-verdiene) er koblet sammen på en måte som gjør at du kun kan regne ut den korrekte toppverdien hvis alle hashene i treet er korrekte. De kan med andre ord ikke endres eller forfalskes. Hvis man endrer på en enkel hash, kan man ikke kompensere ved å endre på en annen hash i treet uten å ende opp med feil toppverdi. Dermed er det umulig å forfalske dokumentet.

Hvis dokumentet ditt representeres av Hash G i diagrammet, trenger du verdiene til Hash H, Hash D og Hash B for å regne ut verdien til Top.

Blokkjeder: Sikker lagring

Blokkjeder gjør det mulig å lagre informasjon fra flere Merkle-trær på en effektiv og sikker måte. Du kan se på en blokkjede som en database. Men i motsetning til de fleste vanlige databaser, som består av tabeller med kolonner og rader, består blokkjeder av sekvensielle blokker som er lenket sammen på en sikker måte ved hjelp av kryptografi. En annen forskjell er at sikkerheten ikke er avhengig av tilgangstillatelser. I stedet verifiseres dataene uavhengig.

I de fleste vanlige databaser, kan man utføre fire typer handlinger. Disse er “opprett”, “les”, “oppdater” og “slett” (også kjent som CRUD). I blokkjeder kan man derimot kun opprette og lese data. Når man oppretter nye data, blir en ny blokk lagt til i kjeden. Den siste blokken i kjeden er alltid den nyeste. Hver gang en ny blokk legges til, blir den validert av flere uavhengige parter for å unngå svindel.

En KSI-blokkjede er faktisk et stort, stadig voksende Merkle-tre. Hver blokk har en hash-verdi som er koblet til den forrige blokken. Dermed kan man ikke endre noe av informasjonen i kjeden uten at man ender opp med gale verdier i blokker som legges til senere.

Å legge til ny data i en blokkjede er det samme som å opprette en ny node i et Merkle-tre. Du kombinerer hashen i roten av Merkle-treet (som ikke har blitt koblet til blokkjeden enda) med hashen til den forrige blokken. Deretter bruker du den samme hash-funksjonen (algoritmen SHA-256) for å beregne hashen til den nye blokken. Den nyeste blokken har en permanent kobling til den forrige blokken og til Merkle-treet, som nå er en del av blokkjeden.

Nå kan vi gå tilbake til eksempelet med kryptovaluta, hvor hvert blad i Merkle-treet består av reskontro-informasjon. Siden reskontroen er offentlig og uforanderlig, kan hvem som helst regne ut balansen til en individuell konto, men ingen kan endre på balansen uten videre.

Dokumentverifisering

For å verifisere og forsegle Scrive-dokumenter, publiserer Guardtime hashen på toppnivået av det stadig voksende Merkle-treet én gang i måneden. Denne hashen er koblet til hashene til alle Scrive-dokumentene som ble signert og forseglet i løpet av den forrige måneden.

Guardtime publiserer hashen som validerer den nye blokken i Financial Times, og oppfyller dermed de juridiske kravene til “widely witnessed media”, noe som kort sagt betyr at hashen anses som allment kjent. Hvis kun ett blad i Merkle-treet endres, vil hele blokkjeden kollapse. Men ved å publisere hashen i Financial Times, kan den korrekte verdien til en hvilken som helst blokk verifiseres uavhengig av Scrive eller Guardtime.

Når hashen publiseres, blir alle Scrive-dokumentene som representeres av den nye hashen forseglet på nytt. Det andre seglet skaper en sti til toppen av treet. Det vil si at du får tilgang til verdiene til de mellomliggende hashene som trengs for å beregne den nypubliserte hashen.

Verifisering krever kun at du har det forseglede dokumentet og tilgang til hashen som publiseres i Financial Times. Prosessen er som følger:

  • Beregn hashen til dokumentet på nytt.
  • Gjenskap Merkle-treet med informasjonen i forseglingen.
  • Sammenlign hashen på toppnivået med hashen som publiseres i Financial Times.

Men det er ikke alt

Siden det finnes store variasjoner innen blokkjedeapplikasjoner og -implementeringer samt stadig nye fremskritt innen teknologien, vil du sannsynligvis finne flere ulike forklaringer på disse temaene. Det finnes ikke en rask og enkel manual som kan lære deg alt om blokkjedeteknologi, og de fleste av oss vil nok aldri forstå alle detaljene bak teknologien. Hvis du er interessert i å lære mer, anbefaler vi at du tar deg god tid til å lese og konsultere flere kilder.