NemId uden brug af applet

Det omdiskuterede NemId applet kan læse alt på din computer - fra dokumenter til gemte passwords i browseren. DanID, leverandøren, siger at de aldrig vil misbruge det, men den adgang er slet ikke nødvendig for det de skal opnå. NemId vil sagtens kunne fungere uden brug af et applet. Derfor præsenterer IT-Politisk Forening en løsning som ikke kræver de overdrevne adgang til computeren.

Hvorfor er et Applet skidt

Et applet er ikke i sig selv skidt, men når man benytter et signeret applet (som i tilfædet med NemID) og brugeren accepterer det, får applettet adgang til alt på computeren. Det betyder det kan læse dine dokumenter, gemte passwords fra browseren, og meget meget mere. DanId, leverandøren af NemId har naturligvis udtalt at de aldrig kunne finde på at misbruge den adgang.
Den adgang ønsker IT-Politisk Forening ikke er et krav for at benytte offentlige services eller andre services der kræver NemId.

En applet er yderligere noget skidt da denne kræver en java-installation - noget der ikke eksisterer på de flere hundredetusinde smartphones der er solgt i Danmark. F.eks. skydes det at der er der solgt over 200.000 iPhones i danmark - og producentens direktør, Steve Jobs, har udtalt at Java er gammeldags og ingen bruger det mere.

En bedre løsning

IT-Politisk Forening anbefaler at man implementerer NemID ved hjælp af samme metode som man benytter til sikre dankort betalinger på nettet.

Nedenfor vil vi vise en sikker login-løsning. Der er 3 parter involveret:

  1. Brugeren - vedkommende har en NemId udstedt af DanID
  2. DanId - har aftaler med en række tredjeparter om at de kan benytte NemId login'et.
  3. En tredjepart - f.eks. en kommune

Login

I store træk kan processen beskrives med følgende figur.

Beskrivelse af processen set fra brugeren:

  1. Brugeren går ind på hjemmesiden skat.dk fordi brugeren vil se sin forskudsopgørelse
  2. Skat.dk har en knap "Login med NemID" som brugeren trykker på.
  3. Han kommer ind på en hjemmeside ejet af DanID f.eks. login.danid.dk. Der står at Skat ønsker at validere hans identitet og at han skal indtaste sit brugernavn og password.
  4. Efter at have udfyldt felterne klikker han ok og bliver sendt tilbage til Skat.dk
  5. Skat.dk byder ham velkommen og giver ham de muligheder i selvbetjening som han ønsker.

Overstående vil fungere på enhver enhed der kan gå på nettet og snakke sikkert med en server(samme krav som når man betaler med et Dankort).

Nogle af fordelene over applet-metoden:

Det sker der teknisk:

  1. Brugeren ankommer til Skats hjemmeside - Skat har en aftale med NemID.
  2. Når brugeren klikker på "Login med NemID" sender skat.dk en krypteret forespørgsel til DanId med deres partner-aftalenummer og kodeord. Skat får to numre af DanID.
    1. Ét nummer som brugerens browser videregiver til DanID når denne straks efter forbinder til login.danid.dk.
    2. Et andet nummer (et kontrolnummer) som brugerens browser skal returnere når DanId har verificeret at det er den rigtige person. Dette nummer oplyser Skat ikke til brugeren.
  3. DanID lader brugeren indtaste brugernavn og kodeord. Efter brugeren har identificeret sig sendes denne tilbage til skat.dk med kontrolnummeret plus et verificeringsnummer.
  4. Skat modtager kontrolnummeret og verficeringsnummeret fra brugerens browser når denne kommer tilbage. Skat.dk kontakter DanID og Verificeringsnummeret sendes sammen med deres partner-aftalenummeret og kodeord. Retur får de oplysningerne de skal have om den bruger der har identificeret sig over for DanID.
  5. Skat kan nu byde den identificerede bruger velkommen og give vedkommende adgang til sine oplysninger.

Noter:

Upload og samtidig signering af filer

