A empresa Google anunciou a formação das primeiras versões estáveis dos componentes que compõem o projeto Sigstore, que foi declarado adequado para a criação de implementações em produção. O Sigstore desenvolve ferramentas e serviços para a verificação de software usando assinaturas digitais e mantendo um log público que confirma a autenticidade das mudanças (transparency log). O projeto é desenvolvido sob a égide da organização sem fins lucrativos Linux Foundation, junto com as empresas Google, Red Hat, Cisco, VMware, GitHub e HP Enterprise, com a participação da organização OpenSSF (Open Source Security Foundation) e da Universidade de Purdue.
O Sigstore pode ser considerado como um análogo do Let’s Encrypt para código, fornecendo certificados para a certificação de código com assinaturas digitais e um conjunto de ferramentas para automação da verificação. Com o Sigstore, os desenvolvedores poderão criar assinaturas digitais para artefatos relacionados a aplicações, como arquivos de lançamento, imagens de contêiner, manifests e arquivos executáveis. O material utilizado para assinatura é refletido em um log público protegido contra alterações, que pode ser usado para verificação e auditoria.
Em vez de chaves permanentes, o Sigstore utiliza chaves efêmeras de curta duração, que são geradas com base em credenciais validadas por provedores OpenID Connect (no momento da geração de chaves, necessárias para criar uma assinatura digital, o desenvolvedor se identifica através do provedor OpenID vinculado ao email). A autenticidade das chaves é verificada por um log público centralizado, que permite garantir que o autor da assinatura é realmente quem afirma ser, e que a assinatura foi criada pelo mesmo participante responsável pelas versões anteriores.
A prontidão do Sigstore para implementação é causada pela formação de lançamentos de dois componentes-chave — Rekor 1.0 e Fulcio 1.0, cujas interfaces de programação foram declaradas estáveis e que manterão compatibilidade retroativa. Os componentes do serviço são escritos na linguagem Go e são distribuídos sob a licença Apache 2.0.
O componente Rekor contém a implementação de um log para armazenar metadados autenticados por assinaturas digitais, refletindo informações sobre os projetos. Para garantir a integridade e a proteção contra a manipulação de dados retroativamente, é aplicada uma estrutura em árvore chamada 'Árvore de Merkle', na qual cada ramo verifica todos os ramos e nós subjacentes por meio de uma hashização conjunta (em árvore). Com um hash final, o usuário pode garantir a correção de toda a história das operações, bem como a correção dos estados passados do banco de dados (o hash de verificação raiz do novo estado da base é calculado considerando o estado anterior). Para a verificação e adição de novos registros, é disponibilizada uma API RESTful, além de uma interface de linha de comando.
O componente Fulcio (SigStore WebPKI) inclui um sistema para a criação de autoridades certificadoras (root CA), que emitem certificados de curta duração com base em e-mails autenticados via OpenID Connect. O tempo de vida do certificado é de 20 minutos, durante os quais o desenvolvedor deve conseguir gerar uma assinatura digital (se posteriormente o certificado cair em mãos de um invasor, ele já estará expirado). Adicionalmente, o projeto desenvolve a ferramenta Cosign (Container Signing), destinada à criação de assinaturas para contêineres, verificação de assinaturas e publicação de contêineres assinados em repositórios compatíveis com OCI (Open Container Initiative).
A implementação do Sigstore permite aumentar a segurança dos canais de distribuição de software e se proteger contra ataques direcionados à substituição de bibliotecas e dependências (supply chain). Um dos principais problemas de segurança em software livre é a dificuldade de verificar a origem do software e a verificação do processo de compilação. Por exemplo, para verificar a integridade de um lançamento, a maioria dos projetos utiliza hashes, mas frequentemente as informações necessárias para a verificação de autenticidade são armazenadas em sistemas não protegidos e em repositórios públicos de código, resultando na possibilidade de que invasores alterem os arquivos necessários para a verificação e, sem levantar suspeitas, introduzam alterações maliciosas.
O uso de assinaturas digitais para verificação de lançamentos ainda não se popularizou devido às dificuldades na gestão de chaves, distribuição de chaves públicas e revogação de chaves comprometidas. Para que a verificação faça sentido, é necessário também organizar um processo seguro e confiável de distribuição de chaves públicas e checksums. Mesmo com a assinatura digital, muitos usuários ignoram a verificação, pois precisam dedicar tempo para entender o processo de verificação e descobrir qual chave merece confiança. O projeto Sigstore busca simplificar e automatizar esses processos, oferecendo uma solução pronta e testada.
Fonte: opennet.ru
