Aplicar deltas de archivos a un archivo encriptado

7

Estoy desarrollando un software que se utilizará para la copia de seguridad de datos.

El servidor se ejecutará en Linux. La seguridad en el transporte no es un problema (HTTPS o SSH), pero los datos deben almacenarse encriptados en el servidor.

Los datos no están vinculados a una sola computadora, por lo que varias computadoras deberían poder acceder a los mismos datos, si se les proporciona una clave (la clave compartida es aceptable).

El cliente debe tener la seguridad de que los datos no se pueden ver en el servidor, ni por un empleado curioso ni por un pirata informático. Esto significa que el servidor no debe almacenar la clave utilizada para descifrar el cifrado, pero podría usarlo en una transacción si es necesario.

Al ser un servidor de archivos, la red estará saturada, por lo que se prefiere enviar deltas a enviar archivos completos. Los archivos también serán administrados (en el servidor) por un sistema de control de versiones; mientras que el cliente puede o no tener control de versiones. El espacio es una consideración.

Esto es lo que he encontrado:

  • Cada usuario tiene su propio punto de montaje
  • Cada punto de montaje estará encriptado
  • Los archivos se descifran, se aplica el delta y luego se vuelven a cifrar

Esto suena un poco ineficiente, por lo que he venido aquí como guía.

¿Se pueden aplicar deltas de archivos a un archivo cifrado?

Los requisitos más importantes son:

  • Integridad de los datos (las actualizaciones nunca deben romper un archivo)
  • Minimizar la sobrecarga de red / almacenamiento (conservar CPU / RAM sería bueno, pero no es necesario)
  • Debe poder ser controlado por la versión
pregunta beatgammit 27.08.2011 - 05:50
fuente

6 respuestas

10

Todavía no. Básicamente estás describiendo el cifrado homomórfico.

Básicamente tienes un archivo f que cifras con la función E () anotada como E (f).

Ahora tiene un delta d que encripta con la función E () anotada como E (d).

Desea que el nuevo archivo f 'sea igual a f con el delta aplicado: f' = f + d

Solo no quieres descifrar ni E (f) ni E (d).

