ECDSA Util

Aus Freifunk Flensburg
Wechseln zu: Navigation, Suche

In diesem Artikel wird die Kompilierung und Installation von ECDSA-Utils behandelt. Wie immer gehen wir von einem Debian-basierten System aus. Eine Installation der Utils und das signieren ist aber ebenso unter Mac OS X möglich. Die ECDSA-Utils werden bei uns unter anderem zum Signieren der Freifunk-Firmware Gluon verwendet, da der Autoupdater nur bei einer gewissen Anzahl an gültigen Signaturen eine neue Firmware-Version lädt.

Benötigte Pakete[Bearbeiten]

Da wir die ECDSA-Utils kompilieren müssen benötigen wir ein paar Pakete, welche man über einen Paketmanager installieren kann:

  • C-Compiler [cmake]
  • Git client [git]
  • Kompiler [make]
  • [pkg-config]

Unter Debian und auf Debian basierenden Systemen installieren wir diese via:

sudo apt-get install cmake git make pkg-config


Mac OS X bringt von Hause aus keinen Paketmanager mit sich. Jedoch existieren mehrere OpenSource Manager. In dieser Anleitung verwenden wir Homebrew. Zur Installation von Homebrew fügen wir diesen Code in ein Terminal und bestätigen mit Enter:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Das Script wird euch Schritt für Schritt durch die Installation führen. Gegebenenfalls werdet ihr vom System aufgefordert die Command Line Tools zu installieren. Bestätigt dies und startet das Script von Homebrew erneut. Nach Abschluss der Installation installieren wir die benötigten Pakete mit:

brew install cmake pkg-config

Das Paket 'make' ist unter OS X standardmässig installiert. Das Paket 'git' ist ab OS X 10.9 bereits installiert. Auf älteren Systemen kann es aber ebenfalls über Homebrew nachgeladen werden.


Auf allen Systemen wird des weiteren noch die Bibliothek "libuecc" benötigt. Auch diese müssen wir kompilieren und installieren.

Kompilieren von libuecc[Bearbeiten]

Zuerst einmal klonen wir hierzu das nötige Git-Repository in einen beliebigen Ordner.

git clone http://git.universe-factory.net/libuecc

Nun betreten wir diesen Ordner und führen den folgenden Befehl aus:

cmake ./

Und Kompilieren abschließend mit:

make


Jetzt ist Bibliothek zwar kompiliert, aber noch nicht Installiert. Unter Linux geschieht dies mit:

sudo make install
sudo ldconfig

Unter OS X genügt:

sudo make install

Kompilieren und Installieren von ECDSA-Utils[Bearbeiten]

Nun sind alle nötigen Daten vorhanden um mit dem kompilieren zu beginnen. Unter Debian und anderen Linux Systemen klonen wir hierzu das Git-Repository in einen beliebigen Ordner:

git clone https://github.com/tcatm/ecdsautils.git


Unter OS X führt dieses Paket jedoch zu fatalen Fehlern beim kompilieren. Deswegen klonen wir hier die angepassten ecdsautils-osx:

git clone https://github.com/roikiermedia/ecdsautils-osx.git


Nach dem Klonen wechseln wir in das neue Verzeichnis mit:

cd ecdsautils

unter Linux, Dort führen wir den Befehl

git checkout tags/v0.3.2

aus Wer das nicht tut lädt die Entwicklerversion die geänderte Syntax hat!!!

Unter OS X

cd ecdsautil-osx


Wir fahren auf allen Systemen fort mit:

mkdir build
cd build/

Und wie bei der Bibliothek oben folgt nun:

cmake ../
make
sudo make install

Nun wurden die ECDSA-Utils erfolgreich installiert. Die nun zur Verfügung stehenden Programme werden in den folgenden Abschnitten genannt und erklärt.

Programme und Optionen der ECDSA-Utils[Bearbeiten]

Durch die Installation von ECDSA-Utils stehen uns nun folgende Programme zur Verfügung:

  • ecdsakeygen
  • ecdsasign
  • ecdsaverify

Mit diesen Programmen können wir nun ein Schlüsselpaar erstellen, Dateien signieren und die Signaturen prüfen.

ecdsakeygen[Bearbeiten]

Dieses ist der Keygen um ein Schlüsselpaar zu generieren. Folgende Optionen sind möglich:

  • -s generiert einen Privat-Key und schreibt ihn nach stdout
  • -p generiert einen Public-Key aus dem Privat-Key
  • -h Zeigt die Kommandozeilen-Hilfe an


Da der Privat-Key nach stdout geschrieben wird führen wir folgenden Befehl aus, um einen Privat-Key zu generieren:

ecdsakeygen -s > secret

Nun wurde ein Privat-Key generiert und in die Datei "secret" geschrieben.

Nun können wir mit folgendem Befehl unseren Public-Key generieren:

ecdsakeygen -p < secret

Dieses Keypaar sollte sicher und nicht für andere zugänglich gespeichert werden.

ecdsasign[Bearbeiten]

Mit diesem Tool ist es möglich Dateien mit seinem Privat-Key zu signieren um ihr Echtheit zu bestätigen. Dieses Tool kommt unter anderem bei unserer Freifunk-Firmware Gluon zum Einsatz. Die für die Firmware Verantwortlichen signieren die kompilierten Images, damit die automatische Updatefunktion der Router erkennen kann, ob das Update auch sicher ist. Zum signieren einer Datei verwendet man folgenden Befehl:

ecdsasign Dateiname < secret

Die Ausgabe des Befehls ist die Signatur der Datei.

ecdsaverify[Bearbeiten]

normale Verifizierung[Bearbeiten]

Mit diesem Tool kann man signierte Dateien mittels des Public-Keys der Person, welche die Datei signiert hat, verifizieren. Hierzu verwendet man folgenden Befehl:

ecdsaverify -s Signatur -p Public-Key Dateiname

Normalerweise bekommt man als Ausgabe nur eine 1 oder eine 0 zurück. Gibt das Programm eine 0 aus ist die Signatur in Ordnung, gibt es eine 1 aus so stimmt die Signatur nicht mit dem Public-Key überein.

n-aus-m Verifizierung[Bearbeiten]

Es ist auch möglich eine n-aus-m Überprüfung zu machen. Zuerst einmal gibt es die Möglichkeit der 1-aus-m Überprüfung. In diesem Szenario gibt es einen Personenkreis von m Leuten, welche alle ihren eigenen Privat-Key haben und berechtigt sind eine Datei zu signieren. Mit dem folgenden Befehl kann überprüft werden, ob mindestens eine Person die Datei signiert hat.

ecdsaverify -s Signatur1 -s SignaturX -p Public-Key1 -p Public-KeyX Dateiname

mit der Option -n X kann man die Mindestanzahl an gültigen Signaturen einbringen. Für 3 gültige Signaturen zum Beispiel -n 3 und so weiter.