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

Campos y tipos de cifrado

Esta página describe los tipos de cifrado que utiliza MongoDB para realizar el Cifrado a Nivel de Campo del lado del cliente (CSFLE). Para realizar CSFLE, MongoDB utiliza los siguientes tipos de algoritmos de cifrado:

  • Cifrado determinista

  • Cifrado aleatorio

El algoritmo de cifrado determinista garantiza que un valor de entrada dado se cifre siempre con el mismo valor de salida cada vez que se ejecuta el algoritmo. Si bien el cifrado determinista proporciona un mayor soporte para las operaciones de lectura, los datos cifrados con baja cardinalidad son susceptibles a la recuperación mediante análisis de frecuencia.

Para los campos sensibles que no se utilizan en operaciones de lectura, las aplicaciones pueden usar cifrado aleatorio para una mayor protección frente a la recuperación por análisis de frecuencia.

Importante

Cifrado determinista de objetos y arreglos no admitidos

No se admite el cifrado determinista para el cifrado de objetos y arreglos completos. Para obtener más información y ver un ejemplo, consulte Soporte para el cifrado de objetos y arreglos.

Se puede query campos cifrados de forma determinista utilizando el driver estándar de MongoDB y mongosh métodos.

Para ver la lista completa de todos los operadores del query admitidos en campos cifrados determinísticamente, consulte Operaciones compatibles para el cifrado automático.

Para obtener más información sobre la lectura de datos cifrados, consulta Lecturas cifradas.

Nota

Consulta desde clientes que no tengan configurada la CSFLE

Cuando consultas en un campo cifrado utilizando un cliente que no está configurado para usar el Cifrado a Nivel de Campo del Lado del Cliente (CSFLE), la consulta devuelve un valor nulo. Un cliente sin CSFLE configurado no puede realizar una query en un campo cifrado.

El algoritmo de cifrado aleatorio garantiza que un valor de entrada dado se cifre en un valor de salida diferente cada vez que se ejecuta el algoritmo. Si bien el cifrado aleatorio proporciona las garantías más sólidas de confidencialidad de los datos, también impide admitir cualquier operación de lectura que deba operar en el campo cifrado para evaluar la query.

Para los campos sensibles que se utilizan en operaciones de lectura, las aplicaciones deben utilizar el cifrado determinista para mejorar la compatibilidad de lectura en campos cifrados.

El cifrado de objetos o arreglos enteros solo es compatible con cifrado aleatorio.

Por ejemplo, considere el siguiente documento:

{
"personal_information" : {
"ssn" : "123-45-6789",
"credit_score" : 750,
"credit_cards" : [ "1234-5678-9012-3456", "9876-5432-1098-7654"]
},
"phone_numbers" : [ "(212) 555-0153" ]
}

Al cifrar los campos personal_information y phone_numbers mediante el algoritmo de cifrado aleatorio se cifra el objeto completo. Si bien esto protege todos los campos anidados bajo esos campos, también impide consultar esos campos anidados.

Para obtener más información sobre las operaciones compatibles para el cifrado, consulte Operaciones compatibles para el cifrado automático.

No puede query directamente documentos en un campo cifrado aleatoriamente. Sin embargo, puedes utilizar otro campo para encontrar el documento que contiene una aproximación de los datos cifrados de campo de forma aleatoria.

Por ejemplo, considere el siguiente documento donde el campo ssn está cifrado aleatoriamente:

{
"_id": "5d6ecdce70401f03b27448fc",
"name": "Jon Doe",
"ssn": 241014209,
"bloodType": "AB+",
"medicalRecords": [
{
"weight": 180,
"bloodPressure": "120/80"
}
],
"insurance": {
"provider": "MaestCare",
"policyNumber": 123142
}
}

En lugar de consultar el campo ssn, puede agregar otro campo de texto sin formato llamado last4ssn que contenga los últimos 4 dígitos del campo ssn. A continuación, puedes hacer una query en el campo last4ssn como sustituto de ssn:

{
"_id": "5d6ecdce70401f03b27448fc",
"name": "Jon Doe",
"ssn": 241014209,
"last4ssn": 4209,
"bloodType": "AB+",
"medicalRecords": [
{
"weight": 180,
"bloodPressure": "120/80"
}
],
"insurance": {
"provider": "MaestCare",
"policyNumber": 123142
}
}

Volver

Gestión de claves

En esta página