Passwort ohne SSL sicher zum Server übertragen

Ich möchte ohne kosten für ein SSL Zertifikat möglichst sicher das Passwort zum Server transportieren.
Hierzu wird bisher beim Login einfach das Passwort aus dem Input einfach durch eine Hashfunktion gejagt, danach gelöscht und ein neues Input mit dem Hash erstellt. Soweit klar.

Hierzu hatte ich die Idee einen Teil der SESSION_ID mit einzuflechten um hier mehr Sicherheit zu schaffen, bringt das überhaupt mehr Sicherheit?
Gibt es andere bzw. mehrere Wege?

MD5 Encryption?

Hab aktuell eine JavaScript implementation von SHA2 im Einsatz. Dort wird das Passwort mit sha512 gehasht möchte jedoch zusätzlich noch was mit reinflechten. Das muss jedoch auch der Server wissen also dachte ich an die SESSION_ID

Gesendet von meinem SM-G900F mit Tapatalk

Wenn schon die Seite, auf der das Passwort eingegeben wird, unverschlüsselt an den Client gesendet wird, dann ist es eh schon vorbei mit der Sicherheit.

Mittlerweile sind Zertifikate nichtmal mehr so teuer - sollte dir Sicherheit wert sein. Let’s encrypt will sie demnächst sogar kostenlos anbieten.

Ich denke du meinst das der “vertrauliche“ Inhalt mit gelesen werden kann? Der Inhalt ist im eigentlichen nicht sehr vertraulich eingestuft, jedoch sind die Funktionen die dort zur Verfügung stehen vor unberechtigtem Zugriff zu schützen.

Zum anderen möchte ich mit allen mitteln das Passwort des Users schützen, er könnte es ja auch auf Facebook etc. nutzen.
Und der abgefangene Hash aus „Apfel“ ist wohl eher in einer Rainbow-Table zu finden als der gesalzte Hash aus "j3ks8Apfelh2o14“ das sehe ich doch richtig oder?

Gesendet von meinem SM-G900F mit Tapatalk

Nein, das meine ich nicht.

Ich meine, dass der Angreifer der sich die Mühe macht als Man-in-the-Middle ein im Klartext übertragenes Passwort auszulesen mit wenig Mehraufwand auch den von dir geschriebenen/ausgelieferten HTML- und JavaScript-Code so manipulieren kann, dass das Passwort dennoch in Klartext gesendet wird. Er kann dein Login-Formular manipulieren.

Die Sicherheit die du da versuchst zu frickeln fällt auf seinem unsicheren Fundament zusammen.

Versteh mich nicht falsch, klar kannst du das Passwort irgendwie hashen und einem Angreifer auf den ersten Blick irgendeinen Buchstabensalat zuwerfen.

Aber einem Angreifer der das Passwort wirklich wissen will ist es keine Hürde.

Ich danke dir vielmals für die Antwort das hatte ich nicht bedacht, dann muss ich meinem Verein klarmachen das wir uns ein SSL Zertifikat beschaffen sollten.

Die Kostenlosen bzw. sehr günstigen Zertifikate sehe ich mit Skepsis da diese meines Wissens nach nicht sehr verbreitet in den Browsern vorhanden sind.

Gesendet von meinem SM-G900F mit Tapatalk

Fraglich ob der Angreifer bei so einer Seite (Versteh mich nicht falsch @bodo92), die Mühe macht das Passwort zu cracken.

Du hast natürlich grundsätzlich Recht. Ich habe einfach den Ehrgeiz, Sicherheit zu schaffen und das möglichst ohne Kosten.

Schlussendlich würde ich noch gerne wissen wie ihr jetzt in den beiden folgenden Fällen vorgehen würdet.

  1. Ich habe ein SSL-Zertifikat
    Dann würde ich mir das ganze sparen und das Passwort wie es ist übertragen.
  2. Ich habe kein SSL-Zertifikat
    Dann würde ich mir meine Funktion wie anfangs beschreiben noch dahingehend anpassen das Teile der SESSION_ID mit in den Hash kommen der dann übertragen wird.

Eine verschlüsselte Verbindung ist klar vorzuziehen jedoch sollte sich der Verein dagegen entschieden die 50€/Jahr zu investieren, möchte ich dennoch die größtmögliche Sicherheit schaffen.

@nookie: Ich bin dir nicht Böse, mir ist bewusst das meine Seite keine Relevanz hat aber für mich geht es auch einfach um das Lernen.

Gesendet von meinem SM-G900F mit Tapatalk

Weiß nicht was dein Verein so für Mitglieder hat, aber angenommen ein einflussreicher Mann ist dabei der zufällig wie du schon sagst überall das selbe Passwort verwendet. Jemand der diesem Mann schaden will ist das ein gekommenes Fressen.

Grundsätzlich sehe ich bei der Session-ID Idee noch das Problem, dass sich jeder User wohl auf unterschiedlichen Geräten anmelden kann und dort je andere Session IDs vorliegen. Daher stelle ich mir die Idee mit dem Hash sehr schwierig vor. Als Hash Salt müsstest du etwas verwenden dass Unique für den User ist und nicht für das Gerät.

Ja stimmt das mit der Session var ein Denkfehler aber denn eben ein Cookie der einen Teil des Salt von der Datenbank enthällt.

Gesendet von meinem SM-G900F mit Tapatalk

Bevor der User sich anmeldet weiß aber weder Client noch Server den Salt für den User aus der DB.

Suche dir ein asymmetrisches Verschlüsselungsskript für PHP. Der Client erhält den Public Key mit dem er das Passwort verschlüsseln kann und der Server hält den Private Key um es zu entschlüsseln. Das ist das beste Verfahren das mir momentan in den Sinn kommt. http://codereaper.com/blog/2014/asymmetric-encryption-in-php/

Sicher ist das aber immernoch nicht, da der Public Key nicht über einen sicheren Kanal übertragen wird (da kein TLS Zertifikat).

Danke für den Tipp, schau ich mir später mal an.
Klingt sinnvoll :slight_smile:

Gesendet von meinem SM-G900F mit Tapatalk

#NSIS