Wann ist ein Passwort sicher?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
heiliga horsd

Hallo,

ich habe mir (rein aus Jux und Tollerei) gedacht, dass ich ein kleines Script schreibe, welches Passwörter auf ihre Sicherheit prüft.
Da ich es anfangs einfach halten will, mache ich keine Vorgaben bzgl. Länge, Inhalt & Co.
Natürlich könnte man soetwas später ausbauen. Vielleicht bietet Python ja auch die Anbindung eines Wörterbuchs (vielleicht kann mir das ja jemand beantworten).

Nun aber meine Frage: Was sind für euch sichere Passwörter? Legt ihr mehr Wert auf Sonderzeichen oder eher auf Zahlen? Oder doch Groß- und Kleinschreibung? Alles zusammen?
Und wie würdet ihr die einzelnen Faktoren gewichten? Ist ein Sonderzeichen wie "%" sicherer als eine Zahl wie bspw. "3"?

Bin sehr gespannt auf eure Antworten und Meinungen.


Lg HH
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Klingt interessant. Schau dir mal den Wikipedia-Artikel dazu an. Der ist auf jeden Fall recht lang :wink:
heiliga horsd

Potzblitz heutzutage gibts ja echt alles auf Wikipedia :D
Danke für den Link, wird zur Abendlektüre gelegt :D

Lg HH
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Relevant ist zum einen die Menge der verwendeten Zeichen und zum anderen die Länge des Passwortes. Daraus kann man alle möglichen Kombinationen errechnen und schätzen wie lange es dauert diese zu knacken. Weitergehend sinnvoll ist zu erkennen ob die verwendete Menge eine Untermenge einer bestimmten wahrscheinlich genutzten Menge ist und diese heranzuziehen, da es unwahrscheinlich ist dass der Angreifer die konkrete verwendete Zeichen Menge kennt.

Bei einem Passwort "foobar" hat man zwar nur die Menge {f, o, b, a, r} ein Angreifer wird aber wahrscheinlich a-z durchprobieren.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

heiliga horsd hat geschrieben:Potzblitz heutzutage gibts ja echt alles auf Wikipedia :D
Das gilt aber nur für nicht-deutsche Artikel :S


Edit: Auf Linux-Systemen und Mac OS X gibt es die Datei /usr/share/dict/words. Ich vermute, dass es diese Datei auch bei anderen POSIX-kompatiblen Systemen gibt. Windows hat so eine Datei AFAIK nicht.
heiliga horsd

DasIch hat geschrieben:Relevant ist zum einen die Menge der verwendeten Zeichen und zum anderen die Länge des Passwortes. Daraus kann man alle möglichen Kombinationen errechnen und schätzen wie lange es dauert diese zu knacken. Weitergehend sinnvoll ist zu erkennen ob die verwendete Menge eine Untermenge einer bestimmten wahrscheinlich genutzten Menge ist und diese heranzuziehen, da es unwahrscheinlich ist dass der Angreifer die konkrete verwendete Zeichen Menge kennt.

Bei einem Passwort "foobar" hat man zwar nur die Menge {f, o, b, a, r} ein Angreifer wird aber wahrscheinlich a-z durchprobieren.

Dann müsste ich das aber auch irgendwie gewichten. Wenn "fo0bar" sicherer ist als "foobar" und der Angreifer probiert a-z und 0-9, muss ich für 0-9 eine andere Gewichtung einführen. Oder reicht da das Argument, dass es aufgrund der größeren Zeichenmenge länger zum knacken braucht?

@derdon: Wofür lernt man in der Schule Englisch? :)
Ich schau mir die Datei mal an. Eventuell könnte man die Datei ja auch erweitern (vielleicht mit Datensätzen aus dem Internet) und zusammen mit dem Script ausliefern.

edit:// Die Datei hat ja einiges zu bieten.... auch ein paar mir noch unbekannte Wörter wie bspw. "Kindertotenlieder" :)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Menge verwendeter Zeichen * Länge des Passwords mal für eine Reihe von Passwörtern ausprobieren und dann muss man halt die Ergebnisse irgendwie sinnvoll einstufen. Testdaten sollten sich ja sicherlich mit google finden lassen.

