validar el cifrado de archivos sin la clave de descifrado

3

Puede que esté pidiendo algo imposible aquí.

Quiero saber si es posible configurar un sistema de almacenamiento de terceros donde el proveedor de servicios no pueda descifrar los archivos de los clientes, pero puede eliminar los archivos si dos clientes cargan el mismo archivo.

Creo que estoy en lo cierto al suponer que esto requeriría que los dos clientes que cargan el archivo tengan que cifrar con la misma clave, pero esto no es un problema en sí mismo, ya que el servicio podría (por ejemplo) exigir que los archivos estar cifrado con una clave que es una función de un hash del archivo: ambos clientes comparten ese conocimiento (sin ser conscientes de ellos) pero el proveedor de servicios no lo hace, por lo que no podría cifrarlo.

Todo está bien si los clientes siguen las reglas y utilizan el método de cifrado obligatorio y la clave correspondiente al archivo que se está cargando. Lo que me pregunto es si es teóricamente posible elegir una técnica de encriptación mediante la cual el proveedor del servicio pueda verificar que el cliente ha obedecido las reglas , sin comprometer el requisito de que el proveedor del servicio no debe poder hacerlo. descifrar los archivos.

    
pregunta Jack Douglas 01.01.2014 - 09:51
fuente

3 respuestas

4

En gran medida, la pregunta no tiene sentido, porque los datos son opacos para el servidor. Dado que el servidor no podrá, en ningún caso, leer los archivos descifrados, si dos archivos son idénticos o no, no debería tener ningún impacto. De hecho, el escenario completo debe ser más claro.

Tienes un servidor. El servidor almacena "datos cifrados" en nombre de algunos usuarios que se enviarán entre sí las claves de descifrado; todo el descifrado y el cifrado se producen en otros lugares, y su servidor no puede hacerlo. Tenemos que asumir que hay un mecanismo fuera de banda por el cual los usuarios intercambian claves de descifrado.

Lo que usted desea, como propietario del servidor, es reconocer cuando se cargan varias instancias del archivo mismo en su servidor, de modo que pueda pagar el espacio de almacenamiento solo una vez (solo leo En algún lugar, "The Hobbit" fue la película más copiada de 2013, por lo que podría suponer que su plataforma prevista contendría varios cientos de copias de ese archivo de película de varios gigabytes). El cifrado normal y seguro debería evitar a los forasteros para que puedan hacer cualquier afirmación sobre el contenido de los datos, incluida la posibilidad de reconocer si dos archivos cifrados tienen el mismo contenido. En ese sentido, la deduplicación que está buscando es un debilitamiento del modelo de seguridad. Podemos predecir que a algunos usuarios no les gustaría; por ejemplo, si la deduplicación funciona, entonces usted (como el servidor) puede detectar cuándo un usuario está cargando "The Hobbit".

(Cuando la deduplicación funciona, entonces es posible realizar una búsqueda exhaustiva en el contenido de los archivos; esto es fácil de hacer para los archivos que se duplican mucho, porque un archivo que es conocido por muchos usuarios no puede ser realmente ese secreto, y en el contexto de la "aplicación de la propiedad intelectual", los archivos altamente engañados son de gran interés.)

Si hablamos en términos genéricos, entonces no puede aplicar la eliminación de duplicaciones, ya que cualquiera de los dos usuarios que quieran evadirlo puede simplemente cifrar dos veces sus datos. El usuario 1 primero cifra el archivo con una clave secreta extra, que compartirá con el usuario 2; esa clave se elige aleatoriamente, por lo que el archivo cifrado no coincidirá con ninguna otra instancia de los mismos datos; ese archivo encriptado luego se encripta nuevamente con su servicio. Los usuarios pueden hacer tal doble cifrado porque los datos son solo, in fine , un archivo en su disco, y supusimos que los usuarios pueden comunicarse entre sí independientemente de su servidor. Mientras los usuarios puedan hablar entre ellos, pueden intercambiar claves secretas que usted no conoce.

En algunos contextos muy específicos , es posible probar que algunos datos encriptados cumplen alguna propiedad algebraica sin revelarlos. Consulte pruebas no interactivas de conocimiento cero . Esto se usa en algunos protocolos de votación electrónica, de modo que el prover puede demostrar que lo que él cifró es realmente un 0 o un 1, no cualquier otro entero, pero sin divulgar el valor de voto real. Esto no se aplicará a un sistema de almacenamiento de archivos genérico, porque los "archivos normales" no siguen una estructura matemática discernible.

Por lo tanto , si desea imponer la eliminación de duplicaciones contra usuarios poco cooperativos, entonces debe hacer que los usuarios no puedan hablar entre sí . Es más fácil decirlo, hacerlo ... y parece difícilmente factible, ya que para que el sitio sea realmente útil, el remitente y el destinatario deben poder acordar al menos una clave de referencia, utilizada para ubicar el archivo en el servidor.

    
respondido por el Thomas Pornin 02.01.2014 - 17:29
fuente
1

Si está utilizando criptografía de clave pública con firma digital para su mecanismo de cifrado, simplemente podría descifrar la firma utilizando la clave pública del usuario para proporcionarle el hash a los datos de texto sin formato. Ese hash podría luego ser referenciado contra los otros hashes que has almacenado para determinar si este archivo en particular ya se ha cargado. Por supuesto, tendría que tener una copia de la clave pública del usuario.

Supongo que sería posible para el usuario falsificar la firma digital (cifrar un hash no válido del archivo y adjuntarlo al archivo cifrado como la firma) y cargarlo. No lo sabría porque no puede desencriptar el archivo y verificar el hash del texto plano contra la firma. La única razón por la que puedo pensar para hacer esto sería engañar a la detección de duplicados para que el usuario no tenga muchos motivos para hacerlo.

Si tiene control sobre el mecanismo de cifrado, simplemente podría requerir que el archivo cifrado se cargue junto con un hash de su texto simple. Esto también podría subvertirse mediante el uso de un proxy a cualquier sistema de carga que se utilice para enviar un hash falso.

    
respondido por el James Santiago 01.01.2014 - 10:28
fuente
0

Si obtengo esto correctamente, desea que los usuarios carguen archivos que el servidor o un intermediario no pueden descifrar. Además, deben eliminarse los archivos cifrados con datos de texto simple redundantes.

Dejando de lado la seguridad de los métodos criptográficos reales utilizados, creo que podría hacer lo siguiente:

  1. El usuario selecciona un archivo para cargar. El análisis del lado del cliente se utiliza para calcular el hash del archivo.
  2. Este hash se envía al servidor para identificar si el archivo es un duplicado.
  3. Si no, se usa un enfoque simétrico o asimétrico para cifrar el archivo en el lado del cliente y luego cargarlo en el servidor. Se debe implementar un mecanismo para la autenticación segura del host y el establecimiento de la sesión para evitar un vector de ataque de canal lateral MiTM.
  4. Para la recuperación, el archivo cifrado se recibe del servidor y se descifra en el lado del cliente.

Una de las preocupaciones es que si está tratando con archivos que requieren administración de versiones. En este caso, el hash del archivo cambiará con su contenido. Tener un identificador de archivo como texto sin formato en el encabezado del archivo cifrado permitiría la administración de versiones sin exponer ninguno de los contenidos del archivo al final del servidor.

    
respondido por el Rohan Durve 01.01.2014 - 16:43
fuente

Lea otras preguntas en las etiquetas