BEDRIFTSTEKNOLOGI

Kodestilen avslører anonyme utviklere

Gjenkjennes også i kompilert programvare.

Harald BrombachHarald BrombachNyhetsleder
11. jan. 2016 - 07:55

En gruppe forskere fra blant annet Princeton University har utviklet en metode som med temmelig høy nøyaktighet kan finne ut hvem i et utvalg av utviklere som har programmert en anonymisert programvare – selv om man bare har tilgang til en kjørbar binærfil og i tillegg har eksempler på kodestilen til alle medlemmene av utvalget.

Tidligere har noen av de samme forskerne konkludert med at utviklere legger igjen et slags identifiserende fingeravtrykk i kodestilen de benytter. Strukturen til koden, funksjonaliteten som blir brukt og variabelnavn er blant det som kan bidra til å koden kan knyttes til en gitt utvikler.

Men nå viser det seg altså at mange av disse særtrekkene også kan overleve en kompilering og fortsatt avsløre hvem utvikleren egentlig er.

Blant 600 programmerere

En av forskerne, Aylin Caliskan-Islam, skriver i et blogginnlegg at man i forsøket tok utgangspunkt i kildekode fra 600 programmere som alle hadde deltatt i programmeringskonkurransen Google Code Jam. Siden alle deltakerne skulle implementere den samme funksjonaliteten, var det kodestilen som var den største forskjellen på bidragene, som var skrevet i C/C++.

Forskerne kompilerte først alle kodebidragene. Deretter ble de kjørbare filene disassemblert, altså oversatt fra maskinkode til assemblerinstruksjoner. I tillegg ble filene dekompilert. Ved å behandle resultatet av dette med ulike teknikker, fikk man blant annet et abstrakt syntakstre hvor det var mulig å hente ut strukturelle egenskaper.

Disse egenskapene ble deretter konvertert til numeriske verdier som representerte kodestilen som var utbredt i hver av de kjørbare filen. Deretter ble det tatt i bruk en av-anonymiseringsmetode som er basert på maskinlæring. Den er illustrert i toppen av saken.

Forskningen viste at nøyaktigheten til metoden falt etter hvert som utvalget ble større. Med et utvalg på 20 programmerere, ble 98 prosent av kodebidragene klassifisert korrekt, mens nøyaktigheten falt til 52 prosent når hele utvalget på 600 utviklere og kodebidrag ble analysert.

Hva med optimalisering?

Kodebidragene ble i utgangspunktet kompilert uten noen form for kompilatoroptimalisering.

Ved å skru på optimaliseringen sank nøyaktigheten for identifiseringen, men ikke mer enn fra 78 til 64 prosent i et utvalg på hundre bidrag.

Forskerne testet også, separat, hvilken betydning det hadde å fjerne symbolinformasjonen fra de kjørbare filene. Da falt nøyaktigheten fra 78 til 66 prosent, noe Caliskan-Islam betegner som overraskende lite.

– Dette tyder på at kodestilen overlever kompliserte transformasjoner, skriver hun, og legger til at det er noe enklere å av-anonymisere avanserte programmerere enn de mindre avanserte. Dette fordi de mer avanserte programmererne hadde en tydeligere kodestil.

Forskerne mener mulighetene som metodene gir vil være en direkte trussel for personvernet og anonymiteten til utviklere. Men avhengig av øye som ser, vil metodene kunne være nyttige for samfunnet.

Potensielle bruksområder

Metodens bruksområder kan ifølge forskerne være både offensive og defensive, avhengig konteksten. For eksempel kan den brukes av etterforskere i forsøk på å finne ut hvem har programmert en gitt skadevare. Men den kan også hjelpe undertrykkende regimer i å finne ut hvem som har lagd et verktøy for å omgå sensuren.

Artikkelen fortsetter etter annonsen
annonse
Innovasjon Norge
Store muligheter for norsk design i USA
Store muligheter for norsk design i USA

Et tredje eksempel som nevnes av forskerne, er i forbindelse strid om forfatterskap eller opphavsrett til programvare hvor kildekoden ikke er tilgjengelig.

Caliskan-Islam presenterte forskningsarbeidet under Chaos Communication Congress, som ble arrangert i Hamburg i romjulen. Videoen over viser et opptak av foredraget.

Programvaren som forskerne har utviklet i forbindelse med forsøket, er tilgjengelig her.

Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.