Per una webapp che memorizza i file crittografati, una chiave pubblica viene utilizzata per crittografare le chiavi / ivs casuali, che vengono utilizzate per crittografare i file memorizzati. La chiave privata, utilizzata per la decodifica, è protetta da una password che deve essere fornita dall'utente per accedere ai file (la natura del sistema è tale che solo un utente ha / ha bisogno della possibilità di accedere ai file non crittografati).
Per evitare che l'utente debba digitare la password della chiave privata su ogni caricamento della pagina, deve essere memorizzato (ad esempio, per 10 minuti). La domanda è, dove / come memorizzarla?
-
Inserirlo in un cookie è analogo all'utente che lo scrive su ogni richiesta, quindi è un vantaggio. Ma, poi qualcuno con accesso a il loro computer potrebbe guardare i dati del loro browser e vedere / recuperare la chiave in testo normale. Inoltre, spetta al browser espirarlo in tempo (cosa che potrebbe scegliere di non fare)
-
D'altra parte, potrebbe essere memorizzato nei dati di sessione sul server. Questo dà un controllo migliore sulla sua scadenza e significa la chiave non sta volando su Internet ad ogni richiesta (ovviamente, questo è tutto su https, ma ancora). Ma questo significa archiviare il password, la chiave e tutti i dati sulla stessa macchina (anche se temporaneamente), che non sembra neanche così bello.
Uno di questi è oggettivamente migliore? C'è un'alternativa migliore di entrambi?