Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / / /

Campos e tipos de criptografia

Nesta página

  • Criptografia determinística
  • Consulta documentos em um campo criptografado de forma determinística
  • Criptografia aleatória
  • Suporte para criptografia de objetos e arrays
  • Consulta documentos em um campo criptografado aleatoriamente

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

  • Criptografia aleatória

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.

Você pode consultar campos criptografados deterministicamente usando o driver padrão do MongoDB e os métodos mongosh .

Para visualizar a lista completa de todos os operadores de query suportados 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.

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.

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.

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
}
}

Voltar

Gerenciamento de chaves