Deduplicación de archivos cifrados

4

Supongamos que tengo una base de datos de 18 GB de la que se realiza una copia de seguridad cada noche, y luego se encripta con un algoritmo moderno como el AES-256. Esta base de datos tiene una actualización diaria de la tasa de aproximadamente el 5%.

El medio de almacenamiento en el que se guardan las copias de seguridad en la desduplicación a nivel de bloque de soporte. Estoy interesado en saber cómo afectaría esto a las tasas de deduplicación de la partición de respaldo.

    
pregunta Scott Pack 24.07.2013 - 04:39
fuente

2 respuestas

6

La deduplicación funciona en la detección de archivos o bloques de datos idénticos. Dichos duplicados ocurren solo con una probabilidad insignificante en los datos aleatorios, y los datos cifrados con correctamente deben ser indistinguibles de la aleatoriedad. El cifrado está ahí para garantizar la confidencialidad y esto incluye, en particular, ocultarse de cualquier intruso si dos archivos de datos de origen son idénticos o no.

En ese sentido, la deduplicación puede funcionar en archivos cifrados solo si el modelo de cifrado está debilitado. Esta no es una decisión ligera: en el caso de su base de datos, mostrar qué "bloques" han cambiado y cuáles no puede ser muy revelador sobre lo que hizo con su base de datos mientras tanto. El término genérico es análisis de tráfico . La página de Wikipedia enumera varios casos militares famosos; el análisis de tráfico también es muy bueno para predecir las tácticas comerciales de los competidores (por ejemplo, darse cuenta de los preparativos anticipados para el lanzamiento de nuevos productos principales).

Suponiendo que desea realizar una deduplicación a nivel de bloque, a pesar de las posibles filtraciones mencionadas anteriormente, existen formas buenas y malas de hacerlo. Primero debe dividir los datos de entrada en trozos de tamaño de bloque, en realidad un poco más pequeños debido a la necesidad de un encabezado extra por bloque (para IV y un MAC ). Cada bloque será encriptado por separado. Ahora, la parte difícil es que para que la deduplicación funcione, los mismos datos de bloque deben volver a cifrarse de manera idéntica si no cambió entre invocaciones, por lo que debe reutilizar el IV. Reutilizar el valor IV es un pecado; es mortal cuando se utilizan modos como CTR y, en particular, sus derivados modernos GCM y EAX . La solución aquí es una IV calculada con una función unidireccional desde el desplazamiento del bloque en el archivo y su contenido; la función unidireccional debe ser "de apariencia aleatoria", y debe estar activada, porque de lo contrario los atacantes podrían intentar una búsqueda exhaustiva de los datos en sí, coincidiendo con el bloque IV.

El siguiente esquema debería ser seguro (dentro del modelo debilitado) pero esto requeriría un análisis cuidadoso:

  • Hay dos teclas K1 y K2 (posiblemente derivadas de un solo maestro clave con una función de derivación de claves .

  • Para el número de bloque i , con datos d , calcular IV = HMAC ( K 1 , i || d ) (el IV es el resultado de HMAC / SHA-256 sobre la concatenación de i y los datos d , usando K1 como clave - trunca el IV a sus primeros 128 bits).

  • Cifre d con AES, utilizando el IV del paso anterior y la tecla K2 , en modo CBC.

  • Ponga el IV y el resultado del cifrado juntos en una porción de tamaño de bloque.

Esto utiliza CBC y MAC-and-encrypt, que no es "ideal" en lo que respecta a la criptografía, pero sí, modelo debilitado. Obtienes lo que pides.

Editar: Nota importante: aunque aquí se utiliza HMAC, esto no garantiza la integridad de los datos del bloque. Puede usar el IV para descifrar y luego volver a calcular el IV y ver si coincide con el del archivo; esto evitará alteraciones genéricas, pero un atacante activo aún podría reemplazar un bloque con una versión anterior de este mismo bloque. Si necesita una verificación de integridad en sus copias de seguridad, haga lo siguiente: además de cualquier cifrado y MAC descritos anteriormente, calcule un MAC o una firma en el archivo completo y verifique que antes de usar la copia de seguridad (si está restaurando una copia de seguridad, asumo que la leerá completamente de todos modos, por lo que podría tener la verificación de firma o MAC "gratis").

    
respondido por el Thomas Pornin 24.07.2013 - 13:35
fuente
2

La deduplicación ama los patrones en los datos, los buenos criptográficos odian los patrones en la salida . De ello se deduce que la deduplicación antes de cifrar producirá mejores resultados de la deduplicación.

Supondré que tienes varias copias de seguridad nocturnas de la base de datos, y es principalmente la eficacia de la deduplicación entre las personas que te interesan.

Ciertos bloques cifrados modos propagarán los cambios hacia adelante (por ejemplo, CBC): una única diferencia en el primer bloque de la entrada dará como resultado (casi con seguridad) una salida completamente diferente. Malo para la deduplicación.

Si el cifrado elegido localiza los cambios en la entrada al mismo bloque o bloques (dar o tomar) en la salida, entonces la deduplicación puede ser efectiva.

Bloquear cifrado modos de contador (CTR, XTS) do no tiene esta propiedad de propagación, por lo que resuelve problemas con el acceso aleatorio y el cifrado y descifrado paralelo / concurrente. ( Los cifrados de flujo síncrono también localizan los cambios en la entrada.)

Un IV / nonce / salt modificado (estás usando una sal aleatoria o IV, ¿verdad?) (casi con seguridad cambiará) cada bloque. Malo para la deduplicación.

Si realmente quiere sacrificar algo de seguridad, debe medir el rendimiento de la deduplicación con un IV fijo o sal con AES-256 en modo CTR para ver cuál es el beneficio de la deduplicación.

Para resumir:

  

Depende exactamente de qué modo de AES esté en uso, el peor de los casos para la deduplicación es si está utilizando CBC o un IV / sal aleatorio para cada copia de seguridad: habrá (casi) ganancia de deduplicación cero.

     

Si está usando los modos CTR o XTS, y un IV estático ( no es un buen plan en general, y definitivamente no con el modo CTR), entonces debería ver ganancias razonables.

     

(casi) nunca obtendrás la misma ganancia en comparación con los archivos no cifrados: si tienes ejecuciones grandes de bloques con cero o idénticos (no es raro en las bases de datos), estos no aparecerán como tales en la salida cifrada (a menos que estés usando algo tonto como el modo ECB). Lo mejor que puede esperar es la deduplicación entre los archivos de copia de seguridad que se aproximan al 95% (y la deduplicación dentro de cada archivo de copia de seguridad cifrado se aproxima al 0%).

Vea estos para ver cómo se resuelven estos y otros problemas similares:

respondido por el mr.spuratic 24.07.2013 - 13:37
fuente

Lea otras preguntas en las etiquetas