Ruotare le chiavi di crittografia del disco

L'appliance air-gapped Google Distributed Cloud (GDC) utilizza Linux Unified Key Setup (LUKS) per criptare i dati sui dischi quando non viene fornito HSM esterno. Viene creato un array RAID5 sopra le 4 unità dati e un singolo dispositivo LUKS sopra l'array RAID5. La KEK LUKS viene generata in modo casuale e può essere ruotata.

Questo documento descrive i passaggi per la rotazione della KEK LUKS che deve essere eseguita per:

  • rotazione delle KEK pianificata regolarmente.
  • Esposizione della KEK.

Prima di iniziare

Completa i seguenti passaggi:

  1. Verifica di soddisfare i prerequisiti per il laptop.
  2. Assicurati di poter accedere ai tre nodi come utente root.

Ruota la KEK

Il sistema appliance air-gapped Google Distributed Cloud (GDC) utilizza un cluster NetApp ONTAP Select (OTS) a due nodi di cui è stato eseguito il deployment sui nodi bm01 e bm02 (in genere senza GPU). Ogni nodo dispone di quattro unità di dati dedicate configurate come array RAID5 per una maggiore ridondanza. Un singolo dispositivo criptato LUKS è stratificato sopra ogni array RAID5 per garantire la sicurezza dei dati.

La KEK di crittografia LUKS è archiviata sul disco di avvio che si trova in /etc/luks. La rotazione della KEK LUKS richiede la rotazione della crittografia LUKS su entrambi i nodi per mantenere la sicurezza nel cluster. Per eseguire una rotazione regolare della KEK o se la KEK è esposta, ripeti i seguenti passaggi sia su bm01 che su bm02:

  1. Accedi al nodo come utente root.

  2. Assicurati che il dispositivo RAID esista e recupera il percorso completo RAID_DEVICE.

    ll /dev/md
    
  3. Assicurati che il vecchio file della chiave LUKS esista e ottieni il OLD_KEY percorso completo.

    ll /etc/luks
    
  4. Aggiungi la vecchia KEK allo slot chiave 1, in modo che sia lo slot chiave 0 che lo slot chiave 1 abbiano la stessa KEK.

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

    Sostituisci RAID_DEVICE e OLD_KEY con i percorsi dei passaggi precedenti.

  5. Rimuovi la vecchia KEK dallo slot della chiave 0.

    cryptsetup luksKillSlot RAID_DEVICE 0 --key-file OLD_KEY
    
  6. Genera una nuova KEK e archiviala nel nuovo file di chiavi NEW_KEY.

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

    Sostituisci NEW_KEY con il percorso completo del nuovo file della chiave.

  7. Aggiungi la nuova KEK allo slot della chiave 0.

    cryptsetup luksAddKey RAID_DEVICE NEW_KEY --key-slot 0 --key-file OLD_KEY
    
  8. Imposta la configurazione persistente per aprire o chiudere il dispositivo LUKS all'avvio o all'arresto del computer.

    DEVICE_UUID=$(cryptsetup luksUUID RAID_DEVICE)
    echo "luksrd5 UUID=${DEVICE_UUID} NEW_KEY luks,discard" > /etc/crypttab
    
  9. Rimuovi la vecchia KEK dallo slot della chiave 1.

    cryptsetup luksKillSlot RAID_DEVICE 1 --key-file NEW_KEY
    
  10. Verifica che la nuova KEK funzioni.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file NEW_KEY
    
  11. Verifica che la vecchia KEK non funzioni più.

    cryptsetup luksDump --dump-master-key RAID_DEVICE --key-file OLD_KEY
    
  12. Rimuovi la vecchia KEK.

    rm OLD_KEY
    

Se un nodo viene riavviato prima del completamento della rotazione, il dispositivo LUKS può comunque essere aperto dopo l'avvio. Puoi riprendere i passaggi dopo che il nodo è di nuovo disponibile.