Construções reproduzíveis - Reproducible builds

Reproducible Builds logo.svg

Construções reproduzíveis , também conhecidas como compilação determinística , é um processo de compilar software que garante que o código binário resultante possa ser reproduzido . O código-fonte compilado usando compilação determinística sempre produzirá o mesmo binário.

Construções reproduzíveis podem atuar como parte de uma cadeia de confiança ; o código-fonte pode ser assinado e a compilação determinística pode provar que o binário foi compilado a partir de um código-fonte confiável.

Métodos

Para que o processo de compilação seja determinístico, a entrada para o compilador deve ser a mesma, independentemente do ambiente de construção usado. Isso normalmente envolve a normalização de variáveis que podem mudar, como a ordem dos arquivos de entrada, carimbos de data / hora , localidades e caminhos .

Além disso, os compiladores não devem introduzir o não determinismo por si próprios. Isso às vezes acontece ao usar tabelas de hash com um valor de semente de hash aleatório. Isso também pode acontecer ao usar o endereço de variáveis ​​porque isso varia da randomização do layout do espaço de endereço (ASLR).

Sistemas de compilação , como Bazel e Gitian, podem ser usados ​​para automatizar processos de compilação determinísticos.

História

O Projeto GNU usou compilações reproduzíveis no início dos anos 1990. Changelogs de 1992 indicam o esforço contínuo.

Um dos projetos mais antigos para promover compilações reproduzíveis é o projeto Bitcoin com Gitian. Mais tarde, em 2013, o projeto Tor (rede de anonimato) começou a usar Gitian para suas compilações reproduzíveis.

Em julho de 2013, o projeto Debian começou a implementar compilações reproduzíveis em todo o seu arquivo de pacotes.

Em julho de 2017, mais de 90% dos pacotes no repositório foram comprovados para serem compilados de forma reproduzível.

Em novembro de 2018, o projeto Reproducible Builds se juntou à Software Freedom Conservancy .

F-droid usa compilações reproduzíveis para fornecer uma garantia de que os APKs distribuídos usam o código-fonte gratuito reivindicado .

O sistema operacional portátil Tails usa compilações reproduzíveis e explica a outros como verificar sua distribuição.

O NixOS afirma uma construção 100% reproduzível em junho de 2021.

Referências

links externos