Wie lang darf das Passwort unter Unix / Linux maximal sein?
Wie lang darf das Passwort unter Unix / Linux maximal sein?
Antworten:
Wenn Ihr System einen kryptografischen Hash zum Speichern von Kennwörtern verwendet, z. B. MD5, SHA1 usw., ist die Kennwortlänge selbst unbegrenzt, da diese Hashes mit einer beliebigen Datenmenge erstellt werden können. Ein MD5- oder SHA1-Hash kann für eine gesamte Festplatte erstellt werden. Dies erfolgt normalerweise zu forensischen Zwecken, da Sie, wenn sich auch nur ein Bit geringfügig ändert, einen ganz anderen Hash haben und somit überprüfen können, ob sich die Daten geändert haben. Dies bedeutet, dass Sie genau dieselben Algorithmen verwenden können, um zu testen, ob Daten manipuliert wurden. Linux (mindestens aktuelles Linux) verwendet dieselben Hash-Funktionen. Sie werden aufgefordert, ein Kennwort einzugeben. Anschließend wird ein kryptografischer Hash des von Ihnen eingegebenen Kennworts erstellt und geprüft, ob dieser Hash mit dem gespeicherten Kennwort übereinstimmt.
Die Verwendung dieser Hashes hat einen kleinen Nachteil: Ein Hash hat eine endliche Größe, zum Beispiel ist ein MD5-Hash 128-Bit. Dies bedeutet, dass ein MD5-Hash nur 2^128
oder 340,282,366,920,938,463,463,374,607,431,768,211,456
mögliche Kombinationen hat. Das ist zwar eine große Zahl, aber das bedeutet, dass Sie eine sogenannte Hash-Kollision haben können, bei der Sie zwei verschiedene Elemente oder Schlüssel haben, die denselben Hash erzeugen. In der Theorie ist , desto größer die Schlüsselgröße, desto geringe Wahrscheinlichkeit einer Kollision und desto länger sollte es ein Passwort Brute - Force - nehmen , aber dass die Entropie streng Auswertung ist und wie lange es CANtake, aber es besteht auch die Möglichkeit, dass der erste Eintrag, den sie versuchen, derjenige ist, der übereinstimmt, auch wenn es sich um eine Hash-Kollision handelt. Im Allgemeinen sind Sie mit einem Hash, der eine größere Schlüsselgröße hat, wirklich sicherer, da die Wahrscheinlichkeit, dass das erste Kennwort nicht mit den 340,282,366,920,938,463,463,374,607,431,768,211,456
möglichen Übereinstimmungen übereinstimmt, äußerst gering ist. Angenommen, es handelt sich um MD5 . Wählen Sie auch ein gutes Passwort, da viele Cracker versuchen, Wortlisten, Namenslisten und Mutationen dieser Liste zu verwenden (dh wenn das Wort "Fisch" ist, werden sie es versuchen fish1234
, fish!@#$
usw.), bevor sie sich darauf verlassen, dass sie ein Passwort erzwingen.
Anhand der /etc/shadow
Datei können Sie erkennen, ob Ihr System zum Speichern von Kennwörtern kryptografische Hashes verwendet (vorausgesetzt, Sie haben Root-Zugriff). Jede Zeile ist wie folgt formatiert user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved
. Das Passwortfeld kann mit beginnen $num$
(dh ein MD5-Hash im Passwortfeld sieht so aus, $1$01234567$b5lh2mHyD2PdJjFfALlEz1
als würde es dort beginnen $1$
). Beginnt es damit, bedeutet dies, dass Ihr System einen kryptografischen Hash verwendet. Das Format des Passwortfeldes ist auf allen modernen Systemen $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 (Nur-Text-Passwort) verknüpft wird, um vor vorberechneten Tabellen bekannter Hashes zu schützen. Der Hash ist der kryptografische Hash, der aus dem Salt und dem Schlüssel / Passwort erstellt wurde. Beginnt Ihr Passwortfeld mit$num$
Dann verwenden Sie kryptografische Hashes.
Die Zahlen bedeuten also 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 verwendenSHA-512 ist der beste verfügbare Hash, den glibc bietet. Ich weiß nicht, wie stark Blowfish ist, aber er ist nicht Teil von glibc und daher nur auf bestimmten Distributionen verfügbar, die ihn hinzugefügt haben. SHA-512 erzeugt 512-Bit-Schlüssel oder 2 ^ 512 mögliche Kombinationen, bevor eine Kollision erwartet werden kann, und bei einem ausreichend komplexen Kennwort würde ein Cluster von Computern sehr viel Zeit benötigen, um entweder das tatsächliche Kennwort oder eine Kollision im Hash zu finden .
Wenn Sie einen Hash haben, der nicht mit "" beginnt, verwenden $num$
Sie "" DES "" und dieser ist auf eine Länge von 8 Zeichen begrenzt. Ich glaube, dass ältere Systeme, die DES verwenden, oder zumindest einige von ihnen, ein beliebig großes Passwort akzeptieren, aber nur die ersten 8 Zeichen verwenden. Dies bedeutet, wenn Sie Ihr Passwort auf setzen mybigbigapple
und jemand das Passwort verwendet mybigbigcity
, wird es zugelassen, da DES nur verwendet mybigbig
und alles, was danach erfolgt, verworfen wird.
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, dass für einige Jahre, wenn nicht mehr, die meisten Distributionen Hashes verwendet haben.
Die aktuellen LTS-Versionen 12.04 und 14.04 (Long Term Support Releases) von Ubuntu verwenden anscheinend standardmäßig SHA-512, wie aus dem $6$
vorangestellten Hash in der Datei / etc / shadow hervorgeht:
catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]
Nun ist die Länge des Schlüssels oder des Kennworts, die für einen beliebigen Hashing-Algorithmus zulässig ist, nicht die einzige Entscheidung darüber, welche Größe das Kennwort haben darf. Das andere interessante Element 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)
Funktionen unter Linux. Krypta für eine lange lange (seit mindestens MD5 verwendet wurde und wahrscheinlich vorher) Zeichen Zeiger für den eigentlichen Schlüssel erlaubt hat. Dies bedeutet, dass die einzige Beschränkung für die Länge eines Schlüssels davon abhängt, wie viel Arbeitsspeicher das Programm zur Verfügung hat. Höchstwahrscheinlich ist dies jedoch weitaus länger als jedes Kennwort, an das sich eine Person jemals erinnern könnte (Millionen von Zeichen?).
Dies sollte Ihre Frage beantworten, wie lang ein Passwort sein kann. Hoffe ich habe geholfen.
Verweise:
Es hängt davon ab, welches Authentifizierungsmodul verwendet wird. In modernen Linux-Systemen gibt es keine maximale Begrenzung der Kennwortlänge. Für einige veraltete Systeme gelten möglicherweise Beschränkungen durch das Kennwortspeichersystem. Die gängigen Höchstwerte liegen anscheinend bei 8, 40 und 255.
Abhängig davon, wie das Passwort gespeichert ist, MD5, SHA1, BlowFish usw. Ich denke, es gibt keine Begrenzung für das Passwort, das durch die Speichermethode selbst festgelegt wird.
Ältere Implementierungen haben möglicherweise ein Limit von 8 oder 255 Zeichen.
Dies scheint jedoch eine Frage zu sein, die besser für www.serverfault.com geeignet ist :)
Der Befehl passwd enthält den Befehl mcrypt für die Verschlüsselung. Laut Quellcode von mcrypt ist die maximale Größe von stdin auf 512 Zeichen (Ziffern) beschränkt - aber das war vor zwei Jahren .... - (Ich werde diese Antwort in den nächsten Stunden aktualisieren) ... Ja ... Im Quellcode 2.6.8 von mcrypt im Verzeichnis src gibt es die Datei getpass.c - dort sehen Sie am Anfang den Wert 512 als statischen Zeichenwert. (Ich würde es gerne auf 1,4 GB aufpumpen ...):