Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Sichere Abfrage Passwort Client -> Server (https://www.delphipraxis.net/186647-sichere-abfrage-passwort-client-server.html)

Martin W 19. Sep 2015 11:40


Sichere Abfrage Passwort Client -> Server
 
Hi,

ich möchte für den Login mit Hilfe eines Benutzernamens + Passwort einer Client/ Serveranwendung ein möglichst hohes Maß an Sicherheit erreichen. Alternative Methoden, z.B. mit Zertifikaten, seien hier außen vor gelassen.

Als Idee habe ich folgende Möglichkeit ermittelt:

Passwort speichern
  • Password wird durch den Nutzer auf dem Client eingegeben
  • Password wird auf dem Client mit Hilfe von BCrypt + Random Salt [Salt-1] in "Hash" umgewandelt
  • Hash wird durch den Client an den Server übertragen.
  • Server führt erneut BCrypt aus, jedoch mit dem gleichen Salt [Salt-1] und speichert das Pwd in Datenbank

User authentifizieren
  • Password wird durch den Nutzer auf dem Client eingegeben
  • Client fragt beim Server nach dem Salt [Salt-1] des Users sowie einem Zufallswert
  • Password wird zweifach auf dem Client mit Hilfe von BCrypt + Salt [Salt-1] umgewandelt (= ergibt selben Wert wie in Server-DB)
  • Ergebnis wird mit Zufallswert kombiniert und erneut mit BCrypt + zufälligem Salt [Salt-2] umgewandelt
  • Hash wird durch den Client an den Server übertragen.
  • Server führt erneut BCrypt mit neuem Salt [Salt-2] mit dem Wert seiner Datenbank + Zufallswert aus, vergleicht Ergebnis mit Anfrage durch Client.

Habe ich etwas übersehen?

Viele Grüße

Martin W 19. Sep 2015 11:55

AW: Sichere Abfrage Passwort Client -> Server
 
Vorteile:
  • Passwort liegt nie im Klartext auf dem Server
  • Passwort wird nie im Klartext übertragen
  • Durch den Zufallswert Schutz vor Replay-Attacken
  • Wird die Datenbank öffentlich, verhindert die Tatsache, dass das Passwort auf dem Server nochmals mit BCrypt behandelt wurde, ein Nutzen der Anmeldedaten

Mögliche Schwachstellen:
  • Gelingt es einem Angreifer, sowohl den Datenverkehr der initialen Speicherung als auch einer Authentifizierung abzuhören, kann ein Angreifer daraus ein gültiges Anmeldepasswort errechnen (Kennt jemand dafür einen Lösungsansatz, außer DH oder Transportverschlüsselung?)

nuclearping 19. Sep 2015 11:59

AW: Sichere Abfrage Passwort Client -> Server
 
Wenn du sowieso mit "Hashes" arbeitest, warum nicht gleich einfach MD5 oder SHA1 nehmen? So überträgst du auch nie das Passwort im Klartext und es liegt auch nie im Klartext auf dem Server.

Martin W 19. Sep 2015 12:05

AW: Sichere Abfrage Passwort Client -> Server
 
Zitat:

Zitat von nuclearping (Beitrag 1316326)
Wenn du sowieso mit "Hashes" arbeitest, warum nicht gleich einfach MD5 oder SHA1 nehmen? So überträgst du auch nie das Passwort im Klartext und es liegt auch nie im Klartext auf dem Server.

Da Bcrypt mir einen höheren Sicherheitsstandard bietet.

https://de.wikipedia.org/wiki/Bcrypt

Sicher, es wäre möglich das ganze vorher noch mal mit Sha256 / Sha512 zu hashen, aber daraus ergibt sich imho kein wirklicher Gewinn.

(Zumal: Bitte heutzutage nicht mehr Passwörter einfach nur als MD5 speichern.. Wenn es etwas aus der SHA Familie sein soll, dann bitte Salted SHA256+)

nuclearping 19. Sep 2015 12:17

AW: Sichere Abfrage Passwort Client -> Server
 
MD5 und SHA1 sind AFAIK immernoch ungeknackt. Daher ist "höherer Sicherheitsstandard" in dem Fall relativ. Ob du nun was sicheres mit was sicherem vergleichst, es kommt aufs selbe raus.
Ob das aber den erhöhten Mehraufwand (und damit auch wieder Fehleranfälligkeit) einer komplexeren Implementation rechtfertigt, sollte man abklären.

Wenn du Attacken durch Trafficmitschnitte befürchtest, dann hilft dir meiner Meinung nach auch kein noch so ausgeklügelter Algorithmus. Dann ist im Vorfeld schon was schiefgelaufen, wenn der Angreifer an eine Stelle kommt, wo er deinen (oder den Server-)Traffic loggen kann.
MD5 / SHA1 bieten zwar keinen Schutz gegen simple Replay-Attacken, aber wenn du vorher einen Salt beim Server abfragst, wird das ein findiger Angreifer auch rausfinden.

Vielleicht kann man hier auch was mit RSA machen?

r2c2 19. Sep 2015 13:36

AW: Sichere Abfrage Passwort Client -> Server
 
Mal was zum Nachdenken: http://www.christian-rehn.de/2012/06...machen-sollte/

Verwende SSL. Alles andere ist Spielkram. Und den Vorschlag md5 für Passwörter zu verwenden, hab ich mal geflissentlich überhört.

nuclearping 19. Sep 2015 15:59

AW: Sichere Abfrage Passwort Client -> Server
 
Zitat:

Zitat von r2c2 (Beitrag 1316337)
Und den Vorschlag md5 für Passwörter zu verwenden, hab ich mal geflissentlich überhört.

Weil ...?

jfheins 19. Sep 2015 16:49

AW: Sichere Abfrage Passwort Client -> Server
 
Zitat:

Zitat von nuclearping (Beitrag 1316342)
Weil ...?

man im Jahre 2015 den Term MD5 am besten vergisst. ERST RECHT, wenn es um Sicherheit geht. Oder klarer: Die Verwendung von MD5 und das Ziel "hohes Maß an Sicherheit" sind quasi gegenteilig.
Einziger Verwendungszweck (mit gutem Gewissen) ist m.E. sowas wie Datei-Duplikate finden bzw. in ner Datenbank speichern. Für Passwörter ist von SHA-1 inzwischen auch abzuraten.

Das BSI sagt zu Hashfunktionen::
Zitat:

Für einen Einsatzzeitraum nach Ende 2015 wird empfohlen, SHA-256, SHA-384, SHA-512 oder SHA-512/256 zu verwenden.

nuclearping 19. Sep 2015 18:27

AW: Sichere Abfrage Passwort Client -> Server
 
Die einzig mir bekannte Möglichkeit, um MD5 (oder ähnliches) zu "knacken", ist über Dictionaries oder Bruteforce. Das Problem hat aber jedes System.

Ich will hier keine Diskussion anfangen und zu konservativ klingen. Aber wenn man sagt, MD5 / SHA1 wäre unsicherer als SHA-256 oder ähnliches, impliziert das doch, dass es praktische und zeitnahe Wege und Möglichkeiten gibt, es zu knacken. Oder nicht? Was ist an MD5 unsicherer als an SHA-256, wenn es bis dato (selbst 2015) noch keinem gelungen ist, MD5 (ohne Dictionary) zu reversen?

vagtler 19. Sep 2015 18:34

AW: Sichere Abfrage Passwort Client -> Server
 
Zitat:

Zitat von nuclearping (Beitrag 1316349)
[...] Was ist an MD5 unsicherer als an SHA-256, wenn es bis dato (selbst 2015) noch keinem gelungen ist, MD5 (ohne Dictionary) zu reversen?

Weil es in üblichen Angriffsszenarien wie Anmeldung normalerweise ausreicht, in endlicher Zeit eine Kollision zu finden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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