Het artikel beschrijft de ervaringen van de auteur met het ontdekken van een ernstig beveiligingslek in Intel-cpu's (Hyper-Threading) in 2004. De auteur staat uitgebreid stil bij het proces van responsible disclosure, waarbij kwetsbaarheden eerst discreet worden gemeld aan de fabrikant voordat ze publiekelijk worden gemaakt om misbruik te voorkomen.
Daarnaast verkent de auteur de ethische plicht van ingenieurs en geleerden. Hij betoogt dat kennis niet voor eigen gewin of status is, maar dient om de samenleving te beschermen en te informeren. Er wordt een essentieel onderscheid gemaakt tussen de onderzoeker (die nieuwe kennis creëert) en de geleerde (die deze kennis naar de mensen brengt die haar nodig hebben om actie te ondernemen).
De auteur baseert zijn visie op professionele ethische codes (zoals die van de IEEE), filosofische inzichten van Fichte over de roeping van de geleerde, en het principe dat de waarheid actief ontsloten moet worden voor hen die erdoor getroffen worden.
De plicht van een geleerde
Mijn gedachten gingen echter niet echt naar mijn thesis uit; ik hield me bezig met een probleem dat ik onlangs had opgemerkt in recente Intel-cpu's. De "Hyper-Threading"-functie (simultane multithreading), die zij in 2002 hadden geïntroduceerd, kon informatie lekken tussen executie-threads via de status van de cache.
Er ging destijds een grap rond dat, hoewel de National Security Agency (NSA) de laatste jaren opener was geworden en hun defensieve rol serieuzer nam, het enige aspect van cryptografie dat zij nooit publiekelijk zouden bespreken, zijkanaalaanvallen (side channel attacks) waren. Dit feit op zich vormde al een zijkanaal, omdat het onthulde welk belang zij aan dit vakgebied hechtten. Omdat ik actief was in computerbeveiliging en wist dat de NSA veel kennis had over dit onderwerp, was mijn onmiddellijke prioriteit om vast te stellen of de informatielekken die ik had geïdentificeerd voldoende waren om een praktische cryptografische zijkanaalaanval te construeren.
Tegen medio december had ik een proof-of-concept exploit ontwikkeld die genoeg bits van een RSA-privésleutel stal om de volledige sleutel te kunnen reconstrueren. Daarna richtte ik me op het moeilijkste deel van het probleem: de beveiligingsteams discreet informeren en samenwerken om het probleem op te lossen voordat ik het publiekelijk bekendmaakte.
Verantwoorde openbaarmaking
Dit werd mijn belangrijkste bezigheid voor de volgende zes maanden. Terwijl mijn tijdgenoten in Oxford correcties aanbrachten in hun theses en solliciteerden naar banen, liet ik dat links liggen (tot grote irritatie van mijn begeleiders). Ik voelde een verantwoordelijkheid die prioriteit kreeg boven loutere carrièreoverwegingen.
Het bleek achteraf nuttig dat ik werkloos was in mei, toen Intel — geërgerd door mijn aanstaande publicatie — Yahoo vroeg om mij te bevelen het artikel in te trekken. Yahoo antwoordde zeer graag dat ik, in tegenstelling tot veel FreeBSD-ontwikkelaars, niet bij hen in dienst was en zij dus niet in de positie waren om mij met ontslag te dreigen. Op 13 mei 2005 presenteerde ik mijn paper tijdens BSDCan en publiceerde ik een waarschuwing over het onderwerp. Tegelijkertijd of kort daarna volgden waarschuwingen van FreeBSD, NetBSD, Red Hat, SCO en Ubuntu.
Iedereen die betrokken is bij de beveiliging van open-source software zal het proces van responsible disclosure herkennen (tegenwoordig vaker coordinated disclosure genoemd, nadat sommige mensen in de sector worstelden met het concept van 'verantwoordelijkheid'), hoewel de duur van dit specifieke proces ongebruikelijk lang was. Wanneer je een beveiligingslek vindt, moet je dit niet negeren (of erger: verkopen aan kwaadwillenden). Omgekeerd is het onverantwoord om de kwetsbaarheid simpelweg te publiceren in de hoop dat de 'goeden' het kunnen oplossen voordat de 'slechten' het exploiteren. In plaats daarvan heb je de verantwoordelijkheid om te bepalen wie op de hoogte moet zijn van het probleem en hen discreet te contacteren, zodat zij patches kunnen voorbereiden om te distribueren op het moment dat het probleem publiekelijk bekend wordt.
De randvoorwaarden van plichtsgevoel
In dit specifieke geval was ik in de uitzonderlijke positie dat ik mijn leven tijdelijk kon on hold zetten: ik was vrijgezel, kinderloos en woonde na het verdedigen van mijn thesis gratis in de kelder van mijn (zeer tolerante) ouders in Canada. Hoewel ik enkele rekeningen moest betalen — als type 1-diabeticus moest ik insuline kopen — betekende wonen in Canada dat ik me geen zorgen hoefde te maken over buitensporige kosten voor een ziekenhuisopname. Had ik in de VS gewoond, dan had ik prioriteit moeten geven aan het zoeken naar werk en een medische verzekering, en zou ik waarschijnlijk niet in staat zijn geweest om de plicht te vervullen die het lot mij had opgelegd.
Ingenieurs zijn natuurlijk bekend met dergelijke plichten. Hoewel de exacte bewoording per jurisdictie verschilt, bevatten bijna alle professionele ethische codes de eis om actie te ondernemen bij veiligheidsrisico's, ongeacht of er een persoonlijke verbinding bestaat. Leden van de IEEE beloven bijvoorbeeld: "the safety, health, and welfare of the public" als hoogste prioriteit te stellen. Deze plicht is niet beperkt tot risico's die voortvloeien uit projecten waar de betreffende ingenieur aan werkt; de plicht om "onverwijld te melden" rust op elke ingenieur die merkt dat het gevaar bestaat.
Net als bij de verantwoorde openbaarmaking van softwarelekken is de reikwijdte van deze plicht echter beperkt: er is geen plicht om te rapporteren als werk inefficiënt wordt uitgevoerd. Als wettelijke plicht zou dit redelijk zijn, maar als morele plicht vind ik dat de lat hiermee te laag wordt gelegd.
Escalatie en de zoektocht naar waarheid
Ethische codes voor ingenieurs stellen vaak een proces van escalatie vast. In het gebruikelijke geval waarin een bevoegd ingenieur bekend wordt met een gevaar in een project waaraan hij werkt, moet hij zijn zorgen in eerste instantie melden bij zijn werkgever. Pas als dat geen resultaat oplevert, moet hij directere stappen ondernemen. Dit is zowel efficiënt als praktisch: het melden van een probleem aan iemand die niet handelt, is niet noodzakelijkerwijs voldoende om aan een plicht te voldoen, maar alles breed rapporteren riskeert de weinige zaken die echt brede aandacht nodig hebben, te overstemmen.
Ik pas dit principe routinematig toe. Zo ontdekte ik in 2009 dat de Amazon EC2-firewall standaard de Path MTU Discovery verbrak en meldde ik dit aan Amazon. Toen ik in november 2012 concludeerde dat Amazon het probleem niet zou aanpakken, gebruikte ik mijn blog om Amazon-klanten te adviseren over hoe ze dit zelf konden oplossen (Amazon loste de bug kort daarna alsnog op). Hoewel dit geen veiligheids- of beveiligingsrisico was, voelde ik dat ik, wetende wat ik wist, de ethische plicht had om deze kennis te delen om mensen te helpen die door het probleem werden getroffen.
In de Star Trek: The Next Generation-aflevering "The First Duty" houdt Patrick Stewart, in de rol van Jean-Luc Picard, een gedenkwaardige speech over de waarheid:
"De eerste plicht van elke Starfleet-officier is de waarheid, of dat nu wetenschappelijke waarheid, historische waarheid of persoonlijke waarheid is! Het is het leidende principe waarop Starfleet is gebaseerd! Als je niet in staat bent om op te staan en de waarheid te vertellen over wat er is gebeurd, verdien je het niet om dat uniform te dragen!"
De plicht die hier wordt beschreven is de plicht om de waarheid te onthullen en niet te verbergen. Hoewel ik het hiermee eens ben, denk ik dat het niet ver genoeg gaat. Voor mij omvat de plicht ook het actief zoeken naar mensen aan wie de waarheid verteld moet worden. Je verschuilen achter "niemand heeft erom gevraagd" is een tekortkoming in het vervullen van die plicht.
De roeping van de geleerde
Filosofen hebben veel geschreven over plicht en ethiek. De Duitse Verlichtingsfilosoof Fichte merkte in zijn vierde college uit 1794, Über die Bestimmung des Gelehrten (vaak vertaald als De roeping van de geleerde), interessante zaken op. Fichte beargumenteert dat geleerden een bijzondere relatie hebben tot kennis: een geleerde "bezit zijn kennis niet voor zichzelf, maar voor de samenleving". Het is niet gepast voor een geleerde om kennis te hamsteren; in plaats daarvan hebben zij de plicht om hun kennis over te dragen aan anderen — in Fichtes enigszins overdreven visie: fungeren als "de leraar van het menselijke ras".
Aan de andere kant is het onnodig en ongepast om met iedereen in te gaan op de "diepe onderzoeken die hijzelf heeft moeten ondernemen". In plaats daarvan vertrouwt een geleerde op het vertrouwen van anderen in zijn eerlijkheid bij het overbrengen van de specifieke benodigde kennis. Fichte merkt op dat de geleerde nooit geneigd zal zijn mensen tot het overnemen van zijn overtuigingen te dwingen door dwang of fysiek geweld, noch zal hij hen bedriegen. Geleerden zijn niet de filosoof-koningen van Plato; hun plicht is om de benodigde kennis te verschaffen, niet om af te dwingen wat er met die kennis wordt gedaan.
Ik ben het niet op elk punt met Fichte eens. Fichte beschouwt geleerden als de hoogste van alle klassen en nodigt hen zelfs uit zichzelf als een "priester van de waarheid" te beschouwen; in onze meer egalitaire tijd wijs ik dit kader resoluut af. Ook accepteer ik Fichtes stelling niet dat de plicht van geleerden om kennis te delen voortkomt uit een verplichting om de samenleving terug te geven wat zij voor ons heeft gedaan. Voor mij vloeit de plicht niet voort uit een schuld aan de samenleving, maar is zij inherent aan de kennis zelf, ongeacht wie deze bezit.
Natuurlijk is deze plicht niet onbeperkt. Zoals Fichte opmerkt, is er geen plicht om mensen te dwingen te handelen naar gedeelde kennis — sterker nog, er is een morele verplichting om de vrijheid van iedereen te accepteren om te kiezen hoe zij handelen. Evenzo is er geen plicht om een Cassandra te worden: net als bij elk geschenk zijn mensen vrij om het geschenk van kennis te weigeren, hoe onverstandig dat ook mag zijn. Uiteindelijk is de plicht vervuld zodra iedereen die in staat is om op basis van die kennis te handelen, hiervan op de hoogte is gebracht.
Onderzoeker versus Geleerde
In modern taalgebruik overlappen de termen "geleerde" (scholar) en "onderzoeker" (researcher) vaak, maar voor mij is er een zeer precies onderscheid:
- Onderzoekers creëren nieuwe kennis.
- Geleerden brengen die kennis naar de mensen die het nodig hebben.
Dit is een nauwere definitie dan die van Fichte, wiens geleerden ook de plicht hebben om te streven naar het uitbreiden van kennis. Velen zijn natuurlijk zowel onderzoeker als geleerde, maar er zijn genoeg mensen die onderzoek doen en papers publiceren zonder hun ontdekkingen werkelijk te communiceren. Het wetenschappelijke artikel dat in een tijdschrift wordt gepubliceerd maar nooit wordt gelezen, is bijna een cliché. Maar zelfs artikelen die gelezen worden, hebben niet noodzakelijkerwijs de impact die ze verdienen als ze alleen door academici worden gelezen en niet door iemand die in de positie is om naar aanleiding van de bevindingen te handelen.
Mijn alma mater, Simon Fraser University — waar ik al meer dan twee decennia senator ben — beschrijft zichzelf als "Canada's engaged university" en hecht waarde aan het verbinden van academisch leren met de echte wereld, in plaats van enkel aan academische output. Een ware geleerde is in mijn ogen iemand die zich gebonden voelt door de plicht van kennis: het vinden van de mensen met wie deze gedeeld moet worden.
Iedereen kiest zijn eigen rol in de samenleving en niet iedereen ervaart elke plicht op dezelfde manier. Bovendien, net zoals mijn ervaring in 2005 anders zou zijn geweest als ik een medische verzekering had moeten afsluiten, is niet iedereen in staat om een plicht uit te voeren, ongeacht hoe sterk zij die voelen. Maar voor mijzelf kies ik het leven en de plicht van een geleerde.
De plicht van een geleerde
Mijn gedachten gingen echter niet echt naar mijn thesis uit; ik hield me bezig met een probleem dat ik onlangs had opgemerkt in recente Intel-cpu's. De "Hyper-Threading"-functie (simultane multithreading), die zij in 2002 hadden geïntroduceerd, kon informatie lekken tussen executie-threads via de status van de cache.
Er ging destijds een grap rond dat, hoewel de National Security Agency (NSA) de laatste jaren opener was geworden en hun defensieve rol serieuzer nam, het enige aspect van cryptografie dat zij nooit publiekelijk zouden bespreken, zijkanaalaanvallen (side channel attacks) waren. Dit feit op zich vormde al een zijkanaal, omdat het onthulde welk belang zij aan dit vakgebied hechtten. Omdat ik actief was in computerbeveiliging en wist dat de NSA veel kennis had over dit onderwerp, was mijn onmiddellijke prioriteit om vast te stellen of de informatielekken die ik had geïdentificeerd voldoende waren om een praktische cryptografische zijkanaalaanval te construeren.
Tegen medio december had ik een proof-of-concept exploit ontwikkeld die genoeg bits van een RSA-privésleutel stal om de volledige sleutel te kunnen reconstrueren. Daarna richtte ik me op het moeilijkste deel van het probleem: de beveiligingsteams discreet informeren en samenwerken om het probleem op te lossen voordat ik het publiekelijk bekendmaakte.
Verantwoorde openbaarmaking
Dit werd mijn belangrijkste bezigheid voor de volgende zes maanden. Terwijl mijn tijdgenoten in Oxford correcties aanbrachten in hun theses en solliciteerden naar banen, liet ik dat links liggen (tot grote irritatie van mijn begeleiders). Ik voelde een verantwoordelijkheid die prioriteit kreeg boven loutere carrièreoverwegingen.
Het bleek achteraf nuttig dat ik werkloos was in mei, toen Intel — geërgerd door mijn aanstaande publicatie — Yahoo vroeg om mij te bevelen het artikel in te trekken. Yahoo antwoordde zeer graag dat ik, in tegenstelling tot veel FreeBSD-ontwikkelaars, niet bij hen in dienst was en zij dus niet in de positie waren om mij met ontslag te dreigen. Op 13 mei 2005 presenteerde ik mijn paper tijdens BSDCan en publiceerde ik een waarschuwing over het onderwerp. Tegelijkertijd of kort daarna volgden waarschuwingen van FreeBSD, NetBSD, Red Hat, SCO en Ubuntu.
Iedereen die betrokken is bij de beveiliging van open-source software zal het proces van responsible disclosure herkennen (tegenwoordig vaker coordinated disclosure genoemd, nadat sommige mensen in de sector worstelden met het concept van 'verantwoordelijkheid'), hoewel de duur van dit specifieke proces ongebruikelijk lang was. Wanneer je een beveiligingslek vindt, moet je dit niet negeren (of erger: verkopen aan kwaadwillenden). Omgekeerd is het onverantwoord om de kwetsbaarheid simpelweg te publiceren in de hoop dat de 'goeden' het kunnen oplossen voordat de 'slechten' het exploiteren. In plaats daarvan heb je de verantwoordelijkheid om te bepalen wie op de hoogte moet zijn van het probleem en hen discreet te contacteren, zodat zij patches kunnen voorbereiden om te distribueren op het moment dat het probleem publiekelijk bekend wordt.
De randvoorwaarden van plichtsgevoel
In dit specifieke geval was ik in de uitzonderlijke positie dat ik mijn leven tijdelijk kon on hold zetten: ik was vrijgezel, kinderloos en woonde na het verdedigen van mijn thesis gratis in de kelder van mijn (zeer tolerante) ouders in Canada. Hoewel ik enkele rekeningen moest betalen — als type 1-diabeticus moest ik insuline kopen — betekende wonen in Canada dat ik me geen zorgen hoefde te maken over buitensporige kosten voor een ziekenhuisopname. Had ik in de VS gewoond, dan had ik prioriteit moeten geven aan het zoeken naar werk en een medische verzekering, en zou ik waarschijnlijk niet in staat zijn geweest om de plicht te vervullen die het lot mij had opgelegd.
Ingenieurs zijn natuurlijk bekend met dergelijke plichten. Hoewel de exacte bewoording per jurisdictie verschilt, bevatten bijna alle professionele ethische codes de eis om actie te ondernemen bij veiligheidsrisico's, ongeacht of er een persoonlijke verbinding bestaat. Leden van de IEEE beloven bijvoorbeeld: "the safety, health, and welfare of the public" als hoogste prioriteit te stellen. Deze plicht is niet beperkt tot risico's die voortvloeien uit projecten waar de betreffende ingenieur aan werkt; de plicht om "onverwijld te melden" rust op elke ingenieur die merkt dat het gevaar bestaat.
Net als bij de verantwoorde openbaarmaking van softwarelekken is de reikwijdte van deze plicht echter beperkt: er is geen plicht om te rapporteren als werk inefficiënt wordt uitgevoerd. Als wettelijke plicht zou dit redelijk zijn, maar als morele plicht vind ik dat de lat hiermee te laag wordt gelegd.
Escalatie en de zoektocht naar waarheid
Ethische codes voor ingenieurs stellen vaak een proces van escalatie vast. In het gebruikelijke geval waarin een bevoegd ingenieur bekend wordt met een gevaar in een project waaraan hij werkt, moet hij zijn zorgen in eerste instantie melden bij zijn werkgever. Pas als dat geen resultaat oplevert, moet hij directere stappen ondernemen. Dit is zowel efficiënt als praktisch: het melden van een probleem aan iemand die niet handelt, is niet noodzakelijkerwijs voldoende om aan een plicht te voldoen, maar alles breed rapporteren riskeert de weinige zaken die echt brede aandacht nodig hebben, te overstemmen.
Ik pas dit principe routinematig toe. Zo ontdekte ik in 2009 dat de Amazon EC2-firewall standaard de Path MTU Discovery verbrak en meldde ik dit aan Amazon. Toen ik in november 2012 concludeerde dat Amazon het probleem niet zou aanpakken, gebruikte ik mijn blog om Amazon-klanten te adviseren over hoe ze dit zelf konden oplossen (Amazon loste de bug kort daarna alsnog op). Hoewel dit geen veiligheids- of beveiligingsrisico was, voelde ik dat ik, wetende wat ik wist, de ethische plicht had om deze kennis te delen om mensen te helpen die door het probleem werden getroffen.
In de Star Trek: The Next Generation-aflevering "The First Duty" houdt Patrick Stewart, in de rol van Jean-Luc Picard, een gedenkwaardige speech over de waarheid:
"De eerste plicht van elke Starfleet-officier is de waarheid, of dat nu wetenschappelijke waarheid, historische waarheid of persoonlijke waarheid is! Het is het leidende principe waarop Starfleet is gebaseerd! Als je niet in staat bent om op te staan en de waarheid te vertellen over wat er is gebeurd, verdien je het niet om dat uniform te dragen!"
De plicht die hier wordt beschreven is de plicht om de waarheid te onthullen en niet te verbergen. Hoewel ik het hiermee eens ben, denk ik dat het niet ver genoeg gaat. Voor mij omvat de plicht ook het actief zoeken naar mensen aan wie de waarheid verteld moet worden. Je verschuilen achter "niemand heeft erom gevraagd" is een tekortkoming in het vervullen van die plicht.
De roeping van de geleerde
Filosofen hebben veel geschreven over plicht en ethiek. De Duitse Verlichtingsfilosoof Fichte merkte in zijn vierde college uit 1794, Über die Bestimmung des Gelehrten (vaak vertaald als De roeping van de geleerde), interessante zaken op. Fichte beargumenteert dat geleerden een bijzondere relatie hebben tot kennis: een geleerde "bezit zijn kennis niet voor zichzelf, maar voor de samenleving". Het is niet gepast voor een geleerde om kennis te hamsteren; in plaats daarvan hebben zij de plicht om hun kennis over te dragen aan anderen — in Fichtes enigszins overdreven visie: fungeren als "de leraar van het menselijke ras".
Aan de andere kant is het onnodig en ongepast om met iedereen in te gaan op de "diepe onderzoeken die hijzelf heeft moeten ondernemen". In plaats daarvan vertrouwt een geleerde op het vertrouwen van anderen in zijn eerlijkheid bij het overbrengen van de specifieke benodigde kennis. Fichte merkt op dat de geleerde nooit geneigd zal zijn mensen tot het overnemen van zijn overtuigingen te dwingen door dwang of fysiek geweld, noch zal hij hen bedriegen. Geleerden zijn niet de filosoof-koningen van Plato; hun plicht is om de benodigde kennis te verschaffen, niet om af te dwingen wat er met die kennis wordt gedaan.
Ik ben het niet op elk punt met Fichte eens. Fichte beschouwt geleerden als de hoogste van alle klassen en nodigt hen zelfs uit zichzelf als een "priester van de waarheid" te beschouwen; in onze meer egalitaire tijd wijs ik dit kader resoluut af. Ook accepteer ik Fichtes stelling niet dat de plicht van geleerden om kennis te delen voortkomt uit een verplichting om de samenleving terug te geven wat zij voor ons heeft gedaan. Voor mij vloeit de plicht niet voort uit een schuld aan de samenleving, maar is zij inherent aan de kennis zelf, ongeacht wie deze bezit.
Natuurlijk is deze plicht niet onbeperkt. Zoals Fichte opmerkt, is er geen plicht om mensen te dwingen te handelen naar gedeelde kennis — sterker nog, er is een morele verplichting om de vrijheid van iedereen te accepteren om te kiezen hoe zij handelen. Evenzo is er geen plicht om een Cassandra te worden: net als bij elk geschenk zijn mensen vrij om het geschenk van kennis te weigeren, hoe onverstandig dat ook mag zijn. Uiteindelijk is de plicht vervuld zodra iedereen die in staat is om op basis van die kennis te handelen, hiervan op de hoogte is gebracht.
Onderzoeker versus Geleerde
In modern taalgebruik overlappen de termen "geleerde" (scholar) en "onderzoeker" (researcher) vaak, maar voor mij is er een zeer precies onderscheid:
- Onderzoekers creëren nieuwe kennis.
- Geleerden brengen die kennis naar de mensen die het nodig hebben.
Dit is een nauwere definitie dan die van Fichte, wiens geleerden ook de plicht hebben om te streven naar het uitbreiden van kennis. Velen zijn natuurlijk zowel onderzoeker als geleerde, maar er zijn genoeg mensen die onderzoek doen en papers publiceren zonder hun ontdekkingen werkelijk te communiceren. Het wetenschappelijke artikel dat in een tijdschrift wordt gepubliceerd maar nooit wordt gelezen, is bijna een cliché. Maar zelfs artikelen die gelezen worden, hebben niet noodzakelijkerwijs de impact die ze verdienen als ze alleen door academici worden gelezen en niet door iemand die in de positie is om naar aanleiding van de bevindingen te handelen.
Mijn alma mater, Simon Fraser University — waar ik al meer dan twee decennia senator ben — beschrijft zichzelf als "Canada's engaged university" en hecht waarde aan het verbinden van academisch leren met de echte wereld, in plaats van enkel aan academische output. Een ware geleerde is in mijn ogen iemand die zich gebonden voelt door de plicht van kennis: het vinden van de mensen met wie deze gedeeld moet worden.
Iedereen kiest zijn eigen rol in de samenleving en niet iedereen ervaart elke plicht op dezelfde manier. Bovendien, net zoals mijn ervaring in 2005 anders zou zijn geweest als ik een medische verzekering had moeten afsluiten, is niet iedereen in staat om een plicht uit te voeren, ongeacht hoe sterk zij die voelen. Maar voor mijzelf kies ik het leven en de plicht van een geleerde.