Software die je blind kunt vertrouwen

Software voert allerlei taken voor ons uit. Dat is makkelijk, aangenaam en soms ook noodzakelijk. Het is voornamelijk software die er voor zorgt dat je bestelde pakketjes aankomen. Het is software die ’s ochtends de auto start. Het is software die je agenda bijhoudt, en het is software die je helpt om je dagelijkse werk te doen. Bij bijna alle taken die we verrichten speelt software een grote rol.

En dit gaat nog heel veel verder. De voorspellingen zijn dat computers nog heel veel goedkoper en sneller gaan worden, en algoritmes worden nog veel slimmer. We zullen overal software in stoppen, zelfs daar waar dat nu nog volkomen absurd overkomt. En die software zal meer kennis bezitten dan de mensen die het gebruiken, en zal meer over ons beslissen dan we ons bewust zullen zijn. En gek genoeg zullen we hier blij mee zijn. Software zal zijn als die altijd vriendelijke butler die weet hoe laat wij zondagochtend onze thee verwachten en hoe warm ons bad moet zijn.

Meestal werkt software verbazingwekkend goed, maar soms werkt het niet. De wereld staat stil, als de software niet wil. Treinen rijden niet meer, geld betalen wordt opeens onmogelijk, artsen kunnen niet meer in ons lichaam kijken, en fabrieken komen tot stilstand.

Wat ik zou willen is een wereld waar we software weten te ontwikkelen die niet alleen altijd werkt, maar waarvan ook door onafhankelijke partijen kan worden vastgesteld dat dat zo is. En mocht het toch eens fout gaan, dan moet precies kunnen worden vastgesteld waardoor het probleem is veroorzaakt.

We moeten een manier van software ontwerpen vinden zodat we zeker weten dat de software geen fouten maakt. En buitenstaanders moeten kunnen vaststellen dat de software zich altijd aan de aan de software opgelegde regels zal houden. De machinerichtlijn schrijft voor dat een brug niet open mag gaan als de afsluitbomen niet gesloten zijn. TNO of het ministerie zouden dit op basis van de software en het softwareontwerp moeten kunnen vaststellen. En als het toch een keer mis gaat, dan moet kunnen worden vastgesteld of het aan de software lag, of misschien aan verkeerd aangesloten bedrading. Hiertoe zou alle in gebruik gestelde software kunnen worden ondergebracht bij een softwarenotariaat, zodat experts toegang tot de broncode en de documentatie hebben om die te onderzoeken in geval van een incident.

Er moet ook worden gegarandeerd dat software bestand is tegen aanvallen van buiten. Als een softwaremaker claimt dat betalingsoftware niet onderuit gehaald kan worden door bijvoorbeeld een DDOS aanval, dan moet dat worden aangetoond, en het bewijs daarvan moet gecontroleerd kunnen worden. Als een softwaremaker claimt dat de sluizen in Nederland niet zonder de nodige passwords op afstand te openen zijn, dan moet dat ook echt zo zijn.

Verder moet het kwaadwilligen onmogelijk gemaakt worden om software te maken die zicht slecht gedraagt en zich niet aan de regels houdt. Als de regels zeggen dat een dieselauto zich bij de test net zo moet gedragen als op de weg, dan moet dit aan de hand van de software worden vastgesteld. Als software de adreslijst in een mobiele telefoon niet mag inspecteren, dan moet kunnen worden vastgesteld dat dit ook echt niet gebeurt. En als Israel de software voor telefooncentrales levert, dan moet onafhankelijk worden vastgesteld dat er geen achterdeurtjes in zitten die afluisteren mogelijk maken.

Er zijn al een heleboel basistechnieken die ingezet kunnen worden om de ideale wereld, waarin software zich houdt aan zijn ‘intent‘, te bereiken. Maar om bovenstaand beschreven ideale situatie te bereiken zal er nog heel veel moeten gebeuren. Naast de ontwikkeling van de noodzakelijke technologie zal het nodig zijn om de nodige wet- en regelgeving op te stellen. Makers van dieselauto’s of bruggensoftware zullen niet bereid zijn hun software bij een softwarenotariaat op te bergen, tenzij zij daar toe worden gedwongen.

Om het belang van bovenstaande ideaal te begrijpen is het nuttig om ons sciencefictionseries voor de geest te halen. Een goed voorbeeld is Star Trek waarbij ruimteschepen door het heelal reizen om nieuwe werelden te ontdekken. Mensen en mensachtige wezens zijn er de baas, maar vrijwel alles op het schip wordt uitgevoerd door computergestuurde apparaten. De hoofdcomputer weet antwoord op alle vragen en beantwoordt ze braaf. Wat zou ons overkomen als al die computers in al die ruimteschepen zich, bedoeld of onbedoeld, tegen de mensheid zou keren? Dat willen we niet, en daarom moeten we er voor zorgen dat software altijd doet waarvoor ze bedoeld is en nooit de regels overtreedt die aan software zijn gesteld.