Passwort eingabe bewerten

  • C#

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von big-d.

    Passwort eingabe bewerten

    Hi Leute,

    wollte mal rumfragen ob ihr evtl. ein Control/Library kennt, die es möglich macht eine Eingabe in einer Textbox zu bewerten und farblich anzuzeigen ob es "sicher" oder "unsicher" ist?
    Oder hättet ihr Tipps wie man an sowas herangehen könnte?

    Danke euch schon mal :)

    :thumbsup:
    Hi
    meine Herangehensweise wäre einfach gewesen, Buchstaben aus möglichst vielen Gruppen zu nehmen und dann nach Wahrscheinlichkeit vorzugehen. Also z.B. Zahlen, Sonderzeichen, usw. als Gruppe auswerten und einigen evtl. noch die Häufigkeit, dass ein Buchstabe generell verwendet wird, mit einrechnen. Letztendlich ausschlaggebend ist halt die Wahrscheinlichkeit, dass man durch zufälliges Raten auf das Passwort kommt.
    Hier ein kleiner Denkanstoß:
    aaaaaaa => Buchstabenbereich 26 (da aus dem Alphabet & nur Kleinbuchstaben), Anzahl der Stellen = 7, Anzahl der Überschneidungen = 7 => Sicherheitsstufe = niedrig.
    29A_2a_#?§äÖ ==> Buchstabenbereich 10 + 2*26+|Sonderzeichen|(kp wie viele, aber insgesamt eben Sonderzeichen + Klein&Großbuchstaben+Zahlen), Anzahl der Stellen = 12, Anzahl der Überschneidungen = 1 ==> Sicherheitsstufe = hoch.

    Für die Wahrscheinlichkeit, durch zufälliges Raten das Ergebnis zu erraten, ergibt sich (denke ich, ich war in Stochastik nie gut) insgesamt für eine Stellenzahl von n und die Anzahl der Buchstaben in den Gruppen m
    p = 1/m^n
    Wie du anschließend die restlichen Sachen einrechnest, musst du dann entscheiden. Als kleiner Hinweis: Wenn du Wortlisten verwendest, kannst du die ebenfalls in die Bewertung einfließen lassen.

    Gruß
    ~blaze~

    ~blaze~ schrieb:

    dass man durch zufälliges Raten auf das Passwort kommt.

    Na ja.
    Als "Zufallskombination" wäre "PeterMüller1989" ziemlich gut, aber wenn der Anwender Peter Müller heißt und 1989 geboren wurde, ist es ein Schei*-Passwort ;)
    Ist halt das Problem mit Wörterbuch-Attacken. Betrachtet man alle Buchstaben "einzeln" ergibt sich ein hoher Wert, aber wenn die Buchstaben halt Worte ergeben ...
    Uff.
    Doch gar nicht so einfach wie ich dachte. Ich schau mal wie ich das am besten löse.
    Über weitere Hilfe und Tipps würde ich mich freuen.

    Sollte jemand ein Schlaukopf sein und langeweile haben, kann er es natürlich gerne mal versuchen
    und uns hier aufm laufenden halten :D :)


    gruß

    kassor schrieb:

    Ich schau mal wie ich das am besten löse.

    Am besten löst man das, indem der User selbst KEIN Passwort bestimmen darf. Jeder Programmierer auf der Welt weiß: User bauen ständig Schei*e - also sorgt man dafür dass sie selber möglichst wenig dürfen. Je weniger sie dürfen, desto weniger Schei*e kommt am Ende dabei raus ...
    nunja ist doch im prinzip gar nicht so kompliziert. Zum einen machst du erstmal eine Variationserkennung wie in dem von mir geposteten Video, um erstmal einen Wert zu haben wieviele Möglichkeiten ein Passwort mit der länge und mit den entsprechenden Zeichen hat. Danach prüfst du wie oft ein Zeichen drin vorkommt, dies fließt mit in die Bewertung ein, danach prüfst du auf Jahreszahlen 2 und 4 stellig, ebenso hängst noch eine Datenbank an, mit Vor und Nachnamen die ebenfalls in dem Passwort gesucht werden. Aus diesen 3 Kriterien errechnest du dann ein Gesamtergebnis welches die Sicherheit wiederspiegelt.

    kassor schrieb:

    Und ich denke so eine Bewertung wäre ein nette Sache, die im Programm gut ankommen würde.

    Klar. Pseudo-Sicherheit kommt beim User immer gut an. Er selbst hat keine Ahnung, also erzählt man ihm einen vom Pferd und er ist schwer begeistert.
    Fakt ist: Eine ECHTE Bewertung hinzubekommen, ist SEHR schwierig bzw aufwändig. "IAm18!" -> Groß, klein, Sonderzeichen und Zahlen. Entropie = 77^6 -> ungefähr 200 * 10^9. Also ungefähr 37 bit. Das ist an sich schon nicht viel, aber die 37 Bit hätte man nur, wenn die Zeichen tatsächlich ZUFÄLLIG verteilt wären. Jeder sieht sofort, dass sie das nicht sind. Und jetzt bring mal deinem Programm bei, das auch zu sehen ...
    Sowas geht mit Regex... aber die Idee mit der Datenbank ist vlt. ein bisschen schlecht, da man das Pwd (un)verschlüsselt übertragen muss
    Da ich selber derzeit sowas mache hier noch ein Denkanstoss:

    C#-Quellcode

    1. if (Regex.IsMatch(textBox1.Text, "[a-z]", RegexOptions.None))
    2. {
    3. possibilities += 26;
    4. }
    5. if (Regex.IsMatch(textBox1.Text, "[A-Z]", RegexOptions.None))
    6. {
    7. possibilities += 26;
    8. }
    9. if (Regex.IsMatch(textBox1.Text, "\\d", RegexOptions.None))
    10. {
    11. possibilities += 10;
    12. }

    Geht noch weiter, aber das behalte ich für mich ;)