Reverse-Engineering

Of het nu gaat om het herbouwen van een automotor of het in elkaar zetten van een zin, mensen kunnen over veel dingen leren door ze uit elkaar te halen en weer in elkaar te zetten. Dat is, in een notendop, het concept achter reverse-engineering – iets uit elkaar halen om het te begrijpen, te kopiëren of te verbeteren.

Een proces dat oorspronkelijk alleen op hardware werd toegepast, wordt nu ook toegepast op software, databases en zelfs menselijk DNA. Reverse-engineering is vooral belangrijk bij computerhardware en -software. Programma’s worden geschreven in een taal, bijvoorbeeld C++ of Java, die begrijpelijk is voor andere programmeurs. Maar om op een computer te kunnen draaien, moeten ze door een ander programma, een zogenaamde compiler, worden vertaald in de enen en nullen van machinetaal. Gecompileerde code is voor de meeste programmeurs onbegrijpelijk, maar er zijn manieren om machinecode terug te zetten naar een mensvriendelijker formaat, waaronder een softwareprogramma dat een decompiler wordt genoemd.

Reverse-engineering wordt voor vele doeleinden gebruikt: als leermiddel; om nieuwe, compatibele producten te maken die goedkoper zijn dan wat momenteel op de markt is; om software beter te laten samenwerken of om gegevens tussen verschillende besturingssystemen of databases te overbruggen; en om niet-gedocumenteerde functies van commerciële producten bloot te leggen.

Een beroemd voorbeeld van reverse-engineering is het in San Jose gevestigde Phoenix Technologies Ltd., dat in het midden van de jaren tachtig een BIOS voor PC’s wilde produceren dat compatibel zou zijn met het eigen BIOS van de IBM PC. (Een BIOS is een in firmware opgeslagen programma dat wordt uitgevoerd wanneer een PC wordt opgestart; zie Technology QuickStudy, 25 juni).

Om beschuldigingen als zou het BIOS van IBM eenvoudig (en illegaal) zijn gekopieerd te voorkomen, heeft Phoenix het omgekeerd ge-engineerd met behulp van wat een “clean room” of “Chinese muur” aanpak wordt genoemd. Eerst bestudeerde een team van ingenieurs het IBM BIOS – ongeveer 8 KB aan code – en beschreef alles wat het deed zo volledig mogelijk zonder gebruik te maken van of te verwijzen naar enige echte code. Daarna bracht Phoenix een tweede team van programmeurs binnen dat geen voorkennis had van het IBM BIOS en nog nooit de code had gezien. Alleen werkend vanuit de functionele specificaties van het eerste team, schreef het tweede team een nieuw BIOS dat werkte zoals gespecificeerd.

Het resulterende Phoenix BIOS verschilde van de IBM code, maar functioneerde in alle opzichten identiek. Met de clean-room aanpak, zelfs als sommige delen van de code identiek zouden zijn, was er geen inbreuk op het auteursrecht. Phoenix begon zijn BIOS te verkopen aan bedrijven die het vervolgens gebruikten om de eerste IBM-compatibele PC’s te maken.

Andere bedrijven, zoals Cyrix Corp. en Advanced Micro Devices Inc., hebben met succes microprocessors van Intel Corp. omgekat om goedkopere chips te maken die compatibel zijn met Intel.

Er zijn maar weinig besturingssystemen reverse-engineered. Met hun miljoenen regels code – vergeleken met de ruwweg 32 KB van moderne BIOS’en – zou het reverse-engineeren ervan een dure optie zijn.

Maar applicaties zijn rijp voor reverse-engineering, omdat maar weinig software-ontwikkelaars hun broncode publiceren. Technisch gezien zou een application programming interface (API) het programma’s gemakkelijk moeten maken om samen te werken, maar deskundigen zeggen dat de meeste API’s zo slecht geschreven zijn dat externe softwaremakers weinig andere keus hebben dan reverse-engineering van de programma’s waarmee ze hun software willen laten samenwerken, alleen maar om compatibiliteit te garanderen.

Ethische aspecten

Reverse-engineering kan ook veiligheidslekken en twijfelachtige privacy-praktijken aan het licht brengen. Bijvoorbeeld, reverse-engineering van het in Dallas gevestigde Digital: Convergence Corp.’s CueCat scan-apparaat onthulde dat elke lezer een uniek serienummer heeft dat de maker van het apparaat in staat stelt om gescande codes te combineren met registratiegegevens van gebruikers en zo de gewoonten van elke gebruiker tot in detail te volgen – een voorheen niet gepubliceerde eigenschap.

Recente juridische stappen gesteund door veel grote software- en hardwarefabrikanten, evenals de entertainmentindustrie, eroderen de mogelijkheden van bedrijven om aan reverse-engineering te doen.

“Reverse-engineering is legaal, maar er zijn twee hoofdgebieden waar we bedreigingen zien voor reverse-engineering,” zegt Jennifer Granick, directeur van de Law and Technology Clinic aan de Stanford Law School in Palo Alto, Californië. Eén bedreiging, nog niet getest in de rechtbanken, komt van shrink-wrap licenties die expliciet verbieden dat iedereen die de software opent of gebruikt deze reverse-engineering toepast, zegt ze.

De andere bedreiging komt van de Digital Millennium Copyright Act (DMCA), die verbiedt het maken of verspreiden van tools of informatie die gebruikt kan worden om technologische beveiligingen te doorbreken die software beschermen tegen kopiëren. Op grond van deze wet heeft het in San José gevestigde Adobe Systems Inc. in juli jongstleden de FBI verzocht Dmitry Sklyarov, een Russische programmeur, te arresteren toen hij in de VS was voor een conferentie. Sklyarov had gewerkt aan software die Adobe’s encryptie van e-book bestanden kraakte.

Het is een feit dat zelfs boven-board reverse-engineering vaak het breken van dergelijke beveiligingen vereist, en de DMCA staat reverse-engineering voor compatibiliteitsdoeleinden wel toe.

“Maar je mag niet kijken of de software doet wat het moet doen,” zegt Granick, en je mag er ook niet naar kijken voor wetenschappelijk onderzoek. Ze geeft een analogie: “Je hebt een auto, maar je mag de motorkap niet openen.”

1pixclear.gif

De Clean-Room Approach To Reverse-Engineering

De Clean-Room Approach To Reverse-Engineering
Een persoon of groep haalt een apparaat uit elkaar en beschrijft zo gedetailleerd mogelijk wat het doet, op een hoger abstractieniveau dan de specifieke code. Die beschrijving wordt dan aan een andere groep of persoon gegeven die absoluut geen kennis heeft van het specifieke apparaat in kwestie. Deze tweede partij bouwt dan een nieuw apparaat op basis van de beschrijving. Het eindresultaat is een nieuw apparaat dat identiek werkt als het origineel, maar dat is gemaakt zonder de mogelijkheid om het origineel specifiek te kopiëren.

Schwartz is een freelance schrijver in Arlington, Mass. Neem contact met hem op via [email protected].

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *