Chaves de criptografia fornecidas pelo cliente

As chaves de criptografia fornecidas pelo cliente (CSEK) são um recurso do Google Cloud Storage e do Google Compute Engine. Quando um usuário fornecer as próprias chaves de criptografia, o Google as utilizará para proteger as chaves geradas pelo próprio Google, que são aplicadas na criptografia e descriptografia dos dados desse usuário.

Termos usados neste tópico:

  • Chave de criptografia de dados (DEK): chave usada para criptografar dados.

  • Chave de criptografia de chaves (KEK): uma chave usada para criptografar ou "encapsular" uma chave de criptografia de dados.

  • Cluster Manager: um conjunto de processos executados sob uma identidade de gerenciador de clusters na infraestrutura de produção do Google. Implementa a lógica para o gerenciamento de recursos do Compute Engine, como discos e instâncias de VM. Armazena metadados relacionados a esses recursos.

  • Instance Manager: um conjunto de processos executados sob uma identidade de gerenciador de instâncias na infraestrutura de produção do Google. Executa modificações nas instâncias de VM (processos) na frota, como início/interrupção de VMs ou anexação/desanexação de discos. O Cluster Manager especifica o estado que as VMs devem ter em todos os momentos, enquanto o Instance Manager trabalha para executar isso.

Como funciona o fornecimento de chaves de criptografia pelo cliente

Abaixo, fornecemos informações sobre como funciona o fornecimento de chaves de criptografia pelo cliente no Google Cloud Storage e no Google Compute Engine.

Cloud Storage

Ao usar chaves de criptografia fornecidas pelo cliente no Cloud Storage:

  • Você deve fornecer uma CSEK bruta como parte de uma chamada de API. Essa chave é transmitida do front-end do Google para a memória do sistema de armazenamento. No Google Cloud Storage, ela é utilizada como chave de criptografia para os dados do usuário.

  • A CSEK bruta é usada para desencapsular chaves de bloco encapsuladas para criar chaves de bloco brutas na memória. Essas chaves são usadas para descriptografar blocos de dados armazenados nos sistemas de armazenamento. No Google Cloud Storage, elas são utilizadas como chaves de criptografia de dados (DEK) para os dados do usuário.

    CSEK do Cloud Storage

Chave(s) Armazenada em Finalidade Acessível até
CSEK bruta Memória do sistema de armazenamento Fornecida pelo cliente.
Chave de criptografia de chave (KEK) para chaves de bloco.
Encapsula as chaves de bloco.
A operação solicitada pelo cliente (por exemplo, insertObject ou getObject) está concluída.
Chaves de bloco encapsuladas Dispositivos de armazenamento Proteja as chaves de bloco armazenadas em repouso. O objeto de armazenamento ser excluído.
Chaves de bloco brutas Memória dos dispositivos de armazenamento Chave de criptografia de dados (DEK) para os dados.
Ler/gravar dados no disco.
A operação solicitada pelo cliente está concluída.

Compute Engine

Ao usar chaves de criptografia fornecidas pelo cliente no Compute Engine:

  • Forneça uma CSEK bruta como parte de uma chamada de API.

  • Essa chave é transmitida do front-end do Google para o front-end do Cluster Manager:

    • Se você fornecer uma CSEK encapsulada, ela será desencapsulada por meio de uma chave de encapsulamento assimétrica do Google.
    • A CSEK bruta é combinada com um nonce criptográfico por disco permanente para gerar uma chave derivada da CSEK, que será usada como chave de criptografia para seus dados no Google Compute Engine.

  • No front-end do Cluster Manager, tanto a CSEK quanto a chave derivada da CSEK são mantidas somente na memória. A chave derivada da CSEK é usada na memória do Cluster Manager para desencapsular as chaves de disco encapsuladas que estão armazenadas nos metadados da instância do Cluster Manager e nos metadados do Instance Manager, em que a reinicialização automática está ativada (não é o mesmo que nos metadados de instância).

    • A chave derivada da CSEK será usada para encapsular as chaves de disco brutas quando o disco for criado, e desencapsulá-las quando o disco for acessado.
      • Se a reinicialização automática estiver ativada, as chaves de disco encapsuladas serão mantidas pelo Cluster Manager durante toda a vida útil da VM. Assim, será possível reiniciar a VM caso ocorra alguma falha. As chaves de disco são encapsuladas por uma chave de encapsulamento simétrica do Google. Essa chave de encapsulamento tem permissões para ser usada somente pelo Google Compute Engine.
      • Se a migração em tempo real estiver ativada, a chave de disco bruta será transmitida da memória da antiga instância da VM para a memória da nova instância, sem o envolvimento do Instance Manager ou do Cluster Manager na cópia da chave.

  • As chaves de disco brutas são transmitidas para a memória do Cluster Manager, do Instance Manager e da máquina virtual. No Google Compute Engine, elas são usadas como chaves de criptografia para os dados do usuário.

    CSEK do Compute Engine

