Onlangs meen ik een manier bedacht te hebben om wachtwoorden van een website beveiligd te versturen zonder een https-verbinding. Wachtwoorden in een normaal webformulier worden namelijk 'gewoon' als tekst over lijn gestuurd, en kunnen dus onderschept worden (zo heb ik mij laten vertellen).
Mijn eerste idee was om het wachtwoord te versleutelen met bijv. MD5 (zie http://pajhome.org.uk/crypt/md5/ voor Javascript).
Dit levert nog geen hogere beveiliging op: de kwaadwillende kan immers gewoon het versleutelde wachtwoord gebruiken ipv het origineel. Maar wat als we aan het originele wachtwoord een timestamp toevoegen? Bijv. het aantal minuten van het huidige uur.
Dan krijgen we:
De timestamp kan natuurlijk geraden worden door de kwaadwillende, maar de 'gehashde' combinatie van wachtwoord+timestamp niet/nauwelijks. Aangezien het niet waarschijnlijk is dat een verzoek aan de server meer dan 1 seconden nodig heeft, is de kans klein dat de timestamp van de client en de server niet matchen (moeten beide systeemtijden natuurlijk wel gelijk lopen, maar dit is te calibreren met bijv. ajax)
Mijn vraag: is dit wiel al ettelijke malen uitgevonden? En: lijkt jullie dit een redelijk waterdicht systeem?
code:
1
2
3
4
| 1)
client | server (bijv PHP/MySql)
|
wachtwoord ---|---> match met wachtwoord |
Mijn eerste idee was om het wachtwoord te versleutelen met bijv. MD5 (zie http://pajhome.org.uk/crypt/md5/ voor Javascript).
code:
1
2
3
4
| 2)
client | server
|
wachtwoord --> wachtwoord md5 ---|---> match met wachtwoord md5 in database |
Dit levert nog geen hogere beveiliging op: de kwaadwillende kan immers gewoon het versleutelde wachtwoord gebruiken ipv het origineel. Maar wat als we aan het originele wachtwoord een timestamp toevoegen? Bijv. het aantal minuten van het huidige uur.
Dan krijgen we:
code:
1
2
3
4
| 3)
client | server
|
wachtwoord --> wachtwoord+timestamp md5 ---|---> match met wachtwoord+timestamp md5 in database |
De timestamp kan natuurlijk geraden worden door de kwaadwillende, maar de 'gehashde' combinatie van wachtwoord+timestamp niet/nauwelijks. Aangezien het niet waarschijnlijk is dat een verzoek aan de server meer dan 1 seconden nodig heeft, is de kans klein dat de timestamp van de client en de server niet matchen (moeten beide systeemtijden natuurlijk wel gelijk lopen, maar dit is te calibreren met bijv. ajax)
Mijn vraag: is dit wiel al ettelijke malen uitgevonden? En: lijkt jullie dit een redelijk waterdicht systeem?