NemID er ikke kryptologisk sikker - og myndighederne er ligeglade

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".

Thue Kristensens billede

Kommentarer (41)

Lars Skovlund

Jeg har tidligere talt for at det igangværende (kender desværre hverken status eller navn) projekt i EU med at interface de enkelte landes PKI-løsninger vil føre til et eller andet. Det kan umuligt være alle EU-lande, der vil acceptere makværket.

Ole Tolshave

Jeg er ofte hurtig til at tage NemID i forsvar. Det er en praktisk løsning, som er en vigtig enabler for digitaliseringen og - på trods af skønhedsfejl - har en fin balance mellem sikkerhed og brugsvenlighed, og faktisk ikke fortjener den til tider hårde kritik.

Men på dette punkt må jeg give Thue Kristensen ret. Det er et reelt problem, at dette semi-fundamentale problem ikke bliver addresseret, og det er tæt på en skandale, at denne svaghed får lov til at forblive åben. Især fordi den som beskrevet kan lukkes uden at genere slutbrugeren nævneværdigt - det er kun Nets og websites med en NemID-login boks, som har en relativt mindre opgave at løse.

Vi skal kunne have tillid til at en NemID-signatur ikke kan forfalskes, hvis ellers man er lidt påpasselig og denne sårbarhed underminerer tilliden. I dag kan vel blive både skilt og skifte køn med en NemID-signatur, så det er alvorligt.

Stram op Nets!

Jonas Finnemann Jensen

At man glemme en ting der er så simpel er helt utroligt...

Specielt når man tænker på hvilke tosse streger der er lagt i NemID for at gøre det uigennemskueligt med Java Applets og fingerprints af PC...
Typisk handler der ikke om at beskytter forbrugeren, men om at beskytte virksomeheden.

Iøvrigt burde NemID kode kortet have et stort icon af et kamera med en rød streg over som forklarer at man ikke må tage et photo af kode kortet :)

Henrik Biering Blogger

... for NETS kræver slet ikke at login-dialogen foregår på en side med krypteret forbindelse. Jeg har uden respons gjort 3 forskellige relevante personer i NETS opmærksom på denne veritable fælde: http://www.guloggratis.dk/min-side/nemid/validering

Så der er ikke behov for https://herlev-bibliotek.dk , hvis man f.eks. kan lave MITM på http://herlevbibliotek.dk

Thue Kristensen

Det er et reelt problem, at dette semi-fundamentale problem ikke bliver addresseret, og det er tæt på en skandale, at denne svaghed får lov til at forblive åben.

NemID er en Trusted Third Party. Det er ikke "semi-fundamentalt", men fuldstændigt fundamentalt, at det er designet så man faktisk er sikker på kun at sende sit NemID-password til NemID!

Og det er ikke "tæt på en skandale". Det er en skandale!

Thue Kristensen

Så der er ikke behov for https://herlev-bibliotek.dk , hvis man f.eks. kan lave MITM på http://herlevbibliotek.dk

Se også https://www.youtube.com/watch?v=MFol6IMbZ7Y , hvor Moxie Marlinspike sætter en ssl-stripper op på en tor exit node. Han var nødt til at dobbeltchecke om hans tæller virker, for alle gmail-brugerne tastede gladeligt deres password ind på http.

Brugerne vil generelt aldrig checke om der står "https" i stedet for "http". Det er derfor at https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security (helst med preloading) er så vigtigt.

Og NemID er selvfølgelig ikke beskyttet af HSTS. Modsat seriøse designs så som Google's single sign-on.

Ole Tolshave

NemID er bestemt fundamentalt. Jeg mente at selve problemet måske nok er en del af designet, men jeg tænker også at det ikke er umuligt (kun besværligt) at retrofit'te et krav om et krypteret domænenavn, som SKAL bruges til login. Jeg kan ikke lige gennemskue præcist hvor nemt/svært det er at ændre uden "NemID skal designes om fra grunden".

Thue Kristensen

Jeg tror ikke at der er ikke noget fundamentalt som forhindrer NemID i at efterligne OpenID's design, men jeg går stækt ud fra at alle siderne som i dag har en NemID-dialog indlejret skal opdateres.

OpenID virker ved at signerer en meddelelse på Trusted Third Party-siden, som så sendes tilbage til den side man vil at logge ind: https://openid.net/specs/openid-authentication-2_0.html#verification

Dette kunne man også bare gøre med NemID, med min privatnøgle som ligger i NemID's HSM's.

Mads Bendixen

