Human Factors op het Internet

Ed Oomes, 11 oktober 2016

Eind september 2016 werd er op Facebook een virus ontdekt dat zich letterlijk als een infectie verspreidde en waar in korte tijd meer dan 800.000 computers mee besmet raakten. Of het trouwens echt een virus was of andere malware weet ik niet. Mijn technische kennis op dat vlak strekt niet heel ver. Ik had er zelf geen last van, maar verbaasde me zowel over de snelheid waarmee het virus zich kennelijk verspreidde, als over de listigheid waarin het verpakt zat.

Gebruikers kregen namelijk een berichtje van een vriend of een kennis met teksten als ‘Look at this video!’ of ‘OMG, I can’t believe this’. Zodra ze op de link klikten die naar de beloofde video moest leiden, installeerde zich malware op hun computer die er onder andere voor zorgde dat de inmiddels besmette computer ook lokberichten naar hun eigen vrienden ging sturen. Zie daar dus waarom het zo snel ging met dat virus: het kwam uit onverdachte hoek.

computervirusNou zijn er natuurlijk heel veel mensen die gaan roepen dat het ook stom is om op zulke links te klikken. Daar zitten vaak onderliggende aannames bij over domme gebruikers en eigen schuld, dikke bult. “Moet men maar een beetje cyber security awareness opdoen, dan was het niet gebeurd.”

Wat een foute gedachte is dat!

Don’t blame the victim. Als je werkt in een virtuele ruimte waarin het de bedoeling is dat je op links klikt, dan is er geen beginnen aan om mensen te leren alleen maar op sommige, veilige links te klikken. Want hoe kan je weten welke links wel of niet in orde zijn? En al helemaal als er moedwillig mensen in de val worden gelokt.

Tijd dus voor de human factors benadering op het internet.

Bruce Schneier is gerespecteerd internetsecurity deskundige en hij omschreef de human factors als volgt:

“The problem isn’t the users: it’s that we’ve designed our computer systems’ security so badly that we demand the user do all of these counterintuitive things. Why can’t users choose easy-to-remember passwords? Why can’t they click on links in emails with wild abandon? Why can’t they plug a USB stick into a computer without facing a myriad of viruses? Why are we trying to fix the user instead of solving the underlying security problem?”

Schneier stelt hier eigenlijk de vraag over de vergevingsgezinde infrastructuur. Als je weet dat mensen feilbaar zijn en dus fouten maken, dan moet je een ‘foolproof’ systeem ontwikkelen waarmee je de kans op fouten verkleint en het effect van fouten beperkt. Dan moet je gaan denken aan de Safe Systems approach en aan high reliability organizing (HRO) zoals in de safety wereld al steeds vaker gebeurt. Maar die denkwijzen zijn niet louter gebonden aan het safety domein. Ook andere vakgebieden zouden zich moeten buigen over human factors, zoals de computer industrie en internet software ontwikkelaars. Nogmaals in de woorden van Bruce:

“We must stop trying to fix the user to achieve security. We’ll never get there, and research toward those goals just obscures the real problems. Usable security does not mean ‘getting people to do what we want.’ It means creating security that works, given (or despite) what people do. It means security solutions that deliver on users’ security goals without­ — as the 19th-century Dutch cryptographer Auguste Kerckhoffs aptly put it­ — “stress of mind, or knowledge of a long series of rules.”

auguste-kerckhoffsAuguste Kerckhoffs

De human factor benadering voor internet is geen overbodige luxe.

In de nabije toekomst al zullen de kennisverschillen tussen gebruikers en ontwikkelaars steeds verder uit elkaar gaan lopen.

Het verschil tussen de jagers en de prooi neemt toe. Het wordt dus technisch gezien steeds makkelijker om mensen in de val te lokken, want de gemiddelde gebruiker zal nooit de benodigde cyber security awareness kunnen bijhouden die noodzakelijk is om weerstand te bieden aan boeven op het net. Al helemaal niet als je beseft dat de mens van nature nieuwsgierig is, zich liefst in groepen met vrienden en gelijkgestemden beweegt, dol is op koopjes en roddels en graag die unieke truc of oplossing vindt, die iedereen wil hebben. Kortom, de human factor zal zich altijd laten verleiden tot clickbaits en andere lokmiddelen en die mogen geen catastrofale gevolgen hebben. Repressieve en recovery maatregelen raken een keer uitgeput, er is echt een noodzaak tot een andere manier van denken, een paradigma shift.

Schneier nog een keer: “We owe it to our users to make the Information Age a safe place for everyone — ­not just those with security awareness.”

Dat is human factors op het internet.

Gelukkig zijn er ook al best mensen die vanuit de vergevingsgezinde infrastructuur op internet denken. Zoals Hermann Kopetz, emeritus hoogleraar computerdingen met een specialisatie in fout tolerante systemen.

Hij verzon de 15 geboden voor veilige software.

commandmentsDie citeer ik hier graag als afsluiting voor de liefhebber:

  1. Thou shalt regard the system safety case as thy tabernacle of safety and derive thine critical software failure modes and requirements from it.
  2. Thou shalt adopt a fundamentally safe architecture and define thy fault tolerance hypothesis as part of this. Even unto the definition of fault containment regions, their modes of failure and likelihood.
  3. Thine fault tolerance shall include start-up operating and shutdown states
  4. Thine system shall be partitioned to ‘divide and conquer’ the design. Yea such partitioning shall include the precise specification of component interfaces by time and value such that  all manner of men shall comprehend them
  5. Thine project team shall develop a consistent model of time and state for even unto the concept of states and fault recovery by voting is the definition of time important.
  6. Yea even though thou hast selected a safety architecture pleasing to the lord, yet it is but a house built upon the sand, if no ‘programming in the small’ error detection and fault recovery is provided.
  7. Thou shall ensure that errors are contained and do not propagate through the system for a error idly propagated  to a service interface is displeasing to the lord god of safety and invalidates your righteous claims of independence.
  8. Thou shall ensure independent channels and components do not have common mode failures for it is said that homogenous redundant channels protect only from random hardware failures  neither from the common external cause such as EMI or power loss, nor from the common software design fault.
  9. Thine voting software shall follow the self-confidence principle for it is said that if the self-confidence principle is observed then a correct FCR will always make the correct decision under the assumption of a single faulty FCR, and only a faulty FCR will make false decisions.
  10. Thou shall hide and separate thy fault-tolerance mechanisms so that they do not introduce fear, doubt and further design errors unto the developers of the application code.
  11. Thou shall design your system for diagnosis for it is said that even a righteously designed fault tolerant system my hide such faults from view whereas thy systems maintainers must replace the affected LRU.
  12. Thine interfaces shall be helpful and forgive the operator his errors neither shall thine system dump the problem in the operators lap without prior warning of impending doom.
  13. Thine software shall record every single anomaly for your lord god requires that every anomaly observed during operation must be investigated until a root cause is defined
  14. Though shall mitigate further hazards introduced by your design decisions for better it is that you not program in C++ yet still is it righteous to prevent the dangling of thine pointers and memory leaks
  15. Though shall develop a consistent fault recovery strategy such that even in the face of violations of your fault hypothesis thine system shall restart and never give up.