Außerdem kann man das Prinzip doch sicherlich irgendwo abgucken, gibt doch zig Seiten mit eine Javascript Implementierung die sowas macht.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Die Frage ist doch: Warum will man überhaupt Sonderzeichen in Paßwörtern? Warum wird Groß- und Kleinschreibung unterschieden und warum wird so viel Wert auf möglichst lange Paßwörter gelegt? Antwort: Man will die Zahl der Kombinationsmöglichkeiten derart hoch schrauben, daß es keinen Sinn mehr macht, per Brute-Force alle durchzuprobieren. Also überlegen sich potentielle Angreifer, welche Untermengen von Zeichen denn wohl besonders häufig auftauchen und probieren diese zuerst aus. So aus dem Bauch heraus würde ich sagen: Wörter in korrekter Schreibweise (Großbuchstabe gefolgt von Kleinbuchstaben) haben eine signifikant höhere Verbreitung als "zufällige" Kombinationen. Ergo werden diese wohl zuerst durchprobiert und sind damit unsicherer als andere. Die nächsten Risikogruppen wären wohl komplett kleingeschriebene Wörter und Wörter mit Zahlen am Ende. Du mußt also Klassen von Paßwörtern bilden, die bestimmten Regeln folgen und diesen Klassen dann eine Wahrscheinlichkeit zuweisen. Ein "sicheres" Paßwort läßt sich durch solche Heuristiken nicht schneller erraten als durch systematisches durchprobieren.
heiliga horsd

OK also kommt es rein auf die Anzahl der Kombinationen und die Laenge an. Danke!
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

heiliga horsd hat geschrieben:OK also kommt es rein auf die Anzahl der Kombinationen und die Laenge an. Danke!

Nein, eben nicht. Es kommt darauf an, ein Paßwort aus einer Klasse zu wählen, die derart klein ist, daß sie vermutlich erst sehr spät durchprobiert wird. Wenn du den kompletten Unicode-Satz und Paßwörter mit beliebiger Länge zuläßt, gibt es trotzdem unsichere Paßwörter (z.B. 'aaa').

Nachtrag: Vielleicht könnte man es auf folgende Formel bringen: Je unwahrscheinlicher es ist, daß sich jemand ausgerechnet dieses Paßwort aussucht, desto sicherer ist es. Einfach aus dem Grund, daß alle "intelligenten" Attacken auf Paßwörter darauf beruhen, die wahrscheinlicheren zuerst auszuprobieren.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Man könnte auch auf die Idee kommen, das Passwort einfach mal zu googlen. Gibt es viele Treffer, ist es nichts wert. Auf der anderen Seite wäre es eine dumme Idee das Passwort google zu verraten ;)

Man sollte auch nachsehen, wie weit die Buchstaben auf der Tastatur auseinander liegen. z.B. qwertz ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
ntrunk
User
Beiträge: 83
Registriert: Sonntag 7. September 2008, 23:09
Wohnort: Buchen (Odenwald)

Hallo pythonistas,

ist das nicht wie mit den Umleitungsempfehlungen bei Staumeldungen auf der Autobahn? Sobald sich alle (oder zumindest die Mehrheit) an die Ratschläge halten, sind sie wertlos...
Ein Empfehlung für die Konstruktion eines sicheren Passworts sollte auch dann gültig sein, wenn sich alle daran halten. Deshalb gehen der Hinweis auf die Verwendung eines möglichst großen Zeichenvorrats und ein nicht zu kurzes Passwort m.E. in die richtige Richtung. Weiter gehende Geheimtipps nach dem Motto: mach dies oder jenes, weil das sonst keiner macht; sollten dann besser nicht veröffentlicht werden, da das eher kontraproduktiv ist ;)

Gruß
Norbert
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

In einem gewissen Maße hast du sicherlich recht. Trotzdem werden die Menschen einfach zu merkende Paßwörter immer vorziehen. Genauso wie man sich nicht unendlich lange Paßwörter merken kann. Auch wenn Zeichenvorrat und Länge eine theoretisch große Menge an Kombinationen zulassen, werden sie sich in einer bestimmten Untermenge deutlich häufen. Und da setzen halt die Heuristiken an, die versuchen, diese Untermenge (bzw. Untermengen) zu bestimmen.

In einem Unternehmen, für das ich mal gearbeitet habe, wurde man alle zwei Wochen gezwungen, sein Paßwort zu wechseln. Und auf fast jedem Tisch standen Rechenmaschinen der Firma Adler ... Was meint ihr wohl, wie hoch die Wahrscheinlichkeit ist, daß 'Adler' als Paßwort dient? Social Engineering läßt grüßen. Sehr beliebt sicherlich auch, bei einem Paßwort einfach eine Nummer mitlaufen zu lassen. Wie sicher ist das?