Desea E (f) + E (d) = E (f ').

Y eso es cifrado homórfico, pero aún no está listo para la producción. Existen criptosistemas parcialmente homomorfos, pero no estoy seguro de si el delta del archivo encajaría en alguno de los sistemas. Hay un criptosistema totalmente homomorfo en desarrollo en IBM, pero requiere una buena cantidad de capacidad de cálculo y memoria y aún es lento para problemas grandes.

La página de IBM Research sobre cifrado homomórfico enlace

Tesis doctoral de Craig Gentry " Cifrado completamente homomórfico utilizando reticulados ideales " Este es un documento sin precedentes.

Antes de la tesis de Gentry, había sistemas totalmente homomórficos, pero esos sistemas no podían ponerse en práctica. Algunos criptosistemas existentes, RSA, por ejemplo, son parcialmente homomorfos, lo que significa que el funcionamiento homomórfico funciona para una operación (multiplicación, por ejemplo) pero no para la otra (adición). También se degradan y solo pueden hacer un número limitado de operaciones homomorfas antes de causar errores.

El gran avance de Gentry fue establecer un arranque. En mi entendimiento limitado, bootstraping establece una estructura oculta capaz de mantener su coherencia en todas las operaciones.

En mayo de 2011, se publicó " Cifrado completamente homomórfico sin arranque ", que lleva el cifrado homomórfico un paso más hacia la realidad utilizar.

    
respondido por el this.josh 27.08.2011 - 09:32
fuente
7

¿Qué hay de mantener la línea de base cifrada y no modificada, y de cifrar y almacenar los deltas por separado? Cuando un usuario desea una versión particular del archivo, necesitaría la línea de base y todos los deltas hasta ese punto. Esto estaría bastante cerca del espacio óptimo y de la red óptima para las escrituras desde la perspectiva del servidor de archivos, pero requeriría almacenamiento adicional del lado del cliente y ancho de banda de red para las lecturas. Nuevamente, una vez que el cliente se actualiza, cualquier lectura futura también será óptima para la red. El cliente es libre de usar espacio adicional para mejorar el rendimiento de maneras que deberían ser bastante obvias.

También puede almacenar conjuntos delta encriptados, donde un cliente con la clave fusiona algunos deltas y encripta el resultado, como una forma de acelerar la carga inicial del cliente. Esto podría hacerse de manera inteligente para hacerlo mejor que lo que el enfoque ingenuo llevaría, en términos de red y espacio en las escrituras, y en cualquier caso, sería de red y espacio eficiente en las lecturas.

La optimización depende de las características de la aplicación.

Descargo de responsabilidad: solo estoy inventando esto mientras voy aquí; No tengo idea si he descrito la idea de alguien más o algo así.

    
respondido por el Steve Dispensa 27.08.2011 - 23:42
fuente
4

Además del criptosistema homomorfo (cuyo RSA es parcialmente uno), su segundo requisito puede ser alcanzable dependiendo de cómo cifre los datos en primer lugar.

Suponiendo que utiliza cifrado de bloque en modo ECB, entonces cada bloque es independiente de todos los demás. Lo que significa que tiene la libertad de descifrar y cifrar cualquier bloque individual de forma aislada. Esto le permitiría aplicar el delta a cada bloque muy bien. El modo CTR también es un modo posible aquí. Para un mejor resultado, sin embargo, recomendaría el modo ESSIV. Consulte enlace . Todo esto supone que sabes exactamente qué sector modificar.

Sus requisitos 1º y 3º no se pueden resolver realmente solo con el cifrado. Piense en la falla del disco a la mitad de la actualización. Por supuesto, la escritura fallará, procurando un error de integridad.

Por otra parte, ¿por qué no usa un disco encriptado (como dm-crypt) y lo monta a pedido, modifica los archivos y finalmente lo desmonta?

    
respondido por el Nam Nguyen 27.08.2011 - 14:14
fuente
3

Tienes algunos archivos de texto plano local sensibles, desea conservar una copia de respaldo de (versiones encriptadas de) esos archivos en algún servidor remoto, tienes un ancho de banda limitado, y desea configurar las cosas de modo que si el servidor se ve comprometido por los malos, no pueden leer el texto sin formato de sus archivos.

Eso suena exactamente como la situación que rsyncrypto fue diseñada para manejar:

  

A veces es necesario almacenar archivos en un servidor remoto para realizar copias de seguridad   propósitos.

     

¿Cómo se mantiene la privacidad de los archivos almacenados en un servidor remoto?   Cifre los archivos antes de enviarlos. Mantenga la clave localmente.

     

¿Cómo mantener el uso del ancho de banda al mínimo? Usa rsync para solo   Transfiere los cambios.

     

Hay un solo problema: las dos soluciones se contradicen.

     

rsyncrypto viene al rescate.

     

Con rsyncrypto, ambos objetivos se pueden lograr simultáneamente.

- parafraseado ligeramente desde la página de inicio de rsyncrypto

  

El algoritmo rsyncrypto garantiza que dos archivos casi idénticos, cuando   cifrado con rsyncrypto y la misma clave, producirá casi   Archivos cifrados idénticos. Esto permite los datos de baja sobrecarga.   transferencia lograda por rsync al tiempo que proporciona el cifrado de forma segura   transferencia y almacenamiento de datos confidenciales en una ubicación remota.

- desde Wikipedia: variaciones de rsync

Preguntas relacionadas: "¿Hay un sistema de control de versión cifrado?" y "¿Cómo hacer una copia de seguridad encriptada similar a rsync?"

    
respondido por el David Cary 12.06.2012 - 20:24
fuente
2

El problema principal que debe abordar es alguien que comprometa el sistema de control de versiones. Mi impresión es que el VCS no estará encriptado ya que es responsable de almacenar el texto sin formato, pero antes de la transmisión se encripta. Si este no es el caso, ignora mi declaración anterior. Independientemente de cómo aplicar diffs a los archivos binarios es bastante intensivo y genera una gran sobrecarga en términos de requisitos de espacio. Esto puede proporcionar información adicional

Actualizar a comentario

The version control will only be on the server end (git style preferably, but others work too).

Mi comentario inicial sigue en pie por ser vulnerable.

The main focus is that I (as the admin) should never be able to read someone else's data

El cifrado se encargará de eso, use un algoritmo basado en celosía, esto es supuestamente inmune tanto a los algoritmos clásicos como a los cuánticos. red del MIT
descripción del algoritmo homomorfo
I also want to minimize storage space

Este es el quid de Teoría de cifrado de disco

    
respondido por el Woot4Moo 27.08.2011 - 16:55
fuente
1

El enfoque principal es que yo (como administrador) nunca debería poder leer los datos de otra persona, pero también quiero minimizar el espacio de almacenamiento (si es posible).

En " ¿Es el cifrado convergente realmente seguro? ".

El cifrado convergente está diseñado para permitir que el servidor de almacenamiento remoto elimine la duplicación de archivos comunes, sin que el administrador del servidor de almacenamiento obtenga la información suficiente para descifrar lo que haya en esos archivos (aparte del hecho de que el archivo A es, de hecho, el mismo que el archivo B, y por lo tanto solo necesita ser almacenado una vez).

    
respondido por el David Cary 15.06.2012 - 00:57
fuente

Lea otras preguntas en las etiquetas