Krypteringsteknikker Olav Skundberg Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget 1. Krypteringsteknikker 1.1. Fire formål med sikker kommunikasjon Aller først, pålitelig kommunikasjon og sikker kommunikasjon er to forskjellige ting. Pålitelighet er knyttet til nettets transmisjonsegenskaper slik at det man sender ut er det samme som mottas i andre enden. Det opptrer både bitfeil og pakketap i nettet, og egne protokoller sørger for at dette blir rettet på. Dette er ikke vår bekymring nå, vi er derimot opptatt av sikker kommunikasjon, i betydning av at vi vil sikre oss mot angripere. Det er fire egenskaper som hører til sikker kommunikasjon når to parter skal kommunisere over et åpent nettverk. Disse egenskapene er: Konfidensialitet Ordboken sier fortrolig, hemmelig. Konfidensialitet kan man lettest forbinder med kryptering. Det som en part sender over det åpne nettet skal være komplett uleselig for andre, men mottakeren skal kunne dekryptere dette og få fram den opprinnelige meldingen. Autentisitet Ordbok sier ekthet, pålitelighet. Her dreier det seg om å verifisere at avsender/den andre part er den han gir seg ut for å være, enten man kommuniserer med en tjener eller et menneske. Integritet Ordboken sier helhetlig, uskadd. Er meldingen endret under veis? Påviselighet Påviselighet (non-repudiation, ikke-benekting) skal kunne bevise at noe er sendt uten at avsender kan benekte dette, omtrent som om man signerer et dokument eller bestilling. I noen sammenhenger er det nok at en av egenskapene er dekket, mens andre situasjoner krever at alle fire egenskapene er ivaretatt. Her er noen eksemper for å anskueliggjøre dette: Konfidensialitet krever at alt krypteres, og man kan tenke seg at to partene kjenner til hverandre og etablerer en sikker overføring. Men hvordan kan man i ettertid bevise at en melding faktisk er mottatt og ikke bare noe man selv har laget?
Mobil kode og plug-ins er ikke hemmelige, trenger ikke krypteres i overføringen, men det kreves autentisering av hvem som står bak. En e-post trenger ikke å være konfidensiell, men av og til bør den være signert (autentisert, påviselig avsendt). 1.2. Tre kodingsteknikker som brukes for sikker kommunikasjon Det er en kombinasjon av tre kodingsteknikker som brukes for å oppnå sikker kommunikasjon. Dette er symmetrisk kryptering, asymmetrisk kryptering og sjekksum. Hvilke teknikker som brukes avhenger av hvilket formål man skal oppnå, og denne beslutningen er det som regel systemdesigneren som tar. 1.3. Symmetrisk kryptering Pensumreferanse : http://en.wikipedia.org/wiki/data_encryption_standard (kan hoppe over kapittel Attacks faster than brute force ) Det som er viktig å forstå med symmetrisk kryptering er at når avsender har kryptert, må mottaker gjøre nøyaktig samme prosess i revers. Derfor må begge parter bruke samme metode og nøkkel. Her er det altså bare en felles nøkkel. Symmetrisk kryptering har røtter tilbake til oldtiden, minst. Hvis metoden er å erstatte tegn i klarteksten med bokstaver fra tilfeldige sider i en bok, da forteller nøkkelen hvor man skal slå opp i boka. Hvis metoden er å bytte ut tegn i forhold til et omstokket alfabet, så er nøkkelen en tabell som viser hvordan bokstavene henger sammen. Symmetrisk kryptering har en lang og fascinerende historie. Historiske metoder for symmetrisk kryptering kan knekkes med datamaskiner som prøver mange nok ganger (brute force, rå maskinkraft). Derfor er det sjølsagt laget en standard hvor man bruker datamaskinen til å kryptere (blande data så grundig) at det ikke skal la seg gjøre i dekryptere koden uten å kjenne nøkkelen. Hvis man er heldig kan man jo alltids treffe på rett nøkkel, men det regnes som usannsynlig og derfor sikkert. Standarden som ble utviklet for symmetrisk kryptering med datamaskin heter Data Encryption Standard (DES). Metoden er 100% dokumentert, det er ikke i dette at sikkerheten ligger. Sikkerheten ligger i en datastreng med et antall bits som brukes til å styre miksingen av data. Jo lenger datastreng, desto flere kombinasjonsmuligheter for miksing og desto vanskeligere å bruke rå datakraft på gjentatte forsøk på dekryptering ved å prøve alle mulige nøkkelkombinasjoner. Lengden av nøkkelen er derfor vesentlig for styrken i krypteringen. DES ble valg med 64 bit i nøkkelen, men av disse brukes 8 bit til paritetssjekk på selve nøkkelen, slik at nøkkelen i praksis er 58 bit. Flytdiagrammet for DES viser at klarteksten leses 64 for 64 bit og mikses i 16 runder før den kommer ut ferdig kryptert. Da er det ikke noen statistisk sammenheng mellom bitmønster inn og bitmønster ut (som kunne vært bruk for å knekke koden). Fordi DES etter hvert beviselig lot seg knekke med rå maskinkraft, ble 3DES standardisert. Dette er i praksis å kjøre DES tre ganger etter hverandre med ulike nøkler. Dermed får man så mange kombinasjonsmuligheter at selv ikke rå maskinkraft klarer å regne seg gjennom dette. side 2 av 5
DES, og enda mer 3DES, er super til kryptering men har en praktisk svakhet. Begge parter må kjenne samme nøkkel. Hvordan kan man få distribuert nøkkelen? Det er krevende logistikk hvis det for eksempel er snakk om ambassader rundt om i verden. Nøkkelen bør dessuten byttes regelmessig. Det var ingen god løsning på dette logistikkproblemet før asymmetrisk kryptering ble oppfunnet for om lag 30 år siden og som la grunnlaget for PKI, Public Key Infrastructure. 1.4. Asymmetrisk kryptering Pensumreferanse: http://en.wikipedia.org/wiki/rsa (Kan hoppe over kapittel Operation som forklarer matematikken i kodingen) Stikkordet for asymmetrisk kryptering er at det opprettes et nøkkelpar. Om man kjenner den ene kan allikevel ikke den andre utledes. Man beholder derfor en nøkkel hemmelig (privat) mens den andre nøkkelen kan offentliggjøres (offentlig). Kryptering som gjøres med den ene nøkkelen krever den andre nøkkelen for dekryptering. Krypteringsalgoritmen RSA ble publisert i 1977, bokstavene er hentet fra opphavsmennenes etternavn. Krypteringsalgoritmen er standardisert, sikkerheten ligger i nøklene. De som liker matte kan ha stor glede av å studere metoden. En orientering, med mulighet for å teste med små tall, finner du på: http://www.antilles.k12.vi.us/math/cryptotut/rsa2.htm (sammen med forklaring på mange andre symmetriske metoder). For å anskueliggjøre hvordan krypteringen skjer, kan man ta som eksempel at det er mye enklere å regne ut 54x234=12636 enn å finne ut hvilke tall som gir 12636 når de multipliseres. RSA-algoritmen bruker dessuten eksponentiering istedenfor multiplikasjon, som gjør det enda vanskeligere å regne baklengs, så krypteringen oppfattes som en enveisfunksjon. Bare de som kjenner tilhørende nøkkel klarer å dekryptere. Når alle har et nøkkelpar, en privat og en offentlig nøkkel, er det tre mulige nøkler man kan velge til å kryptere meldingen med: 1. Avsender krypterer melding med sin private nøkkel: Innholdet kan dekrypteres og leses av alle, siden den tilhørende nøkkel er offentlig. Ikke akkurat konfidensiell overføring, men er egnet for å bevise hvem man er. Tenk deg at du har kryptert et bilde av deg selv med din private nøkkel, alle som bruker din offentlige nøkkel vil se at det faktisk er deg. 2. Avsender krypterer med mottakers offentlige nøkkel: Da er det bare mottaker som kan dekryptere, siden det bare finnes en privat nøkkel som kan åpne denne meldingen. Egnet for konfidensiell overføring. 3. Avsender krypterer med egen offentlige nøkkel: Da er det bare en sjøl som kan dekryptrere, og derfor ikke egnet for utsending. Kan ha anvendelser for sikker lagring på egen maskin. 1.5. Sjekksum Pensumreferanse: http://en.wikipedia.org/wiki/cryptographic_hash_function En bestemt form for sjekksum, det som kalles hashingfunksjoner (et annet ord for lapskaus) brukes for å ta digitale fingeravtrykk av datainnhold. Her er ingen nøkler involvert, så det ikke egentlig kryptografi, men funksjonen har stor anvendelse for å sikre integritet. Man kan side 3 av 5
for eksempel slippe å kryptere store filer som ikke er hemmelige, men hvor man vil være sikker på at de ikke har blitt endret, ved å bruke sjekksum. En hashfunksjon tar en tilfeldig lang data input og returnerer en sjekksum med fast lengde. Egenskapene til algoritmen må være slik at: Enhver endring i input gir totalt ny sjekksum. Det skal ikke være mulig å finne to meldinger som gir samme sjekksum ( kollisjonsfritt ). Man kan ikke ut fra sjekksum gjette på original melding, det skal ikke være mulig å finne en melding som samsvarer med en gitt sjekksum. MD5 og SHA-1 er to alminnelig brukte algoritmer. MD står for Message Digest (meldingsfordøyelse) og SHA står for Secure Hash Algorithm. Det er litt smak og behag hvilken man velger, for eksempel mener enkelte at SHA-1 har skjulte bakdører, dvs kan brytes, fordi den er designet av NSA (amerikanske storebror seg deg-opplegg) mens andre mener at MD5 har for kort sjekksum (128 bit mot SHA-1 160 bit). Det som i hvert fall er påkrevd er at avsender opplyser hvilken algoritme som er valgt, slik at mottaker kan etterprøve sjekksummen ved å beregne den sjøl med samme algoritme. 1.6. Noen eksempler Bruk av sjekksum for å logge seg på med passord, uten å sende passordet Hver gang jeg ringer med bredbåndstelefon (IP-telefoni) hjemmefra, blir jeg automatisk autentisert. Fordi det koster å ringe, vil begge parter være forsikret om at det virkelig er meg som ringer, det brukes passord. Tjenesteleverandøren kjenner mitt kontonavn og passord, jeg er registrert som kunde. Samme informasjon er lagret i min telefon (i selve adapteret), jeg slipper heldigvis å skrive dette inn hver gang jeg ringer. For å slippe å sende passord i klartekst over nettet hver gang telefonen min autentiseres, brukes sjekksummetoden. Kort beskrevet: 1. Abonnent regner ut en sjekksum hvor navn, passord og annen felles kjent informasjon inngår. 2. Sjekksum (digitalt fingeravtrykk) sendes over til telefontjener. 3. Telefontjener regner på egen hånd ut sjekksum for de samme variable, men henter passord fra egen database for dette navnet. 4. Dersom telefontjener får samme sjekksum som den mottatte, vet man at det er brukt like passord, ergo kjenner brukeren passordet og er derfor autentisert. Bruk av asymmetrisk kryptering for å distribuere symmetrisk nøkkel Symmetrisk kryptering er raskere å beregne enn asymmetrisk kryptering og er derfor foretrukket metode, problemet var nøkkeldistribusjon. Men man kan bruke det beste fra begge metoder. Denne teknikken brukes for eksempel hver gang man logger seg på en nettbank. Det er protokoller som styrer dette når man går inn på en sikker webside: 1. Nettbanken er utstyrt med asymmetriske nøkkelpar (de har installert et digitalt sertifikat). Kunden henter bankens offentlige nøkkel. side 4 av 5
2. Kunden genererer en symmetrisk nøkkel for engangsbruk, krypterer den med bankens offentlige nøkkel og sender den til nettbanken. 3. Nettbanken dekrypterer med sin private nøkkel. Begge parter er nå i besittelse av felles symmetrisk nøkkel som kan brukes i videre kommunikasjon. Stikkord til slutt: Symmetrisk kryptering: En felles nøkkel. Meget rask og sikker, problem med nøkkeldistribusjon. Eksempel 3DES Asymmetrisk kryptering: Nøkkelpar (privat og offentlig). Meget sikker men treg (krevende beregninger på PC). Eksempel RSA Sjekksum: Fingeravtrykk (hashingfunksjon) på melding. Alle endringer i dokument vil gi ny sjekksum (kollisjonsfri). Enveisfunksjon, kan ikke gjenskape innhold. Eksempel MD5 side 5 av 5