Il mio scenario è il seguente:
- Applicazione Web, eseguita dal browser, progettata per dispositivi mobili.
- Utilizza lo spazio WebSQL che può contenere informazioni sensibili i dati.
- Utilizza Application Cache per abilitare l'utilizzo offline in assenza di connettività.
-
Può connettersi a un'API in cui è possibile scaricare anche dati più sensibili. L'autenticazione viene gestita con l'autenticazione BASIC e i dati non crittografati vengono trasferiti via cavo, poiché l'applicazione deve accedere all'API nei seguenti ambienti / scenari:
- Su una rete Wi-Fi locale protetta e privata.
- Su Internet pubblica, su una connessione VPN.
- Su Internet pubblica, tramite una connessione HTTPS.
Finora, in base alle mie conoscenze limitate, la sicurezza dei dati sensibili trasferiti sul filo è coperta. Tuttavia, i dati "a riposo" nella memoria WebSQL locale e formattati nelle pagine HTML dell'applicazione Web non sono sicuri.
Il problema attuale è che se un dispositivo mobile contiene dati sensibili e viene perso o rubato, come ridurre al minimo il rischio di accesso ai dati sensibili.
Poiché l'applicazione deve essere utilizzabile senza interazione con il server, qualsiasi crittografia basata su software dovrebbe essere contenuta sul client stesso. Ciò significa che, presumibilmente, il tentativo di crittografare il database WebSQL sarà inutile, come se un intruso esperto potesse bypassare la crittografia hardware, presumibilmente possono anche determinare la logica di crittografia / decrittografia?
La soluzione proposta per la crittografia dei dati a riposo, consiste nell'utilizzare la crittografia hardware integrata che fa parte di iOS e dispositivi Android , che richiedono agli utenti di inserire una password nella schermata di blocco. Ci sono anche le funzionalità correlate di "cancellazione remota" che potrebbero essere utilizzate.
D: In che modo "sicuro" è la soluzione proposta? Se la crittografia hardware integrata non è sufficiente, quali sono le migliori strategie per implementare la crittografia lato client dei dati WebSQL senza necessità di interazione con un server?
L'implementazione di una soluzione di crittografia / decrittografia dei dati basata su software offre solo vantaggi marginali in termini di sicurezza, in quanto è possibile accedere al codice di crittografia / decrittografia e decodificarlo? È solo per me, o è il principale vantaggio di questi soli scopi di marketing, cioè essere in grado di "dire" che è crittografato?
Link interessanti:
Anche ...
Underlying storage mechanisms may vary from one user agent to the next. In other words, any authentication your application requires can be bypassed by a user with local privileges to the machine on which the data is stored. Therefore, it's recommended not to store any sensitive information in local storage.
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Client-side_databases
Questo significa che l'unica opzione sicura è quella di produrre un'applicazione ibrida? Per esempio. utilizzando PhoneGap. È molto più sicuro, potrebbe essere semplicemente decodificato per visualizzare il codice JavaScript che crittografa / decodifica nello stesso modo comunque?