Passwort-Problem
Kalle
- programmiertechnik
Hi,
weiter unten wird unter https://forum.selfhtml.org/?t=120293&m=772279 über das Verschlüsseln von Passwörtern diskutiert.
Wenn ich ein Passwort mit dem in der DB abgelegten Hash vergleiche, MUSS das PW zwangsweise über die Leitung gehen. Richtig?
Und DAS ist doch das Sicherheitsrisiko.
Ich stelle mir etwas anderes vor.
Du und ich wissen, dass mein Passwort "123456" ist.
Bei meiner Anmeldung sagst du mir per Zufallsgenerator:
"Gib mir das Produkt aus der 1., 2. und 6. Zahl"
Ich gebe dir 12 und du weisst, dass ich der RICHTIGE bin.
Kein Lauscher kann damit etwas anfangen, denn beim nächsten Mal sagst du mir:
"Die Summe aus Ziffer 3 und 4, abzüglich Ziffer 1"
Ich antworte 6 und bin DRIN.
Eure Meinung dazu interessiert mich.
Lieben Gruß, Kalle
Hi,
Wenn ich ein Passwort mit dem in der DB abgelegten Hash vergleiche, MUSS das PW zwangsweise über die Leitung gehen. Richtig?
wenn ein Client einem Server einen Wert schickt, der beim Server der Definition von "Passwort" entspricht, muss dieser Wert zunächst zum Server übertragen werden, ja.
Und DAS ist doch das Sicherheitsrisiko.
Es existieren Techniken zur Verschlüsselung der Übertragung. Eine davon ist SSL.
"Gib mir das Produkt aus der 1., 2. und 6. Zahl"
Ich gebe dir 12 und du weisst, dass ich der RICHTIGE bin.
"Die Summe aus Ziffer 3 und 4, abzüglich Ziffer 1"
Ich antworte 6 und bin DRIN.
Das Passwort lautet also 345421. Schade eigentlich. Übrigens sind Passwörter, die aus einem Vorrat von nur zehn Zeichen aufgebaut sind, um ein Vielfaches unsicherer als solche, die z.B. 62 verschiedene Zeichen erlauben.
Eure Meinung dazu interessiert mich.
Hübscher Holzweg.
Cheatah
Hi, Cheatah,
Es existieren Techniken zur Verschlüsselung der Übertragung. Eine davon ist SSL.
Ach so, per SSL kann mir keiner mehr über die Schulter gucken bei der Passworteingabe und Spyware späht vergeblich?
Das Passwort lautet also 345421.
Auch bei diesem Passwort wäre die Antwort "12", okay.
Aber bei "Das Produkt aus Ziffer 2, 4 und 6"
antwortest du "16" und bleibst DRAUSSEN.
Es kann ZUFÄLLIG richtige Antworten geben, sehe ich ein. Wie könnte man meine Idee verbessern?
Hübscher Holzweg.
Bist heute nicht so gut drauf? Wenig konstruktiv jedenfalls.
LG Kalle
Hi,
Ach so, per SSL kann mir keiner mehr über die Schulter gucken bei der Passworteingabe und Spyware späht vergeblich?
wenn Du so etwas wie absolute Sicherheit suchst, empfehle ich Dir eine Reise ins Land der Mythen. Es kann *immer* jemand über die Schulter gucken, und es kann *immer* eine bösartige Software die Tastatureingaben abfangen.
Das Passwort lautet also 345421.
Auch bei diesem Passwort wäre die Antwort "12", okay.
Aber bei "Das Produkt aus Ziffer 2, 4 und 6"
antwortest du "16" und bleibst DRAUSSEN.
Richtig. Bisher hast Du aber noch nichts vorgegeben, das das selbe Passwort bei jeder Frage bedingen würde.
Es kann ZUFÄLLIG richtige Antworten geben, sehe ich ein. Wie könnte man meine Idee verbessern?
Indem Du sie verwirfst und auf bestehende Verfahren zurück greifst.
Hübscher Holzweg.
Bist heute nicht so gut drauf? Wenig konstruktiv jedenfalls.
Deine Idee ist, von Einzelfällen abgesehen, einfach nur Schwachsinn. Ich brauche nicht schlecht drauf zu sein um zu erkennen, dass sie nicht weiter beachtenswert ist. Wenn Du sie trotzdem weiter verfolgen möchtest, wirst Du sie möglicherweise dergestalt verändern, dass etwas dabei raus kommt, was nicht nur einen Sinn ergibt, sondern gang und gäbe ist - das Bisherige ist aber einfach nur umständlich, ohne etwas mit Sicherheit zu tun zu haben. Nebenbei bemerkt ist Deine Polemik oben auch nicht gerade vorbildlich.
Cheatah
Hi,
Deine Idee ist, von Einzelfällen abgesehen, einfach nur Schwachsinn.
Naja, dann sind wir Schwachsinnigen ja unter uns, wie dedlfix postet:
Das was du beschriebst ist das Challenge-Response-Verfahren.
Kannte ich nicht, ist aber genau das, was ich meine.
LG Kalle
Hi,
Eure Meinung dazu interessiert mich.
Hübscher Holzweg.
machts eigentlich noch Spass immer und immer wieder das gleiche zu posten? :-)
Vince
Hallo Cheatah,
Übrigens sind Passwörter, die aus einem Vorrat von nur zehn Zeichen aufgebaut sind, um ein Vielfaches unsicherer als solche, die z.B. 62 verschiedene Zeichen erlauben.
und dann möglichst lang sind
Eure Meinung dazu interessiert mich.
Hübscher Holzweg.
Würde ich so brutal nicht sagen. Es ist der erste Denkansatz für durchaus in Verwendung befindliche Verfahren. Man sollte es nur nicht so wörtlich nehmen. :-)
LG
Chris
Moin,
Hübscher Holzweg.
RSA basiert doch im wesentlichen auf einem nicht ganz unähnlichen Prinzip.
A codiert B eine Nachricht mittels eines Public Keys (das wär in diesem Fall "Gib mir das Produkt aus...."), und B kann mit seinem Private Key ("123456") diese Nachricht entschlüsseln.
B kennt in dem von Kalle vorgeschlagenen Verfahren den Privatekey, das ist halt bissi schlecht :)
Und mit hinreichend vielen "Gib mir Produkt aus", "Gib mir Summe aus"-Nachrichten liessen sich relativ fix dann doch der "Private Key generieren.
Aber das Grundprinzip geht schon in eine ähnliche Richtung find ich.
echo $begrüßung;
Wenn ich ein Passwort mit dem in der DB abgelegten Hash vergleiche, MUSS das PW zwangsweise über die Leitung gehen. Richtig?
Nein, du kannst auch den Hashwert des eingegebenen Passwortes mit dem Hashwert in der DB vergleichen.
Ich stelle mir etwas anderes vor.
Das was du beschriebst ist das Challenge-Response-Verfahren. Ob das mir einer Datenbankabfrage zu realisieren ist, versuche ich irgendwann nach dem Aufstehen nochmal zu bedenken.
echo "$verabschiedung $name";
echo $begrüßung;
Das was du beschriebst ist das Challenge-Response-Verfahren. Ob das mir einer Datenbankabfrage zu realisieren ist, versuche ich irgendwann nach dem Aufstehen nochmal zu bedenken.
So könnte es vom Prinzip her funktionieren (Codeteile in Pseudocode):
Die Application verschlüsselt einen Zufallswert anhand des eingegebenen Passworts und ermittelt so den Challenge-Wert: challengewert = encrypt(zufallswert, passwort)
Dieser wird mit der folgenden Abfrage an die DB gesendet.
select encrypt(decrypt(challengewert, passwortspalte) + veränderung, passwortspalte) as response
from table where username=...
Zurück kommt der Response-Wert:
if (decrypt(response, passwort) == zufallswert + veränderung)
Passwort richtig
"+ veränderung" steht hier für eine beliebige nicht näher spezifizierte Berechnung. Ich denke, dass diese Prozedur nur der DB und der Anwendung bekannt sein sollte. Das könnte auf DB-Seite eine Stored Procedure sein. Wenn das nicht möglich ist, könnte ich mir auch eine Berechnung mit einem in einer Konfigurationswerte-Tabelle enthaltenen Wert vorstellen, so dass ein man-in-the-middle es durch diesen unbekannten Wert noch etwas schwerer hat.
echo "$verabschiedung $name";
Hi Kalle!
Wenn dich Verschlüsselungsverfahren interessieren, solltest du mit dem recht einfachen RSA-Kryptosystem anfangen.
Ich zumindest fand es sehr interessant und lehrreich.
MfG H☼psel