Alle offentlige sider kan/skal bruge NemLogin (med samme ejer, Digitaliseringsstyrelsen), så infrastrukturen er så at sige på plads.

Man kunne dog overveje lige at give administrations-siden en grundig overhaling, hvis man skal have flere til at bruge den. Den er ikke super logisk at finde ud af.

Nicolai Rasmussen

Og det er ikke "tæt på en skandale". Det er en skandale!


Problemet er at en kæmpe skandale, der kun kan erkendes af en lille elitær gruppe, ikke brænder igennem og får de nødvendige konsekvenser. Det er ikke kun et problem for IT, det gælder alt der er kompliceret udover Hr-og-fru-frikadelle-niveauet.

DJØF'erne gør det bedste de kan, men deres kompetencer rækker slet ikke til komplicerede fag-problemer. Brokke-røve er en almindelig forekommende baggrundsforurening i et DJØF miljø. Dem har de for længst udviklet en effektiv metode til at uskadeliggøre. Når brokke-røvene er kompetente individer udover DJØF'ernes niveau, så bliver de behandlet efter samme metode. Jeg tvivler på at DJØF'erne har udviklet en effektiv metode til at opdage om brokke-røvene er kompetente eller ej. De er dygtige til at opdage om nogen kan true deres magtposition / resort, men det er jo noget andet end kompetence.

Måske (og kun måske) kan man få skandalen til at blive erkendt i diverse ministerier, hvis man kan true deres resort. Det kunne måske ske, hvis nogen kan finde en lov (gerne noget fra EU) der bliver overtrådt ved dette problem. Hvis man, ved at lade dette skandale-system fortsætte, forbryder sig mod en eller andet lovgivning, der ikke bare kan ændres med en ny fortolkning, så har man noget at komme efter. Hvis lovbrudet er tydeligt nok, så kan man skrive en artikel og spørge retorisk om dette lovbrud er godkendt af ministeren. Måske (og kun måske) kan man være heldig at DJØF'erne i alt deres magt og faglige inkompetence kan få rettet op på skandalen. -ØV

Jesper Lund Stocholm Blogger

Problemet er at en kæmpe skandale, der kun kan erkendes af en lille elitær gruppe,


Så er det vel heller ikke en skandale?

Jeg er helt med på, at det er et uheldigt designvalg, men skandalen opstår vel først, når dette designvalg har markante, uheldige konsekvenser. Indtil da - dvs indtil det reelt og massivt misbruges - så er problemet vel til at overskue.

Jeg tror ikke på, at implementering af NemID via login på fx logind.nemid.nu ville betyde noget som helst for den almindelige bruger. Jeg selv har aldrig rigtigt tænkt på, at login via Google altid foregår via accounts.google.com - før dette indlæg.

Men ok - så længe man er i et ekkokammer, så lyder alting meget højt ...

Morten Hartvig

Det er vel ikke et problem med mindre siden i forvejen er hacked (som så er et andet problem der vil være løst hvis sign-on foregik andetsteds), da selve login kommunikationen (ajax/xhr request) foregår over https protokollen*. Så er der jo ikke noget usikker kommunikation der kan læses.

Det er jo ikke sådan at HTTP (uden S) er det samme som en keylogger. Det er kun kommunikation til/fra server der er usikkert.

  • åbenlys antagelse, har aldrig tjekket.
Jesper Lund Stocholm Blogger

Det er muligt det ikke er en skandale (endnu), men at det ikke skulle være et problem før det bliver udnyttet er en dybt grotesk holdning at have, så jeg håber virkelig jeg har misforstået din kommentar, Jesper.


Det tror jeg ikke, at du har.

Men intet er gratis. Man er nødt til at overveje, om omkostningerne (totalt set) ved implementering af den ønskede rettelse, opvejes af de fordele den medfører.

Sat på spidsen: hvis det koster en milliard at implementere rettelsen, men at denne rettelse "kun" medfører mindre tab (erstatninger ved misbrug) i størrelsesordenen "en million", så giver det ikke mening at kræve, at rettelsen laves.

Det er ikke min opfattelse, at NemID er plaget af misbrug, der ville forsvinde, hvis denne rettelse blev lavet. De omkostninger der er ifbm implementering af rettelsen skal kunne retfærdiggøres på én eller anden måde. Og hvis svindlen med NemID totalt set er marginal, så er det svært at argumentere for, at det skal laves.

Tonen i denne tråd lugter vildt meget af "design by committee" - eller "design by lynch-mob" ... det giver sjældent noget godt resultat.

