Sto cercando di proteggere i dati utilizzando AES per crittografare tutti i dati PII prima che vengano salvati nel database, e penso che il meccanismo generale sia qualcosa di simile in basso.
(Questo è quello che penso, non è necessario correggere)
Dati di input dell'utente - > html invia i dati al servizio web tramite https - > il servizio Web crittografa i dati utilizzando la chiave privata che è distinta per ogni utente - > il servizio Web salva i dati nel database
e al contrario:
Dati richiesta utente - > il servizio Web ottiene i dati dal database - > servizio web decifrare i dati - > il servizio web rimanda i dati all'utente tramite https
Ad esempio, l'e-mail è un campo PII protetto da crittografia. Diciamo quando l'utente si sta registrando, forniscono una e-mail e una password. Il servizio Web calcola una chiave privata casuale e utilizza tale chiave per crittografare la posta elettronica (domanda I qui) e salva l'e-mail crittografata nel database. Quando l'utente vuole accedere utilizzando la combinazione di email e password, invia di nuovo l'email al servizio web (domanda II qui).
Tuttavia sorgono le due domande:
- Devo memorizzare la chiave privata nel database? Questo dovrebbe essere criptato? In tal caso, come può essere recuperato e decodificato? Altrimenti cosa dovremmo fare per la chiave privata?
- Supponendo che nella domanda 1, salviamo la chiave privata da qualche parte con ID utente come PK. Nel momento in cui l'utente tenta di accedere con e-mail e password, l'app Web riceve e-mail non crittografate senza conoscere l'ID utente. Come dovrebbe decodificare l'e-mail senza l'ID utente che viene utilizzato per individuare la chiave privata? Senza la chiave privata, in che modo il sistema può confermare che l'e-mail è un'e-mail valida?
Queste potrebbero essere domande di base ma non riesco a capirlo ... Ti chiedi che cosa sta usando il settore per risolvere i problemi, o sono sulla buona strada?