Ho letto di 2FA e di come è usato, e la cosa che mi ha colpito di più è che tutti sembrano memorizzare il segreto del TOTP come testo in chiaro nel loro database.
Capisco che tu abbia bisogno del segreto come testo in chiaro per verificare l'OTP, quindi non puoi farlo con hash, ma non potresti almeno cifrarlo in un certo modo, nel caso in cui il tuo database venga trapelato? Mi sento come se ci fossero dei modi per renderlo un po 'più sicuro, ma mi chiedo se ci siano dei problemi con le idee che ho.
- Cripta il segreto TOTP utilizzando la chiave memorizzata sul server: Questo non sarebbe l'ideale dato che dovresti crittografare tutto con la stessa chiave, ma un database può essere divulgato senza che l'utente malintenzionato abbia pieno accesso a tutti file sul server. In questo scenario, almeno i segreti TOTP sono ancora protetti.
- Cripta il segreto TOTP utilizzando la password utente: quando l'utente esegue l'accesso e il controllo hash della password è valido, la stessa password che è stata inviata potrebbe essere utilizzata come chiave per crittografare / decrittografare il segreto TOTP. Quando l'utente imposta per la prima volta la sua 2FA, richiede che inserisca la sua password in modo che possiamo usarla per crittografare il segreto TOTP. Quando accedono con una password corretta, decifri il segreto TOTP utilizzando la password e convalidi l'OTP. Se il database è trapelato, la password viene cancellata e il segreto TOTP è crittografato, quindi l'autore dell'attacco non ha informazioni su alcun account a meno che non conoscano la password.
- Combina entrambi i metodi: combina la password con una chiave memorizzata a livello locale e la utilizza come chiave di crittografia per il segreto TOTP. In questo modo, se il database è trapelato e l'hacker conosce la password, non può ancora decrittografare il segreto TOTP a meno che non abbia accesso alla chiave memorizzata
Ci sono dei difetti in questo, e se sì, quali sono? Mi sento come se tutto fosse meglio di un semplice salvataggio del TOTP come testo in chiaro.