Foi divulgada a notícia de que no GitHub uma proposta foi colocada em discussão para implementar o serviço Sigstore para verificar pacotes com assinaturas digitais e manter um registro público para confirmar a autenticidade ao distribuir os lançamentos.
Sobre a proposta menciona-se que o uso do Sigstore permitirá implementar um nível adicional de proteção contra ataques destinados a substituir componentes e dependências de software (cadeia de suprimentos).
Proteger a cadeia de fornecimento de software é um dos maiores desafios de segurança que nosso setor enfrenta no momento. Esta proposta é um próximo passo importante, mas realmente resolver esse desafio exigirá comprometimento e investimento de toda a comunidade…
Essas mudanças ajudam a proteger os consumidores de código aberto contra ataques da cadeia de suprimentos de software; em outras palavras, quando usuários mal-intencionados tentam espalhar malware violando a conta de um mantenedor e adicionando software mal-intencionado às dependências de código aberto usadas por muitos desenvolvedores.
Por exemplo, a alteração implementada protegerá as fontes do projeto caso a conta do desenvolvedor de uma das dependências do NPM seja comprometida e um invasor gere uma atualização de pacote com código malicioso.
Vale ressaltar que o Sigstore não é apenas mais uma ferramenta de assinatura de código, pois sua abordagem normal é eliminar a necessidade de gerenciar chaves de assinatura emitindo chaves de curto prazo baseadas em identidades OpenID Connect (OIDC), ao mesmo tempo em que registra as ações em um registro imutável chamado rekor, além do qual a Sigstore possui sua própria autoridade de certificação chamada Fulcio
Graças ao novo nível de proteção, os desenvolvedores poderão vincular o pacote gerado com o código-fonte usado e o ambiente de compilação, dando ao usuário a oportunidade de verificar se o conteúdo do pacote corresponde ao conteúdo das fontes no repositório principal do projeto.
O uso do Sigstore simplifica muito o processo de gerenciamento de chaves e elimina as complexidades associadas ao registro, revogação e gerenciamento de chave criptográfica. A Sigstore se promove como Let's Encrypt for code, fornecendo certificados para assinatura digital de código e ferramentas para automatizar a verificação.
Estamos abrindo uma nova solicitação de comentários (RFC) hoje, que analisa a vinculação de um pacote ao seu repositório de origem e ambiente de compilação. Quando os mantenedores de pacotes optam por este sistema, os consumidores de seus pacotes podem ter mais confiança de que o conteúdo do pacote corresponde ao conteúdo do repositório vinculado.
Em vez de chaves permanentes, O Sigstore usa chaves efêmeras de curta duração que são geradas com base em permissões. O material usado para a assinatura é refletido em um registro público protegido contra modificações, permitindo que você garanta que o autor da assinatura é exatamente quem diz ser, e que a assinatura foi formada pelo mesmo participante responsável.
O projeto teve adoção antecipada com outros ecossistemas de gerenciadores de pacotes. Com o RFC de hoje, propomos adicionar suporte para assinatura de ponta a ponta de pacotes npm usando Sigstore. Esse processo incluiria a geração de certificações sobre onde, quando e como o pacote foi criado, para que pudesse ser verificado posteriormente.
Para garantir integridade e proteção contra corrupção de dados, uma estrutura de árvore Merkle Tree é usada em que cada ramificação verifica todas as ramificações e nós subjacentes por meio de hash conjunto (árvore). Ao ter um hash à direita, o usuário pode verificar a correção de todo o histórico de operações, bem como a correção dos estados anteriores do banco de dados (o hash de verificação raiz do novo estado do banco de dados é calculado considerando o estado anterior).
Por fim, vale ressaltar que o Sigstore é desenvolvido em conjunto pela Linux Foundation, Google, Red Hat, Purdue University e Chainguard.
Se você quiser saber mais sobre isso, você pode consultar os detalhes em o seguinte link.