Er zijn 3 veel voorkomende soorten situaties ivm wachtwoorden:
- checken of iemand toegang krijgt adhv zijn wachtwoord.
- toegang geven tot gegevens die met een wachtwoord versleuteld zijn.
- toegang verkrijgen tot een dienst door een wachtwoord op te sturen bij het inloggen.
1. Check inkomende toegang
De eerste situatie is het gemakkelijkst op te lossen: de gebruiker heeft een toepassing draaien, waarmee hij wil gebruik maken van een dienst.
Je zou die toepassing het wachtwoord kunnen laten controleren, en daarop toegang geven. Maar dan moet je het wachtwoord van die gebruiker sturen. Dat is dus slecht: je stuurt een wachtwoord onnodig over het netwerk, en je hebt blindelings vertrouwen in de “client” applicatie die dat vraagt. Die client-applicatie kan vals zijn (en zo een wachtwoord opvragen van een gebruiker). Bewaak nooit een poort door als ze buiten kloppen, te roepen “Is het wachtwoord Schild en Vriend?”, en te openen als ze “ja” antwoorden.
Het nuttige van dit voorbeeld is dat je het moet omdraaien:
De client stuurt de server of de basisapplicatie het wachtwoord, en daar beslis je dan of het juist is of niet, en of er toegang gegeven wordt.
De waarschijnlijk meest voorkomende encryptie-manier is MD5. Het gebruik ervan betekent dat je bij het maken van het wachtwoord, dat omrekent naar een MD5-waarde. Die MD5-waarde sla je op.
Als een gebruiker inlogt, geeft hij het wachtwoord, dat alleen maar gebruikt wordt om een MD5 waarde van te berekenen; als die overeenkomt met de opgeslagen waarde is het ok. Voordeel is dat op het moment van het geven van het wachtwoord, dat niet opgeslagen hoeft te worden.
Voorbeeld met MD5 met prefix (salt):
Zet de Project, Properties, Components gb.crypt aan
DIM s AS String
s = Crypt.MD5(InputBox("Set administration password: ", "New installation - set password"), "SpecialP")
De prefix “SpecialP” moet je ook zo mogelijk voor bv meer gebruikers verschillend maken. Je moet die wel bij de hand hebben om een vergelijkings-md5 te maken!
Maar op het netwerk sniffen wordt zo niet vermeden. Dus ideaal zou zijn om het doorsturen van het wachtwoord tussen client en server ook te versleutelen, zodat iemand die het netwerk afluistert, daar ook geen toegang toe krijgt.
2. ….
3…..