Posts tonen met het label software. Alle posts tonen
Posts tonen met het label software. Alle posts tonen

donderdag 12 januari 2012

Programma's ontwerpen: Veiligheid als principe


“But who does hawk at eagles with a dove?”
                                                            - C. Herbert
Veiligheidslekken zijn aan de orde van de dag en bedrijfsoplossingen zijn geen uitzondering op de regel. Maar wat verstaan we onder veiligheid als het aankomt op industriële oplossingen? En nog belangrijker; hoe nemen we beveiliging mee in het ontwerp?
Er zijn 4 facetten van veiligheid in de software ontwikkeling:
-       integriteit van informatie
-       zichtbaarheid van informatie
-       structurele mechanismen en hun robuustheid
-       omgeving en ecologische omstandigheden.
Wanneer we met informatie werken, willen we dat deze informatie niet corrupteerd. Dat wil zeggen dat gegevens niet onbeheersbaar aangepast zouden mogen worden, vooral wanneer er privacy gevoelige informatie gebruikt wordt door de oplossing. Wanneer de database bijvoorbeeld niet goed wordt afgeschermd kan het drastische gevolgen hebben, zoals diefstal en/of verlies van gegevens.
Ook willen we niet dat informatie kan worden ‘afgeluisterd’ dan de bestemde kanalen. De transmissie van gegevens kan misbruikt worden door relatief eenvoudige methoden, maar ook de informatie die in bestanden worden opgeslagen zijn een veiligheidsgevaar.
Soms zijn er briljante oplossingen met technische mechanismen, die niet getest worden op misbruik; per ongeluk ontdekt men opeens dat ongewenste resultaten mogelijk zijn met desastreuze gevolgen van dien. De robuustheid van de oplossing valt van een degelijk en goed product neer op de harde bodem van onbetrouwbaar.
Als laatste aspect zijn er van allerlei adders in het gras waar je als ontwerper geen controle over hebt: het systeem en platform waar de oplossing zich in bevind. Een slecht afgebakend systeem is als een programma vol veiligheidslekken, en omdat je oplossing werkt als een subproces op dat systeem, betekent dat het moederproces hogere toegangsrechten kent dan de eigen oplossing.
Nu is informatiebeveiliging een vak op zichzelf, maar zou iedere ontwerper vanaf het begin af aan een aantal principes moeten toepassen. Naast het inlichtingen inwinnen van een deskundige, is het goud waard om het Sam Rain Security Principe ten harte te nemen.
Het Sam Rain Security Principe
1.     als je het systeem niet vertrouwd, is je applicatie ook niet te vertrouwen. (iedere ‘hacker’ wilt de hoogste systeemprivileges, voor totale controle)
2.     vertrouw geen enkele  invoer van een gebruiker dat informatie is voor de database en met name speciale symbolen. (databases hebben een eigen programmeeromgeving en doen geen speciale controles op aanvragen en commando’s)
3.     gebruik gegevensversleuteling (encryptie) voor het versturen en ontvangen van gevoelige informatie, zoals inlogprocedures (informatie over een netwerk vliegt in het rond en kan opgevangen worden)
4.     laat een oplossing gestress-test worden door een deskundige. (laat niets aan toeval over, een productie oplossing is moeilijk stil te leggen voor een plakband en nietjes oplossing)
5.     vertrouw geen enkele gebruiker, alleen een beheerder voor onderhoud geniet hoge privileges, werk met rollen en verantwoordelijkheden (directeuren en managers zijn zelden techneuten, maar altijd mensen).
Om een boekje open te doen: de meeste industriële software die ik ‘ontworpen’ heb zien worden sloegen óf deze punten over óf namen deze niet serieus óf schoven deze zover vooruit dat het te moeilijk was om alsnog te realiseren. *kuch* banken, *kuch* overheden, *kuch*’specialisten’.

Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave voor alle artikelen!
©SamRain
Veiligheid

zaterdag 26 november 2011

Computer Psychologie: het werkgeheugen begrijpen


