Inhaltsverzeichnis

G&D StarSign Kryptographie USB Token S für ElsterAuthenticator unter Arch Linux

Bild: G&D StarSign Crypto USB Token S

In diesem Kapitel befassen wir uns eingehend mit dem Sicherheitsstick für ELSTER unter Arch Linux. Weitere Informationen zu dem Krypto-USB-Device findet man unter der Technikseite oder im Chipkartenleser-Shop von REINER SCT. Schliesslich wollen wir nun mal nicht, dass unser Client-Zertifikat für den Zugang zum ELSTER Onlineportal des Online-Finanzamt nicht auf mehreren Client-Rechnern herum geistert, sondern nur der- bzw. diejenige Zugriff bekommt, die Zugriff auf beide Faktoren hat, also dem Kryptostick mit dem darauf befindlichen Zertifikat und dem Zugangspassort für das entsperren des USB-Sticks!

Die Highlights auf einem Blick.
:OK: Authentisierung und Signatur erfolgt auf dem Kryptochip. Dieser Prozessor stellt einen kompletten Einchip-Rechner (Mikroprozessor, RAM, ROM, EEPROM, Betriebssystem) mit aufwändigen, fest verdrahteten und programmierbaren Sicherheitsfunktionen dar. Sicherheitsrelevante Daten lassen sich nicht direkt auslesen, da sie nur dem Prozessor zur Verfügung stehen.
:OK: Die für Mein ELSTER benötigten Schlüssel werden durch eine PIN geschützt.
Quelle: https://www.chipkartenleser-shop.de/elsterstick/sicherheitsstick-fuer-elster/sicherheitsstick-fuer-elster-s-3072

In dem folgenden Beitrag gehen wir auf die Verwendung unter Arch Linux ein.

Informationen von Hard- und Software

Hardwareinformationen

Informationen über den Stick können wir z.B. mit Hilfe des Befehls usb-devices aus dem Arch Linux Core-Paket usbutils dem System abverlangen.

 # usb-devices
T:  Bus=02 Lev=01 Prnt=07 Port=02 Cnt=01 Dev#=  6 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1059 ProdID=0019 Rev=01.00
S:  Manufacturer=Giesecke & Devrient GmbH
S:  Product=StarSign CUT S
S:  SerialNumber=03211108045656
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=60mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=0b(scard) Sub=00 Prot=00 Driver=usbfs
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   4 Ivl=32ms

Mit dem Befehl lshw aus dem gleichnamigen Arch Linux Extra-Paket lshw können wir uns ebenso anzeigen lassen, ob der Stick angesteckt und erkannt wird. Da der USB-Stick unter die Klasse generic fällt suchen wir gezielt nach diesen Geräte-Typus.

 # lshw -short -C generic
H/W path       Device    Class          Description
===================================================
/0/100/14/0/3            generic        StarSign CUT S
/0/100/14/0/6            generic        VFS 5011 fingerprint sensor
/0/100/1f/3              generic        PnP device LEN0071
/0/100/1f/4              generic        PnP device LEN200e
/0/100/1f/5              generic        PnP device SMO1200
/0/100/1f.6              generic        Wildcat Point-LP Thermal Management Controller

Mit Hilfe des Befehls lsusb aus dem Arch linux Core-Paket usbutils können wir auch die Produkt- und Hersteller-Identifikationsnummer des Krypto-Sticks ermitteln.

 # lsusb | grep StarSign
Bus 002 Device 006: ID 1059:0019 Giesecke & Devrient GmbH StarSign CUT S

Im Journal wird uns beim Anstecken des Sticks dies entsprechend protokolliert:

 # journalctl -f
