Explica cómo Field-Level Encryption y Queryable Encryption protegen campos sensibles desde el cliente y qué límites introducen en consultas, claves y operación.
El cifrado a nivel de campo protege valores sensibles antes de que lleguen al servidor. Con Client-Side Field Level Encryption —CSFLE— el driver cifra y descifra en una aplicación autorizada. Queryable Encryption amplía este modelo para permitir determinadas consultas sobre campos cifrados sin revelar el texto original al servidor, bajo capacidades que dependen de versión, driver y plataforma.
Texto
dato en aplicación
→ driver + clave de datos
→ ciphertext
→ MongoDB almacena y procesa lo permitido
No sustituye TLS, cifrado at rest, autenticación ni autorización. Cada capa protege amenazas distintas.
Las claves de datos cifradas se almacenan en una key vault collection. Una master key gestionada por KMS protege esas claves.
Texto
KMS master key
→ cifra data encryption keys
→ key vault
→ cifra campos de aplicación
El acceso a la key vault y al KMS debe estar separado del acceso normal a datos. Si una identidad obtiene ambos sin límites, la protección se debilita.
En CSFLE clásico, un cifrado determinístico produce el mismo ciphertext para el mismo valor y clave, permitiendo algunas búsquedas por igualdad. También revela patrones: valores repetidos generan ciphertext repetido.
El cifrado aleatorio produce resultados distintos y ofrece mayor ocultamiento de frecuencia, pero no permite igualdad directa.
La elección debe partir de la consulta necesaria, no de comodidad.
Queryable Encryption utiliza estructuras y protocolos específicos para soportar operaciones compatibles sobre datos cifrados. Las capacidades pueden incluir igualdad y otras consultas según release. No asumas que cualquier range, sort, regex, aggregation o índice normal funcionará.
El driver usa un schema o encrypted fields map para cifrar campos sin que cada llamada lo haga manualmente. Reduce errores, pero una configuración equivocada puede dejar campos sin cifrar o impedir queries.
El ciphertext conserva metadata de tipo. String, number, Date y Decimal128 no son equivalentes. Cambiar el tipo de un campo cifrado requiere una migración explícita y puede afectar consultas.
No conviertas todos los valores a string para simplificar: pierdes semántica, orden y validación.
No todas implican reescribir los datos. Documenta el procedimiento, capacidad, rollback y duración. Una rotación incompleta puede dejar lectores incapaces de descifrar versiones antiguas.
Una aplicación con permiso de descifrar debe seguir aplicando tenant y permisos de usuario. El cifrado no sabe si el usuario final puede ver ese documento.
Separa servicios cuando solo uno necesita plaintext. Por ejemplo, un worker de pagos puede descifrar un identificador que la API general nunca debería ver.
El cifrado a nivel de campo reduce quién puede ver datos incluso dentro de la infraestructura, pero traslada confianza a la aplicación y al sistema de claves. CSFLE y Queryable Encryption requieren diseño de consultas, KMS, rotación, backups, tipos y rendimiento. Sin recuperación de claves y control de plaintext fuera de MongoDB, la protección queda incompleta.
Comprueba lo aprendido
¿Qué amenaza protege CSFLE?
¿Qué diferencia existe entre cifrado determinístico y aleatorio?
¿Qué papel cumple la key vault?
¿Por qué un backup necesita estrategia de claves?
¿Qué debes comprobar antes de Queryable Encryption?