Assemblage reproductible de Tails

Nous avions reçu le prix Mozilla Open Source Support dans le but de rendre l'assemblage de l'image ISO de Tails reproductible. Ce projet était sur notre feuille de route pour 2017 et avec la sortie de Tails 3.3 nous sommes fière de vous présenter une des premières image ISO reproductible d'un système d'exploitation Linux.

Du code source au code binaire

Lorsque nous écrivons un logiciel, nous utilisons des langages de programmation qu'un être humain peut lire et comprendre. Cela s'appelle le code source. On peut imaginer le code source comme une recette très précise. Une telle recette décrit une procédure précise : de quels ingrédients et dans quelles quantités en avons-nous besoin ? Comment doivent-ils être mélangés, à quelle température doivent-ils être cuits ? La recette doit également décrire le résultat escompté : à quoi le plat doit ressembler, quel goût il doit avoir.

Lorsque nous générons une image ISO Tails, notre code source et les paquets Debian que nous intégrons sont assemblés en une image ISO binaire, un peu comme lorsque l'on mélange les ingrédients d'une recette et que l'on obtient un plat. On peut difficilement réaliser une rétro-ingénierie des quantités et des ingrédients d'un plat. Le résultat de notre processus de cuisson est l'image ISO de Tails qui peut être téléchargée et installée sur une clé USB.

Nous, chefs et aides en cuisine (développant et contribuant à Tails), vous fournissons, personnes utilisant Tails, plusieurs moyens de vérifier si cette image ISO est bien celle que nous voulions que vous téléchargiez, soit avec le module complémentaire Firefox qui fait une vérification automatique à votre place, soit en utilisant notre signature OpenPGP. Chacune de ces méthodes de vérification vous dit simplement que l'image ISO est celle que nous voulions que vous téléchargiez : que le plat que vous avez est effectivement le plat que vous avez commandé,et non un repas empoisonné ou remplacé par un serveur mal intentionné (comme un miroir de téléchargement).

Cependant, même avec de telles méthodes de vérification sophistiquées, il est impossible de retrouver la recette à partir du plat : est-ce que le plat contient seulement les ingrédients qu'il est supposé contenir ? Ou une personne non autorisée a-t-elle pénétré dans la cuisine de nuit et empoisonné les ingrédients et réglé le four 50 degrés plus chaud que ce qu'il affiche ? En d'autres termes, une entité malintentionnée peut-elle avoir compromis nos machines d'assemblage ? C'est ce que les assemblages reproductibles aident à vérifier et ce contre quoi elles protègent.

Qu'est-ce que la compilation reproductible ?

Les compilations reproductibles sont un ensemble de pratiques dans le développement de logiciel qui crée une parcours vérifiable du code source lisible par un être humain au code binaire utilisé par les ordinateurs. (citation de https://reproducible-builds.org/)

En d'autres termes, avec la compilation reproductible, chaque étape de cuisson d'une recette est reproduisible à l'identique.

Chez Tails, nous avons travaillé durant une année pour implémenter ce type de pratiques. Cela rend possible de comparer des images ISO assemblées par de multiples personnes à partir du même code source et des mêmes paquets Debian et de s'assurer qu'il en résulte exactement la même image ISO.

Ou en utilisant à nouveau la métaphore culinaire : plusieurs d'entre nous vont cuisiner le plat, vérifier que tout le monde a préparé le même plat et seulement une fois que nous en avons la certitude, nous vous le livrons.

Nous pouvons ainsi avoir la certitude qu'aucun four endommagé n'a introduit de code malicieux ou de faille : ou nous en serons informés avant de distribuer le plat.

Qu'est-ce que cela signifie pour vous qui utilisez Tails ?

Cela ne change rien à la manière dont vous téléchargez et installez Tails et vous n'avez pas à faire de vérification supplémentaire. Cela aide simplement à s'assurer que l'image ISO Tails que nous distribuons provient bien du code source et des paquets Debian supposés être utilisés pour sa création. Avec Tails reproductible, il suffit qu'une personne compétente assemble Tails et le compare à l'image ISO que le projet Tails distribue pour découvrir n'importe quelle type de porte dérobée.

Et d'ailleurs, non seulement les images ISO sont désormais reproductibles, mais les mises à jour incrémentales le sont également. Et vous bénéficiez de cette amélioration sans vous en rendre compte :)

Merci

À part le Mozilla Open Source Support et la communauté des compilations reproductibles qui ont fourni une aide cruciale là où nous en avions vraiment besoin, nous voudrions également remercier toutes les personnes de notre communauté qui nous ont aidé à tester ce processus. Votre coup de main a été très apprécié !

Mise en œuvre technique

Si vous vous intéressez aux détails techniques de notre implémentation, nous vous invitons à lire notre rapport pour la communauté des compilations reproductibles qui détaille comment nous avons fait.

Nous avons également publié des instructions techniques pour vérifier son propre Tails assemblé.

Aidez-nous à rendre Tails encore meilleur

Tails est un projet de logiciel libre auto-organisé. Nous dépendons de partenariats, de subventions et, le plus important, de dons d'individus comme vous.

Care to give us a hand to make Tails bake even better cakes in the future? Donate today!

Problèmes connus

N'importe quel processus d'assemblage reproductible est reproductible... jusqu'à preuve du contraire. Dans notre cas, des problèmes de dernière minute ont été découverts et doivent être corrigés dans la prochaine version de Tails :