|
|
#1 (permalink) |
|
-
|
Hallo zusammen,
ich bastle für meine Seite gerade ein Login Script und mir kam da eine Idee: Und zwar werden die POST Daten im Klartext übermittelt solange kein HTTPS zur Verfügung steht. Meine Idee war jetzt das Passwort schon mit JS verschlüssle und dann nur noch den Hash übermittle. Als FallBack Lösung würde ich dann trotzdem das Passwort unverschlüsselt verschicken, wenn kein JS aktiv ist. Macht dieser zusätzliche Aufwand Sinn? |
|
|
|
| Gesponsorte Links |
|
|
#2 (permalink) |
|
Erfahrener Benutzer
|
Die Frage ist ja, was hast du an zusätzlicher Sicherheit davon?
Ob du jetzt "passwort" an den Server schickst, und der dir den Zugriff erlaubt, oder du schickst "7a62b45e0972fad91" und der Server erlaubt dir den Zugriff, ist ja erstmal egal. Wer den übertragenen Schlüssel mitliest, kann genau diesen wieder zum Server schicken und sich damit anmelden. Der Vorteil wäre höchstens, dass du den User schützt, der dasselbe Passwort an verschiedenen Stellen verwendet, da an anderen Stellen eben nicht "7a62b45e0972fad91" sondern der Klartext des Passworts zum Login erwartet wird. Eine zusätzliche Sicherheit für deine eigene Seite würdest du aber höchstens erreichen, wenn die clientseitige Verschlüsselung in irgendeiner Form dynamisch erfolgt. Zum Beispiel indem du die Session-ID und/oder Quell-IP oder auch einen beim Aufruf der Login-Seite mitgeschickten SALT mit reinverschlüsselst. Wenn dann jemand den Schlüssel mitliest, kann er sich damit erstmal nicht unbedingt anmelden, weil dann ja der Schlüssel nicht mit den sonstigen Client-Daten, die mit der Abfrage übergeben werden, zusammenpasst. |
|
|
|
|
|
#3 (permalink) | |
|
Multitalent
|
Zitat:
Wenn du nun den Hash schon beim Client erstellen lässt, würdest du ja dein komplettes Versalzungsverfahren preisgeben, was ein deutlicher Rückschritt in der Sicherheit wäre. Daher muss der Server weiterhin selbst die Hashs erstellen und prüfen. Deine eigentliche Frage ist ja aber, wie man das eingebene PW möglichst sicher zum Server bekommt. Und hierfür könntest du natürlich ein JS-Verschlüsselungsverfahren nutzen (wobei ich da keine Tipps habe), das sollte aber absolut nichts mit der bisherigen Klartextmethode zu tun haben und es reicht dann natürlich nicht nur einen Hash zu übertragen, sondern eben die entstehende verschlüsselte Zeichenkette. |
|
|
|
|
|
|
#4 (permalink) | |
|
-
|
Zitat:
Das ist ein guter Punkt welchen ich noch gar nicht bedacht habe. Also bist du der Meinung, dass das Passwort lieber in Klartext übertragen werden sollte um das Salt-Verfahren zu schützen? |
|
|
|
|
|
#5 (permalink) |
|
Multitalent
|
Nein, ich habe nur gesagt, dass das Verfahren für die PW-Hashs komplett auf dem Server bleiben soll.
Zusätzlich dazu kannst du ein versalzenes Verschlüsselungsverfahren für den Client bereit stellen. Dieser verschlüsselt (bestenfalls kommt bei jedem Aufruf trotz gleicher PW-Eingabe ein anderer Crypttext raus), sendet diesen an den Server, dieser entschlüsselt und macht ab da alles genau so als ob ein unverschlüsseltes Passwort eingegangen wäre (hashen, vergleichen, usw). |
|
|
|
|
|
#6 (permalink) | |
|
-
|
Zitat:
).Oder meinst du folgendes Szenario: SHA1 vom PW Clientseitig -> Serverseitig dem Hash noch einen Salt hinzufügen und wieder SHA1 -> Das mit der DB abgleichen Nur irgendwie habe ich in Erinnerung, dass man ein Passwort nicht doppelt hashen soll... Finde dazu aber gerade keine interessanten Links. |
|
|
|
|
|
#7 (permalink) | ||||||||||||
|
Multitalent
|
Ich gehe mal davon aus, dass du etwas in der Art bereits implementiert hast:
1. Eine Funktion, die aus einem Passwort ein Hash macht: PHP-Code:
PHP-Code:
PHP-Code:
Wenn nun also JS das Passwort verschlüsselt, sieht das für den Server so aus: PHP-Code:
|
||||||||||||
|
|
|
|
|
#8 (permalink) |
|
return void
|
öffentlicher und privater Schlüssel, wie von joschilein beschrieben, ist die einzige sichere Variante, und oh Wunder, so funktioniert SSL.
Ein Problem gibt es dabei aber: Es gibt keine sicheren RSA-Implementierung in JavaScript die zu OpenSSL kompatibel ist. Man findet nur 1:1 Implementierungen des Algorithmus wie von Rivest, Shamir und dem dritten anno sonstwas beschrieben. Aber der Algorithmus in seiner Reinform ist noch nicht sicher, dazu benötigt es noch PKCS#1. Und das wird dann von 90% der JS-Implementierungen nicht implementiert oder es ist inkompatibel zu anderen Implementierungen. Und dann kommt noch hinzu, dass heutzutage noch nicht alle JavaScript-Implementierungen von Browsern wirklich schnell sind (IE), bei dem wirklich berechnungskomplexen RSA also wirklich ein Problem, es seiden man verwendet lächerliche 128Bit bei der Verschlüsselung Was spricht denn so gegen SSL? Wer Sicherheit möchte wird doch wohl die 15€/Jahr für ein SSL-Zertifikat ausgeben können |
|
|
|
|
|
#9 (permalink) | |
|
-
|
Zitat:
Würde denn etwas gegen diese Lösung sprechen?
Somit würde das PW wenigstens nicht im Klartext übertragen. |
|
|
|
|
|
#10 (permalink) | |
|
Multitalent
|
Zitat:
Aber was bringt dir Punkt 1? Gegen was möchtest du dich bzw. den Besucher schützen? Wer den Datenverkehr zwischen Client und Server abfängt, der erfährt als Quasi-Client auch das clientseitige Verfahren und kann so mit relativ geringem Aufwand auch aus dem als PW-Ersatz übermittelten Hash das ursprünglich eingegebene Passwort des Angegriffenen ermitteln. Ja, es ist mehr Aufwand als 0, aber eine einzige Rainbow-Table zu erstellen ist heutzutage auch nicht mehr so wahnsinnig aufwändig. Wer das eine kann (Daten abfangen), kann i.d.R. auch das andere (Rainbow-Table). |
|
|
|
|
|
|
#11 (permalink) | |
|
return void
|
Zitat:
Die einzige halbwegs sinnvolle Möglichkeit ist eben der private und public Key, scheitert aber an den JS-Librarys und der Rechenperformance in JavaScript. Diese SHA-Lösung ist genauso einfach zu knacken. Dann wird das Pw eben nicht im Originaltext übertragen sondern durch einen Hash, mache ich eben eine Bruteforce-Attacke. Wenn ich mir schon soviel Aufwand gemacht habe den Traffic abzufangen, ist ein Bruteforce-Angriff das kleinste Problem, zumal moderne Grafikkarten mittlerweile 5.6 Mrd Hashs pro Sekunde berechnen können. |
|
|
|
|
|
|
#12 (permalink) |
|
Erfahrener Benutzer
|
zum Thema SSL und Sicherheit werfe ich mal folgendes ein:
http://www.heise.de/security/meldung...r-1388835.html http://www.heise.de/security/meldung...r-1372279.html ... Solange man hier keine Sicherheit schafft, wer garantiert dann die Sicherheit für SSL ? ... |
|
|
|
|
|
#13 (permalink) |
|
return void
|
Es ist ja auch so alltagsüblich, dass CAs gehackt werden und dann auch noch "falsche" Zertifikate für kleine Mini-Seiten ausgestellt werden ...
Wer garantiert, dass RSA sicher ist? Das ist das viel größere Problem, denn die Sicherheit von RSA kann nicht bewiesen werden, es wird nur vermutet, dass die zu Grunde liegende Primfaktorzerlegung eines Angriffs auf RSA nicht effizient lösbar ist. |
|
|
|
|
|
#14 (permalink) |
|
Erfahrener Benutzer
|
das hab ich nie behauptet, nur zum thema sicherheit bei SSL
Nachtrag: http://www.heise.de/security/meldung...t-1359373.html Also wie esmit der allgemeinen Sicherheit steht, scheint wohl klar zu sein. Was RSA anbelangt, wird es die Zukunft zeigen, wieviele parallele Operationen in der Sekunde laufen können. Geändert von tobomator (09.12.2011 um 20:36:39 Uhr) |
|
|
|
![]() |
| Gesponsorte Links |
| Anzeige |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| php script: login, einladungssystem | wnm222 | Scripts & Software | 1 | 03.04.2007 13:48:17 |
| [PHP] Login Script | Anachronist | Programmierung | 14 | 06.03.2007 19:00:28 |
| Login-Prozess verbessern bei Lose-Remote | Dounme | Verbesserungsvorschläge | 1 | 14.10.2006 10:54:44 |
| [s] login-script | Ufisch | Scripts & Software | 4 | 27.05.2006 14:36:17 |
| [S] Login-Script | Moe | Lose4Scripts (erledigt) | 3 | 24.05.2006 18:04:34 |