La versione di glibc2 della funzione crypt usa ancora DES per metodi di hashing alternativi?

2

Sto cercando di capire come le tipiche distribuzioni Linux generano il campo password per le voci in /etc/shadow . Non riesco a capire quale algoritmo di crittografia viene utilizzato per produrre la stringa della password crittografata.

Ad esempio:

$1$CQoPk7Zh$370xDLmeGD9m4aF/ciIlC.

Da quanto ho capito, il primo valore 1 indica che è stato utilizzato un metodo di hashing MD5 con il secondo valore CQoPk7Zh come salt. Tuttavia, qual è stato l'algoritmo di crittografia utilizzato per produrre la stringa password codificata finale 370xDLmeGD9m4aF/ciIlC. ?

La pagina man di Linux per crypt (3) ha una nota per glibc2 :

If salt is a character string starting with the characters "$id$" followed by a string terminated by "$":

$id$salt$encrypted

then instead of using the DES machine, id identifies the encryption method used and this then determines how the rest of the password string is interpreted.

Penso che la semantica mi stia buttando fuori: il manuale dice che id specifica il metodo di crittografia , ma sta specificando il metodo di hashing .

Credo che il processo funzioni in questo modo:

password ==> MD5(password+salt) ==> hash ==> encryption-algorithm(hash) ==> encrypted-pass

Quindi come faccio a determinare l'algoritmo di crittografia? In particolare, quale algoritmo di crittografia viene utilizzato quando l' id è 6 ( SHA512 )?

    
posta Vilhelm Gray 16.05.2013 - 16:12
fonte

2 risposte

0

Non è coinvolto alcun algoritmo di crittografia. L'uso della "crittografia" è un termine improprio, a causa dell'algoritmo di hashing della password storica basato sul DES, che viene utilizzato principalmente per la crittografia e noto come tale. id è in effetti il metodo di hashing e tutta la documentazione dovrebbe usare correttamente la parola "hash" in tutto invece di "encrypt".

Per id = 1, l'algoritmo non è MD5 (password + sale), ma una variazione su MD5 1000 (sale + password). Il numero di iterazioni fisse (grande al momento in cui è stato introdotto, ma ora minuscolo) è il motivo principale per deprecare questo schema (anche la variazione personalizzata).

Con id = 6, viene usato SHA-512, di nuovo con molte iterazioni. Ulrich Drepper, manutentore di GNU libc, ha scritto una descrizione di SHA-2-crypt con una descrizione precisa e codice di esempio.

Penso che tutte le varianti comuni di crypt codifichino l'hash in una variante base64 (non "la" base 64, ma un insieme leggermente diverso di 64 caratteri stampabili).

    
risposta data 16.05.2013 - 16:52
fonte
1

Penso che significhi veramente un metodo di hashing per l'hash in uso. Il formato è:

"$id$salt$hashed", where "$id" is the algorithm used (On GNU/Linux, "$1$" stands for MD5, "$2a$" is Blowfish, "$5$" is SHA-256 and "$6$" is SHA-512 ...)

la cui fonte è disponibile su wikipedia .

Ho appena visto il manuale e in effetti dice "crittografia metodo". Questi non sono sicuramente metodi di crittografia come DES, ma piuttosto funzioni di hash "a senso unico".

    
risposta data 16.05.2013 - 16:43
fonte

Leggi altre domande sui tag