Cifrar datos antes de enviarlos a la herramienta SaaS y descifrarlos en la vista del navegador

2

Me gustaría enviar datos a una herramienta SaaS, donde los datos se almacenan en la nube. Usaré Google Analytics como ejemplo, pero se aplica a cualquier servicio similar.

Google Analytics no le permite almacenar información de identificación personal (PII), y hay muchos ejemplos de servicios en línea donde puede desear enviar datos de usuario pero no desea que el servicio pueda verlos.

La mejor solución que tengo para este problema es cifrar los datos antes de que se envíen al tercero, agregar un token especial que distinga los datos de otros hashes y luego almacenar el valor original y el valor hash en una base de datos. Por ejemplo, un nombre de usuario como johndoe podría incluirse en s8d7f89sd7f y luego agregarse con hashed- para obtener hashed-s8d7f89sd7f . Luego almacenaría tanto johndoe como hashed-s8d7f89sd7f en su base de datos.

Cuando visita el sitio web del tercero (por ejemplo, un informe de Google Analytics con todos los valores de hash), puede rastrear el DOM en busca de valores que coincidan con su patrón especial (por ejemplo, palabras que comienzan con hashed- ). Luego, al usar una extensión de Chrome, bookmarklet o algún otro programa local, podría reemplazar ese valor de hash por el valor original y mostrarlo en la página en forma legible. A menos que el sitio web estuviera monitoreando la página en busca de cambios y llamándolos a casa, nunca tendrían acceso a los valores traducidos.

La solución más cercana que he visto para este problema es esta extensión de Chrome , pero la almacena. los datos en un CSV (no son tan robustos como una base de datos, pero se pueden reparar) y son específicos de Google Analytics.

¿Existe alguna solución para este problema? Si no, ¿por qué? ¿Y la solución propuesta anteriormente funcionaría?

    
pregunta zzz 02.08.2015 - 03:13
fuente

2 respuestas

1

En función de lo que ha descrito, su solución parece demasiado compleja y no estoy seguro de por qué no cifraría los datos en lugar de incluirlos. Puede haber limitaciones en lo que puede almacenar en la aplicación remota que puede requerir la codificación de los datos cifrados (similar a lo que debe hacerse al enviar correo electrónico cifrado). Esto eliminaría la necesidad de mantener un hash de mapeo de la base de datos local al texto original. Requerir ese tipo de mapeo requeriría compartir la base de datos entre todos los clientes posibles, lo que podría ser un problema: es más fácil compartir una clave secreta que una base de datos en la mayoría de los casos.

Sin embargo, fundamentalmente, creo que el problema es tratar de agregar seguridad a algo que no fue diseñado para ello. Esto rara vez es un gran camino a seguir. La solución a menudo termina siendo demasiado compleja y con frecuencia tiene orificios que no son fáciles de detectar. La solución real es utilizar un SaaS que incluya el nivel de seguridad que necesita y evitar cualquier solución que intente agregar seguridad como una idea de último momento.

    
respondido por el Tim X 07.08.2015 - 01:47
fuente
1

Lo que has sugerido es una forma de hacerlo. Sin embargo, hay una forma más sencilla. Como Tim X ha sugerido, cifrar los datos de PII antes de enviarlos a la herramienta SaaS es una mejor idea, ya que todo lo que necesita compartir con los clientes que necesitan ver la versión de texto simple es una clave secreta. Y no una base de datos.

No ha mencionado el flujo de trabajo de la recopilación de datos del usuario y lo muestra. Entonces supondré que la recopilación de PII ocurre cuando el usuario realiza una acción en su navegador, aplicación, etc. Supongamos que tiene un sitio web y cuando un usuario hace clic en un enlace en particular, se envía una notificación a Google Analytics para grabar el clic.

En este caso, puede pasar la notificación de clic a su propio código del lado del servidor que encripta los bits de PII y los reenvía a Google Analytics -o-- si Google Analytics requiere una conexión directa, el cifrado debe ocurrir en la lado del cliente en sí (usando Javascript por ejemplo). La clave secreta se almacenará en el lado del servidor en el primer caso (recomendado) y en el lado del cliente en el segundo caso (no recomendado).

Si no le molesta que la clave secreta sea almacenada por el proveedor de SaaS, es mejor que elija una herramienta de SaaS que encripta automáticamente la PII para todas las notificaciones del usuario, por lo que no requiere ninguna acción adicional por su parte.

    
respondido por el HarshNThakker 31.08.2016 - 16:36
fuente

Lea otras preguntas en las etiquetas