Security is bij informatiesystemen een steeds complexer en steeds belangrijker aspect. Steeds complexer omdat onze systemen complexer worden en de aanvallen geavanceerder. Dat laatste komt mede doordat er steeds meer geld te verdienen is met het inbreken in systemen en criminelen dus steeds meer kunnen investeren: hacken is een goed business model geworden! Hoe moeten we daarmee omgaan?
Tegenwoordig zijn er steeds meer kant-en-klare tools te koop waarmee iedereen, ook zonder dat hij een doorgewinterde hacker is, een serieuze aanval kan lanceren: als je voldoende geld te besteden hebt, kun je elke aanval in gang zetten met een botnet naar keuze.
Ongelijke strijd
Het is in principe een ongelijke strijd tussen de aanvallers en de verdediger: de verdedigers moeten alle gaten dichten, terwijl de aanvallers maar één weakness hoeven te vinden om binnen te komen. Als je daarbij meerekent hoeveel gaten software gemiddeld bevat, zie je al vrij snel dat de strijd heel moeilijk wordt voor de verdedigers.
En dan is er natuurlijk altijd nog de zwakste schakel, die je nooit helemaal kunt uitschakelen, namelijk: de mens. Zelfs als we ons een systeem voorstellen dat helemaal waterdicht is, dan kunnen aanvallers nog altijd proberen zich via Social Engineering toegang te verschaffen.
Eisen en wensen
Om in deze ongelijk strijd toch nog enige kans te maken, is het een absolute voorwaarde om security vanaf het begin mee te nemen in de ontwerpbeslissingen. Dat begint al met het in kaart brengen van de functionele eisen en wensen. Bij elke gewenste feature hoort meteen ook het gewenste beveiligingsniveau in termen van beschikbaarheid, integriteit en vertrouwelijkheid (biv). Als je dat namelijk niet weet, weet je ook niet hoe en wat je moet beveiligen. Hand in hand daarmee moet een threat-model opgesteld worden, zodat er een goed beeld ontstaat van de bedreigingen. Op basis hiervan kunnen dan stap voor stap de juiste ontwerpkeuzes gemaakt worden waarbij de security continu een rol speelt.
Tenslotte zijn goede standaarden van groot belang: secure coding moet bij elke developer een tweede natuur zijn geworden en de Owasp-top10 moet hij kunnen dromen. Ook bij de testen (geautomatiseerd als het even kan) moet de beveiliging voortdurend meegenomen worden, niet te vergeten de penetration tests.
Onder aan de streep is en blijft het allerbelangrijkste om de software te laten ontwerpen en bouwen door echte vakmensen die weten wat ze wel en niet moeten doen, waar de risico’s zitten en hoe ze die kunnen vermijden.