2017-02-01 3 views
0

Ich muss einen SHA1-Hash durchführen, die einzige Option ist die Verwendung von Javascript (aufgrund meines Clients mit einem Drittanbieter-Produkt) Ein SHA1 wird benötigt, um einige Informationen an ein Zahlungs-Gateway zu übergeben. also müssen die folgenden Informationen an einen SHA1 übergeben werden, um in einen Hash (Benutzername, Passwort, Betrag) zu konvertieren, und dann an ein Zahlungs-Gateway weitergeleitet werdenIst es sicher, ein Javascript sha1 zu verwenden?

Meine Frage ist, ist es sicher? Dh können die Leute nicht einfach die Quelle sehen und die Dinge sehen, die ich hashing? wird das empfohlen? Gibt es einen anderen Weg, es zu tun?

dank

+3

das ist nicht genug Informationen zu gehen. – Alnitak

+0

Aktualisiert die Frage – user2206329

+0

So speichert das Produkt der Drittpartei Passwörter im Klartext? – fafl

Antwort

0

Unabhängig von dem Hash-Algorithmus verwendet, mit Browser-Seite Javascript, Ihre Benutzer immer Lage sein, die Seite Quelle zu sehen und die Dinge sehen Sie Hashing.

Wenn Sie auf der Serverseite Hashing durchführen, wird der Quelltext für den Browser nicht angezeigt. Es ist extrem schwierig, einen SHA-1-Hash zu "reverse", aber nicht "unmöglich" - mit genug Brute-Force-Power könnte man zumindest eine Hash-Kollision finden (eine andere Zeichenfolge, die den gleichen Hash erzeugt).

SHA-1 gilt als sicher genug für die meisten Zwecke. Es gilt jedoch nicht als sicher gegen große, gut finanzierte Gegner - mit ein paar Millionen Dollar kann man genug Cloud-Computing-Ressourcen einstellen, um einen SHA-1 Hash relativ schnell zu brechen, und dies wird mit zunehmender Rechenleistung immer billiger.

Wenn Passwörter beteiligt sind, sollten Sie in BCrypt schauen.

0

Nein, tu das nicht!

Password Hashing soll jemanden, der Ihre Datenbank kopiert, dazu bringen, die Anmeldeinformationen nicht zu verwenden. Durch Hashing auf der Client-Seite haben Sie genau den Wert in der Datenbank, der in der Anfrage gesendet werden muss. Ein Angreifer würde also einfach das Hashing deaktivieren und den Datenbankwert als Passwort verwenden.

Schneller Überblick über Passwort-Hashing:

Jeder Benutzer ein Passwort hat, dass Ihr Dienst kennt. Sie benutzen es um sich einzuloggen. Stellen Sie sich vor, Sie haben diese in Klartext gespeichert. Das wäre schlecht, wenn jemand Ihre Datenbank kopiert. Also Hash jedes Passwort mit einem Algorithmus wie MD5 oder sha1. Der Hash kann nicht zum Wiederherstellen des Kennworts verwendet werden. Sie können jedoch ein Kennwort prüfen, wenn es gültig ist. Problem gelöst?

Nicht ganz. Es ist einfach, eine Rainbow-Tabelle für einen Hash-Algorithmus zu erstellen. Auf diese Weise können Sie schnell nach möglichen Eingabewerten für jeden Hash suchen. Also du Salz. Dies bedeutet, dass jeder Benutzer eine zufällige Zeichenfolge hat, die vor dem Hashing an das Kennwort angehängt wird, wodurch eine eindeutige Hashing-Funktion pro Benutzer erstellt wird. Perfekte Lösung?

Wieder nicht ganz. Wenn Ihre Datenbank kopiert wird, kann diese mit ausreichender Rechenleistung geknackt werden. Ihr letzter Schritt ist also Iterationen. Sie fügen nicht nur das Salz und den Hash hinzu, sondern Sie nehmen dieses Ergebnis, hängen das Salz erneut an und haseln erneut. Du machst das ein paar hundert Mal. Auf diese Weise wird es für einen Angreifer teurer, Brute-Force-Angriffe durchzuführen. Dies ist, was bcrypt tut. Mit der Zeit nimmt die Rechenleistung zu, daher sollten Sie die Anzahl der Iterationen erhöhen.

+0

Ein paar Probleme damit: 1. Es gibt nichts zu sagen, dass das (Hashed) Passwort nicht ordnungsgemäß Hashed und gesalzen/wieder/auf der Server-Seite. Du weißt das nicht, also ist das nur eine Annahme. 2. Der Benutzer erwähnt nirgends, dass der Hash für die Authentifizierung verwendet wird. Auch dies ist eine Annahme. Die Frage war, "können die Leute nicht nur die Quelle anzeigen und die Dinge sehen, die ich hashing bin" - die Frage fragte nicht nach Server-Sicherheit oder Authentifizierung. –

+0

Ja, ich hätte vielleicht eine andere Frage beantwortet :) – fafl

Verwandte Themen