2012-10-06 22 views
7

Mi situación: (!)basada en navegador de cifrado/descifrado con la clave privada del almacén de claves navegador

  1. El personal médico quiere introducir datos sensibles de los pacientes en un navegador web con el fin de almacenarlo en alguna base de datos y luego recuperarlo de nuevo.

  2. Estos datos no pueden ser vistos por nadie más, excepto el personal médico en sí. Esto significa que debe cifrarse utilizando algún token secreto antes de que se transfiera al servidor. También significa que ni el personal de TI (que tiene acceso al servidor/base de datos) ni nadie más debe ser capaz de descifrarlo sin el token secreto. (Si se pierde el token, nunca más se podrá acceder a los datos)

  3. No se debe instalar ningún software adicional en el equipo cliente, excepto algún token (por ejemplo, una clave privada) que se exportaría una vez e importarlo en todos los navegadores desde los que se debe otorgar acceso a datos.

Así que mi pregunta es:

¿Hay una manera de cifrar/descifrar datos en el lado del cliente (por ejemplo, el uso de JavaScript) mediante alguna señal navegador secreto que puede ser intercambiada entre los navegadores fácilmente (Es decir, exportado/importado similar a los certificados X.509)?

Si no, ¿qué soluciones alternativas serían posibles? Como las condiciones 1 y 2 son obligatorias, solo la condición 3 se puede modificar, si es necesario. Sin embargo, aún debe hacerse tan poco esfuerzo de instalación como sea posible en el lado del cliente.

EDIT: ¡SSL es obviamente solo parte de la respuesta a esta pregunta!

+2

Tengo tres letras para usted: S, S y L. –

+1

No, lea mi pregunta con cuidado. – Thomas

+0

No tengo la respuesta, pero probablemente investigar cómo funciona OAuth puede darte algunas ideas. –

Respuesta

5

Eche un vistazo a Web-browser encryption of personal health information, cuya sección "Resumen" parece describir su mismo problema. Sin embargo, su "código de acceso" que genera la clave de cifrado debe compartirse, lo que no le permite diferenciar al personal medial.

se describe un sistema para la entrada de datos remoto que permite que los datos que identificaría al paciente a cifrar en el navegador web del persona que entre los datos. Estos datos no pueden ser descifrados en el servidor por el personal en el centro de datos, pero pueden ser descifrados por la persona que ingresa los datos o su delegado. Desarrollamos este sistema para resolver un problema que surgió en el contexto de la investigación clínica, pero es aplicable en una serie de situaciones donde la información confidencial es almacenada y actualizada en una base de datos y es necesario garantizar que visto por cualquiera, excepto los que se le otorgaron intencionalmente.

+0

¡Gracias por su sugerencia! En principio, funciona Ya encontramos una implementación similar, inspirada en http://code.google.com/p/memwords, que sigue el mismo enfoque. – Thomas

+0

@Thomas Una forma de desplazarse por una sola clave es un método que descubrí que es utilizado por, creo, Boxcryptor. Cuando se crean algunos datos, se crea una clave simétrica en el lado del usuario (en este caso, el navegador), que luego se cifra con esa clave pública asimétrica de los usuarios y se envía al servidor. Si ese usuario desea compartir esos datos, deben tomar esa clave simétrica y cifrarla con la clave pública asimétrica de cualquier miembro del personal y almacenarla en el servidor además de su propia (y cualquier otra) encriptación de esa clave simétrica. ... (continúa a continuación) –

+0

Al acceder, un usuario descarga la clave cifrada con su clave pública, la descifra y utiliza la clave simétrica para descifrar los datos principales. Esto aún requiere que la clave simétrica esté expuesta a todos los que tengan acceso, pero todos pueden usar diferentes pares de claves asimétricas. Si se elimina el acceso de un usuario, los datos se deben volver a cifrar con una nueva clave. –

3

Hay una implementación javascript de encriptación AES que encripta el texto plano en el navegador. Si construye algo en torno a esas herramientas, el lado del servidor solo almacenaría el texto cifrado y no tendría la frase de contraseña.

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

no requiere ninguna instalación adicional en el lado del cliente, pero probablemente requerirá un esfuerzo de desarrollo para obtener la experiencia de usuario correcto.

Cuestiones relacionadas