Jens Henrik Skuldbøl

Jeg er enig i at vi som udviklere har en tendens til at fare i flint når vi ser eksempler på dårligt design eller lignende, særligt på darlings som NemID eller Rejsekortet.

Men lige præcis NemID, et system vi er tvunget til at bruge -- der er intet tilvalg, eller endda opt-out, som har stor, samfundsmæssig indflydelse, synes jeg godt vi kan tillade os at stille skarpe krav til sikkerheden på, uagtet omkostningerne for leverandørerne. Særligt når vi (mig bekendt) ikke har en ordentlig beredskabsplan for digitalt identitetstyveri.

Sat lidt på spidsen svarer det til at acceptere at en bilfabrikant ikke vælger at tilbagekalde en model de er bevidste om har defekte bremser, bare fordi det ikke har forårsaget nogle dødsfald endnu, fordi det ikke er økonomisk rentabelt.

Gert Madsen

Sat på spidsen: hvis det koster en milliard at implementere rettelsen, men at denne rettelse "kun" medfører mindre tab (erstatninger ved misbrug) i størrelsesordenen "en million", så giver det ikke mening at kræve, at rettelsen laves.


Du rammer faktisk kernen i hele problematikken med sikkerhed omkring vores personlige data.
Det koster ikke digitaliseringsstyrelsen, eller deres chefer en øre, selvom nogen sælger dit hus via misbrug af NemID, og overfører pengene til Gibraltar.

Jesper Lund Stocholm Blogger

Sat lidt på spidsen svarer det til at acceptere at en bilfabrikant ikke vælger at tilbagekalde en model de er bevidste om har defekte bremser, bare fordi det ikke har forårsaget nogle dødsfald endnu, fordi det ikke er økonomisk rentabelt.


Nej. Men i dit eksempel har vi massiv historisk empiri for, at defekte bremser medfører "uheldige konsekvenser" (host!).

Hvor er den massive empiri for, at lige præcist NemIDs design gør det til en tikkende bombe for misbrug?

Jesper Lund Stocholm Blogger
Thue Kristensen
Nicolai Rasmussen

Men du troede vel ikke, at sikkerhed var gratis? Eller at det offentliges kasser var uendeligt dybe?


Hvis sikkerhed er tænkt ind fra starten ved et godt design, så koster det som regel det samme som at implementere en dårlig og usikker løsning. Omkostningerne ved den manglende sikkerhed, kommer oveni bagefter, og rammer enkelt-individer (og derigennem samfundet).

Hele din argumentation er bygget op om at det koster en masse at implementere den nødvendige ændring. Den nødvendige ændring skulle aldrig have været i drift i første omgang. Designet har fra starten været forkert.

Udgangspunktet må være at de uduelige personer, ansvarlige for at vi står i suppedasen, sørger for (med egne midler) at få os bragt ud af den igen. Det skal ikke lægge samfundet (og dermed mig) til last. Hvis man lukker sig inde i sit eget elfenbenstårn, så står man med hele ansvaret hvis noget går galt - og det gjorde det i dette tilfælde.

Hvis man laver åbne beslutningsprocesser og lader den brede fagkundskab få mulighed for at give deres besyv med, så er chancen for at man får bedre resultater større. Man kan heller ikke efterfølgende skyde de ansvarlige i skoene at de ikke har lyttet, hvis processen i realiteten har været inkluderende. I lovgivningsarbejdet kan man (nogen gange) godt finde ud af at sende et lovforslag i høring. Det skyldes ikke at embedsmændene i ministerierne ikke kan finde ud af at skrive love. Man gør det for at sikre at det man havde tænkt sig, ikke viser sig at få nogle uforudsete uhensigtsmæssige konsekvenser. Det samme kunne man også sagtens lave på store infrastruktur projekter (så som IT). Vi har i dag et piv-ringe autentikeringssystem (NemID), alle vores offentlige hjemmesider kan ikke tilgås af blinde og svagtseende, kommunerne kan ikke modtage krypterede emails, E-boks kan skalte og valte med borgernes juridiske dokumenter, DRs hjemmeside kræver usikker flash og hovedparten af samfundsdebatten foregår under amerikansk sensur på facebook. Listen med tåbelige forhold er lang og sørgelig. Hvis man begyndte at holde de ansvarlige op på deres resultater, ville man også begynde at se bedre beslutninger og dermed resultater.

Thue Kristensen

