So che ci sono molte domande sulle password di hashing sul lato client, ma nessuna di esse, che ho trovato, si rivolge al mio caso d'uso.
La mia app sarà crittografata end-to-end e non è un'opzione per inviare la password dell'utente reale al mio server. Devo cancellare la password sul lato client.
Dopo ore di ricerche ho deciso di utilizzare PBKDF2 con SHA256, ma sono confuso. Sembra che PBKDF2 abbia bisogno di sale.
Voglio utilizzare le implementazioni da crypto-js, perché non ho trovato altre implementazioni per PBKDF2.
Come dovrei generare il sale per PBKDF2? L'hash risultante deve essere lo stesso per ogni esecuzione, poiché sarà la password degli utenti dal punto di vista dei server delle applicazioni.
Potresti inoltre fornire qualche codice di riferimento o progetto, dove viene fatto?
(L'hashing non ha lo scopo di prevenire il MITM, ma di impedire alla mia applicazione di conoscere la password in qualsiasi momento.)
Grazie in anticipo.
Contesto (come suggerito da @Daisetsu)
Questa dovrebbe essere un'applicazione in cui i team di piccole dimensioni possono memorizzare le credenziali, ad esempio per gli switch di rete. Tutti i dati devono essere crittografati end-to-end, in modo che le aziende possano fidarsi dell'applicazione e persino l'hacking del server delle applicazioni non fornisce informazioni sensibili.
Poiché alcuni utenti potrebbero impostare la stessa password per l'autenticazione e la crittografia delle proprie chiavi private (che penso che ogni utente farà), il mio server normalmente sarebbe in grado di decrittografare le chiavi private mentre l'utente accede. Per evitare ciò, deve essere sottoposto all'hash dal client.
Non ci si può fidare del Javascript, ma potrei creare uno zip contenente tutti i file e potresti eseguire l'app angolare localmente contro la mia API REST;)