Keep it simple NemID

Den uendelige føljeton om NemIDs problemer er ved at blive et lærebogseksempel i hvorfor "Keep It Simple" er sådan et vigtigt princip.

Forestil jer at NemID havde været implementeret som en helt simpel HTML formular via en HTTPS session.

Det havde virket i enhver browser, inklusive Lynx, på enhver kerne, inklusive zOS og på enhver hardware, inklusive DDE Supermax.

De ekstra lag af komplexitet, Java, det ekstra lag af kryptering, roden og raven rundt på den lokale maskine med programmer maskeret som billeder -- intet af det tilfører nogen form for egentlig sikkerhed, men det opfylder sikkert nogle kontraktskrav skrevet af folk der ikke fatter hvad sikkerhed egentlig er (og som mangler både forståelse og respekt for begrebet "privatlivets fred").

Men det tilfører den komplicerende obfuskation som gør at NemID er utilgængelig i tide og utide, hvergang verden forandrer sig omkring Nets snæversyn.

Om et års tid vil Nets rulle en script baseret NEMid løsning ud, 8-10 år efter alle andre indså at Java på klienten var den blindgyde og kun et par år efter at alle andre begynder at skifte fra script-helvede til HTML5.

Hvis man skærer det helt ind til benet, så kan NemID objektivt set ikke noget som PGP og OPIE ikke har gjort bedre i 10-20 år allerede og de gør det vel at mærke til en samlet pris af 0 kr per bruger, 0 kr per transaktion og koden er blevet gennemskulet af flere og bedre specialister end NemID nogen sinde kan drømme om at få råd til kigge på deres Java-hejs.

Det er paradoksalt og perverst underholdende at det absolut mest hemmelighedsomgærede offentlige IT projekt, nogen sinde, afslører alt hvad det er der er galt med offentlig IT i Danmark: Når man ignorerer KISS princippet bliver det for komplext, for dyrt og forsinket.

phk

Kommentarer (37)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Casper Bang

Helt enig. KISS kan dog ikke altid holdes nede, men der er forskel på "necessary complexity" og "accedential complexity". Jeg vil påstå at NemId er et perfekt eksempel på det sidste, når man blander så mange teknologier, så skal der ikke meget til før et enkelt link i kæden skaber problemer (og iøvrigt koster kassen at vedligeholde).

Kevlin Henney havde pudsigt nok en god præsentation om Worse is better, for better or worse ved dette års GOTO, der også kunne opsummeres som KISS.

  • 9
  • 0
#4 Max Tobiasen

men hvis dét er sandt, betyder det jo at disse folk er direkte inkompetente og, for at citere Ted Neward, burde skifte karriere til burger-flippere.

Der er ganske rigtigt mange der er inkompetente i forhold til komplekse programmeringsopgaver. Det mange overser er at det er fordi programmering er svært. Måske en af de sværeste discipliner menneskeheden har begivet sig i lag med. Kompleksiteten i en storebæltsbro når ikke kompleksiteten i BSD styresystemet til sokkeholderne.

Når man sammenholder det med folks generelle intelligens står man tilbage med den konklusion at det faktisk er relativt få mennesker der evner at designe, udvikle og vedligeholde et komplekst stykke software som nem-id.

Det er et kæmpe problem.

  • 11
  • 8
#5 Deleted User

Programmering er svært.

Ja, specielt hvis man ikke kan finde ud af det, men så skulle man nok ikke have påtaget sig opgaven til at starte med.

I øvrigt er det et login system, det skal udføre meget få, meget simple opgaver. Ud over de lidt større samfundsmæssige konsekvenser så er det den programmeringsmæssige ækvivalent til at bygge et udhus. Men man må konstatere at blot fordi det er lykkedes kompetente folk at opføre såvel Eiffeltårnet som Storebæltsbroen, så er det ikke ensbetydende med at inkompetente folk kan betroes mindre krævende opgaver.

  • 20
  • 2
#6 Max Tobiasen

I øvrigt er det et login system, det skal udføre meget få, meget simple opgaver. Ud over de lidt større samfundsmæssige konsekvenser så er det den programmeringsmæssige ækvivalent til at bygge et udhus.

