Identisches Build-System

Die wichtigste Grundvoraussetzung für reproduzierbare Builds liegt in der akribischen Aufzeichnung des Build-Systems. Es muss beim initialen Build genaue Informationen über die verwendeten Werkzeuge im Binärpaket selbst ablegen. Dazu schreibt es die entsprechenden Daten in eine neue Datei namens .buildinfo innerhalb der Paketstruktur. Bei darauffolgenden Builds liest das Perl-Skript Srebuild [6] diese Daten wieder aus und stellt sicher, dass ein identisches Build-System von Snapshots.org bezogen wird.

Ohne die Informationen über das Build-System lässt sich ein Paket nicht verlässlich nachbauen. Selbst eine leicht abgewandelte Bauanleitung (Compiler-Flag) führt auf Bitebene zu einem anderen Ergebnis. Hierbei kommt es zu dem Problem, dass durch die erweiterte Paketstruktur mit .buildinfo rund 100 000 zusätzliche Dateien pro Debian-Suite hinzukommen. Dadurch steigt die Menge an Code um bis zu 50 Prozent. Um die Spiegelserver zu schonen, sollen diese Zusatzinformationen daher nur auf den Debian-Servern direkt liegen.

Neue Werkzeuge

Technische Probleme bei der Reproduzierbarkeit entstehen zu 80 Prozent aufgrund neuer Zeitstempel sowie anderer Zeitzonen und Lokalisierungen.

Viele Build-Werkzeuge zeichnen Daten wie die Zeit und das Datum des Builds in nichtdeterministischer Form auf. Um das zu korrigieren, gibt es die Bibliothek strip-nondeterminism [7]. Sie entfernt im Vorfeld der Builds Informationen, die zu verfälschten Ergebnissen führen könnten (Abbildung 5).

Abbildung 5: Werkzeugkoffer: Die wichtigsten Tools im Rahmen des Reproducible-Builds-Projekts.

Um diese durch deterministische Werte zu ersetzen, wurde die Source_Date_Epoch [8] ersonnen. Dieser Zeitstempel definiert in einem String die Sekunden seit der letzten Modifikation des Quelltexts nach dem 1. Januar 1970, 0 Uhr UTC, also dem Start der Unix-Zeit.

Allerdings lassen sich nicht alle Probleme automatisiert lösen, sodass insgesamt noch viel Handarbeit ansteht. Zu den hier verwendeten Praktiken findet sich eine ausführliche Dokumentation [9]. Zum weiteren Handwerkszeug bei der Suche danach, warum sich ein Paket nicht reproduzierbar erstellen lässt, gehört an prominenter Stelle auch Diffoscope [10]. Mit diesem Werkzeug lassen sich Dateien oder Ordner in der Tiefe vergleichen (Abbildung 6). Dazu entpackt das Programm Archive und transformiert Binärpakete in von Menschen lesbare Formate.

Abbildung 6: Diffoscope erlaubt tiefgehende Vergleiche zur Fehlerfindung. Hier untersucht es zwei Firefox-Extensions.

Reproduzierbare Builds stellen einen wichtigen Schritt auf dem Weg zu jener Art von Sicherheit dar, die wir künftig brauchen, um die Integrität unseres digitalen Daseins zu verbessern. Als Allheilmittel taugen sie aber nicht: Geheimdienste und organisierte Kriminelle verfügen über Mittel, uns manipulierte Software unterzuschieben, gegen die es kaum eine Gegenwehr gibt.

Ein Beispiel dafür liefert die bereits 1974 erstmals beschriebene Trusting-Trust-Attacke [11]: Dabei manipuliert der Angreifer die Binärdatei eines Compilers dergestalt, dass sie sich erst einmal selbst neu kompiliert und der so manipulierte Compiler dann auf kaum erkennbare Weise veränderte Software ausspuckt, die beispielsweise Backdoors oder andere Gemeinheiten enthält.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 02/2018: PAKETE VERWALTEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...
sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 2 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...
Anfänger sucht Ratschläge
Alucard Nosferatu, 18.01.2018 21:56, 3 Antworten
Guten Tag, meine Wenigkeit würde gerne auf einer meiner Festplatten von meinen Feldrechnern e...
Suchprogramm
Heiko Taeuber, 17.01.2018 21:12, 1 Antworten
Hallo liebe Community, keine Ahnung ob dieses Thema hier schon einmal gepostet wurde. Ich hab...
Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 4 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...