“Zonder geheugen onthouden wij niets; computers zijn geen uitzondering”
                                                                                                                 - Sam Rain
Het werkgeheugen van computers zijn voor non-techneuten een dik mistgordijn; ‘hoe meer, hoe beter’, zegt men. Wanneer men veel programma’s start, lijkt de computer in snelheid af te nemen – maar waarom? En hoe werkt het ongeveer?
Over het algemeen is het gemakkelijker te herinneren wat er vandaag gebeurd is dan twee jaar geleden. Het ‘werkgeheugen’ wordt jammer genoeg vaak vergeleken met het korte termijn geheugen van de mens. Het ‘werkgeheugen’ is namelijk het enige geheugen wat een computer ter beschikking heeft; een harde schijf of USB-stick zijn voor een computer slechts een opslagmedium; ze dragen gegevens en worden misplaatst ‘geheugen’ genoemd. Wanneer een programma wordt ‘gestart’ dan laden de gegevens zich in het werkgeheugen, zodat het uitgevoerd kan worden door de processor; wanneer het programma is beëindigd, wordt dit ‘gereserveerde’ geheugen vrijgegeven.
Omdat het werkgeheugen bestaat uit chips die zonder spanning terugvallen in neutrale staat, is het ongeschikt als permanente gegevensdrager. Tevens is het ook onhandig omdat er vaak meer programma’s beschikbaar zijn dan werkgeheugen en het gebruik van chips die permanente gegevens wel kunnen dragen vele malen trager zijn.
De manier hoe het werkgeheugen wordt gebruikt door de computer is voor velen ook een raadsel; buiten dat het ‘nodig’ is komen de meeste non-techneuten niet. Dat is niet raar; de techniek is met de jaren steeds complexer geworden en net als de processor is het gebruik van het werkgeheugen steeds efficiënter geworden; toch blijft de mechaniek ongeveer hetzelfde. Het werkgeheugen bestaat uit een reeks van chips, welke fysiek gegevens kunnen bevatten. Omdat er heel veel gegevens in het fysieke werkgeheugen passen, is het voor de processor een inefficiënte taak om per cyclus het werkgeheugen in zijn geheel te doorlopen. Om deze reden deelt de processor het werkgeheugen in gelijke delen en geeft ieder deel een uniek nummer (‘geheugenadres’). Wanneer er een programma gestart wordt, dan worden de instructies en gegevens in deze delen geplaatst. Zo hoeft de processor niet al het werkgeheugen af te lopen, maar enkel naar het ‘geheugenadres’ te springen. Wanneer er een fout optreedt in het programma, geeft het systeem meestal een melding; het mystieke getal is dan vaak het geheugenadres en de inhoud ervan.
Naarmate het werkgeheugen voller raakt, kost het de processor meer tijd om het programma te vinden, waardoor het zelfs vele cycli kan kosten. Uiteraard gaat dit gepaard met een verminderde verwerkingssnelheid van de computer. Soms draait er slechts één programma, terwijl het vrij beschikbare geheugen afneemt zonder aannemelijke reden; er is dan sprake van een ‘geheugenlek’ – een instructie die een fout bevat en gegevens plaatst in een nieuw deel. Na verloop van tijd is het systeem niet alleen trager geworden, maar kan zelfs resulteren in een abrupte halt (‘crash’); het werkgeheugen is te vol. Het is daarom een zeer belangrijke taak om over voldoende werkgeheugen te bezitten; vooral wanneer men werkt met programma’s die uitgebreide functionaliteit bezitten of veeleisende taken moeten uitvoeren. Leveranciers van software vermelden daarom een minimaal beschikbaar vrij werkgeheugen en een aangeraden hoeveelheid; dit is omdat werkgeheugen vaak verschilt bij computer fabrikanten.
Het werkgeheugen is natuurlijk veel gecompliceerder in de praktijk; echter is daarvan de kennis alleen praktisch voor hen die de mouwen willen oprollen om de naald in de geheugenchipberg te vinden.

Meer lezen? Klik hier voor de inhoudsopgave voor alle artikelen!
©SamRain
Werkgeheugen