et system der skal skalere, tale med en række backend systemer, være kryptografisk sikkert, overholde gældende lovgivning, kunne modstå DDOS angreb, have et API som andre systemer kan arbejde sammen med, skal arbejde sammen med nye browsere, plugins og styresystemer fra dag 1 uden at gå ned, og sikkert en milliard andre ting.

Hvis det for dig er ækvivalent til at bygge et udhus tager jeg hatten af. Enten for dine evner eller for det udhus du har brugt mange år på at bygge.

  • 5
  • 13
#7 Jesper Lund

I øvrigt er det et login system, det skal udføre meget få, meget simple opgaver.

Der er lidt mere i det. Hvis du har OCES NemID (som 95% eller noget i den stil har det), har du en privat nøgle liggende i et HSM hos DanID. Denne private nøgle er alene beskyttet med dit NemID password.

Java appletten sørger for at dit password aldrig kommer til DanID's servere (challenge response), og at du har en direkte kanal til HSM'et når du bruger din private nøgle.

  • 5
  • 0
#8 Deleted User

Der er lidt mere i det. Hvis du har OCES NemID (som 95% eller noget i den stil har det), har du en privat nøgle liggende i et HSM hos DanID. Denne private nøgle er alene beskyttet med dit NemID password.

Java appletten sørger for at dit password aldrig kommer til DanID's servere (challenge response), og at du har en direkte kanal til HSM'et når du bruger din private nøgle.

Det lyder kompliceret, og hvis man ikke kan sin kryptografi eller har svært ved det med netværkskode så bliver det man laver let til noget klamp.

Men hvis man rent faktisk kan finde ud af at løse opgaven så bør den ikke kræve særligt store mængder kode, dermed vejer den heller ikke særligt tungt i en af de allersværeste discipliner indenfor programmering, at holde styr på en stor kodebase.

  • 2
  • 2
#9 Thomas Jensen

"Forestil jer at NemID havde været implementeret som en helt simpel HTML formular via en HTTPS session."

Ja, havde vi så haft noget der var tilnærmelsesvis lige så sikkert?

"De ekstra lag af komplexitet, Java, det ekstra lag af kryptering, roden og raven rundt på den lokale maskine med programmer maskeret som billeder -- intet af det tilfører nogen form for egentlig sikkerhed,"

Man kunne godt få det indtryk at du siger NemID ikke er mere sikkert end HTTPS - er det det du mener?

For ja, NemID er da mere komplekst end en simpel HTTPS-forbindelse, og kompleksiteten i sig selv bidrager ikke til sikkerhed - men gør det HTTPS til en bedre løsning?

Jeg synes det er langt mere interessant det du siger her:

"Om et års tid vil Nets rulle en script baseret NEMid løsning ud, [...] kun et par år efter at alle andre begynder at skifte fra script-helvede til HTML5."

Det er da værd at få fokus på!

Hvis du skulle designe et nyt NemID, hvordan skulle det så se ud?

  • 2
  • 4
#10 Rasmus Rask

kunne modstå DDOS angreb

Mener du at NemID kan det? Én af designfejlene ved NemID er jo netop, at det er en kunstigt skabt, og fuldkommen unødvendig, single-point-of-failure i og med al autentificering foregår centralt.

Havde løsningen været baseret på en PKI, ville auth. foregå decentralt og du ville skulle DDoS'e hvert eneste site individuelt, i stedet for blot at bombardere NemID.

Men havde man gjort dette, havde man ikke haft fingrene i hver transaktion og dermed kan man ikke opkræve gebyr for disse.

En anden "god" grund til ikke at basere på åbne standarder, er jo at det gør det meget nemmere få andre aktører at byde ind på driftsopgaven, når den nuværende kontrakt udløber.

Hvilket firma skulle dog være i stand til at drive det nuværende NemID. Får de mulighed for kodereview, før de kan give et tilbud og hvor lang tid vil de i så fald have?

  • 7
  • 0
#12 Casper Bang

