Eine Vertrauensfrage

Dein Knoten funkt frei – mit einer Software von Freifunk Paderborn, der sogenannten Firmware. Sie ist das Betriebssystem Deines Freifunk-Knotens.
Jeder normale WLAN-Router besitzt eine Firmware, in der Regel wird diese durch den Hersteller oder Deinen Internetanbieter bereitgestellt. Für Freifunk eignet sich diese nicht, weshalb wir eine eigene Firmware verwenden.

Im Gegensatz zur Hersteller- oder ISP-Firmware ist die Freifunk Firmware jedoch Open Source, d.h. die Funktionsweise und alle enthaltenen Programme sind in Ihrem Quelltext öffentlich einsehbar. Dadurch lässt sich von Jedem überprüfen, dass die Firmware keine (versteckten) Funktionen oder Hintertüren beinhaltet, die dem Knotenbetreiber, den Nutzern oder Dritten schaden können.

Die Firmware, welche Du auf einem Router installieren kannst, wird jedoch nicht in Form des lesbaren Quelltextes, sondern als Binärcode bereitgestellt. Das gilt natürlich auch für alle Updates, die wir ab und an bereitstellen. Doch wie kannst Du dabei sicher sein, dass von den Entwicklern keine schädliche Funktionen oder Einstellungen in die Firmware eingebaut wurden? Im Folgenden beschreiben wir die Absicherung eines automatischen Firmware-Updates, und weiter unten natürlich auch, wie Du die Firmware selbst überprüfen kannst (z.B. falls Du komplett neu installierst).

Wir verwenden ein mehrstufiges Sicherheits-Konzept: Die Aktualisierung der Firmware auf Deinem Knoten erfolgt mittels des „Auto-Updaters“. Dieses in die Firmware integrierte Programm arbeitet ähnlich wie die Update-Funktion an PC, Android-Telefon oder am iPhone: Von Zeit zu Zeit schaut der Auto-Updater auf von uns zentral betriebenen Servern nach, ob dort eine neue Firmware (ein Update) angeboten wird. Ist dies der Fall, wird das Update installiert und Dein Knoten ist auf einem aktuellen Stand. Der Auto-Updater installiert jedoch nicht blindlings jedes Update das er vorfindet. Die Firmware wird von uns digital signiert – das bedeutet bei uns konkret, dass mindestens 3 von 5 Personen ein Update „unterschreiben“ bzw. freigeben müssen bevor ein Knoten es akzeptiert. So verhindern wir, dass ein einzelner Entwickler „durchdreht“ beliebige Änderungen durchführen kann.

Wie können sich nun aber die Unterschreiber sicher sein, dass sie auch das korrekte Update unterschreiben? Hier kommen die sogenannten „Trusted Builds“ zum Einsatz: jeder Entwickler baut die Firmware auf seinem eigenen Rechner zusammen und prüft, ob das Resultat des Firmware-Erstellers mit den Versionen der anderen Entwickler übereinstimmt. Zusätzlich liest jeder Unterschreiber die in der Software-Verwaltung verzeichneten Änderungen gegen.

Du möchest das einmal selbst machen? Nur zu! Der Quelltext zu unserer Software findest Du unter https://git.c3pb.de/freifunk-pb/firmware. Für die Installation benötigst Du ein Linux-System mit einigen wenigen Standard-Programmen. Auf dem Linux-System rufst Du das Skript „build-version.sh“ in dem Verzeichnis auf, in das Du das GIT-Repository gecloned hast. Das „build-version.sh“ Skript wird Dir dann dort die Firmware für Dich zusammenbauen (das wird ungefähr 1 bis 2 Stunden dauern). Mit „check-public.sh“ kannst Du dann überprüfen (lassen), ob Dein Ergebnis mit der von uns veröffentlichten Version übereinstimmt.

Und jetzt ganz konkret? Für ein aktuelles Ubuntu oder Linux Mint lauten die Befehle:

sudo apt-get install git docker.io # Software zum Bauen
sudo apt-get install git p7zip-full binwalk diffutils squashfs-tools # Software zum Überprüfen
git clone https://git.c3pb.de/freifunk-pb/firmware.git
./build-version.sh 0.6.1_stable
# warten, der Build-Vorgang dauert je nach Leistung des Rechners 1 bis 2 Stunden
./check-public.sh
# auch dieser Vorgang dauert ein wenig und sollte im Anschluss "OK" ausgeben

Der letzte Schritt funktioniert leider aktuell mit der beschriebenen Code-Zeile noch nicht, sollte aber in den nächsten Tagen auch vollautomatisch funktionieren. Wir wollten diesen Blogpost ursprünglich erst publizieren, wenn auch dieser Schritt fertig ist. Der Anlass diesen Beitrag vorzeitig zu veröffentlichen ist, dass in einzelnen Freifunk Communities in NRW Firmware veröffentlicht wurde, bei der sich die Betreiber administrative Rechte auf jedem Knoten gegeben haben. Dies widerspricht unserer Auffassung eines unabhängigen, dezentralen Netzes sowie verantwortungsvoller Softwareentwicklung und dem Umgang mit der Privatshäre anderer Menschen an mehreren, fundamentalen Punkten und wir möchten uns davon hiermit distanzieren! Statt hier nur eine Abgrenzung zu veröffentlichen und (weiterhin) zu versichern, dass wir so etwas nicht tun, möchten wir Euch unser Vorgehen transparent machen und Euch direkt die Möglichkeit geben unsere Aussage(n) selbst zu kontrollieren.

Für Freifunk Paderborn,
Helge Jung, Mattheus Happe, Maximilian Wilhelm, Sebastian Lechte, Stefan Klöpping

P.S. Es folgt in Kürze noch ein Beitrag zu den technischen Details.