Måske (og kun måske) kan man få skandalen til at blive erkendt i diverse ministerier, hvis man kan true deres resort. Det kunne måske ske, hvis nogen kan finde en lov (gerne noget fra EU) der bliver overtrådt ved dette problem.

Måske Persondataloven §41 Stk. 3:

Den dataansvarlige skal træffe de fornødne tekniske og organisatoriske sikkerhedsforanstaltninger mod, at oplysninger hændeligt eller ulovligt tilintetgøres, fortabes eller forringes, samt mod, at de kommer til uvedkommendes kendskab, misbruges eller i øvrigt behandles i strid med loven. Tilsvarende gælder for databehandlere.

Hvor min påstand er, at et NemID uden kryptologisk garanti ikke giver tekniske sikkerhedsforanstaltninger mod at data man får adgang til via et NemID-login "kommer til uvedkommendes kendskab".

Ole Madsen

Det er jo tosset! du har fuldkommen ret, det er ligegyldigt om man skriver med store og små bogstaver. Dejligt at nemid så lige har ødelagt min komplexitet i koden. I det mindste gælder specialtegn.

NETS har naturligvis valgt ikke at skelne mellem store og små bogstaver, af samme grund som f.eks. Blizzard gør det med World of Warcraft og Diablo-spillene: Det betyder minimalt for sikkerheden, men man (både NETS og uheldige børnebørn) sparer rigtigt meget tid på at supportere folk der ikke kan finde ud af om de har caps lock slået til.

Til en adgangskode på NemID kan du vælge mellem 59 (unikke) tegn - det giver ca. 5.9 bit entropi for hvert tegn i koden. Hvis de havde valgt at skelne mellem store og små bogstaver, ville der have været 85 tegn (Æ, Ø og Å er ikke tilladte). Dette giver 6.4 bit entropi, altså cirka en halv bit mere.

Sagt på en anden måde: Hvis de begynder at skelne mellem store og små bogstaver, vil det forøge kompleksiteten af din kode med en faktor på ca. 1.4 (2^0.5). Hvis du derimod gør din kode ét tegn længere, forøger du kompleksiteten med en faktor 59.

Thue Kristensen

Sagt på en anden måde: Hvis de begynder at skelne mellem store og små bogstaver, vil det forøge kompleksiteten af din kode med en faktor på ca. 1.4 (2^0.5). Hvis du derimod gør din kode ét tegn længere, forøger du kompleksiteten med en faktor 59.

Det er vel en faktor 1.4 per karakter i koden. Så hvis din kode er på 8 karakterer, så giver det en faktor 1.4^8=15.

Som selvfølgelig stadig er mindre end 59. Så din pointe holder stadig :). Det er ikke en skandale at NemID har valgt ikke at skelne mellem store og små bogstaver.

Nicolai Rasmussen

Måske Persondataloven §41 Stk. 3:


Mit gæt er at denne lov, i så fald, vil blive lavet om - den er alt for usexet og teknisk til at nogen politiker (med ganske få undtagelser) vil gå imod anbefalingerne fra embedsværket om en justering - og så er du slået tilbage til start.

Hvis det skal virke, så skal det være noget stabilt. Grundloven og forordninger fra EU er gode og stabile (svære at lave om).

Hvis det er noget der er:
* ringe forstået i den brede befolkning
* let at lave om
* en politiker uden videre kan ytre "Sådan ser jeg ikke på det"
Så er det ikke umiddelbart anvendbart som løftestang.

DJØF'erne (bredt forstået) står stærkt i magtbalancen overfor de tekniske videnskaber og politikerne.

Claus Vaaning

Sagt på en anden måde: Hvis de begynder at skelne mellem store og små bogstaver, vil det forøge kompleksiteten af din kode med en faktor på ca. 1.4 (2^0.5). Hvis du derimod gør din kode ét tegn længere, forøger du kompleksiteten med en faktor 59.

Det er nemlig rigtigt ! Og det gør det endnu mere ulogisk og amatøragtigt at man skam har sat andre restriktioner på passwordet. Kan nogen f.x. fortælle mig, hvorfor et password som indeholder '4444' skulle være mere usikkert end et der indeholder '444' ?

Men det er et af kravende til passwordet: Det må maximalt have 3 gentagelser af en karakter, men ikke fire !

Nu ved jeg godt at '4444' i sig selv ikke er noget smart password, men når det indgår som en del af en længere streng, kan jeg ikke se andet, end at SlemID med vilje begrænser brugerens mulighed for at lave passwords som både er sikre og nemme at huske.

Log ind eller opret en konto for at skrive kommentarer