Signieren von Manifesten

Aus Freifunk Flensburg
Wechseln zu: Navigation, Suche

Erklärung:[Bearbeiten]

Die Router werden durch Automatische Updates der Firmware gewartet da diese Updates aus dem Internet geladen werden wäre es ein denkbares Szenario das z.b. der Internetanbieter einfach eine manipulierte Firmware mittels Mann-in-der-Mitte-Angriff den Routern anbietet um dann die Router zu manipulieren. Damit so etwas nicht passieren kann sind die Firmware Dateien für die Router mit einem Schutz Mechanismus versehen: Die Firmwares werden mit signierten Checksummen zusammen angeboten die nur von berechtigte Personen erstellt werden können und die die Router dazu nutzen berechtigete Updates zu erkennen.

Damit die Signaturen den Routern bekannt sind muss in der veralteten Routerversion natürlich ein Hinweis hinterlegt sein wie so eine richtige Signatur auszusehen hat. Dies wird dann mittels der Asymetrischen Verschlüsselung gemacht. Das bedeutet das zu jedem Geheimen Schlüssel (SecretKey) auch immer öffentlicher Schlüssel (PublicKey) gehört. Der öffentliche Schlüssel kann dazu genutzt werden eine Nachricht so zu verschlüsseln das nur derjenige der im Besitz des dazu passenden Secret Key ist diese zu lesen. Daher werden die Firmware Images mit einer Prüfsumme (sowas wie ein Fingerabdruck) versehen und diese wiederum muss mit dem sicheren Schlüssel zusammen in eine Datei signiert werden. Die Router sehen dann die Manifest Datei, schaut sich die richtige Prüfsumme an und rechnet nach ob die Prüfsumme und die Signatur mit dem hinterlegten öffentlichen Schlüssel richtig übereinstimmen. Eine einzige falsche Ziffer reicht also aus um das ganze System nicht nutzen zu können und so vor Manipulation zu schützen.

Praktischer Teil[Bearbeiten]

benötigt werden[Bearbeiten]

signieren[Bearbeiten]

 ./sign.sh secretkey manifestdatei 

dies fügt deine signatur unten in der manifest datei an bei meheren signern einfach die signaturen untereinander in die manifestdatei kopieren

Ablauf[Bearbeiten]

  • firmware wird gebaut
  • manifestdatei für die fimware wird erstellt(eine datei mit infos über firmwareversion branch und checksummen der einzelnen images)
  • signer die ihren öffentlichen schlüssel in der site.conf auf den router hinterlegt haben signieren die manifestdatei
  • signaturen werden zusammenkopiert in die manifestdatei
  • manifestdatei wird zusammen mit der firmware in den in der site.conf definierten ort kopiert
  • router chequen periodisch den ort und holen sich das update wenn
    • die version neuer/höher als die installierte ist
    • ausreichend in der site.conf definierte signaturen in der manifest datei stehen


Signaturen aus dem Manifest testen[Bearbeiten]

Um die Signaturen in dem Manifest auf Gültigkeit zu testen gibt es in /gluon/contrib das sigtest.sh script.

sh sigtest.sh öffentlicher_schlüssel_aus_siteconf manifestdatei

und danach

echo $?

Ausgabe:

0-->Signatur in Manifest passt zu öffentlichen Schlüssel aus der site.conf (Router werden bei genügend gültigen Signaturen das Autoupdate annehmen)

1-->Signatur in Manifest passt nicht zu öffentlichem Schlüssel aus der site.conf (Router werden das Autoupdate nicht dürchführen)


troubleshooting[Bearbeiten]

falls jemand bei libuecc/ecdsautils diese fehler triggert:

/bin/sh: 1: Syntax error: Unterminated quoted string src/CMakeFiles/uecc_shared.dir/build.make:54: recipe for target 'src/CMakeFiles/uecc_shared.dir/ec25519.c.o' failed make[2]: *** [src/CMakeFiles/uecc_shared.dir/ec25519.c.o] Error 2 CMakeFiles/Makefile2:77: recipe for target 'src/CMakeFiles/uecc_shared.dir/all' failed make[1]: *** [src/CMakeFiles/uecc_shared.dir/all] Error 2 Makefile:117: recipe for target 'all' failed make: *** [all] Error 2

bzw

CMake Error at /usr/share/cmake-3.0/Modules/TestBigEndian.cmake:51 (message):

 no suitable type found


ist bei mir auf einer sekundären hdd aufgetreten lies sich umgehen indem auf der systemplatte gebaut wurde.