#Klooienmetcomputers

Wat is het verschil tussen een computer en een wasmachine?

Arnout van Kempen over rommelen in een digitale wereld.

Wasmachines zijn programmeerbaar. Computers zijn programmeerbaar. Dus wasmachines zijn computers? Toch niet. Zelfs als een wasmachine is gebouwd met een computer in het hart, dan nog houdt die computer op computer te zijn, zodra deze onderdeel wordt van de wasmachine.

Laten we eerst eens goed bekijken hoe een wasmachine geprogrammeerd wordt. Met een bepaald input device, veelal een serie knoppen die ingedrukt kunnen worden, of rondgedraaid naar een bepaalde stand, stellen we een wasprogramma samen. Zetten we de wasmachine vervolgens aan, of in een vorm van 'uitvoeren', dan wordt dat programma uitgevoerd. Dat lijkt toch aardig op een computer. Maar dat is schijn. Wat we een wasprogramma noemen, is niet het echte wasprogramma. We doen niets anders dan het parametriseren van het echte programma. Extreem versimpeld is het programma bijvoorbeeld:

  • Voer het voorprogramma uit. Gebruik daarbij water van de temperatuur die volgt uit knop 1.
  • Voer het hoofdprogramma uit. Gebruik water van de temperatuur die volgt uit knop 2 en draai zo lang als is aangegeven met knop 3.
  • Als knop 4 is ingedrukt, centrifugeer met het toerental dat is aangegeven met knop 5.

Het indrukken van de knoppen 1 tot en met 5 geeft noodzakelijke informatie aan het programma en bepaalt hoe het programma exact zal werken, maar het is niet het programma zelf. Het is data.
Als je als gebruiker wilt dat de wasmachine echt iets anders gaat doen, bijvoorbeeld een maanlanding aansturen, dan kan dat niet. Niet omdat de wasmachine daar de rekenkracht voor zou missen, maar omdat het geen computer is. En nog specifieker, omdat het geen Von Neumann-computer is.

Kijk nog eens terug bij de aflevering van twee weken geleden. Daar zagen we dat voor de CPU er geen enkel verschil is tussen programma en data. Dat maakt een computer tot een computer. En de consequenties daarvan zijn enorm.
Om met het goede nieuws te beginnen: omdat een computer geen enkel verschil ziet tussen programma en data, kan een computer worden gebruikt om programma's mee te maken. Als we in C een programma schrijven, dan is dat data. Een tekstbestand zonder feitelijke betekenis voor de computer. Maar met een ander programma, gcc bijvoorbeeld, kunnen we dat tekstbestand vertalen naar een uitvoerbaar programma. In het begin van deze serie deden we dat. We gebruiken dan dus een programma om een programma in voor mensen leesbare tekens om te zetten naar een programma in voor de computer leesbare tekens. Maar je kan net zo correct zeggen dat we een tekstbestand omzetten naar een binair bestand, beide databestanden. Dat maakt niet uit, omdat de computer het verschil niet begrijpt tussen data en programma.

Ja, maar, in Linux hadden we toch het X bit dat aangeeft of een bestand een uitvoerbaar bestand is of niet? Klopt, goed onthouden. Maar dat is niet de CPU die dan aan het woord is. Linux zelf is immers ook weer een programma. Het is het programma dat tegen andere programma's zegt dat een bestand data bevat, of een programma. Voor de CPU doet dat er volstrekt niet toe!

Mooi dat we hierdoor programma's kunnen maken met een computer. Maar het betekent nog veel meer. Bijvoorbeeld dat we nooit weten wat we zien. Tenzij we daar afspraken over maken en die ook handhaven (zoals Linux met dat X bit). Menselijke afspraken. Die door mensen geprogrammeerde programma's handhaven.
Het betekent ook dat het voor fraudeurs en criminelen betrekkelijk eenvoudig is de computer ongewenste dingen te laten doen. De crimineel in kwestie hoeft immers slechts data in de computer te krijgen en de computer er dan op te wijzen dat die data eigenlijk een programma is. Computervirussen werken volgens dit mechanisme en de moderne hacker weet er op vele manieren weg mee.

Een slordige programmeur doet overigens ook al genoeg. Ooit had ik een spelletje waarbij je na enige tijd letterlijk het programma in vloog. De programmeur had er kennelijk geen rekening mee gehouden dat een speler het einde van de data zou bereiken en had dus niet voorkomen dat het programma zichzelf als data zou gaan lezen. Best slordig. Pijnlijker wordt het, als je in C op deze manier input, strings, geheugen (de)allocatie, et cetera net niet goed geregeld hebt in je betaalapp. 

Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

3 reacties

Ron Heinen

In mijn eerste reactie op deze #Klooienmetcomputers heb ik het Internet-Of-Things (IoT) aangehaald.

Zoals accountants weten is contactloos betalen ook een IoT applicatie. Op

https://www.welivesecurity.com/en/eset-research/ngate-android-malware-relays-nfc-traffic-to-steal-cash/

kun je hiervan een aardig voorbeeld vinden hoe je contactloos betalen succesvol kunt aanvallen en zo geld van de rekening van het slachtoffer kunt halen.

Ron Heinen

@Paul Stoele 20 augustus 2024

Citaat: "In de bijdrage van Ron Heinen trof ik aan: "De neuromorphe processors welke op dit moment in ontwikkeling zijn welke werken zoals de hersenen (...) ". Nu heb ik van de grootste hersenwetenschappers begrepen, dat de werking (!) van menselijke hersenen nog steeds een mysterie is. Moet ik daaruit concluderen dat computers onbegrijpelijke dingen gaan doen?"

Op de onderstaande linkjes kun je uitleg vinden van neuromorphic computing:

https://en.wikipedia.org/wiki/Neuromorphic_engineering

https://www.youtube.com/watch?v=eh2jlXMx7zg

In de reacties op

https://www.accountant.nl/achtergrond/2024/8/wat-alle-accountants-zouden-moeten-weten-over-computers/

heb ik ook wat achtergrond info gegeven.

In nieuwe ICT-Hardware zitten al AI-processors, zoals NPU's in de Apple computers. Deze NPU's zijn echter niet Turing complete.

De nieuwe neuromorphic processors welke gebaseerd zijn op de architectuur van onze hersenen zijn wel Turing Complete, zie bijvoorbeeld

https://dl.acm.org/doi/pdf/10.1145/3546790.3546806

Deze neuromorphic processors kunnen dus alle taken uitvoeren welke de huidige CPU's, GPU's en NPU's uitvoeren.

De neuromorphic processors zijn echter veel sneller en energiezuiniger als de huidige processors gebaseerd op de von-neumann architectuur.

Ron Heinen

Dit verhaal gaat op voor offline wasmachines. Voor online wasmachines is het verhaal al wat anders.

Om dit met een voorbeeld te illustreren kun je op de link

https://seclists.org/fulldisclosure/2017/Mar/63

een voorbeeld vinden hoe je een Miele wasmachine kunt hacken.

Als je veel van dit soort IoT devices tegelijk hackt kun je deze bijvoorbeeld ook gebruiken om aanvallen uit te voeren, bijvoorbeeld DDOS attacks, zie bijvoorbeeld

http://securityaffairs.co/wordpress/53588/malware/mirai-infection-test.html

Onderzoek naar de veiligheid van IoT devices kun je bijvoorbeeld vinden op

https://photos.app.goo.gl/jmtLf8jbcoe2rvDBA

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.