Inizialmente avevo chiesto questo su StackOverflow , ma a causa della mancanza di trazione e di una raccomandazione da parte di un utente, l'ho chiesto anche qui.
Immagina uno scenario in cui un'applicazione client invia una password a un server di back-end in modo che il server possa verificare che l'utente abbia inserito la password corretta quando viene confrontata con una variante memorizzata della password.
Il meccanismo di trasporto è HTTPS con il server che fornisce HSTS & HPKP per l'agente utente e potenti cifrari crittografici preferiti dal server che ha ottenuto un punteggio A + sul test dei laboratori SSL. Tuttavia, potremmo voler evitare di inviare la password originale fornita dall'utente al server dall'agente utente. Invece forse manderemmo un hash dopo un certo numero di round di SHA-256 sul client.
Sul lato server, per l'archiviazione delle password utilizziamo bcrypt con un numero elevato di round.
Da un punto di vista crittografico, c'è qualche svantaggio nell'esecuzione di bcrypt sul valore hash già sha-256 rispetto a direttamente sulla password di testo normale? La natura di lunghezza fissa del testo di input quando si utilizzano hash in qualche modo compromette i punti di forza dell'algoritmo.
Non sto chiedendo informazioni su prestazioni come memoria, CPU, requisiti di memoria o tempo di wall clock necessari per calcolare, memorizzare, inviare o confrontare valori. Sono semplicemente interessato a se applicare un hash prima dell'applicazione di bcrypt potrebbe indebolire la forza di bcrypt nel caso di una divulgazione dell'intero elenco di valori memorizzati.
Ho letto post questo (che trovo interessante e utile), ma non sto specificatamente chiedendo se è una buona idea di hash sul lato client - Sono più interessato a se fare quindi potrebbe in qualche modo indebolire il sistema di memorizzazione delle password con bcrypt dato che un utente malintenzionato armato di questa conoscenza saprebbe che tutti i valori memorizzati sono derivati da una lunghezza fissa di input costituita da un intervallo molto più piccolo di possibili caratteri (SHA-256)