Bagmand til JavaScript-klon kritiserer officiel demo af NemID uden Java: 1 megabyte obfuskeret kode

Obfuskeret computerkode der fylder omkring en megabyte. Et kig i den foreløbige test-kode til den kommende NemID JavaScript imponerer ikke umiddelbart internetaktivisten og datalogen Christian Panton, der blandt andet er kendt for at hacke sit Rejsekort. Nu har han startet et softwareprojekt på nettet, der er designet til at reducere kompleksiteten og dermed også filstørrelsen på NemID JS.

Senest har Christian Panton været i vælten, for at lave sin egen udgave af NemID uden Java – netop ved brug af JavaScript i stedet. Et par måneder før den officielle lancering af NemID JS, der er sat til 1. juli. Et initiativ, der fik en kølig modtagelse af leverandøren af NemID, Nets.

Læs også: Studerende hacker dansk rejsekort og får gratis rejser

Læs også: Hjemmeudviklet NemID-klient får syngende nej: Trues med ‘nødvendige juridiske tiltag’

Christian Panton er faldet over testkoden på en demo-hjemmeside ved PortalProtect. Det beskrives som en sikkerhedsinfrastruktur til blandt andet portaler. Løsningen fungerer med forskellige login-metoder – herunder NemID. Firmaet er ejet af Asseco Denmark A/S, som over for Version2 bekræfter, at JavaScript-koden på NemID JS-demosiden kommer fra Nets. Testkoden bruger Asseco Denmark A/S til at forberede PortalProtects kunder til, når NemID JS går live.

Læs også: Smugkig på lukket test: Se en demo af NemID JavaScript her

I forhold til testkoden til den kommende NemID JS, som Christian Panton har kigget på, hæfter han sig ved, hvor obfuskeret JavaScript-koden bag NemID er gjort. Obfuskering vil sige, at koden bevidst er gjort svært gennemskuelig for at camouflere, hvad der sker i softwaren. En af pointerne kan være, at eksempelvis kriminelle får sværere ved at finde og udnytte sikkerhedshuller. Der er dog delte meninger om, i hvor høj grad, obfuskering giver øget sikkerhed, da det kan lade sig gøre at omgå obfuskeringen. Og noget kunne tyde på, at obfuskering i tilfældet NemID JS kan være skønne spildte kræfter.

I hvert fald har Christian Panton nu startet et projekt på webhosting-tjenesten for softwareprojekter GitHUB med navnet obfuscated-id. Det er et program, der har til formål at de-obfuskere NemID JS-koden. Altså fjerne de tiltag, der er lagt i koden for at gøre den så uforståelig som mulig. Han mener, obfuskeringen både får koden til at fylde langt mere, end den burde, og samtidigt gør det sværere at finde fejl.

Læs også: Derfor koster NemID til mobilen 100 millioner kroner

»Jeg googlede for lidt tid siden mig frem til en hjemmeside som havde en demo af NemID/JS. Da jeg tidligere har kigget på Java-versionen, var det interessant for mig at kigge på, hvordan den kommende løsning virker,« skriver Panton i en mail og fortsætter:

»Jeg fik næsten kaffen galt i halsen da jeg opdagede hvor meget energi der havde været brugt til obfuscation af JavaScript-versionen. Især fordi det netop var et af kritikpunkterne ved den nuværende løsning. For at automatisere analysen af de næsten én megabyte store JavaScript filer, så skrev jeg en simpel deobfuscator til at fjerne nogle af de lag af kompleksitet der er lagt ind over. På den del af koden jeg har analyseret indtil nu, reducerer den desuden filstørrelsen med ca. 33%.«

Læs også: Alarm: 4 millioner NemID-brugere truet af kritisk Java-hul

Hvad kan de-opfuskatoren nu, og hvad skal den kunne?

»Det er ikke forfærdeligt meget kode, og det eneste, jeg i øjeblikket gør, er at lave en række reduktioner af kompleksitet. Der var blandt andet funktioner hvor tekststrenge blev gemt, som nu kan læses i koden med det blotte øje,« skriver Christian Panton og fortsætter:

»Den fremtidige udvikling bliver fokuseret på at skrælle mere kompleksitet af.«

Hvad er dit foreløbige indtryk af NemID JS?

»Jeg synes, det er meget positivt, at vi bevæger os væk fra Java. Jeg har kun set hvad jeg må formode er en test-version, så det vil jeg hellere svare på når det går live og jeg har fået lidt mere tid til at kigge på det,« skriver Christian Panton.

Læs også: Nets brugte 3 døgn på at tilføje 2 linjer kode til NemID

Version2 har spurgt NemID-leverandøren Nets og Digitaliseringsstyrelsen, myndigheden der på statens vegne har indgået kontrakten med Nets om NemID-løsningen, om følgende:

  • Har Nets/Digitaliseringsstyrelsen nogen kommentarer til, at der nu ligger et open source projekt på GitHub, der er designet til at fjerne den kompleksitet, som bevidst er lagt ind i NemID JS?

  • Kan Nets/Digitaliseringsstyrelsen bekræfte, at koden i NemID JS bevidst er gjort kompliceret?

  • Vurderer Nets/Digitaliseringsstyrelsen, at øget kode-kompleksitet, giver øget sikkerhed?

  • Mener Nets/Digitaliseringsstyrelsen, det er hensigtsmæssigt, set ud fra et driftsmæssigt perspektiv, at kode-kompleksiteten i NemID JS lader til at være særdeles omfattende?

  • Mener Nets/Digitaliseringsstyrelsen, det er hensigtsmæssigt, at borgerne skal bruge båndbredde og cpu-kraft på at håndtere NemID JS, der lader til at have en omfattende størrelse, som følge af bevidst indbygget kode-kompleksitet?

  • Påtænker Nets/Digitaliseringsstyrelsen at foretage sig noget for at mindske kode-kompleksiteten i den endelige NemID JS-udgave, der er sat til at blive frigivet 1. juli?

Kontorchef i Digitaliseringsstyrelsen Cecile Christensen sender i en mail bolden videre til Nets:

»Vi stiller krav om et højt niveau af sikkerhed i den nye JS-klient. Vi forventer, at koden har den nødvendige kompleksitet, men heller ikke mere. Det er ofte sådan, at opretholdelse af høj sikkerhed tilfører en vis kompleksitet til systemer og kode,« skriver hun og fortsætter:

»Den konkrete tekniske udvikling af systemet ligger hos Nets, og vi må derfor henvise til Nets for en mere detaljeret besvarelse af spørgsmål til selve koden eller andre tekniske detaljer – i det omfang Nets kan svare på dette uden at gå på kompromis med sikkerheden.«

Kommunikationskonsulent ved Nets Ulrik Marschall oplyser, at virksomheden ikke ønsker kommentere på NemID JS inden det bliver officielt frigivet, og Nets har ej heller nogen kommentarer til Christian Pantons NemID de-obfuscator på GitHub.

Fakta

NemID JavaScript er betegnelsen for den kommende udgave af NemID, som fungerer uden Java-platformen. Flere har kritiseret, at NemID i den nuværende form er afhængig af Java. Kritikken har blandt andet gået på, at sikkerhedshuller i Java i sig selv kan gøre en computer usikker, og desuden virker Java og dermed NemID typisk ikke på mobiltelefoner og tablets. Med til historien om NemID og Java hører opdateringen fra Oracle, der står bag Java, som sidste år bevirkede at NemID i tre døgn ikke fungerede hos de brugere, der havde fulgt gængs sikkerhedspraksis og opdateret til den seneste Java. Senere kom det frem, at Nets ikke havde testet om NemID ville virke med den nye opdatering fra Oracle.

Læs også: Digitaliseringsstyrelsen udskyder NemID til mobilen i 11. time

Digitaliseringsstyrelsen forventer, at NemID JS, trods problemer i forbindelse med en planlagt pilottest, som planlagt bliver lanceret 1. juli.

Posted in computer.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>