GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist die maximale Länge des Passworts auf einem Unix/Linux-System?

Wenn Ihr System einen kryptografischen Hash zum Speichern von Passwörtern verwendet, z. B. MD5, SHA1 usw., gibt es keine Beschränkung der Passwortlänge selbst, da diese Hashes mit einer beliebigen Datenmenge erstellt werden können. Ein MD5- oder SHA1-Hash kann für eine gesamte Festplatte erstellt werden, und dies wird üblicherweise für forensische Zwecke durchgeführt, denn wenn auch nur ein Bit nur geringfügig geändert wird, haben Sie einen ganz anderen Hash und können daher überprüfen, ob sich die Daten geändert haben. Das bedeutet, dass Sie genau diese Algorithmen verwenden können, um zu testen, ob Daten manipuliert wurden. Linux (zumindest das aktuelle Linux) verwendet dieselben Hash-Funktionen. Es wird Sie nach einem Passwort fragen und dann einen kryptografischen Hash des von Ihnen angegebenen Passworts erstellen und prüfen, ob dieser Hash mit dem gespeicherten Passwort übereinstimmt. Dies bedeutet auch, dass Ihre Passwörter nicht im Klartext gespeichert werden und die einzige Möglichkeit, ein verlorenes Passwort wiederherzustellen, darin besteht, einen Brute-Force-Test durchzuführen, der einen Passwort-Hash nach dem anderen generiert, bis ein Hash gefunden wird, der mit dem aktuellen Hash übereinstimmt, und dann haben Sie Ihren Passwort.

