qual è la lunghezza massima consentita della password sul sistema unix / linux?
qual è la lunghezza massima consentita della password sul sistema unix / linux?
Risposte:
Se il tuo sistema utilizza un hash crittografico per archiviare le password, ad esempio MD5, SHA1, ecc., Non vi è alcun limite alla lunghezza della password stessa poiché questi hash possono essere creati con qualsiasi quantità di dati. Un hash MD5 o SHA1 può essere creato per un intero disco rigido e questo viene comunemente fatto a scopi forensi perché se anche un solo bit viene modificato in modo così lieve, allora si ha un hash molto diverso e quindi è possibile verificare che i dati siano cambiati. Ciò significa che è possibile utilizzare esattamente gli stessi algoritmi per verificare se i dati sono stati manomessi. Linux (almeno l'attuale Linux) utilizza queste stesse funzioni hash. Ti chiederà una password e quindi creerà un hash crittografico della password che hai fornito e vedrà se questo hash corrisponde alla password memorizzata.
C'è un leggero svantaggio nell'uso di questi hash, ovvero che un hash ha dimensioni finite, ad esempio un hash MD5 è 128 bit. Ciò significa che un hash MD5 ha solo 2^128
o 340,282,366,920,938,463,463,374,607,431,768,211,456
possibili combinazioni. Ora, sebbene sia un numero elevato, ciò significa che puoi avere quella che chiamano una collisione hash in cui hai due oggetti o chiavi diversi che producono lo stesso hash. In teoria, maggiore è la dimensione della chiave, minore è la probabilità di una collisione e maggiore è il tempo necessario per forzare una password, ma che sta valutando rigorosamente l'entropia e quanto tempo PU CANma c'è anche la possibilità che la prima voce che provano possa essere quella che corrisponde anche se si tratta di una collisione di hash. In generale, sei davvero più sicuro usando un hash che ha una dimensione della chiave più grande perché, supponiamo che questo sia MD5, le probabilità che la prima password corrisponda a 340,282,366,920,938,463,463,374,607,431,768,211,456
possibili corrispondenze è estremamente improbabile. Scegli anche una buona password perché molti cracker proveranno ad usare elenchi di parole, elenchi di nomi e mutazioni di questo elenco (cioè se la parola è "pesce", allora proveranno fish1234
, fish!@#$
ecc.) Prima di fare affidamento sulla forzatura bruta di una password.
Il modo in cui puoi capire se il tuo sistema utilizza hash crittografici per archiviare le password è dare un'occhiata al /etc/shadow
file (supponendo che tu abbia accesso come root). Ogni riga è formattata come user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved
. Il campo della password può iniziare con $num$
(cioè un hash md5 nel campo della password appare come da $1$01234567$b5lh2mHyD2PdJjFfALlEz1
dove inizia $1$
). Se inizia con questo, significa che il tuo sistema sta usando un hash crittografico. Il formato del campo password su tutti i sistemi moderni è $id$salt$hash
. L'id specifica il tipo di hash crittografico che stai utilizzando. Il salt è una stringa generata in modo casuale concatenata con la chiave (password di testo semplice) per proteggere dalle tabelle precompatte di hash noti. L'hash è l'hash crittografico creato da salt e chiave / password. Se il campo della password inizia con$num$
allora stai usando hash crittografici.
Quindi, sai, i numeri significano questo:
$1$
significa che stai usando MD5$2$
o $2a$
significa che stai usando il pesce palla$5$
significa che stai usando SHA-256$6$
significa che stai usando SHA-512SHA-512 è il miglior hash disponibile da utilizzare offerto da glibc. Non so quanto sia forte il pesce palla, ma non fa parte di glibc e quindi è disponibile solo su alcune distribuzioni che lo hanno aggiunto. SHA-512 produce chiavi a 512 bit o 2 ^ 512 possibili combinazioni prima che ci si possa aspettare una collisione e con una password abbastanza complessa, un cluster di computer impiegherebbe molto tempo a trovare la password effettiva o una collisione nell'hash .
Inoltre, se hai un hash che non inizia con $num$
allora stai usando DES e che è limitato a una lunghezza di 8 caratteri. Credo che i sistemi più vecchi che utilizzano DES, o almeno alcuni di essi, utilizzeranno password di qualsiasi dimensione ma utilizzeranno solo i primi 8 caratteri. Questo significa che se imposti la tua password mybigbigapple
e qualcuno la usa, mybigbigcity
allora gli sarà permesso di entrare perché DES utilizzerà solo mybigbig
e tutto ciò che verrà successivamente scartato.
Quindi, sai, Ubuntu a partire dall'8.04, che è stato rilasciato nell'aprile 2008, utilizzava gli hash MD5. Ubuntu dall'8.10, che è stato rilasciato nell'ottobre 2008, e tutte le versioni da allora usano gli hash SHA-512. Non so quanto tempo prima dell'aprile 2008, ma credo che per diversi anni, se non di più, la maggior parte delle distribuzioni ha utilizzato gli hash.
Gli attuali 12.04 e 14.04 LTS (versioni di supporto a lungo termine) di Ubuntu sembrano usare SHA-512 per impostazione predefinita, come si può vedere con l' $6$
anteprima dell'hash nel file / etc / shadow:
catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]
Ora la lunghezza della chiave o della password consentita per qualsiasi algoritmo di hashing non è l'unica cosa per determinare la dimensione della password che ti è consentito avere. L'altro elemento di interesse è il modo in cui è scritto il programma e la durata del programma stesso. Tutti i moderni programmi passwd e probabilmente la maggior parte delle crypt(3)
funzioni in Linux. crypt per molto tempo (dal momento che almeno MD5 è stato usato e probabilmente prima) ha consentito i puntatori di caratteri per la chiave effettiva. Ciò significa che l'unico limite alla durata di una chiave che accetterà si basa sulla quantità di RAM che il programma ha a sua disposizione ma, con ogni probabilità, questo è probabilmente molto più lungo di qualsiasi password che una persona possa ricordare (milioni di personaggi?).
Questo dovrebbe rispondere alla tua domanda su quanto può essere lunga una password. Spero di averti aiutato.
Riferimenti:
Dipende dal modulo di autenticazione utilizzato. Nei moderni sistemi Linux, non esiste un limite massimo per la lunghezza della password. Alcuni sistemi obsoleti potrebbero avere dei limiti imposti dal loro sistema di archiviazione delle password: i valori massimi popolari sembrano essere 8, 40 e 255.
A seconda di come viene memorizzata la password, MD5, SHA1, BlowFish ecc. Penso che non vi siano limiti alla password impostata dal metodo di archiviazione stesso.
Le implementazioni precedenti potrebbero avere un limite di 8 o 255 caratteri.
Questa sembra una domanda più adatta a www.serverfault.com :)
Il comando passwd coinvolge il comando mcrypt per la crittografia. Secondo il codice sorgente di mcrypt la dimensione massima di stdin è limitata a 512 caratteri (cifre) - ma questo era due anni fa .... - (aggiornerò questa risposta nelle prossime ore) ... Sì ... Nel codice sorgente 2.6.8 di mcrypt nella directory src, c'è il file getpass.c - lì all'inizio Vedi il valore 512 impostato come valore char statico. (Mi piacerebbe pomparlo fino a 1,4 GB ...):