Implicazioni sulla sicurezza dell'utilizzo di un algoritmo per allungare e salare le password prima di utilizzarle?

1

Ho creato un bookmarklet JavaScript che, tra le altre cose, base64 codifica le mie password in testo semplice combinate con le informazioni del nome di dominio del sito. L'idea è che l'output di base64 è significativamente più lungo della sua origine e le informazioni sul dominio mantengono la stessa password dal generare lo stesso output se riutilizzate su un sito diverso. Puoi anche saltarlo con la tua chiave personale, se più persone utilizzano lo stesso algoritmo. Finché ha un risultato prevedibile, l'idea è che potresti usarla per rendere le password leggibili dall'uomo la lunghezza di un computer strong generato. Non vedo alcun svantaggio a fare questo, ma non sono un esperto di sicurezza e ho la sensazione che non sto vedendo qualcosa qui che potrebbe effettivamente indebolire la sicurezza intrinseca di una buona password. Sono io? In tal caso, cos'è e può essere risolto?

Per la tua considerazione ecco una versione semplificata dello script che sto usando che mostra l'idea di base:

(function() {
    var pwelements = document.querySelectorAll("input[type='password']");
    for (var i in pwelements) {
        var pw = btoa(pwelements[i].value + window.location.hostname.replace('www.', '').substring(0, 10));
        pwelements[i].value = pw;
    }
    return false;
})();

L'utilizzo di questo script con la parola "test" su link richiede il tempo stimato di crack da 1 secondo a "10000+ Centuries" ( o 98 secoli se si utilizza un super computer). Ovviamente questi tipi di controllori di password sono intrinsecamente imperfetti, ma servono a illustrare la differenza che spero di ottenere con questo. I risultati codificati di "test" passati attraverso questo algoritmo sono "dGVzdHBhc3N3b3JkLms=". Le password reali in genere producono un output molto più lungo.

Se questo genere di cose è una buona idea, è possibile creare una versione di questo che potrebbe essere completamente open-source ma non compromettere la sicurezza delle password che lo utilizzano? In questo momento tutto ciò è reversibile se si conosce l'algoritmo e si conosce l'output, l'unica cosa che si risparmia è che se è stato usato il sale specifico dell'utente, una volta eliminato il server non dovrebbe essere possibile eseguire semplicemente un attacco tramite questo algoritmo a bruto forza usando la versione in testo semplice (senza conoscere il sale) ... penso? Penso che il sale servirebbe come una forma di autenticazione a due fattori, ma non sono sicuro di quanto sarebbe efficace. Per quanto posso dire questo è almeno non peggiore rispetto all'utilizzo della password originale normalmente.

Sono convinto che ci sia un motivo per cui questa è una cattiva idea, ma non so di cosa si tratta.

    
posta JNF 28.07.2016 - 08:24
fonte

1 risposta

1

Direi che non aggiunge molto. Base64 è solo una codifica, non aggiunge alcuna entropia alla tua password.

È anche veloce da calcolare, quindi non rallenterà un attacco a forza bruta.

L'unica cosa che può prevenire è un attacco contro una tabella arcobaleno universale che non ha preso in considerazione il Base64, ma forse alcuni tavoli arcobaleno li hanno tenuti in considerazione. Non sarebbe più complicato calcolare quella tabella arcobaleno standard. L'unico buon modo per prevenire un attacco da tavolo arcobaleno è usare un sale.

Inoltre, supponi sempre che il sale sia noto. Lo scopo è quello di evitare che le tavole arcobaleno non siano attacchi di forza bruta. Il modo migliore per prevenire attacchi a forza bruta consiste nell'utilizzare un processo di hashing lento come bcrypt.

    
risposta data 28.07.2016 - 09:20
fonte

Leggi altre domande sui tag