Es gibt einen kleinen Nachteil bei der Verwendung dieser Hashes, nämlich dass ein Hash eine endliche Größe hat, zum Beispiel ist ein MD5-Hash 128 Bit lang. Das bedeutet, dass ein MD5-Hash nur 2^128 hat oder 340,282,366,920,938,463,463,374,607,431,768,211,456 mögliche Kombinationen. Das ist zwar eine große Zahl, aber das bedeutet, dass Sie eine so genannte Hash-Kollision haben können, bei der Sie zwei verschiedene Elemente oder Schlüssel haben, die denselben Hash erzeugen. Theoretisch ist die Wahrscheinlichkeit einer Kollision umso geringer, je größer die Schlüsselgröße ist, und desto länger sollte es dauern, ein Passwort brutal zu erzwingen, aber das ist eine strenge Bewertung der Entropie und wie lange es KANN nehmen, aber es besteht auch die Möglichkeit, dass der erste Eintrag, den sie versuchen, derjenige sein kann, der übereinstimmt, selbst wenn es sich um eine Hash-Kollision handelt. Im Allgemeinen sind Sie wirklich sicherer, wenn Sie einen Hash verwenden, der eine größere Schlüsselgröße hat, denn, angenommen, dies ist MD5, die Wahrscheinlichkeit für das erste passende Passwort liegt bei 340,282,366,920,938,463,463,374,607,431,768,211,456 mögliche Übereinstimmungen ist äußerst äußerst unwahrscheinlich. Wählen Sie auch ein gutes Passwort, da viele Cracker versuchen, Wortlisten, Namenslisten und Mutationen dieser Listen zu verwenden (d. h. wenn das Wort "Fisch" ist, dann versuchen sie es mit fish1234 , [email protected]#$ usw.), bevor sie sich auf das Brute-Force-Forcen eines Passworts verlassen.

Ob Ihr System kryptografische Hashes zum Speichern von Passwörtern verwendet, können Sie anhand von /etc/shadow feststellen Datei (vorausgesetzt, Sie haben Root-Zugriff). Jede Zeile ist wie user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved formatiert . Das Passwortfeld darf mit $num$ beginnen (d. h. ein md5-Hash im Passwortfeld sieht aus wie $1$01234567$b5lh2mHyD2PdJjFfALlEz1 wobei es mit $1$ beginnt ). Wenn es damit beginnt, bedeutet dies, dass Ihr System einen kryptografischen Hash verwendet. Das Format des Passwortfeldes auf allen modernen Systemen ist $id$salt$hash . Die ID gibt an, welche Art von kryptografischem Hash Sie verwenden. Das Salt ist eine zufällig generierte Zeichenfolge, die mit dem Schlüssel (Klartext-Passwort) verkettet wird, um vor vorberechneten Tabellen bekannter Hashes zu schützen. Der Hash ist der kryptografische Hash, der aus Salt und Schlüssel/Passwort erstellt wird. Wenn Ihr Passwortfeld mit $num$ beginnt dann verwenden Sie kryptografische Hashes.

Sie wissen also, die Zahlen bedeuten Folgendes:

  • $1$ bedeutet, dass Sie MD5 verwenden
  • $2$ oder $2a$ bedeutet, dass Sie Blowfish verwenden
  • $5$ bedeutet, dass Sie SHA-256 verwenden
  • $6$ bedeutet, dass Sie SHA-512 verwenden

SHA-512 ist der beste verfügbare Hash, den glibc anbietet. Ich weiß nicht, wie stark Blowfish ist, aber es ist nicht Teil von glibc und daher nur auf bestimmten Distributionen verfügbar, die es hinzugefügt haben. SHA-512 erzeugt 512-Bit-Schlüssel oder 2^512 mögliche Kombinationen, bevor eine Kollision zu erwarten ist, und mit einem ausreichend komplexen Passwort würde ein Cluster von Computern sehr, sehr lange brauchen, um entweder das tatsächliche Passwort oder eine Kollision im Hash zu finden .

Auch, wenn Sie einen Hash haben, der nicht mit $num$ beginnt dann verwenden Sie DES und das ist auf eine Länge von 8 Zeichen begrenzt. Ich glaube, dass ältere Systeme, die DES verwenden, oder zumindest einige von ihnen, Passwörter jeder Größe verwenden, aber nur die ersten 8 Zeichen verwenden. Das heißt, wenn Sie Ihr Passwort auf mybigbigapple setzen und jemand verwendet das Passwort mybigbigcity dann werden sie zugelassen, da DES nur mybigbig verwendet und alles danach wird verworfen.

Sie wissen also, dass Ubuntu ab 8.04, das im April 2008 veröffentlicht wurde, MD5-Hashes verwendete. Ubuntu ab 8.10, das im Oktober 2008 veröffentlicht wurde, und alle Versionen seitdem verwenden SHA-512-Hashes. Ich weiß nicht, wie weit vor April 2008, aber ich glaube, seit mehreren Jahren, wenn nicht sogar noch länger, verwendeten die meisten Distributionen Hashes.

Aktuelle 12.04 und 14.04 LTS (Long Term Support Releases) von Ubuntu scheinen standardmäßig SHA-512 zu verwenden, wie am $6$ zu sehen ist dem Hash in der Datei /etc/shadow vorangestellt:

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

Nun ist die Länge des Schlüssels oder Passworts, die für jeden Hashalgorithmus erlaubt ist, nicht das Einzige, was bestimmt, welche Passwortgröße Sie haben dürfen. Der andere interessante Punkt ist, wie das Programm geschrieben ist und welche Länge das Programm selbst unterstützt. Alle modernen passwd-Programme und wahrscheinlich die meisten crypt(3) Funktion unter Linux. crypt hat lange Zeit (seit mindestens MD5 verwendet wurde und wahrscheinlich davor) Zeichenzeiger für den eigentlichen Schlüssel zugelassen. Dies bedeutet, dass die einzige Grenze, wie lange ein Schlüssel akzeptiert wird, davon abhängt, wie viel RAM das Programm zur Verfügung hat, aber aller Wahrscheinlichkeit nach ist dies wahrscheinlich viel viel länger als jedes Passwort, an das sich eine Person jemals erinnern könnte (Millionen Zeichen?).

Dies sollte Ihre Frage beantworten, wie lang ein Passwort sein darf. Hoffe, ich konnte helfen.

Referenzen:

  • crypt(3)-Manpage (Ubuntu 14.04)

  • Manpage SHADOW(5) (Ubuntu 14.04)

  • en.wikipedia.org/wiki/Crypt_(Unix)

  • en.wikipedia.org/wiki/Password_strength

  • en.wikipedia.org/wiki/Md5

  • en.wikipedia.org/wiki/Blowfish_(chiffre)

  • de.wikipedia.org/wiki/SHA-1


Es hängt davon ab, welches Authentifizierungsmodul verwendet wird. In modernen Linux-Systemen gibt es keine maximale Begrenzung der Passwortlänge. Einige veraltete Systeme haben möglicherweise Beschränkungen durch ihr Passwortspeichersystem – beliebte Höchstwerte scheinen 8, 40 und 255 zu sein.


Abhängig davon, wie das Passwort gespeichert ist, MD5, SHA1, BlowFish usw. Ich denke, es gibt keine Beschränkung für das Passwort, das durch die Speichermethode selbst festgelegt wird.

Ältere Implementierungen haben möglicherweise ein Limit, das wahrscheinlich 8 oder 255 Zeichen beträgt.

Dies scheint jedoch eine Frage zu sein, die besser für www.serverfault.com geeignet ist :)


Linux
  1. Was ist POSIX? Warum ist es für Linux/UNIX-Benutzer wichtig?

  2. Erzwingen von Änderungen des Linux-Systemkennworts mit dem Befehl chad

  3. Was ist der aktuelle Runlevel des Linux-Systems?

  4. Was ist das Unix/Linux-Äquivalent von Registered I/O?

  5. Was ist der Unterschied zwischen einem Bibliotheksaufruf und einem Systemaufruf in Linux?

Einführung in das Linux-Dateisystem

Was ist die Shell unter Linux?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Kill-Befehl in Linux?

Was ist das Standardpasswort des Bildschirms?

Was ist der Unterschied zwischen Unix, Linux, BSD und GNU?