Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Campos y tipos de cifrado

Esta página describe los tipos de cifrado que utiliza MongoDB para el cifrado a nivel de campo del lado del cliente (CSFLE). Para ello, MongoDB utiliza los siguientes 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

El cifrado determinista no permite cifrar objetos ni matrices completos. Para obtener más información y ver un ejemplo, consulte Compatibilidad con el cifrado de objetos y matrices.

Puede consultar campos cifrados de forma determinista utilizando el controlador MongoDB estándar y mongosh métodos.

Para ver la lista completa de todos los operadores del query admitidos en campos cifrados de manera determinista, consulta Operaciones admitidas para el cifrado automático.

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

Nota

Consultas desde clientes sin CSFLE configurado

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 matrices completos solo se admite 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 personal_information phone_numbers campos y con el algoritmo de cifrado aleatorio, se cifra todo el objeto. Si bien esto protege todos los campos anidados bajo ellos, también impide realizar consultas sobre ellos.

Para obtener más información sobre las operaciones admitidas para el cifrado,consulte Operaciones admitidas 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 de encriptación

En esta página