G&D StarSign Kryptographie USB Token S für ElsterAuthenticator unter Arch Linux
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.
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.
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
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
60
1) ist.
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:
- 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.
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.
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 > ].
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 > ].
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.
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 ].
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
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.
Im Browser öffnet sich nun die Anmeldeseite von ELSTER Ihr Online-Finanzamt. Hier klicken wir nun auf die Schaltfläche [ Weiter mit ElsterAuthenticator > ]
Im Fenster des ElsterAuthenticator geben wir nun unser geheimes Passwort für die Entsperrung unseres Sicherheitsstick für ELSTER ein.
Zum Abschluss klicken auf die Schaltfläche [ Login ] und wir befinden uns in unserem Elser Online Konto.