NemID skal kunne benyttes til at uploade og samtidig signere de uploadede filer.
Såvidt forfatteren har forstået kræver dette at aftalen/filen der uploades eller en hash-værdi af denne(dennes "matematiske fingeraftryk") sendes til NemID.
Dette kan gøres på to måder uden brug af DanIds java applet:

  1. Brugerens browser beregner hash-værdien af filen og sender hash-værdien til DanID - dette kræver en ny webteknologi der hedder Javascript File API(et delsæt af HTML5).
  2. Brugerens browser uploader hele filen til DanId.

Første metode er den bedste, men hvis brugeren har en ældre browser og ikke ønsker at opgradere denne kan man benytte metode 2. I Javascript File API har program-koden kun adgang til filer som brugeren eksplicit vælger. Metode 2, hvor hele filen sendes til DanID er stadig langt bedre end at give DanID fuld adgang til hele computeren. Forfatteren vil hellere stole på at DanID ikke læser den aftale jeg indgår med tredjeparten end at DanID ikke læser ALT på min computer. Metode 2 fungerer på alle internet-enheder fra smarphones til gamle computere. Med tiden vil alle kunne benytte metode 1.

Beskrivelse af processen set fra brugeren(uanset metode):

  1. Brugeren er allerede logget ind på hjemmesiden kommune.dk via nemID.
  2. Brugeren bliver bedt om at uploade et foto af sig selv i anledning af fornyelse af kørekort, og sendes derefter til upload.danid.dk
  3. På upload.danid.dk står der at Kommune.dk ønsker at han uploader og signerer en fil.
  4. Et klik på "Vælg fil"-knappen giver ham adgang til at vælge filen. Derefter udfylder han sit brugernavn og kodeord.
  5. Når han klikker på OK-knappen bliver filen signeret og uploadet til kommune.dk som han også selv bliver sendt tilbage til.
  6. Ankomst på kommune.dk og filen kan ses uploadet og markeret signeret.

Det sker der teknisk i metode 1:

  1. Brugeren er allerede logget ind på Kommunens hjemmeside - kommunen har en aftale med NemID.
  2. Når brugeren klikker på "upload kørekort foto" sender kommune.dk en krypteret forespørgsel til DanId med deres partner-aftalenummer og kodeord. kommune.dk får to numre af DanID.
    1. Ét nummer som brugerens browser videregiver til DanID når denne straks efter forbinder til upload.danid.dk.
    2. Et andet nummer (et kontrolnummer) som brugerens browser skal returnere når DanId har signeret filen. Dette nummer oplyser kommune.dk ikke til brugeren.
  3. DanID lader brugeren vælge en fil fra deres harddisk via samme dialog-boks der benyttes når man ellers uploader filer på nettet. Så snart brugeren har valgt en fil, beregnes en hash-værdi af denne.Brugeren indtaster derefter sit brugernavn og kodeord i en anden formular der sender det sammen med hashværdien til DanID via AJAX.
  4. Så snart hash-værdien af filen er signeret, sendes brugeren og filen til kommune.dk tilsammen med kontrolnummeret samt et verificeringsnummer
  5. Kommune.dk kontakter skat.dk med brugerens verificeringsnummer og får hash-værdien af den fil som er signeret
  6. Kommune.dk beregner selv hash-værdien af den modtagne fil for at verificere at det rent faktisk er den fil der er signeret.
  7. Kommune.dk bekræfter over for borgeren at filen er modtaget signeret.

Nogle af fordelene over applet-metoden:

Javascript File API fungerer ihverfald på følgende browsere:

Det kan testes ved at vælge en fil på den her side: http://www.html5rocks.com/tutorials/file/dndfiles/#toc-selecting-files-input

Det sker der teknisk i metode 2:

Det samme som i metode 1, men hele filen uploades til DanID.

Signering af aftaler

NemID skal også kunne benyttes til at signere aftaler. En aftale indgås mellem en tredjepart, f.eks. kommune.dk, og brugeren.

Hmm. Jeg har svært ved at finde en god løsning - hvor aftalen ikke kan læses af DanId.

Den meget grimme løsning: "Session cookies" via sessvars: http://www.thomasfrank.se/sessionvars.html
Krypter og gem Aftale.

Download/upload uden signering

Det er ikke nødvendigt at involvere DanID i download/upload processen af en fil der ikke skal signeres. Denne foretages fuldt ud sikkert med en standard SSL-forbindelse.