Datalog overhaler det offentlige med egenudviklet NemID-klient: "Vi skal have flere øjne på protokollen"

7. marts 2014 kl. 15:4539
Den første uofficielle NemID-klient er klar, udviklet af internetaktivist. Men han slipper den kun løs, hvis Nets DanID giver ham lov.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Inden 1. juli vil Digitaliseringsstyrelsen frigive den første NemID-klient, som ikke bruger Java, men det langt mere udbredte Javascript.

Men styrelsen er blevet overhalet inden om af Christian Panton, datalog og medstifter af internet-tænketanken Bitbureauet. Han har nemlig udviklet sin egen NemID-klient i Javascript nu. Den er så vidt han ved den første uofficielle NemID-klient.

»Jeg har rodet lidt med det og ville se, hvor nemt eller svært det var at kode i Javascript, i stedet for at bruge Java. Så jeg har brugt nogle kolde, lange vinternætter på det. Det var mest for at forstå, hvad der sker i hele den proces,« siger han til Version2.

Ved at udvikle sin egen klient, der ikke bruger Java, ville han også kunne undgå alt bøvlet med Java og bruge NemID på flere slags enheder. Men foreløbigt kommer hans hjemmebyggede NemID-klient ikke ud i ’det fri’.

Artiklen fortsætter efter annoncen

»Jeg har skrevet til DanID for nogle uger siden, men har ikke fået deres godkendelse endnu til at bruge eller offentliggøre min klient. Jeg håber, de giver lov, for jeg synes, det er relevant, at vi kommer ud over Java-problemet, og at vi får nogle flere øjne på den protokol, der ligger bag,« siger Christian Panton, der er datalog og tidligere har demonstreret, hvordan man kunne hacke Rejsekort-systemet.

Da Nets DanID blev taget på sengen af en opdatering fra Oracle, kiggede han også nærmere på NemID-klienten for at se, hvad der blev ændret.

Den nyudviklede NemID-klient er lavet som en udvidelse til Chrome, som man som bruger så får tilbudt i stedet for den normale NemID-klient. Christian Panton har dog ikke testet den op mod Nets DanID’s servere, men har i stedet lavet sin egen udgave af en NemID-server.

Hvor svært var det så at udvikle, på en skala fra 1 til 10?

»Det var på 11. Der er brugt rigtig meget obfuscation (forvanskning af koden, red.), som jeg skulle igennem. Selve det at skrive klienten var ikke så svært,« siger Christian Panton.

Fingeraftryk af din computer

Version2 har tidligere skrevet om, hvordan små programfiler skjult som GIF-filer bliver brugt af Nets til at tjekke, hvilken computer klienten kørte på. Det sker ved at tage et ’fingeraftryk’ af computeren med en tjeksum, og det ville Christian Panton også undersøge nærmere.

Dengang fik Nets DanID masser af kritik for at forsøge at skjule, hvad filernes funktion var, en praksis kendt som 'security by obscurity'. Firmaet forsvarede sig med, at der ikke var noget galt i også at bruge røgslør for at gøre det sværere for hackere, så længe sikkerheden også uden røgslør stadig var høj.

»Det overraskede mig, at de laver tjeksum på din computer, både når man logger på offentlige hjemmesider og på banker. Det troede jeg ikke. Jeg kan til nøds forstå motivationen bag det, når man logger på en bank, fordi de har en risikoanalyse bag og vil vide, hvem der har overført de her penge. Men at man har den slags fingerprinting i det offentlige forstår jeg ikke,« siger Christian Panton.

Han anbefaler at køre NemID-klienten fra Nets i en virtuel maskine, hvis man ikke vil have sin computers fingeraftryk gemt i loggen.

Version2 har spurgt Nets DanID om den officielle holdning til alternative NemID-klienter og afventer svar.

39 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
35
11. marts 2014 kl. 09:45

Manden har implicit lov til at køre kode på sin maskine der identificerer ham via et NemID API. Hvis vi ikke må det, så må vi ikke bruge NemID. Så der er ikke noget hacking i at køre op mod prod systemet med sit eget ID.

Reverse engineering for at opnå kompatibilitet er en ret man ikke kan opgive. Man skal dog anmode om nødvendig dokumentation først, og kun hvis man ikke kan få dette må man lave Reverse Engineering.

27
10. marts 2014 kl. 13:30

Det er klient side kode han erstatter. Det er der vel ikke noget galt i. En 3die parts Java fortolker kunne vel også finde på at udføre koden lidt anderledes end påtænkt, ligesom en opdatering får det til at gå ned.

Der står ingen steder noget om, at man SKAL bruge NemIDs applet for at logge på netbanken, der står bare man skal bruge NemID.

Nu har jeg ikke fritid nok til at gøre det samme, men reverse engineering af kode og protokoller er ikke helt umuligt når man har prøvet det nogle gange. Med Java har jeg ikke været dybere end standard decompilers.

