Ricerca di aiuto con l'implementazione di SCRAM in .NET

0

Sono in ritardo per la festa e devo essere catturato. Sto facendo i miei compiti a guardare le cose. So che non voglio un CRAM di risposta alle sfide non salato, voglio SCRAM di risposta alle sfide salate.

Penso che ASP.NET MVC mandi le password in chiaro sul filo da quello che posso dire, e fa affidamento su https per sicurezza. WebSecurity.Login ha campi nome utente e password esposti nel controller.

So che non dovrei rotolare la mia sicurezza. Preferibilmente voglio implementare uno standard facile da usare e difficile da rovinare. Voglio che le persone che lavorano con il codice tra 10 anni siano in grado di supportarlo / aggiornarlo senza tirar fuori i capelli.

Nel caso in cui avessi bisogno di fare un po 'di lavoro pesante, ho esaminato l'implementazione CryptSharp sCrypt. Su blog di Tony Arcieri I ha questa immagine confrontando diversi costi hardware per craccare una password .

Non so quanto sia legittimo o esattamente ciò che significano i numeri (10 caratteri KDF vs un testo KDF a 80 caratteri), ma quello che ho capito dalla griglia è che SCrypt è veloce (64 ms) se si conosce il password, ma costa un sacco di risorse hardware / denaro per generare una tabella arcobaleno per esso, e che può costare sostanzialmente più risorse hardware rispetto a PBKDF2 e Bcrypt. Per favore, non confondere questo per me facendo finta di sapere qualcosa su questi 3 KDF, mi sto fidando ciecamente di internet qui.

Inoltre, se alla fine dovessi implementare SCRAM da solo, ho ragione a capire che il client e il server devono generare lo stesso valore? E se sì, ci sono le migliori implementazioni KDF di javascript + server che vanno d'accordo meglio di altre?

Qualche intuizione che voi ragazzi abbiate sarà molto apprezzata, sono davvero profondamente qui. Grazie!

    
posta Andrew Hoffman 06.12.2013 - 17:32
fonte

1 risposta

1

Se stai parlando di un sito web, non c'è alcun vantaggio nel proteggere la password sul filo.

Se la connessione tra l'utente e il sito Web viene compromessa, un utente malintenzionato può inviare all'utente pagine / script compromessi che perdono la password prima di crittografarla o eseguirne l'hashing.

Anche uno schema di derivazione delle chiavi lato client in JavaScript sarà lento in modo non tangibile, mentre un utente malintenzionato sarebbe in grado di utilizzare invece il codice nativo veloce.

Quindi, se hai bisogno di proteggere la password sul cavo, semplicemente proteggi l'intera connessione usando SSL, e lascia perdere.

    
risposta data 08.12.2013 - 18:32
fonte

Leggi altre domande sui tag