Jun 20 17:56:43 pml010074 kernel: usb 2-3: new full-speed USB device number 8 using xhci_hcd
Jun 20 17:56:43 pml010074 kernel: usb 2-3: New USB device found, idVendor=1059, idProduct=0019, bcdDevice= 1.00
Jun 20 17:56:43 pml010074 kernel: usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 20 17:56:43 pml010074 kernel: usb 2-3: Product: StarSign CUT S
Jun 20 17:56:43 pml010074 kernel: usb 2-3: Manufacturer: Giesecke & Devrient GmbH
Jun 20 17:56:43 pml010074 kernel: usb 2-3: SerialNumber: 03211108045656
Jun 20 17:56:43 pml010074 mtp-probe[4106]: checking bus 2, device 8: "/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3"
Jun 20 17:56:43 pml010074 mtp-probe[4106]: bus: 2, device: 8 was not an MTP device
Jun 20 17:56:43 pml010074 systemd[990]: Reached target Smart Card.
Jun 20 17:56:43 pml010074 systemd[1]: Reached target Smart Card.
Jun 20 17:56:43 pml010074 mtp-probe[4108]: checking bus 2, device 8: "/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3"
Jun 20 17:56:43 pml010074 mtp-probe[4108]: bus: 2, device: 8 was not an MTP device

ccid - Ein generischer Treiber für USB-Chip-/Smartcard-Schnittstellengeräte

Für den Betrieb unseres Sicherheitsstick für ELSTER ist es zwingend notwenig den ccid zu installieren, da ohne diesen nicht auf den Stick zugegriffen werden kann! Dieses Paket installieren wir uns nun mit Hilfe des Paketmanagers pacman.

 # pacman -Sy ccid

Bei Bedarf können wir uns hier gezielt informieren woher das Paket kommt und was es beinhaltet.

 # pacman -Qil ccid

Paketinhalt und -info des Pakets ccid

Wichtig:

Zur Aktivierung der im Paket enthlatenen Änderungen führen wir nun noch einen Neustart unseres Rechners durch:

 # systemctl reboot

pcscd - PC/SC Smart Card Daemon

Für den Zugriff auf unseren Sicherheitsstick für ELSTER benötigen wir noch den PC/SC Smart Card Daemon, den später der ElsterAuthenticator zwingend für die Kommunikation mit dem Stick braucht. Der Daemon ist im Arch Linux Extra-Paket pcsclite enthalten. Dieses Paket installieren wir uns nun mit Hilfe des Paketmanagers pacman.

 # pacman -Sy pcsclite

Bei Bedarf können wir uns hier gezielt informieren woher das Paket kommt und was es beinhaltet.

 # pacman -Qil pcsclite

Paketinhalt und -info des Pakets libnitrokey

Der ElsterAuthenticator den wir nachfolgend noch installieren werden, verlangt zwingend die native libpcsclite.so.1 C/C++ Bibliothek im Verzeichnis /usr/lib/x86_64-linux-gnu. Die fragliche Bibliothek wird unter Arch Linux jedoch im Standard-Verzeichnis abgelegt. Mit folgendem Befehl können wir ermitteln wie dieser Standard-Pfad lautet.

 # pacman -Ql pcsclite | grep libpcsclite.so.1
pcsclite /usr/lib/libpcsclite.so.1

Bevor wir einen symbolischen Link anlegen können, legen wir noch das vom ElsterAuthenticator gewünschte Verzeichnis an.

 # mkdir /usr/lib/x86_64-linux-gnu

Anschliessend verlinken wir die betreffende Standardbibliothek.

 # ln -s /usr/lib/libpcsclite.so.1 /usr/lib/x86_64-linux-gnu/libpcsclite.so.1

Zu guter Letzt sorgen wir noch dafür das der PCSC Daemon beim Booten gestartet wird und dass dieser auch läuft.

 # systemctl enable pcscd.socket
 # systemctl start pcscd.socket

Ob der Daemon läuft können wir bei Bedarf wie folgt abfragen:

 # systemctl status pcscd.socket

 pcscd.socket - PC/SC Smart Card Daemon Activation Socket
     Loaded: loaded (/usr/lib/systemd/system/pcscd.socket; disabled; preset: disabled)
   Active:active (running) since Thu 2024-06-20 17:18:36 CEST; 1h 16min ago
 Invocation: da5071af9c50414d936df871d7ffcfaa
   Triggers: ● pcscd.service
     Listen: /run/pcscd/pcscd.comm (Stream)
     CGroup: /system.slice/pcscd.socket

