Sto configurando un sito Web per utilizzare l'interfaccia OAuth2 di Google per l'autenticazione dell'utente. Il sito Web memorizzerà i dati privati associati a ciascun utente, che ho intenzione di crittografare.In che modo i dati privati possono essere protetti con l'autenticazione OAuth2?
Se ho implementato il mio metodo di autenticazione per il sito Web, potrei facilmente ricavare una chiave dalle credenziali dell'utente (che includono la password dell'utente), consentendo la protezione dei dati per ciascun utente. Ma con OAuth2, credo di poter ricevere un solo token di accesso, garantendo tale autorizzazione all'utente per un periodo di tempo - il problema è che il valore del token di accesso cambierà nel tempo.
C'è un modo in cui OAuth2 può fornirmi un segreto immutabile legato all'utente che posso utilizzare per derivare una chiave sicura? O c'è qualche altro metodo per creare un segreto persistente sicuro usando OAuth2?
--- --- Modifica
In risposta alle domande e commenti, qui ci sono alcune riflessioni da considerare:
- Tutte le informazioni utente deve sempre essere protetto con crittografia forte e autenticazione degli utenti - la ragione per cui leggiamo così tanti articoli di notizie sugli intrusioni nel database del sito web & è perché gli sviluppatori dicono "abbiamo davvero bisogno di proteggerlo" e poi rispondiamo con "No - perché nessuno, ma noi saremo in grado di accedere al database, la sicurezza è difficile , eccetera". L'hacker scarica il database e viola. Carte di credito, indirizzi e-mail, numeri di telefono, password, tu lo chiami e poi vieni compromesso.
- Ci sono solo due veri segreti: uno è una password memorizzata nella testa di qualcuno, l'altro è un forte valore casuale a cui solo l'utente autorizzato ha accesso (come un token fisico). Se si ritiene che una chiave sicura possa essere derivata da un solo indirizzo e-mail o che un segreto debba essere memorizzato in un database, non si capisce veramente la sicurezza.
Credo che quello che stavo cercando di scoprire era se un provider di OAuth in grado di fornire al cliente OAuth un valore immutabile legato saldamente sia utente e cliente - in modo efficace, questo sarebbe una chiave che può essere sbloccata solo dal Provider OAuth che utilizza una combinazione del segreto dell'utente (la sua password di autenticazione) e il segreto del client (utilizzato nel protocollo OAuth). Il client potrebbe quindi utilizzare questo valore per fornire un ragionevole livello di sicurezza per i dati dell'utente.
Ovviamente questa implementazione non è perfetta dall'abuso, ma implementata correttamente, potrebbe fornire un modo ragionevole per proteggere i dati mentre si utilizzano ancora le buone pratiche dello schema OAuth.
Ho votato per chiudere come troppo ampio. Tuttavia, penso che la domanda sia buona e ben chiesta. Non sono mai troppo sicuro se domande come questa dovrebbero essere chiuse o meno. La domanda è chiaramente dal punto di vista di un programmatore, ma è una domanda di programmazione nell'ambito di StackOverflow? –
Esattamente come pensi di * ricavere * un segreto da qualcosa che non è segreto, come l'id utente? Ricorda che le password e gli indirizzi e-mail possono e cambieranno, l'unica costante è l'id utente e che non è segreta. Dovresti generare un segreto casuale e memorizzarlo nel tuo database, associato all'ID utente. Ma il segreto utilizzato per decodificare i dati nel database è anche nel database, il che lo rende inutile. –
Non credo sia possibile ottenere ciò che stai chiedendo: se hai bisogno di accedere ai dati, devi accedere alla chiave. Il "segreto dell'utente" e il "segreto del cliente" non sono cose molto diverse. OAuth viene utilizzato per determinare che l'utente è chi dice di essere: o devi fidarti o meno. –