Chave(s) Retida por Finalidade Acessível até
CSEK bruta Front-end do Cluster Manager Fornecida pelo cliente.
Usada para gerar a chave derivada da CSEK por meio da inclusão de um valor de uso único criptográfico.
A operação solicitada pelo cliente (por exemplo, instances.insert, instances.attachDisk) está concluída.
CSEK encapsulada por chave pública
(opcional: quando o encapsulamento de chave RSA é usado).
Front-end do Cluster Manager Fornecida opcionalmente pelo cliente.
Usada para gerar a chave derivada da CSEK por meio do desencapsulamento com uma chave assimétrica do Google.
A operação solicitada pelo cliente está concluída.
Chave de encapsulamento assimétrica
(quando o encapsulamento da chave por RSA é usado)
Serviço de gerenciamento de chaves interno do Google Usada para desencapsular uma chave encapsulada por RSA fornecida pelo cliente. Indefinidamente.
Chave derivada da CSEK Front-end do Cluster Manager Chave de criptografia de chave (KEK) para chaves de disco.
Encapsula as chaves de disco.
A operação de encapsulamento ou desencapsulamento da chave está concluída.
Chaves de disco encapsuladas pelo Google
(opcional: quando o reinício automático é usado).
Front-end do Cluster Manager Protege as chaves de disco armazenadas em repouso, para discos anexados às instâncias em execução.
Reinicia a instância quando a memória da VM é perdida (por exemplo, em caso de falha do host).
A VM ser interrompida ou excluída.
Chaves de disco brutas Memória do monitor da máquina virtual (VMM, na sigla em inglês),
Memória do Cluster Manager (CM, na sigla em inglês).
Chave de criptografia de dados (DEK) para criptografar dados.
Lê/grava dados no disco, migra a VM em tempo real e realiza upgrades no local.
A VM ser interrompida ou excluída.
Chave derivada da CSEK encapsulada pelo Google Banco de dados do Cluster Manager Reinicia a operação em caso de falha. A operação solicitada pelo cliente está concluída.

.

Como as chaves de criptografia fornecidas pelo cliente são protegidas

Descrevemos abaixo como as chaves de criptografia fornecidas pelo cliente são protegidas no disco durante migrações na infraestrutura do Google Cloud Platform e quando estão na memória.

No disco

A CSEK bruta, as chaves derivadas da CSEK e as chaves de bloco/disco brutas nunca são armazenadas em discos não criptografados. As chaves de bloco/disco brutas são encapsuladas por chaves derivadas de CSEK e, no caso de uso de reinício automático, por chaves do Google antes de serem armazenadas. O Google não armazena permanentemente nos servidores as chaves de usuários.

Durante migrações na infraestrutura

Todos os serviços usam recursos de gerenciamento de acesso fornecidos pela infraestrutura para especificar com que outros serviços eles podem se comunicar. Isso é configurado na lista de permissões das identidades de contas de serviço autorizadas. Dessa forma, a restrição de acesso é aplicada automaticamente pela infraestrutura. Saiba mais sobre identidade, integridade e isolamento de serviços.

Além dos recursos de autenticação e autorização de RPC abordados nas seções anteriores, a infraestrutura também oferece privacidade criptográfica e integridade para os dados de RPC na rede. Os serviços podem configurar o nível de proteção criptográfica desejado para cada RPC da infraestrutura. Isso é ativado pelas chaves de criptografia fornecidas pelo cliente. Saiba mais sobre a criptografia de comunicações entre serviços.

Na memória

O material da chave reside na memória de vários sistemas, conforme detalhado acima, incluindo as memórias do Cluster Manager e do monitor da máquina virtual. O acesso às memórias desses sistemas é concedido por exceção, como parte de um incidente, por exemplo, e gerenciado por listas de controle de acesso. O despejo de memória fica desativado nesses sistemas ou, então, é realizada uma verificação automática para detectar o material da chave na memória despejada. O acesso aos jobs é limitado a um pequeno grupo de engenheiros de confiabilidade do local, conforme necessário, como parte da função de manter o serviço. Já o acesso a registros é limitado a poucos engenheiros de software que trabalham nos recursos, para fins de depuração.

Saiba mais