2012-10-06 9 views
7

La mia situazione: (!)cifratura/decifratura basata su browser con la chiave privata dal browser chiavi

  1. personale medico vuole entrare dati sensibili dei pazienti in un browser web al fine di conservarlo in qualche database e più tardi recuperalo di nuovo.

  2. Questi dati non sono consentiti per essere visti da nessun altro, ad eccezione del personale medico stesso. Ciò significa che deve essere crittografato utilizzando un token segreto prima che venga trasferito al server. Significa anche che né il personale IT (con accesso al server/database) né nessun altro dovrebbero essere in grado di decrittografarlo senza il token segreto. (Se il token viene perso, i dati non saranno mai più accessibili.)

  3. Nessun software aggiuntivo deve essere installato sul computer client, ad eccezione di alcuni token (ad esempio, una chiave privata) che uno potrebbe esportare una volta e importarlo in tutti i browser da cui dovrebbe essere garantito l'accesso ai dati.

Quindi la mia domanda è:

C'è un modo per cifrare/decifrare i dati sul lato client (ad esempio, utilizzando JavaScript) con qualche segno del browser segreto che possono essere scambiati tra i browser facilmente (Vale a dire, esportato/importato simile ai certificati X.509)?

In caso contrario, quali soluzioni alternative sarebbero possibili? Poiché le condizioni 1 e 2 sono obbligatorie, solo la condizione 3 può essere modificata, se necessario. Tuttavia, il minimo sforzo di installazione possibile dovrebbe essere necessario sul lato client.

MODIFICA: SSL è ovviamente solo una parte della risposta a questa domanda!

+2

Ho tre lettere per te: S, S e L. –

+1

No, per favore leggi con attenzione la mia domanda. – Thomas

+0

Non ho la risposta, ma probabilmente osservando come funziona OAuth può darti idee simili. –

risposta

5

Dai uno sguardo allo Web-browser encryption of personal health information, la cui sezione "Abstract" sembra descrivere il tuo stesso problema. Tuttavia, il loro "passcode" che genera la chiave di crittografia deve essere condiviso, il che non consente di differenziare il personale mediale.

si descrive un sistema per l'immissione di dati a distanza che permette i dati che individuerebbe il paziente deve essere crittografato nel browser web del persona che entra i dati. Questi dati non possono essere decifrati sul server dal personale del centro dati ma possono essere decifrati dalla persona inserendo i dati o il loro delegato. Abbiamo sviluppato questo sistema per risolvere un problema sorto nel contesto della ricerca clinica, ma è applicabile in una gamma di situazioni in cui le informazioni sensibili sono memorizzate e aggiornate in un database ed è necessario assicurarsi che sia non può essere visto da nessuno eccetto l'accesso intenzionale.

+0

Grazie per il tuo suggerimento! In linea di principio funziona. Abbiamo trovato già un'implementazione simile, ispirata a http://code.google.com/p/memwords, che segue lo stesso approccio. – Thomas

+0

@Thomas Un modo per aggirare un singolo tasto è un metodo che ho scoperto è usato da, credo, da boxcryptor. Quando vengono creati alcuni dati, viene creata una chiave simmetrica sul lato dell'utente (in questo caso il browser), che viene quindi crittografata con quella chiave pubblica asimmetrica dell'utente e inviata al server. Se quell'utente desidera condividere tali dati, deve prendere quella chiave simmetrica e crittografarla con la chiave pubblica asimmetrica di qualsiasi membro dello staff e memorizzarla sul server oltre alle proprie (e alle altre) crittografie di tale chiave simmetrica. ... (continua di seguito) –

+0

All'accesso, un utente scarica la chiave crittografata con la sua chiave pubblica, la decrittografa e utilizza la chiave simmetrica per decrittografare i dati principali. Ciò richiede comunque che la chiave simmetrica sia esposta a chiunque abbia accesso, ma tutti possono utilizzare diverse coppie di chiavi asimmetriche. Se un utente viene rimosso dall'accesso, i dati devono quindi essere reencrittati con una nuova chiave. –

3

C'è un'implementazione javascript di crittografia AES che crittografa il testo in chiaro nel browser. Se si crea qualcosa attorno a questi strumenti, il lato server memorizzerebbe solo il testo crittografato e non avrebbe la passphrase.

http://www.fourmilab.ch/javascrypt/

non dovrebbe richiedere alcuna installazione supplementare sul lato client, ma probabilmente richiederà un certo sforzo di sviluppo per ottenere l'esperienza dell'utente destra.

Problemi correlati