Vaak worden applicaties beveiligd met toegangscontrole, bijvoorbeeld door een firewall en gebruikers-id's. De beveiliging is in feite een schil om de applicatie heen, die moet voorkomen dat een hacker op de server terechtkomt. Als deze schil doorbroken wordt, is de hacker – in soms meer dan één zin – binnen. Beveiligingsdeskundige Lykle Schepers laat zien hoe het wél moet.
Ik was betrokken bij een pilot-project om verkiezingen via internet te testen. Daarbij viel het me op dat de beveiligingsaudit wél onderzocht of de schil en de fysieke beveiliging goed in elkaar zaten, maar in het geheel niet keek naar de interne structuur van de applicatie, of de manier waarop het geheel werkt.
Beveiliging kan veel meer zijn dan een schil. De beveiliging van een applicatie moet diep in de applicatie doordringen en ervoor zorgen dat men écht van veiligheid kan spreken. Dit is de techniek die ik heb toegepast bij het pilot-project. De pilot is goed verlopen en er zijn veel aanvallen gedaan maar niemand heeft een valse stem uit kunnen brengen.
Gelaagdheid
Er zijn verschillende methodes van beveiligen. Deze zijn grofweg onder te verdelen in de volgende gebieden: gelaagdheid, functionaliteit, vertraging en mentaliteit.
Met gelaagdheid bedoel ik het plaatsen van meerdere 'hekken' tussen de systemen. Als er een firewall gebruikt wordt om de toegang te beschermen, gebruik dan een ander type firewall om de data te beschermen. Plaats de data dan ook daadwerkelijk op een andere server. Zet nóóit de database met creditcardgegevens op een server die direct via internet kan worden benaderd.
Maar gelaagdheid kan ook bestaan uit het opsplitsen van een applicatie. Zo kan een orderinvoersysteem op één server draaien, terwijl de ordercontrole op een andere server draait. Als een hacker dan nóg het geheel wil misbruiken, moet hij alle servers tegelijk overnemen.
Functionaliteit
Beveiliging door middel van functionaliteit is wat lastiger uit te leggen en dit was de kern bij de beveiliging van de pilot. De applicatie controleerde zichzelf continu, er werden door de hele applicatie heen controles gedaan of hetgeen er gebeurde wel was toegestaan. Dit is mogelijk door het goed gebruik van een 'public key infrastructure', een pki.
De data zélf bevatten beveiligingsinformatie. Deze werden door de hele applicatie heen getoetst. Alleen als elke applicatie het precies goed deed en in de goede volgorde, kon een stem worden doorgegeven. Bedenk dat dit processen zijn waar je als gebruiker niet bij kunt komen, zelfs niet als 'super user' of iets dergelijks.
In elke applicatie zitten wel een paar kritieke stappen. Bouw functionaliteit in om die stappen op een andere plaats, en op een ander moment, te controleren. Zo is fraude in een vroeg stadium de kop in te drukken.
Vertraging
Als men een goed 'intrusion detection system' (ids) heeft, is het belangrijk om de hacker te vertragen. Hoe langer hij opgehouden wordt, hoe meer kans men heeft om te reageren op zijn pogingen en hem te stoppen.
De vertragingen kunnen worden veroorzaakt door meerdere lagen firewalls (zoals bij gelaagdheid beschreven), maar kunnen ook bestaan uit ingebouwde vertragingen in de applicatie zélf. Zo kan men bijvoorbeeld een vertraging inbouwen bij creditcardinformatie, mits de applicatie dat natuurlijk toestaat. Bijvoorbeeld: als een ip-adres wordt gebruikt om creditcardgegevens op te halen, mag de gebruiker vanaf dat adres een minuut of een uur lang niet nóg een keer informatie ophalen over een andere creditcard.
Mentaliteit
De mentaliteit van de gebruiker, van de administrator, de systeembeheerder en de manager zijn samen bepalend voor de algehele beveiliging van de applicatie. Als een gebruiker zijn wachtwoord op een geel memobriefje naast zijn terminal plakt, heeft de wachtwoordbeveiliging al bijna geen zin meer.
Als er met encryptie wordt gewerkt, zorg er dan voor dat de smartcard met de decryptiesleutel daadwerkelijk in de brandkast wordt opgesloten. Te vaak wordt de beveiliging ongedaan gemaakt door een slechte mentaliteit. Natuurlijk is dit niet bewust of moedwillig de beveiliging omzeilen, meestal is het gewoon een kwestie van niet nadenken. Leg in een vroeg stadium uit wat beveiliging is en hoe die uitgevoerd moet worden.
Integratie
De beste beveiliging zal gebruik maken van ál deze onderdelen. Door tijdens het ontwerpen van de applicatie rekening te houden met deze zaken, kan de beveiliging van een applicatie hoog worden opgeschroefd. Bovendien hoeft het, mits het in een vroeg genoeg stadium gebeurt, niet duur te zijn. Natuurlijk is een extra firewall duurder, maar vergeleken met de totale projectkosten, of de mogelijke schade, zijn de extra kosten te verwaarlozen.
Een applicatie goed beveiligen begint bij het ontwerp en loopt door tot en met het gebruik. De beveiliging zit in de applicatie, het netwerk, de dataopslag, de procedures en in de geest van de gebruikers. In het Engels is er een zeer mooie uitdrukking voor: 'pervasive security', wat zoveel zeggen wil als 'door en door beveiligen, overal'.< BR>
Lykle Schepers, Paradym