Jun 20 17:18:36 pml010074 systemd[1]: Listening on PC/SC Smart Card Daemon Activation Socket.

ElsterAuthenticator

Ermittlung der aktuellen Version via WEB-Seite

Für die Kommunikation mit unserem Sicherheitsstick für ELSTER benötigen wir nun noch den ElsterAuthenticator. Auf der Infoseite finden wir unter dem Abschnitt Download die Schaltfläche [ Lizenzvertrag anzeigen ] die wir nun anklicke um zu dem Lizenzvertrag ElsterAuthenticator zu gelangen. Ganz unten auf der Seite klicken wir nun auf die Schaltfläche [ Lizenzvertrag akzeptieren ] um auf die eigentliche Downloadseite zu gelangen: https://www.elster.de/eportal/infoseite/download_elsterauthenticator

Bild: Lizenzvertragsseite des ElsterAuthenticator

Auf dieser Seite sehen wir nun dass die aktuelle Version des https://download.elster.de/download/authenticator/ElsterAuthenticator_unix_59_0_0_x64.sh des Betriebssystem Linux 64Bit die Version 601) ist.

Bild: Downloadseite des ElsterAuthenticator

Diese Nummer merken wir uns nun und fügen diese in den nachfolgenden wget-Befehl zum Holen der Software ein, in unserem Fall also die 60 Stand Anfang September 2024.

 $ wget https://download.elster.de/download/authenticator/ElsterAuthenticator_unix_60_0_0_x64.sh

Ermittlung der aktuellen Version und SHA256-Prüfsumme

Tip:

Alternativ können wir uns aber über nachfolgenden Befehl nicht nur die aktuelle Versions-Nummer sondern auch die SHA256 Prüfsumme beziehen, mit der wir die Integrität der heruntergeladenen Datei prüfen können:

$ curl -s http://download.elster.de/download/authenticator/Version.txt | jq '.os[] | select(.osName=="linux64")'
{
  "bitness": 64,
  "checksum": "76b87916444fd09c621a7b96fcb74e472c87395095dd92c131cdc7152735f46b",
  "osName": "linux64",
  "url": "https://download.elster.de/download/authenticator/ElsterAuthenticator_unix_60_0_0_x64.sh"
}

Wir haben nun also vorliegen:

  1. SHA-Prüfsumme : 76b87916444fd09c621a7b96fcb74e472c87395095dd92c131cdc7152735f46b

Wir holen uns nun also das betreffende Installationspaket:

 $ wget https://download.elster.de/download/authenticator/ElsterAuthenticator_unix_60_0_0_x64.sh

Für den Integritätscheck generieren wir uns die SHA256-Checksumme:

 $ sha256sum ElsterAuthenticator_unix_60_0_0_x64.sh
76b87916444fd09c621a7b96fcb74e472c87395095dd92c131cdc7152735f46b  ElsterAuthenticator_unix_60_0_0_x64.sh

Diesen ermittelten Wert:
76b87916444fd09c621a7b96fcb74e472c87395095dd92c131cdc7152735f46b
vergleichen wir nun mit dem Wert aus dem json-File
76b87916444fd09c621a7b96fcb74e472c87395095dd92c131cdc7152735f46b.

Da beide Werte gleich sind, können wir davon ausgehen, dass die heruntergeladene Datei valide, also nicht kompromittiert wurde!

Mit dem Befehl file sehen wir uns kurz dennoch mal an, was wir nun im ~/home-Verzeichnis unseres aktuellen Nutzers haben.

 $ file ElsterAuthenticator_unix_60_0_0_x64.sh 
ElsterAuthenticator_unix_60_0_0_x64.sh: POSIX shell script executable (binary data)

