Compilacions reproductibles de Tails

Hem rebut el premi Mozilla Open Source Support per tal que les imatges ISO de Tails es creïn de manera reproductible. Aquest projecte estava al nostre full de ruta per al 2017 i amb el llançament de Tails 3.3 estem orgullosos de presentar una de les primeres imatges ISO reproduïbles del món d'un sistema operatiu Linux.

Del codi font al codi binari

Quan escrivim programari, ho fem utilitzant llenguatges de programació que un humà pot llegir i entendre. Això s'anomena codi font. Un pot imaginar el codi font molt semblant a una recepta molt precisa. Aquesta recepta descriu un procediment exacte: quins ingredients i quina quantitat d'ingredients necessiteu? Com s'han de barrejar a quina temperatura s'han de cuinar o coure? La recepta fins i tot descriurà el resultat esperat: com hauria de ser l'aspecte i el gust del menjar.

Quan generem una imatge ISO de Tails, el nostre codi font i els paquets de Debian que incloem s'agrupen en una imatge ISO binària, de la mateixa manera que quan es barregen els ingredients de la recepta, s'obté el menjar. Les quantitats i ingredients d'aquest àpat no es poden modificar fàcilment amb enginyeria inversa. El resultat del nostre procés de cuina és una imatge ISO de Tails que els usuaris baixen i instal·len en un llapis USB.

Nosaltres, cuiners i ajudants de la cuina (desenvolupadors i col·laboradors de Tails), us proporcionem, als nostres usuaris, diversos mitjans per verificar que aquesta imatge ISO és realment la que volem que baixeu, ja sigui utilitzant el nostre complement de Firefox que fa aquesta verificació automàtica o mitjançant la nostra signatura OpenPGP. Ambdós mètodes de verificació simplement us diuen que la imatge ISO és la imatge que volem que baixeu: que el menjar que rebeu és realment el menjar que heu demanat i no un menjar que hagi estat enverinat o intercanviat per un mal cambrer (com ara un mirall de baixada).

Tanmateix, fins i tot amb mètodes de verificació tan sofisticats, encara és impossible remuntar l'àpat a la recepta: el menjar conté només els ingredients que se suposa que ha de contenir? O el personal no autoritzat podria haver entrat a la cuina a la nit i després enverinar els ingredients i fer coure el forn a 50 graus més alt del que es mostra? En altres paraules, una entitat maliciosa podria haver compromès les nostres màquines de construcció? Això és el que ajuden a verificar i protegir les compilacions reproduïbles.

Què és una compilació reproduïble?

Les compilacions reproduïbles són un conjunt de pràctiques de desenvolupament de programari que creen una ruta verificable des del codi font llegible per un humà fins al codi binari utilitzat pels ordinadors. (citat de https://reproducible-builds.org/)

En altres paraules, amb compilacions reproduïbles, cada procés de cocció de la mateixa recepta és exactament repetible.

A Tails hem treballat durant un any per implementar aquest conjunt de pràctiques. Això fa que ara sigui possible comparar imatges ISO creades per diverses persones des del mateix codi font i paquets de Debian, i assegurar-se que de totes en resulti exactament la mateixa imatge ISO.

O, de nou, utilitzant la nostra metàfora de la cuina: molts de nosaltres cuinarem el menjar, compararem que tots haguem cuinat el mateix menjar i només un cop estiguem segurs, us el lliurarem.

D'aquesta manera, tots podem confiar en que cap forn trencat ha introduït codi maliciós o errors: o ho notaríem abans de lliurar el menjar.

Què significa això per als usuaris?

Això no canvia res en la manera de baixar i instal·lar Tails, i no cal que feu verificacions addicionals. Simplement ajuda a confiar que la imatge ISO de Tails que distribuïm prové de fet del codi font i dels paquets de Debian dels quals està pensat. Amb Tails reproduïbles, només cal una persona experta per construir Tails i comparar-la amb la imatge ISO que distribueix el projecte Tails per descobrir alguns tipus de portes del darrere.

I, per cert, ara no només les nostres imatges ISO són reproduïbles, sinó també les nostres actualitzacions incrementals. I us beneficieu d'aquesta millora sense ni adonar-vos-en :)

Gràcies

A més del suport de Mozilla Open Source Support i la comunitat Reproducible Builds que ens va proporcionar ajuda crítica on la necessitàvem molt, també ens agradaria donar les gràcies a tots els membres de la nostra comunitat que ens van ajudar a provar aquest procés. El vostre cop de mà és molt agraït!

Implementació tècnica

Si esteu interessats en els detalls tècnics de la nostra implementació, us convidem a llegir el nostre informe a la comunitat Reproducible Builds sobre com ho hem fet.

També hem publicat instruccions tècniques per verificar la pròpia compilació.

Ajudeu-nos a fer que Tails sigui encara millor

Tails és un projecte de programari lliure auto-organitzat. Depenem de col·laboracions, subvencions i, el més important, de les donacions de persones com tu.

Voldríeu fer-nos un cop de mà per fer que Tails cuini encara millors pastissos en un futur? Feu una donació avui!

Problemes coneguts

Qualsevol procés de compilació reproduïble és reproduïble... fins que es demostri el contrari. En el nostre cas, es van descobrir problemes d'última hora i s'haurien de solucionar en la propera versió de Tails: