Docs Menu
Docs Home
/ /
Fundamentals
/ / /

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:

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 ofrece mayor compatibilidad con las operaciones de lectura, los datos cifrados con baja cardinalidad son susceptibles de 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 mejorar la protección contra la recuperación del análisis de frecuencia.

Importante

No se admiten objetos ni matrices con cifrado determinista

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 de consulta admitidos en campos cifrados de forma determinista, consulte Operaciones admitidas para el cifrado automático.

Para obtener más información sobre las lecturas de datos cifrados, consulte Lecturas cifradas.

Nota

Consultas desde clientes sin CSFLE configurado

Al consultar un campo cifrado con un cliente que no está configurado para usar el cifrado de nivel de campo del lado del cliente (CSFLE), la consulta devuelve un valor nulo. Un cliente sin CSFLE configurado no puede consultar un campo cifrado.

El algoritmo de cifrado aleatorio garantiza que un valor de entrada dado se cifre siempre en un valor de salida diferente cada vez que se ejecuta. Si bien el cifrado aleatorio ofrece las mayores garantías de confidencialidad de los datos, también impide la compatibilidad con operaciones de lectura que deban operar en el campo cifrado para evaluar la consulta.

Para los campos sensibles que se utilizan en operaciones de lectura, las aplicaciones deben utilizar cifrado determinista para mejorar el soporte 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 se pueden consultar directamente documentos en un campo cifrado aleatoriamente. Sin embargo, se puede usar otro campo para encontrar el documento que contiene una aproximación de los datos del campo cifrado aleatoriamente.

Por ejemplo, considere el siguiente documento donde el campo ssn está encriptado 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, puede consultar el campo last4ssn como proxy 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