EDIT : domanda rielaborata. Anche la versione precedente è stata richiesta male.
Sul mio sito web gli utenti scrivono messaggi sensibili che devono essere tenuti segreti. L'intera area utente è su SSL, quindi la comunicazione tra utente e server dovrebbe essere abbastanza sicura. Ora voglio archiviare i messaggi in modo sicuro, in modo che un utente malintenzionato che accede al database non possa leggere i messaggi.
Con l'aiuto di Security.SE, sto implementando questo schema di crittografia Revisione dell'implementazione - chiave indipendente, lato amministratore e lato utente .
Come puoi vedere, userkey (uk) è qualcosa di sensibile e viene generato al momento del login con PBKDF2 (con password e user salt). Non posso richiedere all'utente di inserire la password ogni volta che vuole leggere un messaggio, quindi voglio mantenere il Regno Unito tra le richieste. Qual è il modo migliore per evitare che un utente malintenzionato ottenga uk?
Penso di poter generare uk al momento del login (quando l'utente immette il passaggio), crittografarlo e memorizzarlo.
So che le sessioni di php non sono così sicure, apc_cache_info () potrebbe essere molto dannoso, i cookie possono essere rubati. Quindi, IV in un cookie, chiave nella cache APC, cifrario nella sessione: gli hacker devono ottenere i cookie, l'accesso al disco, l'accesso alla RAM per decrittografare il Regno Unito. Ho sbagliato?
Cosa succede se io:
- Genera una chiave casuale r
- Genera un vettore di inizializzazione casuale IV
- Cripta i dati (una chiave PBKDF2, 100 giri) con CBC AES 128 e con r come chiave e IV come IV
- Archivia il testo cifrato nei dati di sessione standard
- Archivia la chiave nella cache APC
- Salva l'IV in un cookie
- Recupera IV, r e cipher quando ne ho bisogno, decrittografare i dati e usarli
Vorrei sapere se uk è ora memorizzato in modo più sicuro. Potresti suggerirti un modo migliore per farlo?
Grazie mille