Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sichere authentifizierung (https://www.delphipraxis.net/73695-sichere-authentifizierung.html)

th_bone 22. Jul 2006 08:40


Sichere authentifizierung
 
Hi,

ich brüte gerade darauf herum wie ich ein gesichertes Login
über das Internet zu meinem Server herstellen kann..

meine IDEE ist folgende

Server kennt: Name, Passwort, Privates Passwort

1. Der Client sendet Name offen an den Server
2. Server sendet eine Zufallszahl verschlüsselt mit dem Passwort an den Client
3. Client sendet die Zufallszahl mit dem privaten Passwort verschlüsselt zurück
4. wenn die übereinstimmung vorhanden ist, ist das Login erfolgreich

Frage: Ist dieser Ansatz so sicher oder habe ich etwas übersehen ?

Danke Ralf

inherited 22. Jul 2006 08:50

Re: Sichere authentifizierung
 
wozu die beiden passwörter?

Client sendet 'wanttologin'
Server hat nur MD5-Hash des PW
Client Sendet sein MD5-Hash des eingegebenen PW.
Server vergleicht, wenn gleich, login ok, wenn nicht, dann nicht

th_bone 22. Jul 2006 09:05

Re: Sichere authentifizierung
 
Hi,

dann braucht man als Angreifer doch eigentlich nur den MD5Hash abfangen und kann
sich dann ebenfalls einloggen... ist im grunde ja nichts anderes als wenn Du
das Passwort offen sendest der MD5Hash ändert sich ja nicht.

ich weiß ist zwar theoretisch, aber mir geht es ja darum wie man ein
sicheres login hinbekommt..

cu

Ralf

Nikolas 22. Jul 2006 09:24

Re: Sichere authentifizierung
 
Eine Methode der digitalen Unterschrift läuft so ab: Du nimmst ein Verschlüsselungsverfahren mit Public/Private-Key.

Der User nimmt einen Text ('Hallo Server ich will Rein. Bob.) und verschlüsselt das mit seinem eigenen private Key. Dann nimmt er diesen verschlüsselten Text und verschlüsselt ihn nochmal mit dem public Key des Servers und schickt das dann weg.

Der Server bekommt das Teil und kann es als einziger lesen. Also macht er erstmal die Datei mit seinem eigenen Private Key auf. Dann nimmt er den public Key des Users und entschlüsselt die Datei. Wenn das Funktioniert und was sinnvolles drinsteht, weiss er, dass der Text nur von demjenigen erstellt wurde, der den Private Key von Bob hat.

Eigentlich reicht es auch Bob einfach nur einen Text mit seinem Private Key zu verschlüsseln und hinzuschicken. Die kann zwar dann jeder lesen, aber das stört ja auch nicht, da kein Passwort übermittelt wurde.

In dem Text der verschickt wird, sollte natürlich noch die Uhrzeit eingebacken sein, damit der Angreifer den Code nicht einfach mitschreibt und nachher benutzt. Oder der Server schickt offen eine Nachricht an Bob, die er doch bitte verschlüsseln soll.

Also das war vielleicht etwas verdeht, somit mein Vorschlag in Kurz:

Bob klopft an, Server schickt im offen irgendeinen schönen Text, Bob verschlüsselt ihn mit seinem private key und der Server öffnet sie einfach mit Bobs public Key. Das sollte dann ein sicheres Verfahren sein.

Basilikum 22. Jul 2006 09:29

Re: Sichere authentifizierung
 
ich würde mich eher an CRAM-MD5 anlehnen (Vorteil: keine asymetrischen Schlüssel notwendig):

1. Server sendet Client eine Nonce (irgend etwas einmaliges, z.B. Server-Name + Zeit + Zufallszahl)
2. Client hängt sein Kennwort an die Nonce, berechnet davon einen Hash (z.B. SHA1) und sendet diesen zum Server
3. Server kennt seine Nonce und das korrekte Client-Kennwort -> er kann den Hash ebenfalls berechnen -> wenn identisch, ist der Client authentifiziert.

gsh 22. Jul 2006 10:14

Re: Sichere authentifizierung
 
Zitat:

Zitat von Basilikum
ich würde mich eher an CRAM-MD5 anlehnen (Vorteil: keine asymetrischen Schlüssel notwendig):

1. Server sendet Client eine Nonce (irgend etwas einmaliges, z.B. Server-Name + Zeit + Zufallszahl)
2. Client hängt sein Kennwort an die Nonce, berechnet davon einen Hash (z.B. SHA1) und sendet diesen zum Server
3. Server kennt seine Nonce und das korrekte Client-Kennwort -> er kann den Hash ebenfalls berechnen -> wenn identisch, ist der Client authentifiziert.

hmm ja genau so wollte ich es auch vorschlagen aber dann hab ich den Post fertig gelesen und Basilikum war schneller als ich :(
naja aberwas ich noch sagen wollte für den Zufallswert brauchst du nicht sowas komliziertes wie z.B. Server-Name + Zeit + Zufallszahl sondern einfach sagen wir mal eine 10 stellige Zufallszahl ... mehr braucht man nicht.

Hab dieses System mal bei einem Chat von mir eingebaut und es funktioniert perfekt :thumb:

Zacherl 22. Jul 2006 10:17

Re: Sichere authentifizierung
 
Bei Chats, bei denen lediglich ein Passwort von Server verlangt wird und es keine Benutzer ansich gibt, ist es sinnvoller alle gesendeten Commands mit dem Passwort zu verschlüsseln. Kann der Server den Befehl nun lesen, ist gut und er weiß, dass das Kennwort stimmen muss. Wenn nicht, wird das Passwort falsch gewesen sein.

Florian

Nikolas 22. Jul 2006 10:23

Re: Sichere authentifizierung
 
Da ich mich nicht so mit modernen verschlüsselungsmethodenauskenne, wollte ich mal fragen, wie groß der geschwindigkeitsunterschied zwischen meiner und der Hash-Methode ist. Ich geh mal davon aus, das hashen schneller geht, aber kann das jemand bestätigen?

jfheins 22. Jul 2006 10:29

Re: Sichere authentifizierung
 
Zitat:

Zitat von Toxman
Bob klopft an, Server schickt im offen irgendeinen schönen Text, Bob verschlüsselt ihn mit seinem private key und der Server öffnet sie einfach mit Bobs public Key. Das sollte dann ein sicheres Verfahren sein.

Ich glaube, du hast da was verwechselt ... das wäre nämlich total unsicher, wenn man mit dem public-Key entschlüsseln könnte ...

Der private-Key ist zum Entschlüsseln und darf nie nicht weitergegeben werden.

Der public-Key ist zum Verschlüsseln, und den darf jeder sehen.

Verschlüsseln kann also jeder, entschlüsseln nur der, der den private-Key hat, also idealerweise nur der Empfänger ;)

Bei einer sichern Kommunikation sendet also jeder seine Nachricht verschlüsselt mit dem public-Key des Gegenüber ;)

Nikolas 22. Jul 2006 10:36

Re: Sichere authentifizierung
 
Nein, du hast das System nicht verstanden. Bei RSA z.B. kann man mit beiden schlüseln ent/verschlüsseln.

Hier geht es ja nicht darum, dass Bob was geheimes an den Server schickt, sondern, dass der Server weiss, dass nur Bob die Nachricht geschickt haben kann, denn er ist der einzige, der mit Bobs geheimen Schlüssel arbeiten kann. Bobs anfrage an den Server kann also von jedem gelesen werden, es ist aber sicher, dass er ihn geschickt hat.
Soll Bobs nachricht an den Server aber geheim bleiben, überschlüsselt er seinen Code noch mal mit dem Public des Servers.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz