Autenticazione WebApp sicura

1

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;)

    
posta Hendrik 24.04.2016 - 21:23
fonte

1 risposta

0

Come ho detto nel commento, non puoi fidarti di javascript servito dal server. L'idea di mantenere il client scaricato nei loro computer è interessante, anche se questo non risolve il problema. Il server può ancora includere javascript come parte di una risposta, a meno che tu non stia insanamente attento. In questo caso non andrei davvero con javascript. Ci sono troppi modi in cui potrebbe andare storto.

In questo caso, la mia raccomandazione sarebbe quella di utilizzare un plug-in del browser o un'altra applicazione lato client che possa essere compilata e firmata poiché si tratta di credenziali sensibili. C'è qualche ragione per cui non potresti semplicemente andare con un servizio come lastpass? Perché reinventare la ruota.

EDIT:

Come implementare crypto-js PBKDF2 con salt link

Hai anche detto che pensi che gli utenti possano riutilizzare le loro password sia nel tuo login di sistema che nelle loro chiavi private. Dopo che l'utente ha inviato le sue chiavi / certificati al sistema, potresti voler controllare i loro crediti caricati utilizzando la password fornita per sbloccare le chiavi cert / private.

    
risposta data 24.04.2016 - 21:54
fonte

Leggi altre domande sui tag