SSL - Hva er det?

Innføring i kryptert og ukryptert kommunikasjon
For å forstå hvordan kryptert nettverkskommunikasjon fungerer, så må man få noen begreper innen kryptologi og nettverkskommunikasjon på plass. Jeg skal først gå gjennom noen enkle begreper innenfor begge teknologiene før jeg kombinerer de.

Nettverk (TCP/IP)
TCP/IP er en samlebetegnelse på flere protokoller som samarbeider for å kunne tilby Internett og nettverk generelt slik vi kjenner det i dag. Disse protokollene opererer på flere lag som f.eks maskinvare, nettverk og programvare. Antall lag (layers) det er avhenger av hvilken modell du ser etter.

Kommunikasjonen mellom 2 datamaskiner skjer ved hjelp av pakker. En analogi er at du skal sende en pakke med posten. Du skriver på mottakeradresse og avsenderadresse og du går på posten der pakken blir sortert og sendt ut på ruten til mottakerens postkontor. Der vil mottakeradressen bli gjenkjent som en lokal adresse (den tilhører dét postkontoret) og sendt hjem til mottakeren eller lagt i postboksen.

En annen ting å legge merke til er at hvis du sender 3 pakker på 3 dager så kan pakkene ankomme mottakeren i forskjellig rekkefølge enn de ble sendt. Alt dette og mer til dekker TCP/IP.

Når en (data)pakke blir generert så skal den gjennom en rekke stadier før den er klar til å sendes ut på nettverket. Disse stadiene kalles \’layers\’. Det finnes en modell med 5 layers og en modell med 7 layers. Jeg skal kort oppsummere 5-lagsmodellen (som det blir undervist i faget Datakommunikasjon av Werner Farstad).

TCP/IP modellen består av 5 lag:

  • 5. Programvarelaget - HTTP,FTP,SSH,IRC
    Her er det opp til programmet å bestemme hva som skal skje med dataene. Dette kan være det som sluttbrukeren ser (web, mail osv).
  • 4. Transportlaget - TCP,UDP,IGMP,ICMP
    Sørger for kommunikasjon mellom to maskiner.
  • 3. Nettverkslag - IP,IPSEC
    Tar seg av routingen mellom to maskiner. Hvis din adresse tilhører et annet subnett enn mottakeradressen, så må pakken bli routet (sortert) og sendt til rett nettverk. På dette nivået er det nivå-3 switcher og routere opererer. Disse switchene og routerene er beregnet på store nettverk i bedrifter og på skoler.
  • 2. Datalink - IEEE802.11a/b/g
    Kommunikasjon mellom to nettverkskort på samme kabel. Som f.eks mellom ditt nettverkskort og til switch/hub. Det er også på dette laget nivå-2 switcher opererer. Trådløs (WIFI) er definert på dette laget.
  • 1. Fysisk lag
    Linken mellom din hardware og nettverket.

Når en pakke blir generert av et program befinner det seg på lag 5. På lag 5 består pakken av bare data. En eventuell header er opp til protokollen på lag 5 å avgjøre.

Når pakken går ned til nivå 4, transportlaget, så blir headere for nivå 4 lagt foran dataene i lag 5. Disse headerene er blant annet kildeport, destinasjonsport, sekvensnummer for pakken, type pakke og sjekksum.

Lag 3 tar alt fra lag 4, inkludert headere + data, og setter det i dataområdet for lag 3 og setter headerene foran dataene. Headerene for lag 3 er blant annet kildeip, destinasjonsip, lengde på pakken, hvilken transportprotokoll som skal brukes og sjekksum av headeren.

Lag 2 og 1 er opp til hvilken hardware du bruker og kan variere sterkt fra nettverk til nettverk. Men prinsippet er det samme der. Ta alt fra forrige lag og legg egne headere foran.

Når pakken ankommer destinasjonen så vil headerene fra lag 1 skrelles av før den når lag 2 osv.

Kryptering

Kort oppsummert så finnes det 3 typer å kryptere data på. En-veis (hash), synkron og asynkron. Jeg skal ikke gå i dybden bak matematikken for å kryptere/dekryptere data.

Hash-algoritmer krypterer data én vei. Det vil si at det går ikke an å kryptere dataene tilbake. Når du først har kryptert en fil eller en tekst med en hash-algoritme så blir de krypterte dataene en unik signatur på akkurat den filen eller teksten, og det er akkurat det hash-algoritmer brukes til. Hash-algoritmer sitt største område er sikker lagring av passord i databaser og for å lage signaturer av store filer som du laster ned.

Synkrone algoritmer krypterer og dekrypterer dataene med én nøkkel. Ulempene med én nøkkel til å kryptere og dekryptere er utveksling av dataene. Hvordan kan du vite at det var bare mottakeren og ingen andre som fikk tak i nøkkelen når du sender den over nettet? Fordelen med synkrone algoritmer er at de som oftest er raskere enn asynkrone algoritmer.

Asynkrone algoritmer bruker en \”public key\” og en \”private key\”. Disse nøklene lagres i 2 forskjellige filer. En som du kan dele ut til alle og enhver og en som du skal holde bare for deg selv. Den offentlige nøkkelen brukes til å kryptere data og den private nøkkelen brukes til å dekryptere data. For større sikkerhet så kan den private nøkkelen også beskyttes med et passord slik at det er ikke bare å få tak i den private nøkkelen for å dekryptere dataene i f.eks et \”man in the middle\”-angrep.

SSL - Secure Sockets Layer

På samme måte som postmannen kan lese dine brev, kan hvem som helst lese dine datapakker når de blir sendt ukryptert. Hvis du og mottakeren av brevet bruker et eget kodespråk så kan postmannen ikke lese brevet uten videre. Hvis dere har blitt enige om kodespråket i et tidligere brev som postmannen kunne lese, så kan han også lese brevet som er skrevet i kodespråket.

For å unngå at hvem som helst kan lese dine ukrypterte og krypterte datapakker, så er SSL blitt utviklet. SSL legger seg på lag 5 i TCP/IP-modellen. Det er programmet som står for krypteringen og dekrypteringen av datastrømmen.

Når en SSL-tilkobling blir opprettet, så utveklser begge maskinene en offentlig nøkkel og de utveksler hvilke algoritmer de støtter.