Kan huske med CashCow mod PBS i gamle dage. De havde krav om klient cert på betalinsserveren hos butikken fra Verisign. Men det blev ikke valideret i PBS' ende. Jeg brugte self-signed og sparede $200/år. Der var også andre issues. Har også lige kigget på et Internet enablet alarmsystem der sender username/password i GET URL'en. Og gerne HTTP uden S. Men man kan selvfølgelig opgradere til den nye version der bruger HTTPS. Ikke testet med Subler.

16
9. marts 2014 kl. 13:12

Er der nogen (andre end Christian), der kender til overvejelserne om, hvorfor han ikke har frigivet kildekoden til klienten? Hvorfor skal han have Nets accept først?

19
10. marts 2014 kl. 10:06

Det har vel kun akademisk interesse med en alternativ klient.

Der næppe nogle tjenesteudbydere som vil anvende software, som ikke er supporteret af Nets DanId - og slet ikke nu hvor der kun er få måneder til den officielle version er klar.

Omkostning er ikke kun til programmering af klient, der følger også en hel del dokumentation, uddannelse af support personale samt omfattende test aktiviteter af både funktionalitet og sikkerhed - og der skal vel også bruges mange ressourcer på at give redegørelser til diverse kontrol instanser...

26
10. marts 2014 kl. 11:50

Der næppe nogle tjenesteudbydere som vil anvende software, som ikke er supporteret af Nets DanId

Tjenesteudbyderne er slet ikke blandet ind i det. Mit plugin erstatter dynamisk i DOM'en når siden renders.

og slet ikke nu hvor der kun er få måneder til den officielle version er klar.

Som tidsplanen ser ud nu kan vi forvente at alle tjenesteudbyderne har udskiftet deres applet kode senest december. Der er længe til. Og holder tidsplanen?

17
9. marts 2014 kl. 15:59

Nu har protokollen jo ikke set alt for meget solskin, så jeg vil være sikker på at der ikke er for store sårbarheder gemt i det. Jeg regner ikke med at de vil sige nej, men jeg giver dem lige muligheden for at gøre indsigelser.

18
10. marts 2014 kl. 08:50

Jeg tror desværre ikke du har oplevet hvordan IT verdenen omkring det offentlige virker Christian.

Mine odds er på de får lukket munden på dig med en NDA og trusler om sagsanlæg...

Som minimum tror jeg i hvert fald ikke at de giver nogen som helst accept af din egenudviklede klient. I deres øjne grænser det sikkert til landsforræderi.

22
10. marts 2014 kl. 10:35

Derfor jeg tilføjer "og trusler om sagsanlæg". Jeg ved udemærket hvad en NDA er, og igen vil du erfare at store firmaer er rigtig glade for at få dit "frivillige" samtykke.. Ellers så kommer advokaterne! :)

24
10. marts 2014 kl. 11:24

Som udgangspunkt nej, men hvis alternativet er at blive sagsøgt for brud på hvad-fuck-de-nu-kan-finde på (og tro mig, de finder noget) så tror jeg de fleste almindelige mennesker stikker piben ind desværre.

34
10. marts 2014 kl. 21:06

Kan godt være de finder noget.

Autoriseret forsøg på at få kontakt med en server. I daglig tale "hacking".

Det er vel også derfor manden faktisk ikke har brugt klienten direkte mod serveren.

29
10. marts 2014 kl. 15:53

Kan godt være de finder noget. Men det bliver ikke en NDA

Pointen var nok at de ville finde noget og så true ham til en NDA.

Mht. hvad de finder, så synes jeg at huske at EU har sine egne ret stramme regler omkring reverse engineering af kryptering og software-beskyttelse. Det er ganske tilladt hvis det er nødvendigt for at fikse problemer med noget software man har købt - men der er ikke mange andre undtagelser. Så det er muligt der kommer advokater farende fra den vinkel.

31
10. marts 2014 kl. 19:26

Jeg mindes, mht. regler om reverse engineering, at RE er tilladt hvis det er nødvendigt for at få tingene til at virke (ligesom dvd kopi-beskyttelses' brydning).

Så når en Linux/Mac/Windows klient ikke har Java installeret (bare quote en "stram virksomheds sikkerhedspolitik"), så er det "nødvendigt".

36
12. marts 2014 kl. 12:19

Jeg mindes, mht. regler om reverse engineering, at RE er tilladt hvis det er nødvendigt for at få tingene til at virke (ligesom dvd kopi-beskyttelses' brydning).

Tja, MultiAgp aka DVD-Jon aka Jon Lech Johansen fik, på trods af han ikke havde gjort noget ulovligt i forhold til Norks lovgivning, ransaget sit hjem og konfiskeret alle elektroniske devices, fra computer til mobiltelefone... synes også at kunne huske han jokede med at de endda snuppede en tamagotchi.

I en sag om NemID er det godt nok ikke den massive amerikanske medieindustri der invaliderer en nationalstats suverænitet, men banker (samt ansvarlige politikere) kunne godt tænkes ikke at have lyst til at tabe ansigt i så høj grad, at der ville blive presset noget juicy sagsanlæg igennem, hvis Christian forsøger at release kode.

Og hvis de ikke finder noget konkret ulovligt, så er der vel noget terrorsagsgummiparagraf de kan diske op med.

38
3. januar 2015 kl. 18:49

Et privat firma kan næppe "diske" op med nogen terrorsagsgummiparagraf, voldsmonopolet tilhører kun staten (endnu).

32
10. marts 2014 kl. 19:41

For sent. Juristerne vil formentlig pege på denne udtalelse:

»Jeg har rodet lidt med det og ville se, hvor nemt eller svært det var at kode i Javascript, i stedet for at bruge Java. Så jeg har brugt nogle kolde, lange vinternætter på det. Det var mest for at forstå, hvad der sker i hele den proces,« siger han til Version2.

30
10. marts 2014 kl. 18:36

Manden kan vel hævde at koden der er maskereret som gif filer er mistænkeligt udført - altså at det er malware-agtigt.

15
8. marts 2014 kl. 23:59

Nå ja - så kan direktørerne tænke endnu længere tid. Og så burde der helt sikkert også være nok til at gå fra POC til PROD :-) (og så er der sikkert også lidt ekstra til direktørernes ferie en måneds tid på hawaii)

11
7. marts 2014 kl. 21:55

Specielt er det rart at metoden nu er mere åben. Jeg så en SRP i et screenshot. Det er rart at se det anvendt :)