Har andre end jeg fulgt med i hvad Steve Gibson og slæng har gang i for tiden? Det forekommer mig at hans de-centraliserede og 3-part fri SQRL løser mange af de issues der er forbundet med et nationalt SSO system. Det lyder vældig interesant, savner bare lidt kritik fra bl.a. Bruce Schneier.

  • 4
  • 0
#13 Max Tobiasen

kunne modstå DDOS angreb

Mener du at NemID kan det? Én af designfejlene ved NemID er jo netop, at det er en kunstigt skabt, og fuldkommen unødvendig, single-point-of-failure i og med al autentificering foregår centralt.

Nej det kan NemID ikke, som vi også kan se af historien. Det var præcis det der var min pointe med at det er svært at designe, udvikle og vedligeholde et system som NemID.

  • 1
  • 7
#14 Martin Kofoed

Det kom jo til at gøre ekstra ondt på DanID, at den såkaldte mobile revolution kom bragende midt i implementationen af et NemID-system, og med det samme udstillede den kluntede, let morfar-agtige opfattelse af at det at browse på nettet er noget, der altid foregår på en desktop PC i en browser. Apple og Google sagde "no go" til applets i de mobile browsere (sikkerhed og performance - begge valide årsager), og så røg netbankerne med det samme væk fra denne platform. Bankernes svar var mobilbanker uden NemID-login via et eller andet panik-API hos DanID.

At gøre SSO afhængig af en browser plugin er for det første helt unødvendigt, for det andet meget dyrt i support, test, vedligehold og alt det der, der aldrig er synligt ved projektets opstart.

  • 3
  • 0
#15 Kenn Nielsen
  • 3
  • 1
#16 Jeppe Boelsmand

"Man kunne godt få det indtryk at du siger NemID ikke er mere sikkert end HTTPS - er det det du mener?"

Som jeg forstår det siger PHK bare at der sker en masse unødigt gøgl i forbindelse med at vi beder nemid om at gøre noget med vores private nøgle. Man kunne sagtens forestille sig en usecase: "Jeg er ham her, challenge mig med papkortet så vi kan udføre en operation med min private nøgle som i har af en eller anden grund". Det kunne gøres alene med https og html.

  • 6
  • 0
#17 Carsten Stenberg

Måske man også skulle kigge på om det er nødvendigt, at et fælles login skal kunne håndterer transaktioner på alle sikkerhedsniveauer.

Det virker ret hysterisk, at man forventer samme sikkerhedsniveau for at logge på skoleintranet som at skulle underskrive lånedokumenter. At der måtte være transaktioner i sidstnævnte katagori, som ikke kan håndteres vil muligvis generer enkelte brancher, men ville altså ikke betyde at samfundet går i opløsning.

  • 4
  • 0
#18 Torben Mogensen Blogger

HTML5 bygger i høj grad på scripting: Mange af de ekstra faciliteter, som f.eks. grafik, sker gennem scripts, som dog kan udnytte en HTML5-defineret API.

Det er min væsentligste skuffe ved HMTL5: Man havde chancen for at undgå script helt, men valgte at omfavne det i stedet.

  • 3
  • 0
#19 Henrik Kramselund Jereminsen Blogger

Nej det kan NemID ikke, som vi også kan se af historien. Det var præcis det der var min pointe med at det er svært at designe, udvikle og vedligeholde et system som NemID.

Du nævner tre niveuaer, og desværre er karakteren jo dumpet på alle tre niveauer, faktisk er der ikke rigtigt i min optik noget som helst som NemID har lykkedes med og det er kun igennem tvang at man har brugere.

Når man overhovedet ikke har tænkt så langt som at beskytte et sådant CENTRALT system mod DDoS svarer til at en murer glemmer mørtel mellem stenene.

Det er for tyndt blot at sige det er svært, og komplekst, og besværligt og #whine #whine #whine.

Specielt med DDoS har man foretaget forkerte designvalg, en centraliseret løsning med indbygget fail og single-point-of-failure.

