Door Anoniem
Unix, Windows.... het velig ontwikkelen van applicaties heeft niets
te maken
met het onderliggende platform.
Wanneer men iets ontwikkeld behoort de applicatie zelf veilig te
zijn. Met
andere woorden; Beveiliging begint bij de applicatie en niet bij het
platform.
FOCUS.......
IK zeg maar een ding :
een glazen huis met titanium deuren en sloten, hoe veilig voel je
je dan ?
Het begint juist bij het OS.
API oftewel application programming interface zijn de
verbindingskanalen tussen OS en applicaties.
Je kan niets direct bereiken, dat doe je juist via het Operating
Systeem. Dat zorgt er onder andere voor dat indien zo
geschreven dat een multitasking OS meerdere applicaties kan
draaien ( in de vorm van processen en threads).
Je moet threads een beetje zien als dat een programma in stukjes
is gehakt. Als je twee van deze programma's hebt, kun je ze met
elkaar verweven en lijkt het alsof ze allebei tegelijk worden
uitgevoerd. In werkelijkheid om de beurt natuurlijk, alleen heel
erg snel.
Let wel, Dit is simpel gesteld en alleen bedoel om een idee te
geven.
Als twee applicaties rechtstreeks naar de hardware konden
schrijven gaat het helemaal fout. bijvoorbeeld als twee applicaties
tegelijk naar de harde schijf willen schrijven. De data op je harde
schijf zou corrupt kunnen raken.
Daarom vraagt een applicatie als het ware aan het OS en deze
voert de opdrachten dan uit mits deze opdrachten binnen
toegelaten grenzen zijn( gesteld door het OS).
Het OS spaart al die aanvragen op en voert ze dan achter elkaar
uit afhankelijk van wie de hoogste prioriteit heeft.
Dat heet bijvoorbeeld een qeue (wachtrij).
Dit is ook even heel simpel gesteld.
Als twee applicaties tegelijk willen printen geldt hetzelfde verhaal.
Daar is de printerspooler service spoolsv.exe verantwoordelijk
voor onder windows NT.
Ga er maar van uit dat het eigenlijk voor alle hardware geldt.
Je benadert nooit de hardware rechtstreeks maar via het OS.
Dit zodat de het OS de baas is.
Geheugenbeheer (Uitgevoerd door het OS) is bedoeld zodat een
gegeven applicatie niet in niet voor die applicatie toegewezen
adres ruimte ( Bepaald door het OS) in het geheugen kan
schrijven of lezen.
Dit alles om je een idee te geven dat je computer heel veel
tegelijk kan. Nu komt nog het veiligheid aspect om de hoek kijken.
De principes die ik hierboven noemde lenen zich namelijk om te
bepalen wie wat mag en wie niet. En dat geldt ook voor
"security".
Nogmaals omdat het OS namelijk de touwtjes in handen heeft.
Dus een goed geschreven OS is wel degelijk een eerste vereiste.
Nogmaals, dit is heel simpel gesteld. In de praktijk is het nog een
stuk complexer.
Nog iets anders :
Als een applicatie van begin af aan al te veel mag door de
schrijver van het os kun je dit os nooit echt veilig noemen en dit is
lijkt het toch het geval bij windows.
NT is uitgedacht met het concept voor meerdere bebruikers, het is
alleen fundamenteel anders gedaan dan bij unix, linux en andere
unix derivaten...
Al het simpele feit dat microsoft ervoor heeft gekozen om een deel
van de gui in de windows nt kernel onder te brengen zorgt voor
veel ergenis. Microsoft heeft hier toendertijd voor gekozen omdat
ze een snel systeem wilden presenteren op beperkte hardware.
Dit klinkt enigzins vreemd door de flinke hardware eisen die
windows tegenwoordig graag ziet, maar dat komt meer door al de
rommel die bij windows standaard wordt meegeleverd en
waarvan je een hoop niet kunt de-installeren en vaak ook nooit
zal gebruiken of slechts een deel. Bijvoorbeeld een tiental
kilobytes van een DLL die een paar megabyte groot is. Of services
laten draaien die je niet gebruikt. Als je bijvoorbeeld geen UPS
hebt hoef je deze service ook niet te draaien. Je gebruikt de
service niet maar de service wordt wel geladen. Een setup die
gewoon vraagt wat je wil gebruiken en wat niet zou veel beter
zijn. Scheelt schijfruimte en geheugen ruimte.
En ook neemt de veiligheid toe. Ik geloof dat sinds windows xp
service pack 2 (pin me hier niet op vast) services die remote
diensten leveren worden uitgeschakeld.
Een gestripte windows NT raast behoorlijk en werkt gewoon
lekkerder.
Veel programma's en diensten geleverd door microsoft gebruiken
dll-en services die juist weer veel rechten nodig hebben om te
draaien. En daar zit het grootste probleem van microsoft en dat is
ook de reden waarom patches van microsoft ook vaak zoveel
bijwerkingen hebben en waarom microsoft zoveel tijd nodig heeft
voor patches. Enerzijds is het een commerciële afweging omdat
het heel veel tijd kost om uit te zoeken en anderzijds als er een
patch komt kost het gewoon veel tijd om te testen.
Als de GUI (Graphical User Interface) los van de kernel zou
draaien zoals bijvoorbeeld bij unix systemen is er natuurlijk wat
meer communicatie nodig onderling. Hier was toendertijd niet voor
gekozen door microsoft wegens performance redenen. Misschien
dat ook iets te maken heeft met de gekozen opzet.
Het heeft geen zin om Unix nu af te kraken als traag omdat toen
unix geschreven en bedacht werd iedere byte er een teveel was.
Dus werd er ook gekozen voor applicaties die het werk deden en
niet voor een resources verslindende gui.
Tegenwoordig (Denk de laatste 8 jaar) hebben we zoveel
rekenkracht en geheugen ruimte (Kostbaar RAM) dat het allemaal
niet meer uit maakt. De GUI los van de kernel geeft echter wel
nog steeds voordelen. Als je deze niet nodig hebt hoef je het ook
niet te draaien en verspil je weer minder resources. Ook kun je
gui zoveel rechten geven als nodig. En als je kijkt naar de meeste
patches van microsoft dan zit daar het probleem. Slordig
programmeer werk zorgt voor het benutten van bufferoverflows.
Waarmee je dan weer een stukje code meer rechten kunt geven.
Namelijk de rechten die de gui heeft of een onderdeel daarvan.
En een aantal services hiervan behoren tot de account SYSTEM.
Dit account heeft meer rechten dan het administrator account en
dat komt omdat de systeem diensten van de NT kernel hier toe
behoren en deze zijn god in windows NT.
Iedere besturingssysteem heeft afhankelijkheden maar bij nt krijg
je soms toch nog het windows uit het dos tijdperk gevoel en dat
is jammer. Of unix superieur is aan nt, unix bestaat al veel langer
en heeft dus een voordeel. Ook is unix niet met een commerciële
gedachtegang geschreven. Unix was niet bedoeld voor de massa
maar voor kwaliteit en stabiliteit en betrouwbaarheid. NT was
bedoeld om te verkopen en is door de makers nooit bedoeld om
net zo betrouwbaar te wezen als unix. Ik vind het jammer maar
dat is het verschil tussen unix en nt. Hier kun je niets aan
veranderen, alleen microsoft zelf...
Begrijp me niet verkeerd, NT is zeker niet slecht. Er zijn alleen
vele wegen naar Rome. Sommige beter dan andere.
ALG