Ola Thoresen
Sep 28, 2018 · 12 min read

Hva DIFI burde ha gjort…

Det er ingen grunn til at kryptert og signert epost skal være mer komplisert enn å surfe på krypterte websider, eller midre sikkert enn de komersielle løsningene DIFI og staten prøver å tvinge på oss i dag.

Dette er en oppfølging av det forrige innlegget mitt som skapte litt debatt i andre fora.

Her skal jeg prøve å komme med noen konkrete løsningsforslag.

Først litt helt basic om hvordan “PKI” — Public Key Infrastructure — fungerer.

Public key infrastructure (PKI) er et rammeverk for utstedelse, administrasjon og bruk av digitale sertifikater (…)
Anvendelsesområder for PKI er kryptering, autentisering (etablering av tillit til en person, organisasjon eller gjenstands identitet) og signering av dokumenter (…)
Signering har to hovedfunksjoner: Verifisering av dataintegritet og ikke-avviselighet (non-repudiation). I det siste ligger at man ikke kan benekte at man har signert. Merk at autorisering (tildeling av rettigheter til IT-systemer) er et avledet bruksområde: Når en brukers identitet er brakt på det rene og er autentisert, kan man autorisere brukeren. (Fra Wikipedia)

PKI handler altså om både kryptering og signering, og dekker sånn sett alle de behovene staten er ute etter.

Prinsippet er at hver “bruker” har to nøkler. En privat, hemmelig nøkkel og en offentlig nøkkel som man kan dele med hvem som helst. Disse nøklene er uteledet av komplisert matematikk som ikke er relevant for denne saken, men poenget er at de to nøklene henger sammen slik at…

  • Et dokument som er kryptert med med Anne sin offentlige nøkkel kun kan dekrypteres med Annes private nøkkel.
  • Og et dokument som er signert med Annes private nøkkel kan verifiseres med Annes offentlige nøkkel.

Så hvis Bjarne skal sende et dokument til Anne som kun Anne skal lese, så henter Bjarne ned Annes offentlige nøkkel (og den er helt offentlig, så den kan Anne dele ut til “gud og hvermann”). Og krypterer så dokumentet med denne. Da er Bjarne sikker på at bare Anne kan lese dokumentet.

Hvis Anne skal være sikker på at det er Bjarne som har sendt henne dokumentet, og ikke noen som later som om de er Bjarne, så må Bjarne også signere dokumentet med sin private nøkkel. Anne kan så hente Bjarnes offentlige nøkkel — som igjen er fritt tilgjengelig for hvem som helst, og kan så verifisere at det faktisk er Bjarne som har sendt dokumentet.

Som en bonus blir det samtidig bekreftet at dokumentet heller ikke er endret underveis, og Bjarne kan heller ikke benekte at det var han som sendte det (hvis det skulle oppstå tvil eller konflikt i ettertid).

Det finnes altså en eksisterende infrastruktur, der Staten kan sende kryptert informasjon til sine inbyggere (kryptert med hver enkelts offentlige nøkkel), og være sikker på at det kun er den intenderte mottaker som kan åpne dokumentene. Og der Staten kan signere denne informasjonen med “Det offisielle Norges” private nøkkel, og hvem som helst kan bekrefte at det faktisk var Staten som sendte informasjonen, og ikke en svindler.

Så hvorfor brukes ikke dette i dag?

Som “alle” vet er epost i dag en vits når det kommer til sikkert. Det er svært enkelt å forfalske avsenderadresse på en epost, og jeg tror ikke jeg tar munnen for full hvis jeg sier at 99% av all epost som sendes går ukryptert og lagres ukryptert på ulike servere og på hver enkelts jobb-PC, hjemme-PC eller mobiltelefon osv.

Ser man derimot til web-surfing, så er dagens status at opp mot 90% av all trafikk der er kryptert, og det vokser raskt.

Andel av den globale web-trafikken til brukere av Google Chrome som er https

Hovedårsaken til at PKI ikke har blitt utbredt i epost er at vi som vanlig står i en “høna eller egget”-posisjon. Mens nettleserne alltid har støtta https, har problemet for websurfing vært å få installert sertifikater på serverne. Med en gang en server har fått https, så kan alle klienter (nettlesere) bruke det.

