Hallo zusammen,
nur eine kurze Frage ob ich hier nicht eventuell auf dem Schlauch stehe.
Ich hätte gerne eine Verbindung mit einem uC über TCP/IP hergestellt.
Als Protokoll wollte ich simples xml über http nehmen, und ein Login
sollte in etwa so aussehen:
1 | <login>
|
2 | <name>hans</name>
|
3 | <pass>wurst</pass>
|
4 | </login>
|
(denkt euch das HTTP 1.1 GET Zeugs einfach dazu!)
Nun möchte ich aber das Passwort nicht im Klartext über die Leitung
schicken https aber ist für einen uC schwierig.
Schicke ich den Passworthash über die Leitung bin ich leider anfällig
für eine Replay-Attacke (jemand der alles mitsnifft und dann genauso
nochmal abspielt!).
Mein momentaner Ansatz wäre dass Client und Server gemeinsamen einen
Diffie-Hellman-Schlüsselaustausch durchführen, damit auf eine gemeinsame
Zahl kommen die NICHT über die Leitung geht.
Mit dieser gemeinsamen Zahl könnten beide das ihnen bekannte
Klartext-Passwort (wurst) XORen, und danach mit BASE64 noch in einen
Zeichensatz umwandeln der über die Leitung geht.
Als Alternative würde mir noch einfallen (Security by Obscurity) dass
zwar direkt der Passworthash über die Leitung geschickt wird, davor aber
noch mit irgendeinem sowieso bekannten Geheimniss vermatscht wird (z.B.
IP-Adresse des Clients).
Das ist etwas unkomplizierter als ein Diffie-Hellman, aber natürlich
auch deutlich unsicherer.
(wobei 100% Sicherheit definitiv NICHT nötig ist in meinem
Anwendungsfall. Es sollte nur nicht absolut lächerlich offensichtlich
unsicher sein!)
Fällt euch eine einfache Lösung ein wie zwei Parteien, die ein Passwort
jeweils im Klar-, und Geheimtext kennen, sich bestätigen können dass dem
so ist, ohne dass jemand der auf der Leitung mitsnifft einfach genau die
gleiche Konversation wieder durchführen kann und somit auch wieder die
gleichen Rechte hat?
Mfg,
Thomas