Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Elegir un enfoque de cifrado en uso

MongoDB ofrece dos enfoques para encriptación en uso: Queryable Encryption y cifrado a nivel de campo del lado del cliente (CSFLE). Al utilizar cualquiera de los dos enfoques, puedes elegir entre encriptación automática o cifrado explícito.

Tanto Queryable Encryption como el cifrado a nivel de campo del lado del cliente (CSFLE) permiten que una aplicación cliente cifre los datos antes de transportarlos a través de la red. Los datos confidenciales son cifrados y descifrados de forma transparente por el cliente y solo se comunican hacia y desde el servidor en forma cifrada.

Para comparar las características en detalle, consulta Queryable Encryption Features y CSFLE Features.

Al implementar una aplicación que utiliza Queryable Encryption o CSFLE, revise las consideraciones de seguridad en esta sección.

Para conocer las limitaciones de cada enfoque, consulte Queryable Encryption limitations o CSFLE limitations.

Para la compatibilidad de la versión del servidor y del controlador de MongoDB, consulta Compatibilidad.

  • CSFLE y Queryable Encryption no proporcionan ninguna garantía contra adversarios que tengan acceso a tu llave maestra de cliente y tus llaves de cifrado de datos.

  • CSFLE y Queryable Encryption no ofrecen ninguna garantía contra adversarios con acceso arbitrario de escritura a colecciones que contienen datos cifrados.

  • MongoDB utiliza la validación de esquema para aplicar el cifrado de campos específicos en una colección. Sin un esquema del lado del cliente, el cliente descarga el esquema del lado del servidor para la colección, a fin de determinar qué campos va a cifrar. Para evitar este problema, utilice la validación de esquemas del lado del cliente.

    Dado que CSFLE y Queryable Encryption no proporcionan un mecanismo para verificar la integridad de un esquema, depender de un esquema del lado del servidor significa confiar en que el esquema del servidor no ha sido manipulado. Si un adversario compromete el servidor, podrían modificar el esquema de manera que un campo previamente cifrado ya no esté marcado para cifrado. Esto hace que el cliente envíe valores en texto plano para ese campo.

    Para ver un ejemplo de configuración de CSFLE para esquemas del lado del cliente y del servidor, consulta CSFLE de cumplimiento de cifrado a nivel de campo del lado del servidor.

Puedes utilizar Queryable Encryption, cifrado a nivel de campo del lado del cliente, o ambos en tu aplicación. Sin embargo, no puedes usar ambos enfoques en la misma colección.

Considera utilizar Queryable Encryption en los siguientes escenarios:

  • Estás desarrollando una nueva aplicación y quieres utilizar los últimos avances criptográficos de MongoDB.

  • Esperas que los usuarios realicen consultas de rango, prefijo, sufijo o subcadena sobre datos cifrados.

  • Tu aplicación puede usar una única clave para un campo dado, en lugar de requerir claves separadas por usuario o por inquilino.

Existen situaciones en las que CSFLE puede ser una solución preferible:

  • Tu aplicación ya utiliza CSFLE.

  • Debes utilizar diferentes claves para el mismo campo. Esto suele ocurrir al separar tenants o al usar llaves específicas de usuario.

  • Necesitas ser flexible con tu esquema de datos y, potencialmente, agregar más campos cifrados. Agregar campos cifrados para Queryable Encryption requiere reconstruir las colecciones de metadatos e índices.

Queryable Encryption soporta consultas de igualdad y rango en campos numéricos cifrados o campos de fecha cifrados.

El soporte para queries de prefijo, sufijo y subcadena en campos de string cifrados está en vista previa pública. Puedes configurar estas consultas para la asimilación de diacríticos o la insensibilidad a mayúsculas y minúsculas para garantizar que diferentes representaciones de la misma string coincidan.

El cifrado a nivel de campo del lado del cliente admite queries de igualdad en campos cifrados de manera determinística.

Para obtener más información sobre los operadores del query soportados, consulta Operadores del query soportados para Queryable Encryption y Operadores del query soportados para CSFLE. Para la lista completa de operadores del query de MongoDB, consulta Predicados de query.

Tanto el Queryable Encryption como el cifrado por campos del lado del cliente utilizan el AEAD Algoritmo de cifrado AES-256-CBC en modo autenticado para realizar el cifrado. Vea Primitivas criptográficas para obtener más información.

El algoritmo de cifrado para Queryable Encryption utiliza cifrado aleatorizado basado en cifrado estructurado, que produce valores de salida cifrados diferentes a partir de la misma entrada.

Para obtener información detallada sobre el enfoque de MongoDB para el Queryable Encryption, consulta el Resumen del Queryable Encryption y Diseño y análisis de un esquema de cifrado para bases de datos sin estado documentos técnicos.

El algoritmo de encriptación CSFLE admite tanto el cifrado aleatorio como el cifrado determinista. Sin embargo, solo admite la consulta de campos que están cifrados de forma determinística. Con cifrado determinista, un valor de entrada dado siempre se cifra al mismo valor de salida.

MongoDB cifra las queries para Queryable Encryption y cifrado a nivel de campo del lado del cliente para que el servidor no tenga información sobre valores de documento o query en texto claro. Con Queryable Encryption, las queries privadas van un paso más allá y enmascaran los registros y metadatos para eliminar información sobre la existencia de la query. Esto garantiza una mayor privacidad y confidencialidad.

Recomendamos el cifrado automático en la mayoría de las situaciones, ya que simplifica el proceso de escribir tu aplicación cliente. Con el cifrado automático, MongoDB cifra y descifra automáticamente los campos en las operaciones de lectura y escritura.

El cifrado explícito proporciona un control detallado sobre la seguridad, a costa de una mayor complejidad al configurar colecciones y escribir código para los controladores de MongoDB. Con el cifrado explícito, especificas cómo cifrar campos en tu documento para cada operación que realices en la base de datos e incluyes esta lógica en toda tu aplicación.

Para más detalles, ver Cifrado explícito con Queryable Encryption o Cifrado explícito con CSFLE.

Volver

Encriptación en uso

En esta página