Mens med epost er det svært ulik grad av støtte for kryptering de de ulike klientene, og jeg kan ikke være sikker på at om jeg sender en kryptert (eller signert) epost til noen, så vil de kunne åpne den. I tillegg er det selvsagt et poeng at man har personlige epost-adresser. Så hver enkelt person må sørge for å skaffe seg et nøkkelpar. Mens det holder at den som drifter en webserver ordner et sertifikat, og så er all webtrafikk på serveren kryptert (jeg orker ikke gå i detalj her, men det er selvagt masse “om og men” i denne påstanden).

Så ingen bruker kryptert epost fordi klientene er så kompliserte og dårlige til det. Og de som lager klientene gidder ikke prioritere noe som ingen bruker. I tillegg er den eksisterende infrastrukturen for generering og distribusjon og håndtering av nøkler mildt sagt kompleks, og ikke noe du slipper bestemor løs på.

Punkt 1. Generering av nøkler

Så det første skrittet vi må ta for å komme til at PKI kan brukes effektivt på epost er å sørge for at alle har (minst) et nøkkelpar. Mitt umiddelbare forslag her er at man på samme måte som man får et personnummer, også blir tildelt et nøkkelpar. Så hvor skal dette ansvaret ligge? Her tenker jeg at det bør være et delt ansvar mellom Folkeregisteret og Brønnøysundregistrene. Brønnøysundregistrene bør med fordi det for utbredelsens del er viktig at også bedrifter er med. Dermed får vi en løsning der alle som enten har et personnummer eller et organisasjonsnummer også har (minst) et offisielt nøkkelpar .

Nå hyler og river sikkerhets- og personverneksperter seg i håret, men jeg skal komme inn på nøkkel- og sertifikatadministrasjon om et øyeblikk.

Punkt 2. Distribusjon av nøklene

Ok, så nå har alle personer — både fysiske og juridiske fått seg et nøkkelpar. Men hvordan skal vi få distribuert alle disse offentlige nøklene rundt omkring så man kan begynne å kryptere informasjon til mottakerne, og verifisere signaturene deres?

Ideelt sett bør jo nøklene distriberes personlig, sånn at Anne kan bekrefte direkte overfor Bjarne at det er hennes offentlige nøkkel han får — og motsatt. I praksis vil jo ikke det være mulig i den skalaen her. Derfor er det heldgivs allerede for mange år siden laget en løsning, der man har egne offentlige nøkkel-servere. Disse kommuniserer sammen, og distribuerer offentlige nøkler til hverandre, så hvem som helst kan spørre hvilken som helst nøkkelserver og hente den offentlige nøkkelen der.

Det er dermed en forholdsvis enkel prosess å sette opp en offentlig, norsk keyserver som distribuerer alle de offentlige nøklene. Denne serveren kan så settes opp til å synkronisere seg med de andre offentlige keyserverene i verden.

Punkt 3. Signering av nøkler

Men hvis den skal synkronisere seg med hele verden, hvordan vet vi da at det er den “Anne” som vi vil snakke med sin nøkkel vi henter ned? “Anne” er tross alt ikke noe unikt navn, og ingenting forhindrer heller en svindler fra å opprette en nøkkel i Annes navn. Her kommer “nøkkelsignering” inn i bildet. En “signert” nøkkel er en nøkkel som er “bekreftet” av noen. Hvis Bjarne er 100% sikker på at det er Anne sin nøkkel han har fått (fordi Anne selv ga den til ham, og han kjenner Anne godt nok til å vite at det ikke var noen som utga seg for å være henne), så kan Bjarne velge å signere nøkkelen til Anne. Ved å gjøre dette bygger han opp tilliten til Annes nøkkel, fordi det ikke bare er Anne selv som sier at den er hennes. Og alle som stoler på Bjarne kan da også stole på at det faktisk er Annes nøkkel. Dette kalles “The Web of Trust”.

Men i og med at de offisielle nøklene er generert og utgitt av “Norge”, så kan de også trygt signeres av “Det offisielle Norge”. Alt vi da trenger en en unik “id” som kan knytte en nøkkel til en person. Og der har vi altså personnummer og organisasjonsnummer. (Debatten rundt hvorvidt personnummer er og bør være hemmelig eller ikke kan vi ta en annen dag). Dette er en modell der Norge opptrer nærmest som en Certificate Authority, bortsett fra at man i PKI verden ikke skiller mellom hvem som har signert et nøkkelpar, alt koker ned til “stoler jeg på den som har signert nøkkelen eller ikke”. Hvis du stoler på at Norge ikke lyver til deg om hvem som eier en nøkkel, så kan du også stole på alle nøklene som Norge har signert.

