O Que É uma Chave de Assinatura? Provando Autenticidade e Integridade
Uma chave de assinatura é uma chave privada usada para produzir assinaturas digitais, para que outros possam verificar que os dados são autênticos e não foram adulterados.
Uma chave de assinatura é a metade privada de um par de chaves assimétricas, usada não para criptografar, mas para assinar. Uma assinatura criada com a chave privada pode ser verificada por qualquer pessoa que possua a chave pública, provando que os dados vieram do detentor da chave e não foram alterados. Em CI/CD, as chaves de assinatura protegem artifacts, imagens de container e commits, ancorando a confiança na cadeia de suprimentos.
Como a assinatura funciona
O detentor faz o hash dos dados e criptografa o hash com sua chave de assinatura privada, produzindo uma assinatura. Um verificador recalcula o hash e o compara com a assinatura usando a chave pública. Uma correspondência prova autenticidade e integridade de uma só vez.
O que as assinaturas provam
- Autenticidade: os dados vieram do detentor da chave privada.
- Integridade: os dados não foram modificados desde a assinatura.
- Não repúdio: o signatário não pode negar de forma plausível tê-los assinado.
Chaves de assinatura em CI/CD
Os pipelines assinam artifacts de release, imagens de container e a proveniência do build para que os consumidores downstream possam verificar o que recebem. Commits e tags assinados permitem que revisores confirmem que as mudanças vieram de contribuidores confiáveis, fortalecendo a cadeia de suprimentos de software.
Protegendo a chave privada
Uma chave de assinatura está entre os secrets mais sensíveis que você mantém: qualquer pessoa que a tenha pode forjar artifacts confiáveis. Ela deve residir em um módulo de segurança de hardware ou em um serviço gerenciado de chaves, nunca em texto puro em um repo, e ser rotacionada em um cronograma.
Assinatura keyless
Abordagens mais recentes geram certificados de assinatura de curta duração vinculados a uma workload identity (via OIDC) em vez de depender de uma chave privada de longa duração. Isso remove a chave permanente do pipeline, da mesma forma que o OIDC remove as credenciais de nuvem permanentes.
Assinatura no runner
A operação de assinatura roda no runner. Manter a chave em um serviço gerenciado e usar runners isolados e efêmeros (como os runners gerenciados do Latchkey) limita a exposição do material de assinatura durante o job.
Principais conclusões
- Uma chave de assinatura é uma chave privada usada para criar assinaturas digitais verificáveis.
- As assinaturas provam autenticidade, integridade e não repúdio dos artifacts.
- Proteja as chaves de assinatura em hardware ou em um serviço gerenciado, ou use assinatura keyless com OIDC.