Tesis de Criptografía Simétrica Aplicada

Análisis de esquemas de Cifrado Simétrico Buscable (SSE) para el almacenamiento confidencial y auditabilidad inmutable

Propuesta metodológica para la preservación de la privacidad y atenuación de filtraciones en la nube a través del modelo de listas cifradas sublineales de Curtmola et al.

Seguridad IND-CPA

Toda la confidencialidad de logs se apoya en cifrado probabilístico AES-GCM de 256 bits, imposibilitando el criptoanálisis de datos en reposo.

Búsqueda Sublineal O(t)

El índice invertido cifrado basado en Curtmola permite búsquedas inmediatas en función del número de coincidencias y no de la base de datos.

Búsqueda Ciega (Zero-Knowledge)

El servidor evalúa tokens sin descifrar claves ni revelar qué palabras se están consultando.

El Dilema de la Criptografía Simétrica Tradicional

En los esquemas tradicionales de cifrado simétrico, los textos cifrados se comportan como cajas negras impenetrables. Si ciframos logs de auditoría en un SIEM en la nube con AES de manera probabilística, realizar búsquedas de indicadores de compromiso (IoC) requiere descargar toda la base de datos cifrada y descifrarla en un entorno local seguro. Esto genera una sobrecarga inviable.

Cifrado Simétrico Buscable (SSE) resuelve este compromiso. Al estructurar el índice de datos de manera cifrada e indexada localmente, el cliente delega la tarea de filtrado al servidor. Al usar claves simétricas compartidas y funciones pseudoaleatorias (PRFs), el servidor puede ejecutar un emparejamiento determinista "ciego" sobre etiquetas protegidas, devolviendo solo los registros coincidentes.

El Peligro del Leakage (Goteo)

Aun usando AES y HMAC matemáticamente seguros, los esquemas de SSE filtran dos patrones:

  • Search Pattern: El servidor sabe si buscas la misma palabra repetidas veces.
  • Access Pattern: El servidor sabe qué documentos exactos coinciden con tus búsquedas.

Esto permite a servidores curiosos deducir el contenido de tus logs mediante ataques de volumen y de inyección.

Laboratorio Práctico de Cifrado Simétrico Buscable

Experimenta en tiempo real con las fases criptográficas cliente-servidor de un esquema SSE-1 sublineal (Curtmola et al.) operando sobre logs tácticos de ciberseguridad.

Fase Cliente: Inicialización y Derivación de Claves

Antes de interactuar con el servidor ciego, el cliente debe generar su material de claves. A partir de una Clave Maestra (o passphrase) y un Salt, utilizaremos el algoritmo simétrico **PBKDF2-HMAC-SHA256** para derivar tres claves simétricas independientes y robustas:

  • K1 (Clave PRF de Direccionamiento): Genera etiquetas de palabras para posicionarlas en el servidor de forma pseudoaleatoria. $T_1(w) = \text{PRF}_{K1}(w)$.
  • K2 (Clave PRF de Enmascaramiento): Cifra las claves locales de enmascaramiento de las listas enlazadas. $K_w = \text{PRF}_{K2}(w)$.
  • K3 (Clave AES de Documentos): Cifra de manera probabilística los archivos y logs utilizando **AES-GCM de 256 bits** con un nonce aleatorio.

Claves Simétricas Derivadas (Hex):

K1 (Tags / PRF): 0000000000000000000000000000000000000000000000000000000000000000
K2 (List Mask / PRF): 0000000000000000000000000000000000000000000000000000000000000000
K3 (AES Docs): 0000000000000000000000000000000000000000000000000000000000000000

Fase Cliente: Datos de Auditoría Táctica (Logs)

Estos son los registros sensibles en texto plano que el cliente desea resguardar confidencialmente en el servidor, manteniendo su capacidad de búsqueda.

Log ID Contenido del Registro (Texto Plano)
LOG_01
LOG_02
LOG_03
LOG_04
LOG_05

Fase Servidor: Almacenamiento Ciego del Índice

El servidor recibe las listas enlazadas cifradas en una Tabla Hash desordenada. Cada dirección es pseudoaleatoria y los nodos enmascaran el ID y el enlace al siguiente nodo con la clave $K_w$.

Dirección Hash (Addr) Nodo Cifrado ($V_j = \text{Enc}_{K_w}(\text{ID} \mathbin{\Vert} \text{Siguiente})$)
El servidor está vacío. Indexa tus datos.
Log ID Contenido Cifrado (AES-256-GCM / IND-CPA)
El servidor está vacío. Indexa tus datos.