Så vi har altså på plass en løsning for å tildele folk (og bedrifter og organisasjoner) nøkkelpar. Vi har på plass en løsning for å signere disse nøklene, og vi har på plass en løsning for å distribuere de offentlige nøklene til verden.

Punkt 4. Nøkkeladministrasjon

Så tilbake til sikkerhetsekspertene. De vil selvsagt ikke like en løsning der man har ett nøkkelpar fra vugge til grav, og der Noen Andre både har generert nøklene, og ikke minst har lagret din private nøkkel. Som vi husker er jo prinsippet at ingen andre enn deg selv skal ha tilgang til denne.

Vi er altså avhengige av et system for å kunne generere nye nøkler til personer. Vi trenger et system for å slette nøkkelpar vi ikke lenger vil bruke. Og vi trenger en måte å både hente ned vår private nøkkel og kunne laste opp offentlige nøkler generert på “utsiden”.

Og her er det nok en noe større jobb som må gjøres. Mens selve genereringa av nøkler, og signering og distribusjon baserer seg på ting som er åpent og gratis tilgjengelig i dag, så mangler det ganske mye på administrasjonsbiten av nøklene for at dette skal være noe “hvermansen” kan bruke. Det finnes løsninger, men de er langt fra bra nok til at man kan basere seg på det. Så her må vi ha noen utviklere på plass. Noen som kan lage et sexy og brukervennlig grensesnitt der man kan logge inn og administrere egne nøkler (og evt. nøkler til barn under 18(?) år) osv.

  • Man må kunne generere seg flere nøkkelpar ved behov, og også kunne velge hvilken offentlige nøkkel man ønsker at skal være “standard” når noen vil kryptere meldinger til deg.
  • Man må kunne deaktivere gamle nøkler
  • Man må kunne hente ned sine private nøkler (og kunne slette kun den private nøkkelen fra serveren). Her må det opp med store, røde advarlser om at hvis man gjør dette, og så mister den private nøkkelen, så vil man aldri mer kunne dekryptere data som er kryptert med den tilhørende offentlige nøkkelen.
  • Man bør også kunne laste opp egne offentlige (og evt. private) nøkler, generert på utsiden av løsningen.

Hvis du stoler på løsningen, så kan du altså bruke den til å både distribuere dine offentlige nøkler, og til å oppbevare dine private nøkler.

Hvis du stoler litt på den, men ikke fullt ut, så kan du velge å bruke den til å generere nøkkelpar, men så laste ned de private nøklene, og så slette dem fra serveren.

Hvis du overhodet ikke stoler på den, så kan du generere nøkler på utsiden, og så kun bruke platformen til å distribuere dine offentlige nøkler.

Hvis du ikke velger å stole på at Staten tar vare på din private nøkkel på en skikkelig måte, så er det også fullt og helt ditt ansvar å ta vare den private nøkkelen.

Så kan det diskuteres om Norge i tilfelle skal stole på (og signere) offentlige nøkler som ikke er laget i løsningen. Personlig ser jeg ingen grunn til at den ikke skal gjøre det. Det er ikke noen stor forskjell på om du logger inn i løsningen og klikker på “Lag en ny nøkkel til meg”, og om du logger inn i løsningen og så laster opp en nøkkel du har generert et annet sted, så fremt sikkerhetsnivået for nøkkelen ellers er innenfor de rammene man har som minstekrav. Men det åpner jo en liten mulighet for ulike typer phising-angrep, eller at man kan laste opp feil nøkkel, så det er noe man må se på. Man kan f.eks. se for seg at nøkler generert i løsningen blir signert av én offentlig instans, mens nøkler generert utenfor og lastet opp til løsningen blir signert av en annen instans, og så er det opptil avsender om de vil stole på også disse 3.parts nøklene.

Hvem skal så ha ansvar for denne “portalen”? Jeg ser det som naturlig at den er en del av Altinn. Nå er vel ikke Altinn akkurat det jeg vil definere som en “sexy og brukervennlig” løsning. Men det er i alle fall en løsning som allerede eksisterer og som alle i Norge har tilgang til.

