Fornire una funzionalità di recupero SMS senza compromettere la sicurezza di un account

3

Sto progettando un sistema in modo tale da crittografare i profili di un utente. L'unico modo per accedere alle informazioni in esso contenute è:

  1. Fornire la password per l'account
  2. Reimpostazione della password utilizzando i codici di backup offline
  3. Reimpostazione della password inviando un codice SMS

Assumeremo che il dispositivo che riceve il codice SMS, né il metodo di trasporto degli SMS, non sia stato compromesso.

Affinché i tre metodi consentano l'accesso al profilo dell'utente, verrà generata una chiave per crittografare e decrittografare il profilo. Memorizzeremo quindi le versioni crittografate della chiave in modo che ciascuno dei seguenti metodi elencati sopra possa accedere alle informazioni nel profilo.

Per il metodo 1 e amp; 2, assicurando che la chiave rimanga confidenziale è facile. Per il metodo 1 è sufficiente crittografare la chiave utilizzando la password dell'utente. Per il metodo 2, generare i codici di backup, crittografare la chiave con essi e quindi assegnarli all'utente. Per il metodo 3, tuttavia, non sono sicuro di come dovrebbe essere fatto.

Domanda 1: Come posso fornire una funzionalità che consenta a un utente di recuperare il proprio account inviando un codice SMS al proprio dispositivo, in modo tale che l'organizzazione che memorizza i dati non possa accedere alle informazioni nel profilo dell'utente?

Domanda 2: un'azienda consente agli utenti di reimpostare le proprie password tramite SMS. Ciò significa che l'azienda può accedere alle informazioni memorizzate nell'account dell'utente?

Un'organizzazione è in grado di modificare il sistema in modo che possano recuperare qualunque dato sia stato crittografato, ma assicurati che la volta successiva che l'utente effettui l'accesso memorizzi una copia della loro password. Tuttavia, nel caso in cui un avversario ottenga una copia degli account, la mia domanda rimane comunque valida.

    
posta Mrwerdo 10.02.2018 - 07:42
fonte

1 risposta

2

Non penso sia possibile, con 1 e 2 si sta effettivamente dando all'utente il pieno controllo delle chiavi di crittografia e assicurandosi che il server non le conosca. Tuttavia, con 3 è necessario generare nuove chiavi.

Tuttavia, per garantire a un utente malintenzionato di ottenere una copia del database, un HSM sarà di aiuto. Un HSM è una memoria hardware di chiavi private, il che significa che è impossibile copiare la chiave privata.

Per la tua applicazione SMS, devi crittografare la chiave del profilo con la parte pubblica della coppia di chiavi HSM. Quando devi generare un tasto SMS, puoi fare in modo che HSM decrittografi la chiave del profilo e lo ricodifichi nuovamente con la password SMS (come fai con la normale password), o semplicemente la usi come parte della password -reset process (decifrare e ricodificare quando l'utente imposta la nuova password).

Potrebbero esserci strumenti di crittografia avanzati che non conosco, forse potrebbero essere utilizzate zero prove di conoscenza, tuttavia, questo suona come materiale a livello di ricerca di dottorato.

    
risposta data 10.02.2018 - 09:27
fonte

Leggi altre domande sui tag