De legaliteit van reverse engineeren – hardware en drivers

multimeter2.jpgHet is toegestaan om te achterhalen hoe dingen werken. Heb je een mooie grafische kaart gekocht, en wil je weten welke signalen deze afgeeft, dan mag je gerust met je multimeter aan de slag. Wil je zien hoe je televisie er van binnen uitziet, veel plezier met de schroevendraaier. De garantie vervalt natuurlijk wel, maar dat terzijde.

Wil je met die informatie een eigen product bouwen, dan mag dat ook. Ideeën en technische principes zijn vrij. Daar is één uitzondering op: je kunt tegen octrooien aanlopen natuurlijk. Voor een octrooi maakt het niet uit of je het product zelf gemaakt hebt of hebt afgekeken: als het doet wat in het octrooi staat, pleeg je inbreuk.

Afgezien van octrooien is het reverse engineeren van de werking van hardware dus legaal. Dat is erg handig voor bijvoorbeeld open source zoals Linux, waarvoor minder aanstuursoftware (drivers) voor hardware beschikbaar is dan bij Windows. Een open source-ontwikkelaar mag dus kijken welke commando’s er van de driver op de PC naar een hardwarekaart (of terug) gestuurd worden en welk effect dat heeft. Hij kan daarmee zijn eigen driver maken die op het juiste moment de juiste commando’s stuurt. Dit mag: artikel 45l Auteurswet bepaalt dat een licentienemer van de software mag achterhalen hoe de software werkt “teneinde de daaraan ten grondslag liggende ideeën en beginselen te achterhalen.” Daaronder valt ook het achterhalen van de communicatie tussen de driversoftware en de hardware.

Een nadeel van deze aanpak is dat je dan niet zeker weet dat je alle situaties gehad hebt. Misschien is er wel een commando dat alleen gestuurd wordt als de kaart erg warm wordt, of wanneer iemand een resolutie van 1194×768 pixels gebruikt en een 3D-bal wil laten stuiteren als screensaver.

Een betere oplossing is dan ook de bestaande driver pakken en deze disassembleren: de binaire code uit elkaar halen om zo in één keer te zien wat de driver allemaal voor commando’s kan versturen en ontvangen. Daarmee is dan een nieuwe driver te maken die hetzelfde doet, maar dan voor Linux.

Deze oplossing ligt juridisch iets lastiger. Software is beschermd door auteursrecht. Bij reverse engineeren moet je de software uitvoeren om te kunnen zien wat hij doet. Dat is normaal inbreuk op het auteursrecht. Maar voor deze vorm van reverse engineering is er artikel 45m.

Dit artikel zegt dat je mag reverse engineeren om interoperabiliteit van je eigen software met andere software tot stand te brengen. Bijvoorbeeld dus je eigen driver maken om de (embedded) software in de grafische kaart te kunnen besturen. Het recht is in zoverre beperkt dat je alleen datgene mag reverse engineeren wat je nodig hebt om je eigen driver te kunnen maken.

Dit artikel is natuurlijk ook relevant voor andere soorten software, zoals de vele open source alternatieven voor gesloten software zoals Microsoft Office. Daar kom ik binnenkort op terug, want de situatie is daar iets minder rooskleurig dan bij drivers.

Hoe dan ook, je mag dus een driver reverse engineeren en met de gevonden informatie je eigen driver maken. Wat niet mag, is stukken van de oorspronkelijke driver overnemen in je eigen driver. Dan pleeg je inbreuk op het auteursrecht. Je mag alleen achterhalen wat de driver doet, en vervolgens moet je je eigen software schrijven die dezelfde activiteiten verricht. Zonder te kijken op welke slimme manier de oorspronkelijke software dit doet.

Dat zal bij drivers gelukkig niet altijd een groot probleem zijn. De implementatie van een driver is namelijk voor een groot deel bepaald door de hardware. Er moet nu eenmaal code 0x31337 gestuurd worden om een bepaald beeld op het scherm te tonen, en als de printer de code 0xDEADBEEF stuurt, dan is het papier op en moet het printen tijdelijk ophouden. Daardoor zit er weinig creatieve ruimte voor programmeurs bij het schrijven van drivers. Hoewel dus een nieuwe driver voor een deel zal lijken op het origineel, komt dat door die technisch bepaalde factoren. En iets dat hetzelfde is vanwege een technische eis, is geen inbreuk op het auteursrecht.

Bij dit soort activiteiten wordt wel de bewijslast omgekeerd: als beide drivers hetzelfde doen, moet de maker van de nieuwe driver bewijzen dat hij geen code heeft overgenomen van de oorspronkelijke driver. Vandaar de clean-room praktijk: laat de ene persoon achterhalen en documenteren wat de driver doet, en laat een andere persoon op basis van die documentatie een nieuwe driver schrijven. De andere persoon kan dan geen code hebben overgenomen, want daar had hij geen toegang toe. En de eerste persoon heeft geen code geschreven, en heeft dus ook geen inbreuk gepleegd.

