Esta página descreve os tipos de criptografia usados pelo MongoDB para executar a criptografia de nÃvel de campo do lado do cliente (CSFLE). Para executar o CSFLE, o MongoDB usa os seguintes tipos de algoritmos de criptografia:
Criptografia determinÃstica
O algoritmo de criptografia determinÃstica garante que um determinado valor de entrada seja sempre criptografado em um mesmo valor de saÃda toda vez que o algoritmo for executado. Embora a criptografia determinÃstica forneça maior suporte para operações de leitura, os dados criptografados com baixa cardinalidade são suscetÃveis à recuperação por análise de frequência.
Para campos confidenciais que não são usados em operações de leitura, os aplicativos podem usar a criptografia aleatória para maior proteção contra a recuperação da análise de frequência.
Importante
Não é possÃvel criptografar objetos e arrays de forma determinÃstica
Não é possÃvel fazer a criptografia de objetos e arrays inteiros com criptografia determinÃstica. Para saber mais e ver um exemplo, consulte Suporte para criptografia de objetos e arrays.
Consulta documentos em um campo criptografado de forma determinÃstica
Você pode consultar campos criptografados deterministicamente usando o driver padrão do MongoDB e os métodos mongosh .
Para ver a lista completa de todos os operadores de query compatÃveis em campos criptografados deterministicamente, consulte Operações suportadas para criptografia automática.
Para saber mais sobre leituras em dados criptografados, consulte a página Leituras criptografadas.
Observação
Fazer query de clientes sem CSFLE configurado
Quando você faz uma query em um campo criptografado usando um cliente que não está configurado para usar CSFLE (criptografia de nÃvel de campo do lado do cliente), a query retorna um valor nulo. Um cliente sem CSFLE configurado não pode fazer query em um campo criptografado.
Criptografia aleatória
O algoritmo de criptografia aleatória garante que um determinado valor de entrada seja sempre criptografado em um valor de saÃda diferente sempre que o algoritmo for executado. Embora a criptografia aleatória forneça as mais fortes garantias de confidencialidade dos dados, ela também impede o suporte para quaisquer operações de leitura que devem operar no campo criptografado para avaliar a query.
Para campos confidenciais que são utilizados em operações de leitura, os aplicativos devem usar criptografia determinÃstica para melhorar a viabilidade de leitura em campos criptografados.
Suporte para criptografia de objetos e arrays
A criptografia de objetos ou arrays inteiros só é possÃvel com criptografia aleatória.
Por exemplo, considere o seguinte 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" ] }
Criptografar os campos personal_information e phone_numbers usando o algoritmo de criptografia aleatória criptografa o objeto inteiro. Embora isso proteja todos os campos aninhados nesses campos, também evita a consulta desses campos aninhados.
Para saber mais sobre as operações suportadas para criptografia, consulte Operações suportadas para criptografia automática.
Consulta documentos em um campo criptografado aleatoriamente
Não é possÃvel consultar diretamente os documentos em um campo criptografado aleatoriamente. No entanto, você pode usar outro campo para localizar o documento que contém uma aproximação dos dados de campo criptografados aleatoriamente.
Por exemplo, considere o seguinte documento em que o campo ssn é criptografado aleatoriamente:
{ "_id": "5d6ecdce70401f03b27448fc", "name": "Jon Doe", "ssn": 241014209, "bloodType": "AB+", "medicalRecords": [ { "weight": 180, "bloodPressure": "120/80" } ], "insurance": { "provider": "MaestCare", "policyNumber": 123142 } }
Em vez de consultar o campo ssn, você pode adicionar outro campo de texto sem formatação chamado last4ssn que contém os últimos 4 dÃgitos do campo ssn. Você pode então fazer a query no campo last4ssn como um proxy para ssn:
{ "_id": "5d6ecdce70401f03b27448fc", "name": "Jon Doe", "ssn": 241014209, "last4ssn": 4209, "bloodType": "AB+", "medicalRecords": [ { "weight": 180, "bloodPressure": "120/80" } ], "insurance": { "provider": "MaestCare", "policyNumber": 123142 } }