Smart Cards
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt die Verwendung von Smart Cards (auch Chipkarte oder Integrated Circuit Card genannt).
Es gibt sie in verschiedenen Bauformen und mit unterschiedlichen physikalischen Schnittstellen. Allgemein lange bekannt sind z.B. Bankkarten mit Kontaktfeld. Auch Security-Token können Chips für Smart Cards enthalten, wie bspw. der Yubikey 🇬🇧 für OpenPGP und das PIV-Protokoll. Ein neuerer Trend besteht in der Verwendung von kontaktlosen Smart Cards mit NFC-Funktion zum Bezahlen in Supermärkten und von Tickets im öffentlichen Nahverkehr. Smartphones mit NFC-Funktion können sowohl Smart Cards mit NFC-Chips lesen wie auch für andere Kartenleser simulieren.
Solche Karten werden beispielsweise verwendet:
von Universitäten als universelle Studentenausweise: Ein Beispiel ist die Thoska+ in Thüringen, mit der man sich u.a. von zu Hause aus für Prüfungen anmelden oder Immatrikulationsbescheinigungen herunterladen kann.
als LKW-Fahrerkarten
zur Identifizierung bei Bankgeschäften
zum Nachweis der Mitgliedschaft in Krankenkassen, Vereinen und anderen Organisationen oder Berufsständen (z.B. Arztausweis)
zur sicheren Aufbewahrung kryptografischer Schlüssel zum Signieren oder Verschlüsseln elektronischer Dokumente
zur Zutrittskontrolle (Werksausweis) bei Unternehmen und staatlichen Stellen
als Personalausweis
Für diese verschiedenen Einsatzgebiete ist ein für die jeweilige Smart Card geeigneter Kartenleser (Smart Card Reader) erforderlich, ebenso eine Anwendung für die Darstellung der Daten.
Kartenleser¶
Die Geräte benötigen Treibersoftware. Generell benötigt man immer die Basissoftware aus den Paketen libccid 🇬🇧 , pcscd 🇬🇧 und deren Abhängigkeiten, die aber ggf. von individuell weiteren benötigten Geräte automatisch installiert werden; beispielsweise reicht für die Geräte von REINER SCT die Installation des Pakets libifd-cyberjack6 aus.
Installation¶
Im Idealfall reicht die Installation[1] von pcscd:
pcscd (Middleware für den Zugriff auf Chipkarten mit PC/SC (Daemon-Software), aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install pcscd
Dieses Paket installiert die Basissoftware, die bereits einige Standardtreiber für Kartenleser enthält. Bei manchen Geräten benötigt man aber zusätzliche, vom Hersteller bereit gestellte Pakete. Welche Modelle durch welche Pakete unterstützt werden, kann man im Wiki von Debian 🇬🇧 einsehen.
⚓︎ Für einen Kartenleser der Reihe cyberJack von REINER SCT muss installiert werden:
libifd-cyberjack6 (REINER SCT cyberJack USB chipcard reader user space driver, aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install libifd-cyberjack6
Alternativ zum Bezug dieses Pakets aus den offiziellen Paketquellen von Ubuntu kann man es auch (vielleicht in aktuellerer Version) von der Supportseite des Herstellers beziehen. Dieses Paket hängt von der o.g. Basissoftware ab und installiert diese automatisch.
⚓︎ Manche Geräte des Herstellers ACS benötigen:
libacsccid1 (PC/SC driver for ACS USB CCID smart card readers, aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install libacsccid1
Die Basissoftware ist separat zu installieren.
Manche Karten bzw. Anwendungen benötigen:
libchipcard6 (universe; bis 23.10)
libchipcard6t64 (mit libchipcard-data, Bibliothek für den Zugriff auf smartcards, aus universe; ab 24.04)
Befehl zum Installieren der Pakete:
sudo apt-get install libchipcard6 libchipcard6t64
Für Tests kann hilfreich sein:
pcsc-tools (Programme für die Arbeit mit Chipkarten und PC/SC, aus universe)
Befehl zum Installieren der Pakete:
sudo apt-get install pcsc-tools
Bei der Fehlerdiagnose können helfen:
libusb-dev ("userspace USB programming library development files, aus main")
libpcsclite-dev ("Middleware to access a smart card using PC/SC (development files), aus main")
libchipcard-dev ("API for smartcard readers, aus universe")
Befehl zum Installieren der Pakete:
sudo apt-get install libusb-dev libpcsclite-dev libchipcard-dev
Schließlich können auch noch bestimmte Anwendungen weitere Pakete erfordern, z.B.
aqbanking-tools ("Einfache Befehlszeilenwerkzeuge für Homebanking, aus universe")
Befehl zum Installieren der Pakete:
sudo apt-get install aqbanking-tools
Tests¶
Um zu Testen, ob ein per USB angeschlossener Kartenleser überhaupt als Gerät erkannt wird, kann folgender Befehl[2] verwendet werden:
lsusb
Beispielausgabe:
Bus 002 Device 004: ID 046a:002d Cherry GmbH SmartTerminal XX44 Bus 001 Device 006: ID 0c4b:0500 Reiner SCT Kartensysteme GmbH cyberJack RFID standard dual interface smartcard reader
Eine Auflistung der vom System erkannten Kartenleser erhält man von Cardpeek:
cardpeek --version
Beispielausgabe:
This is Linux 6.14.0-37-generic x86_64. Cardpeek path is /home/░░░░░/.cardpeek/ There are 2 readers detected: -> pcsc://Virtual PCD 00 00 -> pcsc://Virtual PCD 00 01
Um zu testen, ob eine eingesteckte Smart Card überhaupt erkannt wird, kann folgender Befehl verwendet werden:
pcsc_scan
Beispielausgabe für eine LKW-Fahrerkarte:
Using reader plug'n play mechanism Scanning present readers... 0: Cherry GmbH SmartTerminal XX44 00 00 Tue Jun 1 13:43:38 2021 Reader 0: Cherry GmbH SmartTerminal XX44 00 00 Event number: 0 Card state: Card inserted, ATR: 3B DB 96 FF C0 10 21 FE 25 80 67 15 04 B4 03 00 09 00 81 05 21 ATR: 3B DB 96 FF C1 10 31 FE 35 80 67 15 0A B4 03 00 09 00 81 05 21 + TS = 3B --> Direct Convention + T0 = DB, Y(1): 1101, Z: 11 (historical bytes) TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU 250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s TC(1) = EF --> Extra guard time: 255 (special value) TD(1) = C0 --> Y(i+1) = 1100, Protocol T = 0 ----- TC(2) = 10 --> Work waiting time: 960 x 16 x (Fi/F) TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 ----- TA(3) = HE --> IFSC: 254 TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5 + Historical bytes: 80 67 15 01 B4 12 00 09 00 81 05 Category indicator byte: 80 (compact TLV data object) Tag: 6, len: 7 (pre-issuing data) Data: 15 01 B4 08 00 09 00 Tag: 8, len: 1 (status indicator) LCS (life card cycle): 05 + TCK = 21 (correct checksum) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B DB 96 FF C0 1A 31 FE 45 34 67 15 0A B4 03 00 09 00 81 05 21 Digital Tachograph Card for Professional Driver olish driver card for digital tachograph /Beispielausgabe für eine Gesundheitskarte:
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B D1 96 ?? 81 B1 FE ?? 1F 07 ?? 81 05 2D German public health insurance card (Elektronische Gesundheitskarte eGK), 2nd generation (G2) (HealthCare)
Getestete Kartenleser¶
Hier stehen Geräte, deren grundsätzliche Funktion unter Ubuntu Bearbeitern des hiesigen Wikis aus persönlichen Erfahrungen bekannt ist. Es wird etliche weitere, hier nicht aufgeführte Geräte geben, die unter Ubuntu funktionieren. Die nachstehende Liste erhebt keinen Anspruch auf Vollständigkeit und mit der Nennung eines Gerätes ist keinerlei Empfehlung und keine Garantie verbunden.
▶ Weitere Artikel über Chipkartenhardware
Die Funktion mit einer speziellen Art der Smart Card und die Tauglichkeit zur Zusammenarbeit mit einer speziellen Anwendung muss aber im konkreten Einzelfall geprüft werden.
Ein Pin-Pad wird funktional oft nicht benötigt, sein Gebrauch steigert aber die Sicherheit, da seine Verwendung einige Angriffe von Schadsoftware verhindert (Secoder Sicherheitsstufe 3).
Cherry¶
SmartTerminal ST-1144 🇩🇪: Leser ohne Pin-Pad
ST-2100UG 🇩🇪: Leser mit Pin-Pad
KC 1000 SC 🇩🇪: Leser in Tastatur mit Pin-Pad
KC 1000 SC-Z: Leser in Tastatur mit Pin-Pad (zertifiziert, nicht mehr lieferbar)
REINER SCT¶
cyberJack RFID komfort (USB) 🇩🇪 vor 2026:
Das Gerät ist nicht mehr lieferbar. Der Hersteller kündigt für das 2. Quartal 2026 einen Nachfolger an, über den noch keine Erfahrungen vorliegen.cyberJack one [USB] 🇩🇪:
Erst den Leser verbinden, hat er grün geblinkt dann die Smart Card einstecken.
ACS¶
Unter dem Namen "ACS ACR39U ICC Reader" (oder ähnlichen Namen) werden verschiedene sehr billige Lesegeräte angeboten (Stand 2023-09), die alle auf dem ACR39U-Chip beruhen.
▶ Ggf. Installation der Treiber für manche Geräte von ACS
Anwendungen¶
Cardpeek¶
Das ist eine Anwendung mit graphischer Oberfläche zum Auslesen von Smart Cards, nützlich beispielsweise zum Testen. Sie kann aus den offiziellen Paketquellen von Ubuntu installiert[1] werden:
cardpeek ("Werkzeug um den Inhalt von ISO7816 Smartcards auszulesen, aus universe")
Befehl zum Installieren der Pakete:
sudo apt-get install cardpeek
Artikel im UU-Wiki¶
Es gibt zahlreiche Anwendungen, die optional mit einem Kartenleser für Smart Cards benutzt werden können oder für die dies sogar Voraussetzung zur Funktion ist. Einige davon werden im hiesigen Wiki beschrieben, siehe folgende Liste.
Damit der Kartenleser und Anwendung zusammen arbeiten, muss ggf. noch eine Einrichtung in der Anwendung erfolgen. Die Vorgehensweise dazu ist dem Handbuch des Programms zu entnehmen.
Seiten mit Tag „Chipkartenanwendung“¶
Links¶
Seite Smartcards 🇬🇧 im Wiki von Debian: Hintergrundinformationen, Treiberliste
Projektseite von Cardpeek 🇬🇧 – u.a. Dokumentation und Quelltext (unter "Install")
Projektseite PCSC lite 🇬🇧 – Kernkomponente zur Unterstützung von Smart Cards unter Linux: Hintergrundinformationen, Dokumentation, Quelltext
Neue Sicherheitsspezifikation für Chipkartenleser 🇩🇪 – Spezifikation Secoder der deutschen Kreditwirtschaft zur Sicherheit von Chipkartenlesern, bei heise online aus 2008