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.