Caratteri noti nelle password?

13

Generico password per tutto ciò che richiede sicurezza utilizzando il seguente metodo:

ksoviero@ksoviero-Latitude-E7440:~$ head -c 16 /dev/urandom | base64 
gorv/cp+lSiwiEfKck2dVg==

256 ^ 16 combinazioni è più che sufficiente sicurezza (almeno per me), e impiegherebbero 2e21 anni anche per il più potente computer alla forza bruta (a 5 miliardi di tentativi al secondo, il che è impossibile).

Tuttavia, noti gli ultimi due caratteri? Sono sempre lì a causa del formato base64 e del fatto che sto usando 16 byte.

C'è un motivo per includere o non includere i due simboli '='? L'argomento per includerli sarebbe che aggiungono simboli e lunghezza aggiuntivi alla password. Tuttavia, se si presume che l'autore dell'attacco sappia che io generi password usando questo metodo (e per sicurezza, devi presumere che sappiano che tutto ignora quella vera password), allora i due simboli '=' sono già noti e quindi non aggiungere sicurezza aggiuntiva. Tuttavia, possono far male?

    
posta Soviero 29.07.2014 - 17:35
fonte

3 risposte

22

Base64 - processi di codifica immessi byte per gruppi di 3; ogni gruppo produce 4 caratteri. I segni '=' sono padding in modo che la lunghezza della stringa sia sempre un multiplo di 4; poiché i segni '=' non fanno parte dell'alfabeto Base64 di base (lettere, cifre, '+' e '/'), il decodificatore sa che questi segni sono padding e non codificano byte effettivi. In questo modo, le sequenze di input di n byte, dove n non è un multiplo di 3, possono essere codificate e decodificate senza ambiguità.

Entropia-saggio, i segni '=' non danneggiano e non aiutano. Puoi lasciarli o rimuoverli come desideri, non cambierebbe nulla per sicurezza.

(Se fanno male, questo significa che la funzione di hashing della password utilizzata nel sistema è estremamente scarsa e debole, e questo sarebbe un problema che dovrebbe essere risolto - non rimuovendo i segni "=", ma usando una buona funzione di hashing della password.)     

risposta data 29.07.2014 - 17:46
fonte
15

Le risposte fornite rispondono già alla domanda, ma se si desidera una password della stessa lunghezza sostituita da quelli uguali con più caratteri casuali (più caratteri casuali, non più randomizzati), è possibile arrotondare il numero di byte letti fino al multiplo più vicino di 3:

head -c 18 /dev/urandom | base64

Questo perché la codifica base64 funziona su gruppi di 3 byte (come già indicato da Tom Leek).

    
risposta data 29.07.2014 - 18:49
fonte
-2

Sembra che tu già conosca la risposta.

Mantenerli riduce lo spazio della password per la ricerca. La coerenza tra le password è dannosa solo se è possibile ridurre lo spazio della password a una dimensione esauribile in base alla generazione della password. Che in questo caso non credo sia possibile. Personalmente mi piace includere più simboli nella generazione della mia password, ma con la lunghezza che stai generando per mantenerli non è dannoso.

    
risposta data 29.07.2014 - 18:02
fonte

Leggi altre domande sui tag