Memorizzazione di informazioni di autorizzazione di terze parti; È sicuro?

0

Ho una richiesta di funzionalità per connettere la mia web-app PHP al server di posta degli utenti. Di solito mi sono allontanato da questo tipo di lavoro perché significherebbe memorizzare le password di posta degli utenti.

La mia domanda: è sicuro archiviare una password email di terzi, se la password e-mail è crittografata usando la funzionalità openssl di PHP, di cui la chiave privata sarà una versione hash della password di accesso degli utenti all'applicazione PHP. (Le password di accesso degli utenti verranno sottoposte a hash con un algoritmo diverso a fini di autenticazione.) La password in chiaro all'app Web non verrà memorizzata nel server.

Al momento dell'accesso dell'utente, possiamo utilizzare la password in testo semplice per accedere alla chiave privata alla password e-mail crittografata degli utenti. Questo potrebbe quindi essere crittografato usando openSSL, con una chiave del server aggiornata quotidianamente.

Il risultato (o parte di esso) di tale crittografia potrebbe essere memorizzato come cookie nel browser degli utenti, accessibile solo ogni volta che l'utente carica una pagina nell'app Web.

Questo metodo è efficace per garantire la sicurezza delle password e-mail di terze parti?

    
posta user1020317 18.02.2014 - 20:03
fonte

1 risposta

1

È difficile capire da come lo hai formulato, ma sembra che ci possano essere alcune aree che possono essere migliorate. Non vuoi che la chiave venga derivata da una versione con hash della password, ma piuttosto desideri utilizzare una funzione di derivazione sicura della chiave per ricavare una chiave di crittografia per il portachiavi dell'utente.

Le chiavi derivate hanno una sicurezza limitata, quindi si desidera limitare la quantità di crittografia con la chiave derivata. La mia raccomandazione è quella di produrre una chiave di crittografia veramente casuale da utilizzare per le credenziali di posta elettronica dell'utente. Quella chiave (simmetrica) viene quindi crittografata con la chiave derivata dalla password dell'utente e memorizzata nel database. Quando l'utente effettua l'accesso, è necessario utilizzare la propria password per determinare la chiave derivata e la chiave dati deve essere decrittografata e archiviata nella sessione dell'utente. Quando l'utente deve accedere alla configurazione della posta elettronica, la chiave è disponibile per la decrittografia, tuttavia non appena termina la sessione, le credenziali verranno cancellate dalla memoria e non saranno disponibili fino a quando l'utente non reinserirà la propria password.

L'uso di una chiave separata per crittografare le credenziali di posta elettronica significa anche che è possibile utilizzare la crittografia asimmetrica per crittografare la chiave di configurazione in modo che possa essere utilizzata da un server separato per l'invio di e-mail quando l'utente non è in linea ( se finisci per aver bisogno di quella funzione). Poiché questo server di posta elettronica potrebbe essere isolato da input provenienti dal mondo esterno, avrebbe un grado di sicurezza molto più elevato e la chiave privata non sarebbe disponibile per il mondo esterno, quindi sarebbe molto difficile compromettere i dettagli dell'account.

    
risposta data 18.02.2014 - 21:16
fonte

Leggi altre domande sui tag