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").