reconstruído v0.25.0 foi lançado recentemente, esta versão melhorou in-toto suporte para atestados criptográficos que esta postagem do blog descreve brevemente. 😺
Recapitulando rapidamente, o reconstruerd é um agendador de compilação automático que surgiu em 2019/2020 a partir do Construções reproduzíveis projeto fazendo o seguinte:
- Rastreie pacotes binários disponíveis em uma distribuição Linux
- Tentativa de compilar os pacotes binários oficiais a partir de seu (suposto) código-fonte
- Verifique se o pacote que compilamos é idêntico bit a bit
- Se sim, marque
GOODemitir um atestado - Em todos os outros casos, marque-o
BADgere um difoscópio
- Se sim, marque
Os pacotes binários em questão são explicitamente os pacotes que os usuários também buscariam e instalariam.
Este projeto chamou a atenção de Arco Linux, Debian e Fedora.
Antes desta versão
A integração in-toto original foi adicionada há 4 anos por Joy Liu durante o GSoC 2021com ajuda de Santiago Torres e Aditya Sirish (grite para os reais!). Cada reconstruerd-worker tinha sua própria chave criptográfica e incluía um atestado assinado junto com o resultado da compilação que poderia então ser obtido em /api/v0/builds/{id}/attestation.
Como esses trabalhadores são potencialmente efêmeros e a lista de chaves públicas dos trabalhadores não era conhecida publicamente, era difícil fazer uso dessas assinaturas.
Desde esta versão
Esta versão apresenta o seguinte:
- O próprio daemon reconstruído gera uma chave de assinatura de longo prazo
- Todos os atestados assinados por um trabalhador confiável também são assinados pelo daemon reconstruído
- O daemon reconstruído obtém um novo endpoint que pode ser usado para consultar a chave pública com a qual esta instância se identifica:
/api/v0/public-keys
Um exemplo deste novo endpoint pode ser encontrado aqui:
https://reproducível.archlinux.org/api/v0/public-keys
A resposta é mais ou menos assim (esta é a verdadeira chave de assinatura de longo prazo usada por reproducible.archlinux.org):
{
"current": (
"-----BEGIN PUBLIC KEY-----rnMCwwBwYDK2VwBQADIQBLNcEcgErQ1rZz9oIkUnzc3fPuqJEALr22rNbrBK7iqQ==rn-----END PUBLIC KEY-----rn"
)
}
É uma lista para que as chaves possam ser potencialmente roladas ao longo do tempo e, em versões futuras, também deverá listar as chaves públicas que a instância usou no passado.
Ainda não desenvolvi nenhuma integração para isso (parcialmente também para permitir que as implantações acompanhem a nova versão), mas estou planejando fazer isso usando o caixa in-toto.
Palavras finais
Para dar crédito a quem o merece (e porque as pessoas apontaram que tenho tendência a encerrar as postagens do meu blog muito abruptamente), o reconstruerd é apenas o software agendador, a construção real no ambiente de construção correto é terceirizada para ferramentas externas como archlinux-repro e debrebuild.
Para ler mais sobre compilações reproduzíveis aplicadas, consulte também minha postagem anterior no blog Discordando reconstrutores e o que isso significa.
Além disso, existem actualmente esforços por parte do Comissão Europeia para proibir o bate-papo criptografado de ponta a ponta não regulamentado, então este pode ser um bom momento para se preparar para o (potencial) impacto e verificar quais ferramentas você tem disponíveis para reduzir a confiança desenfreada nas autoridades de software (de código aberto), para mantê-las operando de forma honesta e responsável.
Nunca perca o enredo ~
Atenciosamente
Deseja saber mais sobre Software Livre Clique Aqui!