12
8. marts 2014 kl. 13:16

SRP?

13
8. marts 2014 kl. 15:04

http://en.wikipedia.org/wiki/Secure_Remote_Password_protocol

Grundliggende er det en metode for at udveksle et zero-knowledge password proof mellem en client og en verifier. Altså Jeg kan bevise jeg har det rigtige password, og det er den eneste information jeg overfører.

Det finder blandt andet anvendelse i Blizzard's Battle.NET login-system.

9
7. marts 2014 kl. 18:35

Efter at have kigget på JVM bytekoden og deobfuskeret bootstrap appletten, kan jeg bekræfte, at der er tale om store mængder obfuskering på bytekode-niveau, hvilket er hamrende klamt at grave sig igennem (cue automatisk deobfuskering).

Godt gået.

Jeg glæder mig til at læse et white-paper, der beskriver protokollen ;-)

4
7. marts 2014 kl. 17:30

Det er kun en proof-of-concept der udviklet, som ikke er testet op imod de rigtige servere. Så at sige at den løsning artiklen nævner kan bruges endeligt er nok lige at trække den langt nok.

At gå fra proof-of-concept til produktionskode kan være meget meget dyrt.

Mvh.

8
7. marts 2014 kl. 18:34

Jens - Du har som sådan ret - men hold nu op hvor kan man trække mange torsk i land for den mængde penge der er til overs. Og direktørene kan virkelig tænke længe over hvad de vil komme med af undskyldninger for selvsamme mængde. (og så er der nok stadig lidt til overs til at færdiggøre koden.)

20
10. marts 2014 kl. 10:13

Men hvilken forskel skulle det i øvrigt gøre?

Forskellen er vel, at nogen antyder at han bare har lavet noget, som han ikke aner om virkelig virker.

Det er dog ikke det jeg sådan kan læse af artiklen. Hvis det er noget der reelt virker, så er det jo en kæmpe joke set i lyset af de mange mio Nets skulle have for at lave javascript klienten.

Men sådan er det jo ofte - at en eller to ildsjælde kan meget mere end et stort tungt og dyrt firma. Det dyre firma har bare flere slipsedrenge med powerpoints, som kan overbevise om at deres er meget bedre.

6
7. marts 2014 kl. 18:07

Vi kunne give ham imponerende 3500 i timen det næste år (8 timers arbejdsdag), for at få det lavet færdigt. Faktisk synes jeg bare vi skal give ham en million ekstra, til at gå ud og købe øl og damer for, fordi vi alligevel sløser så sindsygt meget med vores fælles-offentlige midler og jeg tusinde gange hellere så dem gå til små firmaer, privatpersoner, eller endda middelstore udviklingshuse, end at de røg ned i de grådige lommer hos Nets (eller CSC & Co.)

3
7. marts 2014 kl. 16:43

i stedt for Nets? - så kan de jo holde hans løsning op mod den Nets leverer og se hvad det er de betaler for.

2
7. marts 2014 kl. 16:17

Som Nets skulle have for at udvikle nøjagtig det samme der blev gjort på et "par lange vinternætter"? - De kunne jo eventuelt købe hans løsning for en mio, og så selv score resten som digitaliseringsstyrelsen jo har godkendt som beløb for udviklingen af javascriptløsningen.

1
7. marts 2014 kl. 16:15

Nogen der kan huske hvad prisen var for en java-script klient?

Hvis det kan gøres på nogle vinter aftner for en enkelt programmør der ikke engang kender, men skal "reverse engineer" protokollen, såeee må de vist tjene okay på det.

-- Esben

37
12. marts 2014 kl. 16:26

Han har ikke prøvet det af på en af deres servere, men har lavet sin egen. Jeg går ud fra at han ikke har adgang til deres kode, og derfor ingen anelse har om hans server fungerer som deres.