Sto progettando un sistema in modo tale da crittografare i profili di un utente. L'unico modo per accedere alle informazioni in esso contenute è:
- Fornire la password per l'account
- Reimpostazione della password utilizzando i codici di backup offline
- 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.