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 a été sur notre feuille de route pour 2017 et avec la sortie de Tails 3.3 nous avons la fierté 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 recette décrit une procédure exacte : de quels ingrédients et quelles quantités d'ingrédients avons-nous besoin ? Comment doivent-ils être mélangés ensemble, à quelle température doivent-ils être cuits ? La recette doit également décrire le résultat escompté : à quoi le plat doit-il ressembler, quelle goût doit-il 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 avec les ingrédients d'une recette mixés ensemble, 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), fournissons, à vous utilisant Tails, plusieurs moyens de vérifier si cette image ISO est bien celle que vous vouliez télécharger, soit avec le module complémentaire Firefox qui fait une vérification automatique pour vous, soit en utilisant notre signature OpenPGP. Chacune de ces méthodes de vérification vous dit simplement que l'image ISO est celle que vous vouliez télécharger : que le plat que vous avez est effectivement le plat que vous avez commandé, mais pas si il a été empoisonné ou échangé par un serveur malveillant (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 pourrait elle avoir pénétré dans la cuisine de nuit et empoisonné les ingrédients et réglé le four 50 degrés plus haut que ce qu'il affiche ? En d'autres termes, une entité malicieuse 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 processus de cuisson pour une même recette est exactement répétable.

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 parties à 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 d'une personne compétente pour assembler 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 également les mises à jour incrémentales. 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 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 parle de comment nous l'avons fait.

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

Aidez-nous à rendre Tails meilleur

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

Envie de donner un coup de main pour faire que Tails cuisine à l'avenir des gâteaux encore meilleurs ?

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 :