Vertrouwd ontwerp
Categories:
Beveiligingsarchitectuur en ontwerpprincipes
De drie beveiligingsaspecten en beveiligingsontwerpprincipes
- Integriteit (Integrity)
- Beschikbaarheid (Availability)
- Vertrouwelijkheid (Confidentiality)
Open ontwerpprincipe
Open Design
- Het ontwerp mag geen geheim zijn; een open ontwerp is veiliger.
- Veiligheid is niet afhankelijk van geheimhouding.
Fout-veilige standaardprincipe
Fail-safe defaults
- Toegangsbeslissingen zijn gebaseerd op ’toestaan’, niet op ‘weigeren’.
- Standaard wordt toegang niet toegestaan; beveiligingsmechanismen worden alleen gebruikt om toegestane toegang te identificeren.
- Fout-veilig: elk complex systeem moet een noodbeveiligingsmechanisme hebben voor het geval van functionele uitval. Bovendien moet men voorzichtig zijn met foutberichten en logs om informatielekken te voorkomen.
- Standaard veilig: het systeem moet in de beginstatus standaard een veilige configuratie hebben, met het gebruik van het minimum aantal systemen en diensten om maximale beveiliging te bieden.
Principe van machtsscheiding
Separation of Privilege
- Een beveiligingsmechanisme dat twee sleutels nodig heeft om te ontgrendelen, is robuuster en flexibeler dan een dat er één nodig heeft.
- Doel van machtsscheiding
- Voorkomen van belangenconflicten en misbruik van individuele macht
- Verdelen van een belangrijke macht in meerdere machtigingen, zodat het moeilijker is om beveiligde objecten illegaal te verkrijgen, en daardoor veiliger.
- Scheiden van verantwoordelijkheden tussen verschillende processen
Het systeem kan standaard 3 rollen instellen, met onderling onafhankelijke systeemaccountrechten en gescheiden verantwoordelijkheden:
- Systeembeheerder: verantwoordelijk voor dagelijks gebruikersbeheer en configuratiebeheer.
- Beveiligingsbeheerder: verantwoordelijk voor het activeren en deactiveren van gebruikersstatus en beveiligingsconfiguratie.
- Beveiligingsauditeur: verantwoordelijk voor het auditloggen van de activiteiten van de voorgaande twee, en heeft de bevoegdheid om logs te exporteren, waardoor alle acties van gebruikers in het systeem traceerbaar zijn.
Principe van minimale bevoegdheid
Least Privilege
- Elke gebruiker en elk programma in het systeem moet de kleinste en noodzakelijke rechtenset gebruiken om zijn werk te kunnen doen.
- Zorg ervoor dat toepassingen met de laagst mogelijke rechten worden uitgevoerd.
- Bij het uitvoeren of verbinden van diverse programma’s zoals databases en web-servers, moet worden gelet op het gebruik van het account met de laagste rechten, niet het account met de hoogste systeemprechten.
- Bij het aanmaken van een nieuw account standaard het account met de minste rechten toekennen.
Principe van economisch gebruik
Economy of Mechanism
- Houd het systeemontwerp en de code zo eenvoudig en compact mogelijk.
- Hoe complexer softwareontwerp, hoe groter de kans op bugs in de code; als het ontwerp zo elegant mogelijk is, is de kans op beveiligingsproblemen kleiner.
- Verwijder overbodige code en functiemodules; het behouden van deze code verhoogt alleen het aanvalsoppervlak van het systeem.
- Ontwerp herbruikbare componenten om overbodige code te verminderen.
- Economisch geschikt: eenvoudig, elegant, gemoduleerd.
- Niet te veel ontwerpen
Principe van minimale gemeenschappelijkheid
Least Common Mechanism
- Vermijd zoveel mogelijk scenario’s waarin meerdere objecten dezelfde bron delen; het aantal en het gebruik van gedeelde bronnen moeten zo klein mogelijk zijn.
- Gedeelde objecten bieden een potentieel gevaarlijke kanaal voor informatiestromen en onbedoelde wisselwerking; probeer zoveel mogelijk scenario’s te vermijden waarin meerdere objecten dezelfde bron delen.
- Als een of meer objecten niet tevreden zijn met de dienst die wordt geboden door het gedeelde mechanisme, kunnen ze ervoor kiezen om het gedeelde mechanisme helemaal niet te gebruiken, om indirecte aanvallen door bugs van andere objecten te voorkomen.
- Minimaliseer het gebruik van gedeeld geheugen
- Minimaliseer poortbinding
- Verminder connecties, verdedig tegen Dos-aanvallen
Principe van volledige bemiddeling
Complete Mediation
- Het principe van volledige bemiddeling vereist dat elke toegang tot elk object door een beveiligingscontrole moet worden gecontroleerd.
- Wanneer een subject probeert toegang te krijgen tot een object, controleert het systeem elke keer of het subject de bevoegdheid heeft.
- Geef zoveel mogelijk de beslissing over toegangscontrole aan de eigenaar van de bron, bijvoorbeeld bij een URL controleert de backendserver, niet de frontend.
- Let speciaal op het gebruik en de controle van cache; het is niet zeker dat elke keer dat er wordt gecached de informatie niet is gemanipuleerd door hackers. Bijv. DNS-cachemanipulatie.
Principe van psychologische acceptabiliteit
Psychological Acceptability
- Beveiligingsmechanismen kunnen extra belasting voor gebruikers vormen, maar deze belasting moet minimaal en redelijk zijn.
- Beveiligingsmechanismen moeten zo gebruikersvriendelijk mogelijk zijn voor systeemgebruikers, zodat zij het systeem gemakkelijk kunnen gebruiken en begrijpen.
- Als de configuratiemethode te complex en omslachtig is, kan de systeembeheerder per ongeluk een verkeerde optie configureren, waardoor het systeem juist onveiliger wordt.
- Dit principe heeft meestal betrekking op mens-machine interactie en UCD (User Centered Design) interfaces.
Principe van verdediging in diepte
Defense in Depth Verdediging in diepte is een allesomvattend en zeer hoge eisende verdedigingsprincipe. Over het algemeen moet de systeemarchitect de diverse andere beveiligingsontwerpprincipes combineren en meerdere, meervoudige beveiligingscontrolemechanismen gebruiken. Hij moet vanuit het oogpunt van systeemarchitectuur een hoogwaardige, systeembrede beveiligingsverdedigingsmechanisme in acht nemen, in plaats van afhankelijk te zijn van een enkel beveiligingsmechanisme.