Med kompleksiteten har man valgt en uholdbar og helt igennem håbløs ide om at man vil opbevare private nøgler på en måde som ikke skaber tryghed, og IKKE giver bedre sikkerhed. Det er blot et eksempel på hvordan de forbryder sig imod KISS og selvforskyldt har malet os allesammen ind i et hjørne.

Hvorfor skal vi lægge flere æg i den kurv?

  • 9
  • 1
#21 Max Tobiasen

..når man overhovedet ikke har tænkt så langt som at beskytte et sådant CENTRALT system mod DDoS svarer til at en murer glemmer mørtel mellem stenene.

Jeg tror du, og andre har misforstået min pointe. Formentlig fordi version2 primært er befolket af dygtige programmører for hvem den slags er indlysende. Det gennemsnitlige niveau ligger langt langt lavere, og det er det der er problemet.

Lad mig prøve at forklare det på en anden måde.

Her er et simpelt job interview spørgsmål - fizzbuzz testen:

"Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Simpelt ikke? Det kan man vel løse på et minuts tid. Der er intet svært ved det. Det interessante er at op mod 50% af kandidater ikke kan løse opgaven. Det er niveauet. Der er meget langt fra at kunne gennemskue fizzbuzz testen til at beskytte et centralt system mod DDOS angreb.

For dig er det indlysende. For mig er det indlysende. Men niveauet på version2 er markant højere end niveauet i mange virksomheder. Du arbejder formentlig kun sammen med andre dygtige programmører (ellers havde du fundet et andet job), og derfor ser du ikke hvor lavt niveauet egentlig er andre steder.

Der sidder formentlig folk og implementerer NemID der ikke kan bestå fizzbuzz testen.

  • 2
  • 3
#22 Klaus Slott

Jeg er mere end almindeligt skeptisk overfor 'sikre' løsninger fra amerikanske firmaer.

Det er jeg også, men inden man trækker automatsvaret kan man jo lige læse siden:

"The component techniques and technologies employed by this solution are all well known, well tested, well understood, unencumbered by patents, and exist in the public domain. The entire system can be readily assembled from 100% open source algorithms, packages and libraries."

Der er dog en mere seriøs kritik af systemet på StackExchange

  • 2
  • 0
#26 Poul-Henning Kamp Blogger
  • 7
  • 1
#27 Max Tobiasen

Og grunden til at NemID har så mange problemer med alle disse funktionalitetskrav, er at man har gjort det frygtelig indviklet, i stedet for utroligt simpelt.

Helt enig - desværre er det karakteristiske ved simpel kode at den er skrevet af intelligente mennesker med et godt overblik over systemet. Dem der ikke har helt så meget overblik ender med at lave komplicerede løsninger. Som F.eks. NemID...

  • 2
  • 0
#28 Jeppe Boelsmand

Jeg syntes at det er smadder ærgerligt at så meget at v2 diskussionen ender med at folk klasker hinanden med dummekøllen. Det er muligt at de mennesker der har lavet et givet system ikke er de dygtigste eller hurtigste, men der er jo nogen med noget magt der på et tidspunkt der har sagt god for løsningen. Der er noget galt med processen når Nets kan byde ind med en håbløs arkitektur og ende med at få kontrakten.

  • 5
  • 0
#29 Poul-Henning Kamp Blogger

men der er jo nogen med noget magt der på et tidspunkt der har sagt god for løsningen.

Og det er netop der problemet ligger: Beslutningstagerne bliver smurt rundt på golfbanen af de sædvanlige leverandører og fordi de "er så gode venner" får de mange gode råd ... om hvordan næste udbud bør udformes "mest hensigtsmæssigt".

NemID problemet er i bund og grund at man har købt noget helt forkert, fordi man ikke har forstand på hverken IT eller kryptografi.

  • 17
  • 0
#30 Alex R. Tomkiewicz