Spannend auch die Frage, wie viele verschiedene Paßwörter sich ein Mensch überhaupt merken kann. Zu dem Thema gabs vor kurzem einen netten Comic, der diesen Aspekt der Misere beleuchtet: http://xkcd.com/792/
lunar

@Pekh: Ich glaube nicht, dass man sich wirklich alle Passwörter merken muss. Meist reicht doch eine kleine Anzahl Passwörter, hauptsächlich das für die Passwortdatenbank, und ein paar weitere für die Stellen, an denen man die Datenbank nicht hat (e.g. Login oder Festplattenpasswort oder was auch immer). Den Rest kann man dann speichern, muss ihn somit nicht auswendig kennen und kann somit auch für jedes Konto zufällige Passwörter erzeugen.

So zumindest gehe ich persönlich mit der Flut an Passwörtern um (mittels keepassx).
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Wann Passwörter sichersind, hm, nie :!: :!: :!:
Eine Kombination aus Buchstaben, zahlen und satzzeichen braucht länger um geknackt zuwerden, aber verhindern können sie das nicht.
Eine Funktion zum ausrechnen von möglichkeiten für Passwörter:

Code: Alles auswählen

def möglichkeiten(stellen, zeichen):
    return int(zeichen)**int(stellen)
Ihr könnt damit ja mal ausrechnen wieviel Bilder Euer bildschirm anzeigen kann, beim NDS bildschirm hat die zahl 266333 Stellen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

@Py-Prog: Verhindern geht sogar sehr leicht. Man muss das einfach nur mal nachrechnen:

Angenommen wir haben ein 10-stelliges Password in dem Groß- und Kleinschreibung, sowie die Ziffern 0-9 vorkommen können: Das ergibt dann (2*26+10)**10 = 839e15 Möglichkeiten. Nehmen wir weiter an ein Computer kann pro Takt ein Password überprüfen. Mein Rechner hat eine Taktfrequenz von 2.0GHz. Damit braucht der Computer um alle Möglichkeiten auszutesten 429 Millionen Sekunden oder 13.3 Jahre (365.25 * 24 * 60 * 60 Sekunden pro Jahr).

Die gleiche Rechenweg mit einem 20-stelligen Password führt zu einer Gesamtdauer von 1.1e19 Jahren. Das Universum ist aber mal gerade 13.7e9 Jahre alt. Der Passwortschutz ist in dem Fall also schon recht hoch.

Grüße,
Gerrit
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Pff, Physiker müssen immer alles genau ausrechnen und dann mit dem Weltall vergleichen :twisted:
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

gkuhl hat geschrieben:@Py-Prog: Verhindern geht sogar sehr leicht. Man muss das einfach nur mal nachrechnen:

Angenommen wir haben ein 10-stelliges Password in dem Groß- und Kleinschreibung, sowie die Ziffern 0-9 vorkommen können: Das ergibt dann (2*26+10)**10 = 839e15 Möglichkeiten. Nehmen wir weiter an ein Computer kann pro Takt ein Password überprüfen. Mein Rechner hat eine Taktfrequenz von 2.0GHz. Damit braucht der Computer um alle Möglichkeiten auszutesten 429 Millionen Sekunden oder 13.3 Jahre (365.25 * 24 * 60 * 60 Sekunden pro Jahr).

Die gleiche Rechenweg mit einem 20-stelligen Password führt zu einer Gesamtdauer von 1.1e19 Jahren. Das Universum ist aber mal gerade 13.7e9 Jahre alt. Der Passwortschutz ist in dem Fall also schon recht hoch.

Grüße,
Gerrit
Wer hat den Gesagt das man das mit einer 'normalen' CPU knacken will, meine CPU hat zwar 'nur' 2,66 GHz aber wie wärs mit einem Intel Xeon, oder anders ausgedrückt eine Grafik karte, eine Gute damit braucht es nicht solange, ...

... und du vergisst: Hacker, kommen überallrein!
(Hast du schon nachgedacht das ein anderes Password den Gleichen Hash ergibt?)
Zuletzt geändert von Py-Prog am Mittwoch 29. September 2010, 16:42, insgesamt 1-mal geändert.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Hä noch eine Frage woher will man wissen wie alt das Universum ist, und vorallem was war vorher?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Py-Prog hat geschrieben:Hä noch eine Frage woher will man wissen wie alt das Universum ist, und vorallem was war vorher?
Der Urknall hat zur Folge dass sich alles vom Entstehungsort fortbewegt, Geschwindigkeit und Beschleunigung dieser Bewegung lässt sich ermitteln und damit die Zeit seit der Entstehung des Urknalls.
Antworten