Supponiamo che sto creando un'applicazione web locale (ad esempio l'estensione del browser) in HTML5 per crittografare un database localmente. L'accesso al database è controllato da una password e una chiave master crittografica è derivata dalla password utilizzando un PBKDF. Voglio memorizzare la chiave master derivata in memoria solo mentre l'applicazione è in uso in modo da poter crittografare e decrittografare i record in base alle esigenze.
Ho cercato di utilizzare sessionStorage per questo scopo. Il vantaggio è che la chiave dovrebbe essere solo in memoria e disponibile per la scheda del browser corrente. La chiave dovrebbe essere cancellata se quella scheda o il browser sono chiusi. Il vantaggio è che se è necessario aggiornare la scheda del browser, avrà comunque la sessione attiva e la chiave master, altrimenti sarà necessario reinserire la password ogni aggiornamento. L'aggiornamento può essere un evento raro in quanto è tuttavia un'applicazione singola pagina.
Leggendo la specifica sessionStorage su W3C c'è qualche preoccupazione:
The lifetime of a browsing context can be unrelated to the lifetime of the actual user agent process itself, as the user agent may support resuming sessions after a restart.
Si tratta di riavvio del sistema operativo o di riavvio del browser?
Ciò che io assolutamente voglio evitare è avere la chiave crittografica scritta sul disco dove è molto difficile sbarazzarsi. La citazione sopra dice che esiste la possibilità che la chiave nel sessionStorage possa essere archiviata sul disco come parte del processo di recupero / riavvio di emergenza? Oppure questo processo di riavvio viene solitamente gestito solo in memoria?
a) Qualcuno ha qualche conoscenza su come i browser open source Tier 1 (Firefox, Chromium) gestiscono sessionStorage e se i contenuti possono essere scritti su disco, anche temporaneamente nel caso di un arresto anomalo del browser?
b) Esistono delle attenuazioni per impedire la perdita della chiave sul disco in caso di arresto anomalo del browser o di riavvio? Ci sono delle impostazioni di about:config
che potrebbero essere usate per disabilitare il recupero di sessione dopo un crash del browser?
c) è l'opzione più sicura per non utilizzare sessionStorage affatto per l'archiviazione di una chiave? O forse mitigare il rischio utilizzando anche la crittografia completa del disco?
Grazie per il tuo aiuto.