Det handler ikke om hverken sikkerhed, obscurity, accidental complexity eller necessary complexity - som sådan. Det handler om Intentional Complexity - hvis formål er at skabe det som forretningsfolk kalder en Recurring Revenue Stream. Altså en pengemaskine som bliver ved med at levere. Som det er påpeget ville en PKI infrastruktur el.lign. sikkert være bedre end NemID. Men monopolisterne vinder mange penge så længe "større er bedre" i sådan en 'et større bjerg er bedre end et lille bjerg' forstand. Og de siger ikke til nogen at der er mindst lige så mange penge i decentrale systemer. Det baserer sig på arvetanker fra stenalderen hvor der var mere varmt i hytten jo flere man samledes om det ene bål i midten. Så kunne man også bedre se og beundre høvdingen som på magisk vis var blevet meget tyk (ved at spise de andres mad). Sådan er verden bare ikke mere. Høvdingen havde nok sin berettigelse i at han kunne råbe højest og mest forståeligt når tropperne skulle samles. Men i dag er det ikke en kvalifikation at kunne råbe. Det burde det ikke være. Men det virker så længe beslutningstagerne glemmer at se på værdiskabelsen. Og så længe man håbefuldt glemmer at det er nemmere at løbe hen over det lille bjerg når man skal efter pizza i byen på den anden side.

  • 2
  • 0
#31 Peter Mogensen

Det er muligt at de mennesker der har lavet et givet system ikke er de dygtigste eller hurtigste, men der er jo nogen med noget magt der på et tidspunkt der har sagt god for løsningen.

Der er ikke nogen skam i at have taget forkerte design-beslutninger og bagefter erkende sine fejl. Men den mangt-fuldkommenhed og arrogance, der har været i forhold til kritikken af systemet (om det så er fra politikere, embedsmænds eller DanID) kan ikke afføde megen respekt.

Jeg har i øvrigt for nylig erfaret at man reelt ikke kan komme til at eje en bil uden NemID. Man kan heller ikke omregistrere når NemID er nede (i flere dage). Heller ikke på et motor-kontor, for de sidder også bare og fedter med en hjemmeside. Og når der så er kommet endnu en Java-opdatering der knækker NemID og NemID har udsendt endnu en rettelse, der knækker det på alt andet end Windows, så kan man heller ikke gøre det selvom man har NemID - hvis man altså ikke har Windows. I det hele taget kan det blive blive presset at nå at få lovpligtige ting som ejerskifte og forsikring på plads til tiden under de forhold.

  • 3
  • 0
#33 Morten Hansen

Og det er netop der problemet ligger: Beslutningstagerne bliver smurt rundt på golfbanen af de sædvanlige leverandører og fordi de "er så gode venner" får de mange gode råd ...

Hvis problemet ligger i inkompentence er problemet vel ikke større end at have et postbud som Transportminister, en folkeskolelærer som Udenrigsminister - for ikke at tale om den ret aktuelle problematik med byrådsmedlemmers baggrund for at kunne træffe afgårende beslutninger i udvalg og bestyrelser med budgetter for 3-cifrede milionbeløb. Med lidt kendskab til procedurer og beslutningsgange indefor offentlig IT - i særdeleshed centrale systemer, vil jeg tillade mig at betragte de Herres ellers innovative og progressive forslag gode - men en smule naive i forhold til at skifte arkitektur eller løsningmodel.

  • 3
  • 0
#37 Niels Flensted-Jensen

Måske er problemet ikke så meget om en central myndighed er kompetente opdragsgivere, og om en enkelt udbyder har (in)kompetente arkitekter og udviklere? Måske er problemet i stedet, at der overhovedet er en central opdragsgiver og at vi kun har én enkelt udbyder at vælge imellem? Kunne man i stedet liberalisere markedet for autentifikation, og så lade en given myndighed, bank, pensionsselskab osv. selv vælge hvem de ville stole på? Umiddelbart fragmenteret, men hvis vi tillod en form for "transitiv tillid" mellem udbydere, kunne man måske alligevel komme i mål?

Og har vi ikke et fuldstændig tilsvarende problem, med at vi alle skal vælge at have vores korrespondance opbevaret hos én og samme leverandør, e-boks? Hvad hvis nu man som borger kunne udpege sin dokumentboksleverandør, som så blot overholdt en eller anden protokol for aflevering af dokumenter, "porto", etc.?

  • 2
  • 0
Log ind eller Opret konto for at kommentere