Deze bepalingen zijn dwingend recht. Dat betekent dat dit recht niet in een softwarelicentie (EULA) verboden kan worden. Staat het toch in een EULA, dan zal de rechter die clausule negeren.

Arnoud

5 reacties

  1. Op het tros radar forum hebben we een discussie over de geldigheid van de EULA van microsoft en anderen. Mede door jou uitlatingen over dit onderwerp op deze site komen we tot het volgende :

    Je koopt de licentie, maar in de meeste gevallen kun je de licentie overeenkomst niet inzien voor de koop, zodat deze in eerste instantie niet geldig zou zijn.
    Vervolgens installeer je de software, waarna je de EULA moet bevestigen om dit gedaan te krijgen. hierdoor ben je toch aan de licentie voorwaarden gebonden.

    Gesteld, Ik wil een programma maken dat ervoor zorgt dat ik geen EULA te zien krijg bij installatie van de software. Eventueel zou ik daartoe zou ik de software moeten reverse engineeren. Let wel ik ga de windows software niet wijzigen. Zie het maar als een antivirus programma dat zich in de e-mail client nestelt om eerst de mail op virussen te scannen.

    De vraag is of dit mag, en zo ja, of ben ik dan niet meer gebonden aan de licentie overeenkomst ( die ik immers niet meer te zien krijg.

  2. Een EULA is in de meeste gevallen te zien als algemene voorwaarden. Die hoef je niet gelezen te hebben, zolang je ze maar had kunnen lezen voordat je de koopovereenkomst had gesloten.

    In theorie zou je de EULA kunnen weigeren door op “I decline” te drukken. Dan installeert de software niet, en je zou hem dan terug kunnen brengen naar de winkel voor een geldteruggaaf. Maar ja, de praktijk zal weerbarstig zijn…

  3. elders zeg je : http://blog.iusmentis.com/2008/02/19/ja-een-licentie-is-een-contract/ “Natuurlijk verlies je de aangeboden rechten als je de voorwaarden niet wenst te aanvaarden. Je valt dan terug op de wettelijke rechten aangaande software: als rechtmatige verkrijger mag je de software op 1 PC draaien (art. 45j) en een backup maken (art. 45k). Wie dus software legaal downloadt, hoeft geen EULA te aanvaarden om deze te mogen gebruiken.” ( ergens in je blog , ik kan het even niet zo snel vinden … stel je dat je hier nog op terug komt… ) Probleem daarbij is dat de software niet wil installeren als ik de voorwaarden niet aanvaardt. Dus zou ik een programma kunnen maken die dit wel bewerkstelligt.

    Zoiets als : Vraag : hebt u de software rechtmatig verkregen ? klik dan JA. ( of nee en breek af ) Vraag : Hebt u kennis kunnen nemen van de EULA ? klik dan NEE. ( of ja en laat alsnog de EULA zien ) Vervolgens zou de software ge?nstalleerd en gebruikt mogen/kunnen worden.

    De EULA zou vervolgens net als een virus in quarantaine geplaatst worden. (haha) Immers zit die EULA ergens verstopt in het pakketje wat je hebt gedownload, of in het pakketje dat je in de winkel hebt gekocht. Als zodanig heb je daar dus geen kennis van kunnen nemen bij/voor de koop. Of in het geval van een OEM PC, staat het soms alleen op de harde schijf.

    In diverse artikelen betwijfel je de rechtsgeldigheid van deze gang van zaken, zie boven. Het programmaatje stelt je in staat van dat recht gebruikt te kunnen maken.

    De vraag is of het toegestaan is een dergelijk programmatje te maken. en of e.e.a. dan legaal is.

  4. Klopt. Je hoeft de EULA niet te aanvaarden, en als je de software dan toch kan installeren, zit je niet aan de EULA vast. Alleeen, de auteur hoeft het niet eenvoudig of zelfs maar mogelijk te maken dat je op die manier de software kunt installeren.

    Dat installeren-zonder-EULA programma is erg creatief bedacht. Het lijkt me op zich legaal, tenzij je een kopieerbeveiliging, versleuteling of iets dergelijks van de software moet doorbreken om de installatie te doen. Dat is in Nederland niet toegestaan.

    Bij preinstalled software op een kant-en-klaar gekochte PC ben je naar mijn mening niet gebonden aan de EULA. Het is de OEM die de licenties heeft aanvaard en geinstalleerd, en je wordt bij de koop niet gewezen op de diverse toepasselijke licenties.

Geef een reactie

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren, <UL>/<OL> voor lijsten, en <em> en <strong> voor italics en vet.