Visualizador en Tiempo Real de Filtraciones (Leakage Analyzer)

Observe qué información es incapaz de ocultar SSE (Search Pattern y Access Pattern) frente a un servidor honesto pero curioso, y analice cómo actúan las mitigaciones criptográficas.

Configuración del Criptoanálisis

Active mitigaciones en el lado del cliente y vuelva a realizar búsquedas en el simulador para observar cómo cambia el goteo de información.

Alineación de Tamaño (Size Padding)

Alinea el tamaño de todos los logs cifrados mediante relleno de bytes (PKCS#7) a una longitud fija para evitar inferir el contenido por longitud.

Padding de Volumen (Índice Cifrado)

Añade identificadores de logs ficticios (Dummies) a las listas enlazadas cifradas para que todas las palabras parezcan tener la misma frecuencia de documentos.

Consultas Dummy (Ruido)

Envía periódicamente búsquedas ficticias aleatorias al servidor para aplanar por completo el Search Pattern e inutilizar ataques de frecuencia temporal.

Índice de Exposición del Criptosistema: 95%

Riesgo Crítico: Un ataque de inyección o de reconstrucción por volumen puede deducir el 100% de las búsquedas en menos de 50 consultas.

Visualización de Patrones de Fuga

Lo que el Servidor "Honesto pero Curioso" ve en su consola de almacenamiento distribuido:

Mapa de Intersección de Documentos Accedidos:
Esperando que realices búsquedas para mapear qué logs son revelados al servidor.

Análisis Criptoanalítico del Access Pattern:

El servidor ve que la Consulta A accede a `LOG_01` y `LOG_02`, y la Consulta B accede a `LOG_02` y `LOG_05`. La intersección en `LOG_02` le permite al servidor vincular y clasificar semánticamente los archivos, abriendo el camino para ataques de reconstrucción del diccionario por análisis de distribución.

Análisis Matemático Formal de los Esquemas SSE

Comparación analítica del rigor criptográfico, la complejidad computacional y las garantías de confidencialidad en los principales esquemas simétricos buscables.

Song, Wagner y Perrig (2000)

Cifrado de Flujo Secuencial
Complejidad de Búsqueda: $O(N \cdot L)$ (Lineal)
Costo de Servidor: Extremadamente Alto (Cómputo por byte)
Nivel de Filtración (Leakage): Crítico (Revela posiciones de palabras)
Dinámico: Sí (Permite añadir palabras localmente)
Ecuación de Comprobación: C_i \oplus W_i = (L_i \mathbin{\Vert} R_i) \implies S_i = \text{PRF}_{k_i}(L_i) == R_i

El esquema fundacional. Requiere que el servidor descifre de forma parcial secuencialmente cada bloque usando claves efímeras derivadas, lo que destruye la escalabilidad para bases de datos del mundo real.

Curtmola, Garay, Ostrovsky y Yong (2006)

Índice Invertido Cifrado (SSE-1)
Complejidad de Búsqueda: $O(t)$ (Sublineal Óptimo)
Costo de Servidor: Bajo (Solo lectura y saltos hash)
Nivel de Filtración (Leakage): Moderado (Search & Access patterns)
Dinámico: No (Añadir archivos requiere reconstruir)
Ecuación del Nodo de Lista: V_j = \text{Enc}_{\text{PRF}_{K2}(w)}(\text{ID}_j \mathbin{\Vert} \text{Addr}_{j+1})

El estándar de oro para búsquedas estáticas eficientes. Los nodos se encuentran desordenados en el servidor en posiciones $Addr_j = \text{PRF}_{K1}(w \mathbin{\Vert} j)$, haciendo imposible rastrear la estructura sin el Trapdoor de búsqueda.

Esquemas Dinámicos Modernos (Sophos/Diana)

Mapas Cifrados Dinámicos
Complejidad de Búsqueda: $O(t)$ (Sublineal)
Costo de Servidor: Medio (Cómputo en actualización)
Nivel de Filtración (Leakage): Mínimo (Forward & Backward Private)
Dinámico: Sí (Modificación en tiempo real)
Clave Evolutiva de Actualización: K_w^{(c+1)} = G(K_w^{(c)}) \implies \text{Forward Secure}

Añaden la capacidad de insertar y eliminar documentos de forma dinámica. Mitigan el leakage mediante claves evolutivas de un solo sentido (cadenas hash), impidiendo que el servidor asocie inserciones con búsquedas pasadas.