archiviazione sicura per PC offline accessibile tramite javascript

0

Sto tentando di creare un'applicazione HTML5 basata su browser che abbia la capacità di archiviare i dati localmente su un PC (non un dispositivo mobile) quando offline. Questi dati sono sensibili e devono essere sicuri.

Ovviamente il trucco sta cercando di trovare un modo per essere in grado di accedere ai dati protetti con Javascript.

Ho escluso lo spazio di archiviazione locale del browser poiché non è sicuro. Questo potrebbe essere realizzato con un database locale? In tal caso, dove potrebbero essere archiviate le credenziali del DB? Javascript ovviamente non sembra una buona opzione per memorizzarli dal momento che è leggibile dall'utente.

    
posta turbo2oh 23.07.2014 - 04:28
fonte

2 risposte

0

Sfortunatamente, non c'è modo di fare crittografia in modo sicuro in JavaScript . Per riassumere i punti chiave del collegamento:

  1. JavaScript non ha un generatore di numeri casuali sicuro e nessun archivio di chiavi sicure, il che significa che non può generare o archiviare in modo sicuro le chiavi di crittografia.
  2. Non c'è modo di garantire che il browser non sia stato compromesso.
  3. Senza SSL / TLS, non c'è modo di garantire che i dati o il codice caricato dal browser sia quello fornito dal server.

È possibile crittografare i dati sul server, quindi inviare i dati al client tramite SSL / TLS. Tuttavia, una volta che i dati sono lì, hai bisogno di qualcosa per decrittografarlo, che richiede la memorizzazione della chiave. Sfortunatamente, non c'è modo di memorizzare la chiave in modo sicuro. Né storage locale né sistemi specifici del browser, ad es. chrome.storage , sono crittografati.

Ci sono altre opzioni, tra cui controlli ActiveX, applet Java, Adobe AIR o applicazioni Adobe Flash. Sfortunatamente, tutti questi sono problemi di sicurezza o sono specifici della piattaforma. È possibile scrivere plug-in del browser, ma questi sono anche browser e talvolta specifici della piattaforma.

This data is sensitive and must be secure

Quanto è sicuro? La convenienza o la funzionalità di solito superano la sicurezza, quindi è probabile che tu debba prendere in considerazione i compromessi, come ad esempio:

  1. È possibile memorizzare alcuni dati e non le parti più sicure? Ad esempio, se si memorizzano i dettagli di contatto del cliente, i dati della cache che non sono Informazioni di identificazione personale (PII, come i numeri di previdenza sociale degli Stati Uniti).
  2. Puoi richiedere un determinato browser o piattaforma? Ad esempio, se la maggior parte dei clienti utilizza Windows, prendere in considerazione un controllo ActiveX o un'applicazione desktop ClickOnce. Se usano Windows 8+, puoi creare un'app nell'app store di Windows (anche se questo suggerimento potrebbe causare brividi)?
  3. I dati cambiano frequentemente, quindi l'impatto di un compromesso è piccolo?

Ricorda inoltre che l'archiviazione sicura non è l'unica cosa da considerare. Anche se si risolve questo problema, non è necessario archiviare i dati in modo sicuro se non viene fornito su SSL / TLS (quindi può essere visualizzato o manomesso in transito) o se si utilizza l'autenticazione debole o scarsa (ad esempio cookie di autenticazione non crittografato e non modificato ). Allo stesso modo, dato l'accesso fisico al supporto di memorizzazione, non c'è modo di proteggere i dati da un attaccante paziente determinato, anche se è crittografato.

    
risposta data 21.10.2014 - 08:39
fonte
0

Forse memorizzare i dati nei cookie crittografati? Oppure usa un'app flash 1x1 pixel che dialoga con il javascript per fare cose che javascript non può fare, anche parlando con un'app Flash AIR sul desktop usando probabilmente "LocalConnection", per dare più accesso al desktop.

    
risposta data 23.07.2014 - 04:44
fonte

Leggi altre domande sui tag