Reproduzierbare Tails-Builds

Wir haben den Mozilla Open Source Support Award erhalten, um Tails ISO-Images reproduzierbar erstellen zu können. Dieses Projekt stand auf unserer Roadmap für 2017 und mit der Veröffentlichung von Tails 3.3 sind wir stolz, eines der weltweit ersten reproduzierbaren ISO-Images eines Linux-Betriebssystems zu präsentieren.

Vom Quellcode zum Binärcode

Wenn wir Software schreiben, tun wir dies mit Programmiersprachen, die von Menschen gelesen und verstanden werden können. Dies wird als Quellcode bezeichnet. Man kann sich den Quellcode wie ein sehr präzises Rezept vorstellen. Ein solches Rezept beschreibt ein genaues Verfahren: Welche Zutaten und wie viel von jeder Zutat benötigt man? Wie sollten sie gemischt werden und bei welcher Temperatur sollten sie gekocht oder gebacken werden? Das Rezept beschreibt sogar das erwartete Ergebnis: wie das Gericht aussehen und schmecken sollte.

Wenn wir ein Tails-ISO-Image erstellen, werden unser Quellcode und die Debian-Pakete, die wir einfügen, zu einem binären ISO-Image zusammengesetzt, ähnlich wie wenn die Zutaten eines Rezepts miteinander vermischt werden, um das Gericht zu erhalten. Die Mengen und Zutaten dieses Gerichts können nicht einfach zurückverfolgt werden. Das Ergebnis unseres Kochprozesses ist ein Tails-ISO-Image, das die Benutzer herunterladen und auf einen USB-Stick installieren.

Wir, die Köche und Helfer in der Küche (Tails-Entwickler und -Mitwirkende), stellen Ihnen, unseren Nutzern, mehrere Möglichkeiten zur Verfügung, um zu überprüfen, dass dieses ISO-Image tatsächlich das ist, das wir möchten, dass Sie herunterladen. Dies können Sie entweder mit unserem Firefox-Add-On, das diese Überprüfung automatisch für Sie durchführt, oder durch die Verwendung unserer OpenPGP-Signatur tun. Beide Überprüfungsmethoden bestätigen einfach, dass das ISO-Image das ist, das wir möchten, dass Sie herunterladen: Dass das Gericht, das Sie erhalten, tatsächlich das ist, das Sie bestellt haben, und nicht ein Gericht, das vergiftet oder von einem bösen Kellner (wie einem Download-Spiegel) ausgetauscht wurde.

Dennoch ist es selbst mit so ausgeklügelten Verifizierungsmethoden unmöglich, das Gericht auf das Rezept zurückzuverfolgen: Enthält das Gericht nur die Zutaten, die es enthalten soll? Oder könnte unbefugtes Personal in der Nacht in die Küche eingebrochen sein, die Zutaten vergiftet und den Ofen um 50 Grad höher eingestellt haben als angezeigt? Mit anderen Worten, könnte eine böswillige Entität unsere Build-Maschinen kompromittiert haben? Genau das hilft bei reproduzierbaren Builds zu überprüfen und zu schützen.

Was ist ein reproduzierbarer Build?

Reproduzierbare Builds sind eine Reihe von Praktiken in der Softwareentwicklung, die einen überprüfbaren Weg vom für Menschen lesbaren Quellcode zum binären Code schaffen, der von Computern verwendet wird. (zitiert von https://reproducible-builds.org/)

Mit anderen Worten, mit reproduzierbaren Builds ist jeder Kochprozess des gleichen Rezepts genau wiederholbar.

Bei Tails haben wir ein Jahr lang daran gearbeitet, ein solches Set von Praktiken umzusetzen. Dadurch ist es nun möglich, ISO-Abbilder, die von verschiedenen Parteien aus dem gleichen Quellcode und den gleichen Debian-Paketen erstellt wurden, zu vergleichen und sicherzustellen, dass sie alle genau dasselbe ISO-Abbild ergeben.

Oder um unser Kochmetapher erneut zu verwenden: Einige von uns werden das Gericht zubereiten, vergleichen, dass wir alle dasselbe Gericht gekocht haben, und erst wenn wir uns sicher sind, werden wir es Ihnen servieren.

Wir können somit alle zuversichtlich sein, dass kein defekter Ofen schadhafter Code oder Fehler eingeführt hat: Andernfalls würden wir es bemerken, bevor wir das Essen ausliefern.

Was bedeutet das für Sie als Nutzer?

This does not change anything in the way you download and install Tails, and you don't have to make additional verifications. It simply helps trust that the Tails ISO image that we distribute is indeed coming from the source code and Debian packages it is meant to be made of. With reproducible Tails, it only takes one knowledgeable person to build Tails and compare with the ISO image the Tails project distributes to uncover some kinds of backdoors.

Und übrigens, nicht nur unsere ISO-Images sind jetzt reproduzierbar, sondern auch unsere inkrementellen Upgrades. Und Sie profitieren von dieser Verbesserung, ohne es überhaupt zu bemerken :)

Thank you

Neben Mozillas Open-Source-Unterstützung und der Reproducible Builds-Community, die uns dort, wo wir dringend Hilfe benötigten, entscheidend unterstützt hat, möchten wir auch allen Mitgliedern unserer Community danken, die uns bei der Testung dieses Prozesses geholfen haben. Ihre Unterstützung wird sehr geschätzt!

Technische Implementierung

Wenn Sie an den technischen Details unserer Implementierung interessiert sind, laden wir Sie ein, unseren Bericht an die Reproducible Builds-Community zu lesen, in dem wir erläutern, wie wir es gemacht haben.

We've also published technical instructions to verify one's own build.

Help us make Tails even better

Tails is a self organized free software project. We depend on partnerships, grants and most importantly on donations by individuals like you.

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

Bekannte Probleme

Any reproducible build process is reproducible… until proven otherwise. In our case last-minute issues were discovered and should be fixed in the next Tails release: