Gå til hovedinnhold

Sikkerhet og Kryptografi

Det aller meste av kommunikasjon over internett består av meldinger som blir sendt mellom flere andre parter enn bare avsender og mottaker. Det er mange andre parter som i teorien kan lese meldingen underveis. Hvordan kan vi sikre at meldingen ikke kan bli lest og forstått av andre enn avsender og mottaker?

En forenklet metafor

Bob har lyst å sende en boks i posten til Alice. Bob vil at ingen andre enn Alice skal kunne åpne boksen. Hvordan kan Bob sikre at boksen ikke blir åpnet av noen andre enn Alice?

  1. Bob setter på en hengelås på boksen, og låser den med en nøkkel (Nøkkel A) som kun han har.
  2. Bob sender boksen til Alice.
  3. Alice mottar boksen, og så setter hun en ny hengelås på boksen, og låser den med en nøkkel som kun hun har (Nøkkel B).
  4. Alice sender boksen tilbake til Bob.
  5. Bob mottar boksen, og låser opp hengelåsen med sin nøkkel.
  6. Bob sender boksen tilbake til Alice.
  7. Alice mottar boksen, og låser opp hengelåsen med sin nøkkel.

Til slutt sitter Alice igjen med en boks som har vært låst på alle turene frem og tilbake, uten at Alice eller Bob har måtte dele sin private nøkkel.

Denne metaforen er en forenklet versjon av Diffie-Hellman.

forsiktig

Denne metoden av key exchange er ikke sikker mot "man in the middle attacks" - en tredje aktør kan sitte i midten av samtalen (eller i midten av en utveksling av bokser låst med hengelås) og late som den er en av partene. Derfor er det viktig å alltid sikre seg om at mottaker er den du tror det er.

Metaforen fungerer derimot fint for å illustrere enkelt hvordan man i teorien kan maskere informasjon sendt over internett slik at den kun skal være tilgjengelig for 2 parter.

Hvor lagres sensitiv informasjon?

På internett skiller man generelt sett mellom det man kaller en server og en klient. Kort fortalt så er klienten datamaskinen (eller mobilen, etc) som brukeren benytter for å interagere med applikasjonen, og serveren datamaskinen som tar imot forespørsler fra klienten og prater med databasen.

Det er viktig å forstå at klienten alltid er sårbar mot angrep. Det er ikke mulig å sikre seg mot at en bruker kan endre på koden som kjører på deres egen datamaskin. Det er derfor viktig at sensitiv informasjon ikke lagres på klienten, men heller på serveren.

Passord hashing

Man kan aldri være helt sikre på at databasen hvor passord er lagret ikke blir utsatt for innbrudd av en skummel aktør. Derfor er det viktig at passordene som lagres der, ikke lagres i det man kaller "plain text" (altså, at passordet er lagret akkurat slik som det er skrevet inn).

For å løse dette problemet brukes noe som heter password hashing.

Hashing er en funksjon som tar inn passordet i plain text, og returnerer en ny tekst som er unikt for det passordet. Det er ikke mulig å gå fra teksten tilbake til passordet, men hvis man gir funksjonen samme passord så vil den alltid returnere samme tekst.

Plain textSHA2 Hash
123456e150a1ec81e8e93e1eae2c3a77e66ec6dbd6a3b460f89c1d08aecf422ee401a0
password6b3a55e0261b0304143f805a24924d0c1c44524821305f31d9277843b8a10f4e

På grunn av dette, så trenger aldri nettsiden å egentlig vite hva passordet ditt er. Når du skriver inn passordet ditt, så hasher nettsiden det, og sammenligner hashen med hashen som er lagret i databasen. Hvis de er like, så vet nettsiden at du har skrevet inn riktig passord.

Kompetansetest - Sikkerhet og Kryptografi (1/3)

Hva er viktig når man sender en forespørsel over internett?