Punkt 5. Ta løsningen i bruk

Så da har vi en løsning for å generere nøkler ved behov, for å signere dem og distribuere dem, og også for å administrere dem. Da gjenstår det bare å sørge for at folk tar dem i bruk.

Og det er her den største biten av jobben ligger.

La oss starte med å se på hvilke epost-programmer “folk flest” bruker. Hvis det er noen som vet noe om det, så er det folk som driver med epost-markedsføring (også kalt “Spam”). Her er det litt ulike tall ute og går, sikkert avhengig av hvilket segment de retter seg mot, men på et overordnet nivå er det en del ting man kan lese ut av tallene.

Populære epostklienter #1
Populære epostklienter #2

Som vi ser er det en lang rekke ulike epost-klienter folk bruker. Felles for dem alle er at det er høyst ulike hvor enkelt det er å sende og lese kryptert og signert epost.

Og så kommer de 10–20–30% som bruker andre løsninger.

Det betyr altså at vi må bistå litt med å lage løsninger som kan forbedre akkurat denne biten av epost-klientene. Her må rett og slett staten bruke en del penger på utviklere. For noen av klientene er det en ganske enkel sak, for andre krever det nok litt mere jobb. Men dekker du de fire-fem største klientene, og folk begynner å ta løsningen i bruk, så vil det fort bli mer interessant for de andre å forbedre sine løsninger også. Om Norge gjør dette til sin offisielle løsning, så har man fort 5 millioner potensielle brukere i ryggen, noe som nok vil være ganske interessant for både Google og Microsoft Online.

Det som må gjøres i epost-klientene er egentlig ikke så vanskelig, så lenge den underliggende infrastrukturen med distribusjon og administrasjon av egne nøkler er på plass.

Når du mottar en epost som er kryptert med din offentlige nøkkel, så må epost-klienten lese din private nøkkel, be deg om passordet til den private nøkkelen, og så dekryptere eposten for deg. Hvis klienten ikke finner den private nøkkelen, så må den enten be deg om å peke på riktig privatnøkkel (hvis du har den liggende lokalt) eller koble opp mot den offentlige tjenesten, be deg om passordet ditt, og så laste ned privatnøkkelen derfra.

Hvis eposten er signert, så må klienten koble opp mot en keyserver, finne riktig offentlig nøkkel, og verifisere at signaturen stemmer. Her bør den også klart og tydelig si fra om dette er en signatur gjort med en nøkkel som igjen er signert av en offentlig myndighet, eller om det er en “ukjent” signatur.

Når du så skal sende en epost, så må klienten koble seg opp mot en keyserver, og hvis den finner mottakers offentlige nøkkel der (eller hvis du har den i f.eks. adresseboka i epost-klienten din), og så automatisk kryptere eposten med denne.

Så må eposten signeres med din private nøkkel, som finnes på samme måte som ved mottak av en kryptert epost.

Alt dette kan foregå i bakgrunnen, uten at du behøver å plage brukerne med annet enn noen passord-forespørsler innimellom. Da er vi der at sending og mottak av kryptert og digitalt signert epost ikke er særlig mer komplsert enn det er å surfe på https-sider i dag. Du får et grønt eller rødt hengelås-symbol på eposter du mottar. Og du sender alltid fra deg krypterte eposter så lenge mottaker ligger registrert med en offentlig nøkkel på keyserveren.

Dette er en jobb jeg mener burde vært gjort og prioritert, og som ville vært til det beste for hele interenett, ikke bare norske brukere. For ved å basere seg på standard-løsninger, en eksisterende PKI-infrastruktur og ikke finne opp hjulet og hele kjeden på nytt vil denne løsningen kunne brukes av alle i alle land. Og vi kunne endelig begynne å ta i bruk kryptert og signert epost over alt.

Og før noen spør om det skal være Norges ansvar, og hvorfor skal vi betale for dette, så er det er jo bare å påpeke at det ikke akkurat er gratis med de “Digitale Postkassene” som er valgt i dag heller.

Ola Thoresen

Written by

Noe over gjennomsnittlig interessert. Kjentmann i IP- og nettverksjungelen, og jobber i nLogic AS.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade