Krypto-professor: Obfuskering kan stoppe falske NemID JS-klienter

Muligheden for at verificere en ægte NemID-klient. Det kan være forklaringen på den obfuskering, der ser ud til at være lagt ind i koden bag kommende NemID JavaScript, vurderer professor og ekspert i kryptografi på institut for datalogi ved Aarhus Universitet Ivan Damgård.

»I et tilfælde som det her er formålet formentligt, at man gerne fra serversiden vil være sikker på, at man taler med den kode, man selv har sendt ud, og ikke med en modificeret version, der f.eks. også sender password med mere til en angriber. Det kan man forsøge at gøre ved at bage en hemmelig nøgle ind i programmet og så verificere fra serversiden, at den kode man kommunikerer med, kender nøglen. Man håber så, at hvis programmet er obfuskeret, så kan en angriber ikke finde frem til nøglen og lave sin egen version,« lyder vurderingen fra professoren i en mail til Version2.

Diskussionen om obfuskering i NemID JS er blevet aktuel her på Version2, efter datalog, internetaktivist og gør-det-selv NemID- og Rejsekort-hacker Christian Panton fandt frem til en testkode af, hvad der ser ud til at være den kommende NemID baseret på JavaScript. NemID JS-koden viser sig at være heftigt obfuskeret med det resultat, at koden ikke bare er ekstra kompliceret, men også fylder mere målt i bits og bytes, end den ellers ville gøre.

Læs også: NemID-pilfinger kritiserer test af NemID uden Java: 1 megabyte obfuskeret kode

Det fik Christian Panton til at starte et projekt på GitHub, der er en webhosting-tjeneste for softwareprojekter. Pantons projekt har til formål at skrælle obfuskeringen af NemID JS. Han har fortalt til Version2, at det foreløbigt er lykkedes ham at mindske visse dele af testkoden på NemID JS med 33 pct, ved at køre den igennem den såkaldte de-obfuscator, som Panton har lagt på GitHub.

Dermed er det spørgsmålet, om det overhovedet er umagen værd at bruge tid og kræfter på at obfuskere NemID JS, hvis det alligevel kun resulterer i computerkode, der fylder mere, og altså ikke de facto øget sikkerhed. Men det kommer an på den konkrete implementering af obfuskeringen, forklarer Ivan Damgård.

»Jeg tror de fleste er enige om at obfuskering i praksis kun kan forventes at holde i en vis begrænset tid. Så det vil sige at hvis der kun er én version af koden, og det er den der bliver sendt ud hver gang, så varer det formentlig kun en begrænset tid, før nogen har gravet den hemmelighed ud, der eventuelt er gemt derinde. Men der findes andre tilgange til obfuskering, hvor man hele tiden laver nye versioner af den obfuskerede kode, så man kan tvinge angriberen til at starte forfra hver gang. Det har en større chance for give noget sikkerhed,« skriver Ivan Damgård og understreger, at han ikke er bekendt med, hvad Nets gør i forhold til NemID JS.

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

Men hvis obfuskering øger kodestørrelsen, så er der også spørgsmålet, om koden dermed bliver tungere og langsommere at køre på klient-maskinerne.

»Obfuskeret kode kan være langsommere, men behøver ikke at være det. Hastighed har ikke altid en sammenhæng med hvor meget koden fylder, det er jo f.eks. ikke sikkert at det alt sammen bliver udført hver gang,« skriver Ivan Damgård.

Version2 vil naturligvis gerne høre Nets, hvilke tilgange og overvejelser, virksomheden har i forbindelse med obfuskering i den kommende NemID JS. Virksomheden har dog tidligere afvist at kommentere på NemID JS med henvisning til, at det endelige produkt endnu ikke er frigivet.

Digitaliseringsstyrelsen har tidligere meldt ud, at NemID JS, trods problemer med en planlagt pilottest, som planlagt bliver lanceret 1. juli.

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 sidste års opdatering fra Oracle, der står bag Java. Opdateringen bevirkede, at NemID i tre døgn ikke fungerede hos de brugere, der havde fulgt gængs sikkerhedspraksis og opdateret til den seneste Java-version. Senere viste det sig, at Nets ikke havde testet om NemID ville virke med den nye opdatering fra Oracle.

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>