Recentemente ho scritto una piccola libreria javascript che consente di verificare gli hash delle password del server delle identità in nodeJS. Mentre stavo facendo la ricerca ho imparato che il tipo di hash, iterazioni e lunghezza del sale è codificato aggiungendo byte extra all'hash finale che viene dato in base64 in seguito.
In particolare l'ordine è sempre lo stesso e leggendo i primi 25 byte di dati si impara tutto su come la sottochiave è stata codificata. Ecco un esempio che include l'esempio di inserimento.
this.writeNetworkByteOrder(outputBytes, 1, 1);
this.writeNetworkByteOrder(outputBytes, 5, 10000);
this.writeNetworkByteOrder(outputBytes, 9, salt.length);
function() writeNetworkByteOrder(buffer, offset, value){
buffer[offset + 0] = value >> 0;
buffer[offset + 1] = value >> 8;
buffer[offset + 2] = value >> 16;
buffer[offset + 3] = value >> 24;
}
Questa pratica è comune? Dovrei provare ad evitare di usare la password predefinita fornita con il server di identità? Quanto viene dato conoscendo queste informazioni?
Perché questo non è un duplicato
La mia domanda riguarda specificamente la codifica che si verifica sull'hash risultante. Questo è l'hash base64 che è il risultato dell'operazione del server di identità. Fornendoti sapere che l'hash è base64 puoi leggere prontamente il tipo di crittografia, le iterazioni e la lunghezza del sale direttamente da esso. Voglio sapere come e se questo è sicuro e se è considerato una buona pratica di sicurezza.