Når du i din browser bruger Google's single sign-on system til at logge ind på youtube.com, så bliver du sendt til ”https://accounts.google.com” for at taste dit password. Ved altid at checke at der står ”https://accounts.google.com” i browserens adresselinje, før du indtaster dit Google-password, så har du en kryptologisk garanti for at du kun sender dit Google-password til Google.

Firmaet bag NemID, Nets, har ikke udstukket nogle retningslinjer for hvilket domæne der må stå i browserens adresselinje, når du indtaster dit NemID-password. Så brugere skal åbenbart bare indtaste deres password på alle websider, hvor der bliver vist en NemID-dialogboks. Og alle kompetente programmører kan uden videre lave en webside med en perfekt kopi af NemID-dialogboksen. Der er ikke i NemID indbygget nogen kryptologisk beskyttelse mod tyveri af dit NemID-password.

Jeg har fremlagt dette for professor Lars R. Knudsen, som er en internationalt anerkendt kryptolog og leder af DTU's kryptologi-gruppe. Knudsen er enig i at NemID har et reelt sikkerhedshul, som ikke findes i andre browser-baserede single sign-on systemer, såsom Google's, og han ”finder det besynderligt at Nets ignorerer dette problem”.

NemID giver adgang til endog meget følsomme oplysninger, fungerer som juridisk bindende digital underskrift, og giver adgang til at flytte penge fra netbank-konti. Jeg kan ikke se nogen grund til at NemID ikke bare kopierer Google's eller Facebook's kryptologisk sikre single sign-on designs.

Bemærk at dette indlæg kun udtaler sig om sikkerheden af standard NemID, og ikke den USB-baserede ”NemID på hardware”.

Password-sikkerhed og identitet på Internettet

Man må aldrig skrive sit NemID-password i en email, eller i telefonen. Selv om man bliver bedt om det. Men hvad hvis en webside spørger om mit password? - Det er klart at der findes rigtige og forkerte websider at indtaste sit password på. Her skal man bruge domænenavnet i browserens adresselinje til at se identiteten af modtageren.

Viden om hvilket domænenavn er det rigtige at indtaste sit password på er ofte implicit – for eksempel hvis man har oprettet en konto med tilhørende password på dba.dk, så er det klart at dba.dk er det rigtige domæne at indtaste sit dba.dk-password på.

Denne password-sikkerhedsmekanisme baseret på kryptologisk autentifikation via domænenavne (så længe websiden bruger HTTPS) har designerne af NemID af uvisse årsager valgt ikke at bruge – brugerne af NemID har ikke fået noget kriterie for hvilke domæner et NemID-password og engangskode må indtastes på. Nets skriver endda direkte at ”Der findes desværre ingen nemme, sikre metoder til at se, om en hjemmeside er ægte eller falsk. En ihærdig it-kriminel kan efterligne og forfalske alt på en hjemmeside”. Tilsyneladende uvidende om at domænenavnet i adresselinjen er garanteret af browseren til at være uforfalskeligt.

Nets skriver at man skal ”være skeptisk”, checke for stavefejl, og vide hvordan en NemID-dialogboks ser ud og opfører sig, etc. Men en kompetent angriber kan lave en falsk NemID-dialogboks, som vil blive accepteret af en kompetent bruger der følger alle sikkerhedsråd fra Nets.

Hvem kan stjæle dit NemID-password?

Når du taster dit NemID-password og engangskode ind på e.g. din netbank, så er der ingen kryptologisk garanti for at NemID-dialogen ikke er forfalsket af din netbank, så dit NemID-password og engangskode sendes til netbanken og ikke til Nets. Din netbank kunne så for eksempel læse indholdet af din e-Boks.

Eller antag at en angriber kan overtage en dansk hjemmeside. Websiden behøver ikke engang i virkeligheden at bruge NemID, bare en fornuftig bruger kunne forestille sig at websiden kunne bruge NemID. Angriberen kan så lave en falsk NemID-dialog, stjæle password og engangskode, og få adgang til e.g. brugernes e-Boks eller netbank. Så sikkerheden i NemID er ikke højere end den mest usikre af alle websider, hvor en bruger kunne acceptere en NemID-dialogboks.

Hvis en angriber har overtaget en router, eller lavet et falskt wifi-accesspoint, så kan angriberen også lave et Man-in-the-Middle angreb, og for eksempel sende en besøgende på ”herlevbibliotek.dk” til

”https://herlev-bibliotek.dk” (bemærk bindestregen), som er en side helt under angriberens kontrol. Og derefter lave en falsk NemID-dialog.

At NemID bruger engangskoder gør angreb en smule mere besværlige. Det kræver dog bare at en angriber lavet et ”real-time Man-in-the-Middle” angreb, som demonstreret af Version2 i 2011.

Papkort med engangskoder er et godt supplement til kryptologisk sikkerhed, ikke en erstatning.

Nets' og myndighedernes svar

Jeg forklarede til IT -og Telestyrelse i 2010 at NemID ikke var kryptologisk sikker. NemID's daværende chefarkitekt svarede at Nets var klar over problemet, og at de løbende evaluerede om det blev et problem. IT -og Telestyrelsen godtog overraskende at problemet ikke blev rettet. Jeg har også gjort blandt andre Datatilsynet og Digitaliseringsstyrelsen opmærksomme på problemet, uden effekt.

Efter at 8 bankkunder udleverede deres NemID-password på det angriber-kontrollede domæne nordea-dk.com i september 2011, lavede Version2 en demonstration af angrebet. Nets svarede at angrebet var et "teoretisk scenarie", selv om det jo både var blevet udført i angrebet på Nordea-kunderne og i Version2's demonstration. Selv uden for fagsproget mener jeg at man ikke på nogen måde kan kalde et demonstreret angreb for "teoretisk".

Udbredte browser-baserede single sign-on systemer som Google's, Facebook's, og OpenID er alle designet med en kryptologisk garanti. Når NemID er tænkt som en juridisk bindende digital signatur, så er jeg helt uforstående over for, at myndighederne har godkendt et NemID-design som ikke giver brugerne en kryptologisk garanti imod angribere.

Staten har planer om videreudvikling af NemID. Forhåbentligt vil der centralt i den beslutningsproces være mindst en embedsmand med bedre forståelse for hvad der er ”state of the art” indenfor Internet-sikkerhed. NemID er en trusted third party, og det er klart at i en korrekt designet trusted third party model, så skal man ikke skal sende sit hemmelige NemID-password til en webside kontrolleret af modparten som det første login-trin.

Anderledes og bedre oplysning af danskerne

Det er mit indtryk at dansk undervisning i Internet-sikkerhed har fokuseret på ”bløde” værdier. Såsom at checke efter stavefejl som et tegn på en uægte webside eller email. Det er selvfølgelig gode råd, men de hjælper mest mod dumme angribere som ikke kan stave dansk.

Webbrowsere og mange emailsystemer har indbygget kryptologisk identitets-check baseret på domænenavne, som kan give brugeren en kryptologisk garanti for at en given webside/email stammer fra rette person/firma. Dette er absolut nødvendigt at bruge, for at kunne forsvare sig mod angribere som kan skrive dansk uden stavefejl. Det kræver dog at brugeren har en basal viden om hvordan man for eksempel bruger browserens adresselinje, for at se den kryptologisk garanterede identitet af websiden.

Og det kræver at websider giver brugerne effektive instruktioner for hvornår de må indtaste deres password - for en korrekt designet NemID kunne en sådan instruktion være: "Du må kun indtaste dit NemID-password når der står 'https://nemid.nets.dk' i browserens adresselinje".