Alterne as chaves de encriptação de disco

O dispositivo isolado do Google Distributed Cloud (GDC) usa a configuração de chaves unificada do Linux (LUKS) para encriptar dados em discos quando não é fornecido um HSM externo. É criado um conjunto RAID5 sobre as 4 unidades de dados e é criado um único dispositivo LUKS sobre o conjunto RAID5. A KEK LUKS é gerada aleatoriamente e pode ser alterada.

Este documento descreve os passos para rodar a KEK do LUKS que têm de ser realizados para:

  • Rotação de KEK agendada regularmente.
  • Exposição a KEK.

Antes de começar

Conclua os seguintes passos:

  1. Verifique se cumpre os pré-requisitos do portátil.
  2. Certifique-se de que consegue iniciar sessão nos três nós como utilizador root.

Alterne a KEK

O sistema de dispositivo isolado do Google Distributed Cloud (GDC) usa um cluster NetApp ONTAP Select (OTS) de dois nós implementado nos nós bm01 e bm02 (normalmente sem GPUs). Cada nó tem 4 unidades de dados dedicadas configuradas como uma matriz RAID5 para uma redundância melhorada. Um único dispositivo encriptado com LUKS é aplicado em camadas sobre cada matriz RAID5 para garantir a segurança dos dados.

A KEK de encriptação LUKS está armazenada no disco de arranque localizado em /etc/luks. A rotação da KEK do LUKS requer a rotação da encriptação LUKS em ambos os nós para manter a segurança no cluster. Para fazer uma rotação regular da KEK ou se a KEK estiver exposta, repita os seguintes passos em bm01 e bm02:

  1. Inicie sessão no nó como utilizador root.

  2. Certifique-se de que o dispositivo RAID existe e obtenha o RAID_DEVICE caminho completo.

    ll /dev/md
    
  3. Certifique-se de que o ficheiro de chave LUKS antigo existe e obtenha o OLD_KEYcaminho completo.

    ll /etc/luks
    
  4. Adicione a KEK antiga à ranhura de chave 1, para que as ranhuras de chave 0 e 1 tenham a mesma KEK.

    cryptsetup luksAddKey RAID_DEVICE OLD_KEY --key-slot 1 --key-file OLD_KEY
    

    Substitua RAID_DEVICE e OLD_KEY pelos caminhos dos passos anteriores.

  5. Remova a KEK antiga da ranhura de chaves 0.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. Gere uma nova KEK e armazene-a no novo ficheiro de chave NEW_KEY.

    dd if=/dev/urandom of=NEW_KEY bs=512 count=1
    chmod u=r,go-rwx NEW_KEY
    

    Substitua NEW_KEY pelo caminho completo para o novo ficheiro de chave.

  7. Adicione a nova KEK à ranhura de chave 0.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. Defina a configuração persistente para abrir ou fechar o dispositivo LUKS no arranque ou encerramento do computador.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. Remova a KEK antiga da ranhura de chaves 1.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. Verifique se a nova KEK está a funcionar.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. Verifique se a KEK antiga já não está a funcionar.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. Remova a KEK antiga.

    rm OLD_KEY
    

Se um nó for reiniciado antes da conclusão da rotação, o dispositivo LUKS ainda pode ser aberto após o arranque. Pode retomar os passos depois de o nó estar novamente disponível.