No, stai danneggiando attivamente l'usabilità senza alcun vantaggio per la sicurezza.
Sembra un brutto caso di Security Theater * !
Dico questo perché ciò che stai facendo in questo momento è altrettanto sicuro che mandare il nome utente e la password su HTTPS comunque! Tutto ciò che aggiungi è un paio di comunicazioni di installazione aggiuntive. Le vulnerabilità di questa implementazione e le vulnerabilità di invio HTTPS di password e nome utente sono esattamente le stesse .
Analizziamo l'esempio:
Impostazione e utilizzo del segreto
- Stabilisci una connessione sicura
- Invia il carico utile da memorizzare
- Conferma il payload e, se confermato, accedi
Impostazione e utilizzo di una password
- Stabilisci una connessione sicura
- Invia il carico utile da memorizzare
- Conferma il payload e, se confermato, accedi
Questi passaggi sono esattamente gli stessi e non forniscono ulteriore sicurezza. Se avviene un takeover completo (MITM / livello di sistema), la stessa cosa che accadrà con un nome utente e una password avverrà nel sistema. L'autore dell'attacco vedrà comunque tutti i dati mentre vengono trasferiti e consultati tra il tuo sistema e il server. Questo è il motivo per cui le acquisizioni complete sono così pericolose. In pratica, niente puoi fare per proteggere l'utente. L'utente utilizza un sistema di comunicazione che non è più loro, ma gli aggressori e quell'attaccante possono vedere e utilizzare tutto nella comunicazione.
In realtà tutto ciò che stai facendo è generare un segreto (comunemente chiamato una password) da memorizzare, e alcuni metadati (comunemente chiamato un nome utente) per identificarlo. Se i meta dati e il segreto corrispondono a una voce, recuperi tali informazioni. L'unico vantaggio che stai guadagnando è che l'utente ottiene una password extra lunga. Ma a quale fine? Bcrypt ha una lunghezza massima del carattere, quindi stai limitando il numero di caratteri che può avere la singola password. Ora hai anche quel segreto condiviso da preoccuparti di ottenere lo stesso ogni volta o il tuo utente o non possono mai accedere.
Le password e i nomi utente su HTTPS sono stati utilizzati così spesso perché dopo un certo punto (la connessione HTTPS) non c'è nulla che tu possa fare per aumentare la sicurezza. Se qualcuno ottiene l'accesso a tutte le comunicazioni, o allo spazio di memoria, tutte le tue tecniche sono state appena sconfitte poiché devono solo ricreare i tuoi passi e potresti persino non saperlo fino a quando non eseguono il loro attacco.
*: A partire dalla scorsa settimana questa frase è ora maculata sulla mia tastiera ...
*: Il teatro della sicurezza è l'atto di mettere in pratica le pratiche che non fanno nulla per migliorare la sicurezza e potrebbero addirittura danneggiarlo!