Encriptación segura de los datos recibidos a través de HTTPS

1

Estoy recibiendo datos confidenciales a través de una conexión HTTPS y necesito almacenarlos en el disco, encriptados para que nadie pueda manipularlos, pero para leerlos más adelante. Cada usuario en el sistema tiene una contraseña.

La aplicación necesita almacenar la información recibida a través de HTTPS en caso de que no haya conexión a Internet disponible. Sincronice una sola vez y luego lea un archivo que contenga la información más importante. Por supuesto, una sincronización automática tendrá lugar cuando se puede hacer una conexión. La información es necesaria para garantizar que el usuario tenga permiso para realizar ciertas acciones, por lo que el usuario no debería poder manipular el archivo por sí mismo .

¿Cuál es la mejor manera de hacer esto?

1) Temas como this , this y this sugieren usar una contraseña y algo como PBKDF2 para generar una clave, la cual se puede utilizar para cifrar la clave que cifra los datos . ¿Tengo razón al entender esto?

2) Si es así, ¿ la clave que encripta los datos también debe derivarse de la contraseña del usuario? Para mí esto suena sombrío, por decir lo menos.

3) No sé lo suficiente sobre el desmontaje, pero temo la posibilidad de que un adversario pueda secuestrar el binario y manipular los datos recibidos de HTTPS antes de que se cifre. ¿Es este un riesgo sustancial? ¿Debería realizarse el cifrado en el servidor y, de ser así, cómo cambia esto el protocolo?

El producto se ejecuta en OSX, Windows y posiblemente Linux en el futuro.

    
pregunta Stijn Frishert 23.03.2015 - 14:14
fuente

1 respuesta

0

Déjame asegurarme de que entiendo. Su usuario ejecutará una aplicación local que puede descifrar su archivo cifrado y almacenarlo (o partes de él) en la memoria en un formato legible.

Tu adversario es el usuario; se asume que el usuario desea secuestrar los permisos almacenados en el archivo cifrado. También asumo que el usuario es root en esa máquina para que pueda inspeccionar el proceso de su cliente.

En Linux, su usuario puede ejecutar el proceso de manera que se le pueda adjuntar un depurador . El usuario puede ejecutar su aplicación y agregar un punto de interrupción, por ejemplo. El sistema abierto () llama y comienza a inspeccionar las instrucciones una por una cuando la aplicación abre su archivo encriptado, hasta el momento en que está listo. Luego, las impresiones simples pueden permitir que el usuario lea el contenido de la variable que contiene la información que desea. No se necesitan habilidades de programación de ensambladores.

El problema es que confías en el código que ejecuta tu adversario para hacer cumplir los permisos y mantener un secreto. Este problema es imposible de resolver (en la práctica, en el mundo académico, puedes confiar en ciertos programas simples para realizar ciertas acciones en un sistema operativo no autorizado siempre que confíe en que el hardware no se manipule, consulte Haven paper en OSDI 14 ).

¿Cuáles son las consecuencias de un ataque? ¿Qué capacidades obtiene el usuario si se otorga todos los permisos que contiene este archivo? ¿Estas capacidades influyen en (1) los datos locales, (2) su propio servidor?

  1. el usuario ya puede hacer lo que quiera con sus datos locales en ella máquina local
  2. haga verificaciones de permisos en el lado del servidor, y solo otorgue nuevos permisos en el lado del servidor
respondido por el Steve DL 23.03.2015 - 14:59
fuente

Lea otras preguntas en las etiquetas