Nun können wir die Installation des ElsterAuthenticator starten.

 $ sh ./ElsterAuthenticator_unix_60_0_0_x64.sh 
Unpacking JRE ...
Starting Installer ...

Wir befinden uns nun im Setup Assistenten des ElsterAuthenticators.

Bild: Setup Assistent des ElsterAuthenticator

Hier klicken wir auf die Schaltfläche [ Weiter > ]. Abermals werden uns die Lizenzbedingungen angezeigt, die wir nun anwählen und anschliessend erneut die Schaltfläche [ Weiter > ] anklicken.

Bild: Lizenzbedinungungen des ElsterAuthenticator

Da wir die Software nur für unseren aktuellen angemeldeten Benutzer installieren werden, da dies ja auf seinem bzw. ihrem Gerät das alleinige Nutzerkonto ist, wählen wir in dem nun folgenden Fenster die zugehörige Option aus und klicken dann auf die Schaltfläche [ Weiter > ].

Bild: Installation des ElsterAuthenticator

Bei der Definition des Installationsverzeichnisses machen wir es uns einfach und bestätigen den vorgeschlagenen Pfad und klicken auch hier zur Bestätigung auf die Schaltfläche [ Weiter > ].

Bild: Installation des ElsterAuthenticator

Nun haben wir es fast geschafft, wir bestätigen jetzt nur noch, dass bei der Installation auf unserem Desktop ein Symbol zum Starten angelegt werden soll. Auch hier kicken wir nun auf die Schaltfläche [ Weiter > ] und starten somit den eigentlichen Installationsvorgang.

Bild: Installation des ElsterAuthenticator

Am Ende des Installationsvorgangs haben wir nun noch die Möglichkeit die Änderungshistorie in Form des mitgelieferten PDF-Dokumentes uns anzeigen zu lassen. Egal wie die Entscheidung ausfallen mag, zu guter Letzt klicken wir zum Verlassen des Setup-Assistenten auf die Schaltfläche [ Fertigstellen ].

Bild: Installation des ElsterAuthenticator

Anwendung Elster Authenticator

Benutzerhandbuch

Nun können wir unseren Stick einrichten und verwenden. Nähere Hinweise zum Elster Authenticator finden sich in den Häufig gestellte Fragen zum Sicherheitsstick sowie im ElsterAuthenticator-Benutzerhandbuch in der bei der Installation gültigen Version (!) welches im Installationsverzeichnis und dort im Unterverzeichnis doc befindet.

 $ ll ElsterAuthenticator/doc/ElsterAuthenticator-Benutzerhandbuch.pdf 
-rw-r--r-- 1 django django 1351425 Apr 23 14:53 ElsterAuthenticator/doc/ElsterAuthenticator-Benutzerhandbuch.pdf

Bild: Nemo-Dateimanager mit Lokation des Benutzerhandbuchs des ElsterAuthenticators

Anmelden mit dem ElsterAuthenticator und dem Sicherheitsstick

Wollen wir uns nun am ELSTER Online Portal anmelden, so starten wir einfach den Browser unserer Wahl und klicken auf dem Desktop das Start-Icon des ElsterAuthenticator an. Hier klicken wir nun auf den Menüpunkt Bei Mein ELSTER einloggen.

Bild: ElsterAuthenticator

Im Browser öffnet sich nun die Anmeldeseite von ELSTER Ihr Online-Finanzamt. Hier klicken wir nun auf die Schaltfläche [ Weiter mit ElsterAuthenticator > ]

Bild: Browser mit geöffnetem ELSTER Portal

Im Fenster des ElsterAuthenticator geben wir nun unser geheimes Passwort für die Entsperrung unseres Sicherheitsstick für ELSTER ein.

Bild: Desktop mit geöffnetem ELSTER Portal

Zum Abschluss klicken auf die Schaltfläche [ Login ] und wir befinden uns in unserem Elser Online Konto.

Bild: Browser mit geöffnetem ELSTER Portal

Links

1)
Stand: 05.09.2024