Assinando chaves e atualizações

Todos os artefatos binário, commits do ostree, e imagens do SO pertencentes ao Fedora e ao Fedora CoreOS (FCOS) são assinadas via GPG. O atual conjunto de chaves assinadas e confiáveis estão disponíveis em https://fedoraproject.org/security/.

Rotação de chaves e barreiras de atualização

No começo de todo novo ciclo de uma versão nova do Fedora, uma nova chave para ser assinalada é gerada e sua porção pública publicada no website do Fedora. A nova chave será utilizada depois para assinar novos artefatos, substituindo a atualmente usada. Isso é feito para estabelecer uma nova cadeia de confiança de uma versão antiga para o de uma nova, o que pode ser possivelmente assinado por uma chave nova diferente.

Para fazer novas atualizações automáticas do trabalho do Fedora CoreOS por versões do Fedora, o grupo acima de chaves de assinatura incluídas é atualizado pelo meno uma vez a cada ciclo de uma nova versão do Fedora. Quando isso acontece, uma barreira de atualização é colocada no gráfico de atualização do FCOS.

A primeira razão para uma barreira de update como essa, é para ter certeza que instâncias antigas (e provavelmente muito) recebam e aceitem novas chaves geradas. Isso é conseguido forçando essas máquinas a progressivamente se atualizarem com atualizações intermediárias (assinadas com uma chave já confiável) antes de pular para a última versão publicada.

Exemplo

Tendo o ciclo do Fedora 32 como um exemplo, no começo, imagens do FCOS só sabem sobre assinaturas de chaves para as versões 32 e 33:

$ grep OSTREE /etc/os-release
OSTREE_VERSION='32.20200615.3.0'

$ ls -v /usr/etc/pki/rpm-gpg/*primary | tail -3
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-32-primary
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-33-primary

Após isso nesse ciclo de versão, a chave a ser assinalada é gerada para futuras versões 34 do Fedora e adicionada ao FCOS. A barreira é colocada no gráfico de atualização, como na release 32.20200907.3.0. Ao inspecionar a imagem, o seguinte é mostrado:

$ grep OSTREE /etc/os-release
OSTREE_VERSION='32.20200907.3.0'

$ ls -v /usr/etc/pki/rpm-gpg/*primary | tail -3
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-32-primary
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-33-primary
/usr/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-34-primary

Com essa barreira, instâncias antigas devem primeiro atualizar para 32.20200907.3.0 para ter certeza que conhecem (e confiam) a nova chave a ser assinalada para o Fedora 34, antes de poder atualizar para novas versões baseadas nisso.