Deze tip is een vervolg van vorige week (eID), waarbij we experimenteren met smartcards. We gebruiken daarbij dezelfde hardware (eID reader) om ook andere smartcards zoals bankkaarten te lezen. Smartcards bevatten naast allerlei gegevens hoofdzakelijk een unieke beveiligingssleutel en heb je in allerlei vormen, naast eID en bankkaarten bestaan er USB (CryptoIdentity, Digipass), SIM (kaart of eSIM), NFC (Near-field communication), Windows TPM (Trusted Platform Module), Apple's Secure Enclave, Android Titan M2, Samsung Knox, enz. Veel van deze Smartcards zijn tegenwoordig ingebouwd in apparaten zoals computers, smartphones waardoor je deze aparaten ook kunt gebruiken voor identificatie via apps. Met de ingebouwde unieke sleutel kan je ondubbelzinnig geïdentificeerd worden, maar de sleutels worden ook gebruikt om gegevens te versleutelen.
De experimenten kunnen de basis zijn voor allerlei toepassingen, maar de hier besproken opdrachten werken niet met alle Smartcards, m.a.w. we exerimenteren en bouwen zo smartcard ervaringen op.
Na het aansluiten van de hardware, installeer je voor de experimenten op Debian Trixie de volgende software:
dany@pindabook:~$ sudo apt install pcsc-tools libccid libacsccid1 pcscd libnss3-tools
Installeren:
libacsccid1 libccid libnss3-tools pcsc-tools pcscd
Installeren van vereisten:
libcairo-gobject-perl libextutils-depends-perl libglib-perl libintl-perl libpcsc-perl
libcairo-perl libglib-object-introspection-perl libgtk3-perl libintl-xs-perl
Voorgestelde pakketten:
libfont-freetype-perl pcmciautils libxml-libxml-perl
Samenvatting:
Opwaarderen: 0, Installeren: 14, Verwijderen: 0, Niet opwaarderen: 0
Downloadgrootte: 2.946 kB
Benodigde ruimte: 13,2 MB / 84,7 GB beschikbaar
Doorgaan? [J/n]
Ophalen:1 http://deb.debian.org/debian trixie/main amd64 libccid amd64 1.6.2-1 [78,8 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main amd64 libacsccid1 amd64 1.1.12-1 [96,3 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main amd64 pcscd amd64 2.3.3-1 [96,6 kB]
Ophalen:4 http://deb.debian.org/debian trixie/main amd64 libcairo-perl amd64 1.109-5+b1 [92,5 kB]
Ophalen:5 http://deb.debian.org/debian trixie/main amd64 libextutils-depends-perl all 0.8002-1 [17,1 kB]
Ophalen:6 http://deb.debian.org/debian trixie/main amd64 libglib-perl amd64 3:1.329.3-3+b3 [326 kB]
Ophalen:7 http://deb.debian.org/debian trixie/main amd64 libcairo-gobject-perl amd64 1.005-4+b4 [11,9 kB]
Ophalen:8 http://deb.debian.org/debian trixie/main amd64 libglib-object-introspection-perl amd64 0.051-2+b1 [69,5 kB
]
Ophalen:9 http://deb.debian.org/debian trixie/main amd64 libgtk3-perl all 0.038-3 [32,2 kB]
Ophalen:10 http://deb.debian.org/debian trixie/main amd64 libintl-perl all 1.35-1 [690 kB]
Ophalen:11 http://deb.debian.org/debian trixie/main amd64 libintl-xs-perl amd64 1.35-1 [15,3 kB]
Ophalen:12 http://deb.debian.org/debian trixie/main amd64 libnss3-tools amd64 2:3.110-1 [1.086 kB]
Ophalen:13 http://deb.debian.org/debian trixie/main amd64 libpcsc-perl amd64 1.4.16-1+b3 [43,8 kB]
Ophalen:14 http://deb.debian.org/debian trixie/main amd64 pcsc-tools amd64 1.7.3-1 [289 kB]
2.946 kB opgehaald in 2s (1.364 kB/s)
Voorheen niet geselecteerd pakket libccid wordt geselecteerd.
(Database wordt ingelezen ... 206565 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../00-libccid_1.6.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libccid (1.6.2-1) ...
Voorheen niet geselecteerd pakket libacsccid1 wordt geselecteerd.
Uitpakken van .../01-libacsccid1_1.1.12-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libacsccid1 (1.1.12-1) ...
Voorheen niet geselecteerd pakket pcscd wordt geselecteerd.
Uitpakken van .../02-pcscd_2.3.3-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van pcscd (2.3.3-1) ...
Voorheen niet geselecteerd pakket libcairo-perl wordt geselecteerd.
Uitpakken van .../03-libcairo-perl_1.109-5+b1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libcairo-perl (1.109-5+b1) ...
Voorheen niet geselecteerd pakket libextutils-depends-perl wordt geselecteerd.
Uitpakken van .../04-libextutils-depends-perl_0.8002-1_all.deb wordt voorbereid...
Bezig met uitpakken van libextutils-depends-perl (0.8002-1) ...
Voorheen niet geselecteerd pakket libglib-perl:amd64 wordt geselecteerd.
Uitpakken van .../05-libglib-perl_3%3a1.329.3-3+b3_amd64.deb wordt voorbereid...
Bezig met uitpakken van libglib-perl:amd64 (3:1.329.3-3+b3) ...
Voorheen niet geselecteerd pakket libcairo-gobject-perl wordt geselecteerd.
Uitpakken van .../06-libcairo-gobject-perl_1.005-4+b4_amd64.deb wordt voorbereid...
Bezig met uitpakken van libcairo-gobject-perl (1.005-4+b4) ...
Voorheen niet geselecteerd pakket libglib-object-introspection-perl wordt geselecteerd.
Uitpakken van .../07-libglib-object-introspection-perl_0.051-2+b1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libglib-object-introspection-perl (0.051-2+b1) ...
Voorheen niet geselecteerd pakket libgtk3-perl wordt geselecteerd.
Uitpakken van .../08-libgtk3-perl_0.038-3_all.deb wordt voorbereid...
Bezig met uitpakken van libgtk3-perl (0.038-3) ...
Voorheen niet geselecteerd pakket libintl-perl wordt geselecteerd.
Uitpakken van .../09-libintl-perl_1.35-1_all.deb wordt voorbereid...
Bezig met uitpakken van libintl-perl (1.35-1) ...
Voorheen niet geselecteerd pakket libintl-xs-perl wordt geselecteerd.
Uitpakken van .../10-libintl-xs-perl_1.35-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libintl-xs-perl (1.35-1) ...
Voorheen niet geselecteerd pakket libnss3-tools wordt geselecteerd.
Uitpakken van .../11-libnss3-tools_2%3a3.110-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libnss3-tools (2:3.110-1) ...
Voorheen niet geselecteerd pakket libpcsc-perl wordt geselecteerd.
Uitpakken van .../12-libpcsc-perl_1.4.16-1+b3_amd64.deb wordt voorbereid...
Bezig met uitpakken van libpcsc-perl (1.4.16-1+b3) ...
Voorheen niet geselecteerd pakket pcsc-tools wordt geselecteerd.
Uitpakken van .../13-pcsc-tools_1.7.3-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van pcsc-tools (1.7.3-1) ...
Instellen van libccid (1.6.2-1) ...
Instellen van libpcsc-perl (1.4.16-1+b3) ...
Instellen van pcscd (2.3.3-1) ...
Created symlink '/etc/systemd/system/sockets.target.wants/pcscd.socket' → '/usr/lib/systemd/system/pcscd.socket'.
pcscd.service is a disabled or a static unit, not starting it.
Instellen van libextutils-depends-perl (0.8002-1) ...
Instellen van libintl-perl (1.35-1) ...
Instellen van libcairo-perl (1.109-5+b1) ...
Instellen van pcsc-tools (1.7.3-1) ...
Instellen van libnss3-tools (2:3.110-1) ...
Instellen van libacsccid1 (1.1.12-1) ...
Instellen van libglib-perl:amd64 (3:1.329.3-3+b3) ...
Instellen van libintl-xs-perl (1.35-1) ...
Instellen van libcairo-gobject-perl (1.005-4+b4) ...
Instellen van libglib-object-introspection-perl (0.051-2+b1) ...
Instellen van libgtk3-perl (0.038-3) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor mailcap (3.74) ...
Bezig met afhandelen van triggers voor desktop-file-utils (0.28-1) ...
Laten we eerst controleren of de aangesloten hardware door Linux wordt herkend en door de software gebruikt kan worden. Daarvoor gebruiken we een scan opdracht, zonder dat er een Smartcard in de kaartlezer zit:
dany@pindabook:~$ sudo pcsc_scan
PC/SC device scanner
V 1.7.3 (c) 2001-2024, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR38U 00 00
Sun Nov 30 16:04:17 2025
Reader 0: ACS ACR38U 00 00
Event number: 0
Card state: Card removed,
|
Deze opdracht blijft zoeken naar ingebrachte Smartcards. Je kunt de opdracht afbreken met de sneltoets Ctrl+c.
Met een eID kaart van voor 2020, krijgen we de volgende informatie:
dany@pindabook:~$ sudo pcsc_scan
PC/SC device scanner
V 1.7.3 (c) 2001-2024, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR38U 00 00
Sun Nov 30 16:09:23 2025
Reader 0: ACS ACR38U 00 00
Event number: 1
Card state: Card inserted,
ATR: 3B 98 13 40 0A A5 03 01 01 01 AD 13 11
ATR: 3B 98 13 40 0A A5 03 01 01 01 AD 13 11
+ TS = 3B --> Direct Convention
+ T0 = 98, Y(1): 1001, K: 8 (historical bytes)
TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU
43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s
TD(1) = 40 --> Y(i+1) = 0100, Protocol T = 0
-----
TC(2) = 0A --> Work waiting time: 960 x 10 x (Fi/F)
+ Historical bytes: A5 03 01 01 01 AD 13 11
Category indicator byte: A5 (proprietary format)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 98 13 40 0A A5 03 01 01 01 AD 13 11
Belgium Electronic ID card (eID)
-
En met een oude ongeldige bankkaart:
dany@pindabook:~$ sudo pcsc_scan
PC/SC device scanner
V 1.7.3 (c) 2001-2024, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: ACS ACR38U 00 00
Sun Nov 23 16:46:43 2025
Reader 0: ACS ACR38U 00 00
Event number: 8
Card state: Card inserted, Shared Mode,
ATR: 3B 67 00 00 00 00 00 00 00 90 00
ATR: 3B 67 00 00 00 00 00 00 00 90 00
+ TS = 3B --> Direct Convention
+ T0 = 67, Y(1): 0110, K: 7 (historical bytes)
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 00 00 00 00 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 0, len: 0 (unknown)
Tag: 0, len: 0 (unknown)
Tag: 0, len: 0 (unknown)
Mandatory status indicator (3 last bytes)
LCS (life card cycle): 00 (No information given)
SW: 9000 (Normal processing.)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 67 00 00 00 00 00 00 00 90 00
Axa Bank (Belgium) Mastercard Gold / Axa Bank Belgium
MisterCash & Proton card
VISA Card (emitted by Bank Card Company - Belgium)
Hellobank/BNP Paribas Fortis Belgium Bancontact Visa debit card (Bank)
Om de eID kaart van voor 2020 verder te onderzoeken, installeren we OpenSC:
dany@pindabook:~$ sudo apt install opensc
Installeren:
opensc
Installeren van vereisten:
libeac3 opensc-pkcs11
Samenvatting:
Opwaarderen: 0, Installeren: 3, Verwijderen: 0, Niet opwaarderen: 0
Downloadgrootte: 1.386 kB
Benodigde ruimte: 4.823 kB / 84,7 GB beschikbaar
Doorgaan? [J/n]
Ophalen:1 http://deb.debian.org/debian trixie/main amd64 libeac3 amd64 1.1.2+ds+git20220117+453c3d6b03a0-1.1+b3 [51,
1 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main amd64 opensc-pkcs11 amd64 0.26.1-2 [924 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main amd64 opensc amd64 0.26.1-2 [411 kB]
1.386 kB opgehaald in 0s (6.012 kB/s)
Voorheen niet geselecteerd pakket libeac3:amd64 wordt geselecteerd.
(Database wordt ingelezen ... 207242 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../libeac3_1.1.2+ds+git20220117+453c3d6b03a0-1.1+b3_amd64.deb wordt voorbereid...
Bezig met uitpakken van libeac3:amd64 (1.1.2+ds+git20220117+453c3d6b03a0-1.1+b3) ...
Voorheen niet geselecteerd pakket opensc-pkcs11:amd64 wordt geselecteerd.
Uitpakken van .../opensc-pkcs11_0.26.1-2_amd64.deb wordt voorbereid...
Bezig met uitpakken van opensc-pkcs11:amd64 (0.26.1-2) ...
Voorheen niet geselecteerd pakket opensc wordt geselecteerd.
Uitpakken van .../opensc_0.26.1-2_amd64.deb wordt voorbereid...
Bezig met uitpakken van opensc (0.26.1-2) ...
Instellen van libeac3:amd64 (1.1.2+ds+git20220117+453c3d6b03a0-1.1+b3) ...
Instellen van opensc-pkcs11:amd64 (0.26.1-2) ...
Instellen van opensc (0.26.1-2) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor mailcap (3.74) ...
Bezig met afhandelen van triggers voor desktop-file-utils (0.28-1) ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12) ...
Met het geïnstalleerde OpenSC softwarepakket, krijgen we opdrachten ter beschikking om bijvoorbeeld een overzicht te krijgen van de Smartcard (eID kaart) opgeslagen certificaten:
dany@pindabook:~$ sudo pkcs15-tool --list-certificates
Using reader with a card: ACS ACR38U 00 00
X.509 Certificate [Authentication]
Object Flags : [0x03], private, modifiable
Authority : no
Path : 3f00df005038
ID : 02
Encoded serial : 02 10 100000000000EBB7DB5DA6E072C0240A
X.509 Certificate [Signature]
Object Flags : [0x03], private, modifiable
Authority : no
Path : 3f00df005039
ID : 03
Encoded serial : 02 10 10000000000074FE6FE155CA4134C3D8
X.509 Certificate [CA]
Object Flags : [0x03], private, modifiable
Authority : yes
Path : 3f00df00503a
ID : 04
Encoded serial : 02 10 16CD4B3575A28C3F0646483BA0F37A41
X.509 Certificate [Root]
Object Flags : [0x03], private, modifiable
Authority : yes
Path : 3f00df00503b
ID : 06
Encoded serial : 02 08 4F33208CC594BF38
Om een bepaald certificaat te lezen (op te halen) gebruik je de volgende opdracht.
Daarbij lezen we het certificaat met het hierboven gevonden ID : 02, vandaar de 2 in de volgende opdracht.
De opdracht slaat het gelezen certificaat op in het bestand kaart-certificaat.pem.
dany@pindabook:~$ sudo pkcs15-tool --read-certificate 2 > kaart-certificaat.pem
Using reader with a card: ACS ACR38U 00 00
Om het certificaat effectief te lezen, heb je de versleutelopdracht openssl nodig:
dany@pindabook:~$ openssl x509 -text -noout -in kaart-certificaat.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
10:00:00:00:00:00:eb:b7:db:5d:a6:e0:72:c0:24:0a
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=BE, O=http://repository.eid.belgium.be/, CN=Citizen CA, serialNumber=201710
Validity
Not Before: Apr 3 20:24:17 2017 GMT
Not After : Apr 3 23:59:59 2027 GMT
Subject: C=BE, CN=André Pinoy (Authentication), SN=Pinoy, GN=André Joseph, serialNumber=31080114943
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:cb:05:ef:3c:62:e1:67:69:6e:c2:f3:96:4f:7e:
34:ad:12:4a:f3:0e:10:5a:c5:1a:38:0b:29:d2:b4:
ad:86:61:d8:1e:54:36:12:f9:a2:85:77:fa:6e:83:
86:38:8c:e1:21:e2:06:aa:c5:a3:e0:45:be:ae:32:
e5:1b:16:6e:aa:7a:af:43:93:fc:ae:dc:3f:89:2f:
c3:63:00:c4:9c:c6:ba:95:3b:65:a4:15:c6:8f:05:
4a:ed:c6:84:f8:af:70:72:05:d2:90:3b:7d:3e:7e:
52:62:a4:2d:83:69:04:a1:97:fe:30:29:85:5c:45:
1b:31:76:55:cf:61:02:ab:d1:e6:b0:69:9f:b4:05:
a2:6b:20:6f:a3:0b:b7:79:c1:36:eb:45:92:49:d2:
59:c3:f3:fb:07:23:8e:60:23:ac:55:64:ff:69:21:
3d:73:0f:d9:05:50:42:6b:1e:29:78:38:c9:02:73:
13:67:b0:b0:a9:dd:ab:10:a5:3a:2c:4f:c1:ef:0d:
82:ce:97:98:1a:ba:1a:c8:ee:20:8e:c8:3d:b6:51:
85:a6:a9:4a:53:82:c4:be:83:ed:2a:59:88:13:70:
bd:fd:7a:ff:03:63:42:78:7c:6b:1b:79:03:dc:52:
d9:09:67:da:55:92:2e:f8:5b:29:d9:61:32:6e:b3:
af:af
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Authority Key Identifier:
42:6B:83:D4:05:D1:94:69:1D:6B:E5:24:C5:8A:68:70:9E:EF:E4:69
Authority Information Access:
CA Issuers - URI:http://certs.eid.belgium.be/belgiumrs4.crt
OCSP - URI:http://ocsp.eid.belgium.be/2
X509v3 Certificate Policies:
Policy: 2.16.56.12.1.1.2.2
CPS: http://repository.eid.belgium.be
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.eid.belgium.be/eidc201710.crl
X509v3 Key Usage: critical
Digital Signature
Netscape Cert Type:
SSL Client, S/MIME
X509v3 Extended Key Usage:
TLS Web Client Authentication
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
4c:e3:50:09:66:69:b8:09:6b:3b:68:64:20:95:aa:49:3c:71:
4a:40:9b:de:7d:61:08:0e:d0:de:d9:ab:ea:93:e4:7d:6e:e3:
db:a8:61:a4:20:f4:34:3a:48:48:87:f0:18:02:07:29:8f:3d:
6b:11:95:0f:a2:3b:e9:cd:f4:f2:c9:f2:51:47:7d:14:84:bd:
61:24:c9:59:e0:e3:6d:e9:6b:7b:f4:4c:54:a2:00:da:09:59:
fd:db:22:d3:05:01:32:37:19:68:27:6f:c2:30:fd:a0:e7:38:
15:d7:32:f0:3c:45:bd:b0:0e:9d:fc:9c:e3:25:0b:3e:35:d5:
b1:63:61:c8:8f:42:66:e7:d5:b0:d0:4b:65:11:6e:6c:5a:74:
60:37:7f:84:aa:2c:d9:3c:16:f0:f9:ed:b4:bd:c0:e2:e0:7f:
f4:3d:69:3a:e4:df:4e:5d:7d:5d:1b:73:12:8a:3c:32:8c:4a:
3a:40:2c:d5:7d:4c:03:a9:38:f3:d7:c8:f5:bb:9b:ed:2f:be:
a7:e0:23:1a:05:7e:af:24:be:58:a5:19:44:9b:54:3f:0a:6b:
2b:40:6c:70:bc:d8:6d:69:50:77:27:36:62:76:e2:d4:f7:f8:
dd:04:c3:b9:67:d7:a9:a6:60:50:3b:a4:3d:f2:76:43:bf:4a:
f0:05:65:96:b1:56:ac:83:ee:27:13:85:71:36:39:b6:d5:de:
68:c3:ed:7f:d3:a2:a4:05:e9:6b:fc:cc:ee:23:cf:4b:22:1d:
3b:fe:c8:42:f1:89:3d:ff:4a:93:7f:ef:55:39:ac:6c:0b:8d:
a5:cc:db:9f:fc:78:72:43:10:e2:f4:4a:c2:61:d2:7e:4e:71:
97:c1:c2:47:7c:cd:a9:6b:67:35:47:7b:12:40:73:42:fe:a2:
20:55:7e:0d:01:0b:58:1a:ee:c9:63:59:c9:14:4c:81:a9:ac:
48:cc:45:4e:6b:59:87:a5:d8:d3:5d:49:4f:03:38:dd:14:8e:
d7:ce:81:e6:51:6a:4f:7a:74:e0:88:c6:e1:d7:3d:de:c7:46:
b1:4f:cb:7b:3f:b7:82:23:ad:76:a0:cc:37:5f:73:c5:bb:5b:
43:98:a6:de:69:e3:ad:5c:7c:fe:98:90:4c:ce:67:41:0b:ab:
60:19:a9:7b:0b:1b:a6:72:a7:94:54:c3:c4:28:39:23:5e:9a:
58:6f:a4:46:32:d9:05:76:1b:7d:4a:cc:bf:5d:7b:5d:28:fa:
ec:f4:9f:5e:12:4d:01:26:1a:76:15:31:94:6b:bf:34:98:9f:
35:4b:6d:a3:eb:f4:95:ac:bd:4a:8e:3d:60:53:fd:50:bf:54:
9a:e2:e6:0e:8f:f9:8d:96
OpenSC ondersteunt pkcs11 (Public-Key Cryptography Standards #11) om bijvoorbeeld de ID's van de opgeslagen eID kaart op te sommen:
dany@pindabook:~$ sudo pkcs11-tool -O
Using slot 0 with a present token (0x0)
Profile object 3971025248
profile_id: CKP_AUTHENTICATION_TOKEN (3)
En de mechanismen die de Smartcard (eID) ondersteunt:
dany@pindabook:~$ sudo pkcs11-tool -M
Using slot 0 with a present token (0x0)
Supported mechanisms:
SHA-1, digest
SHA224, digest
SHA256, digest
SHA384, digest
SHA512, digest
MD5, digest
RIPEMD160, digest
GOSTR3411, digest
RSA-PKCS, keySize={2048,2048}, hw, decrypt, sign, verify
SHA1-RSA-PKCS, keySize={2048,2048}, sign, verify
SHA224-RSA-PKCS, keySize={2048,2048}, sign, verify
SHA256-RSA-PKCS, keySize={2048,2048}, sign, verify
SHA384-RSA-PKCS, keySize={2048,2048}, sign, verify
SHA512-RSA-PKCS, keySize={2048,2048}, sign, verify
MD5-RSA-PKCS, keySize={2048,2048}, sign, verify
RIPEMD160-RSA-PKCS, keySize={2048,2048}, sign, verify
En een opdracht om de basisfunctionaliteit van de Smartcard te testen:
dany@pindabook:~$ sudo pkcs11-tool --test --login
Using slot 0 with a present token (0x0)
Logging in to "BELPIC".
Please enter User PIN:
C_SeedRandom() and C_GenerateRandom():
seeding (C_SeedRandom) not supported
seems to be OK
Digests:
all 4 digest functions seem to work
MD5: OK
RIPEMD160: OK
SHA-1: OK
SHA256: OK
Ciphers: not implemented
Signatures (currently only for RSA)
testing key 0 (Authentication)
all 4 signature functions seem to work
testing signature mechanisms:
RSA-PKCS: OK
SHA1-RSA-PKCS: OK
MD5-RSA-PKCS: OK
RIPEMD160-RSA-PKCS: OK
SHA256-RSA-PKCS: OK
testing key 1 (Signature) with 1 mechanism
Logging in to "BELPIC".
Please enter context specific PIN:
error: PKCS11 function C_Sign failed: rv = CKR_FUNCTION_NOT_SUPPORTED (0x54)
Aborting.
RSA-PKCS:
Het spreekt voor zich dat de eigenaar (User) zijn PIN-code correct kan ingeven.
De tweede context specific PIN (CSPIN) kennen de meeste gebruikers niet en dient om bijvoorbeeld meerdere documenten digitaal te ondertekenen zonder telkens opnieuw je PIN-code te moeten ingeven.
Een lijst met de opgeslagen privé sleutels geef je weer met:
dany@pindabook:~$ sudo pkcs11-tool --login --list-objects --type privkey
Using slot 0 with a present token (0x0)
Logging in to "BELPIC".
Please enter User PIN:
Private Key Object; RSA
label: Authentication
ID: 02
Usage: sign
Access: sensitive, always sensitive, never extractable, local
uri: pkcs11:model=PKCS%2315;manufacturer=%28unknown%29;serial=2d26176b12927039;token=BELPIC;id=%02;object=Authentication;type=private
Private Key Object; RSA
label: Signature
ID: 03
Usage: sign, non-repudiation
Access: always authenticate, sensitive, always sensitive, never extractable, local
uri: pkcs11:model=PKCS%2315;manufacturer=%28unknown%29;serial=2d26176b12927039;token=BELPIC;id=%03;object=Signature;type=private
Met Cardpeek kan je een Smartcard grafisch onderzoeken. Hoewel het programma al oud is (2015) werkt het nog. In Debian Trixie installeer je het als volgt:
dany@pindabook:~$ sudo apt install cardpeek
Installeren:
cardpeek
Installeren van vereisten:
cardpeek-data libcacard0 liblua5.3-0
Samenvatting:
Opwaarderen: 0, Installeren: 4, Verwijderen: 0, Niet opwaarderen: 0
Downloadgrootte: 1.182 kB
Benodigde ruimte: 2.402 kB / 84,6 GB beschikbaar
Doorgaan? [J/n]
Ophalen:1 http://deb.debian.org/debian trixie/main amd64 cardpeek-data all 0.8.4-3 [705 kB]
Ophalen:2 http://deb.debian.org/debian trixie/main amd64 liblua5.3-0 amd64 5.3.6-2+b4 [129 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main amd64 cardpeek amd64 0.8.4-3 [257 kB]
Ophalen:4 http://deb.debian.org/debian trixie/main amd64 libcacard0 amd64 1:2.8.0-3+b2 [90,9 kB]
1.182 kB opgehaald in 0s (5.500 kB/s)
Voorheen niet geselecteerd pakket cardpeek-data wordt geselecteerd.
(Database wordt ingelezen ... 207386 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../cardpeek-data_0.8.4-3_all.deb wordt voorbereid...
Bezig met uitpakken van cardpeek-data (0.8.4-3) ...
Voorheen niet geselecteerd pakket liblua5.3-0:amd64 wordt geselecteerd.
Uitpakken van .../liblua5.3-0_5.3.6-2+b4_amd64.deb wordt voorbereid...
Bezig met uitpakken van liblua5.3-0:amd64 (5.3.6-2+b4) ...
Voorheen niet geselecteerd pakket cardpeek wordt geselecteerd.
Uitpakken van .../cardpeek_0.8.4-3_amd64.deb wordt voorbereid...
Bezig met uitpakken van cardpeek (0.8.4-3) ...
Voorheen niet geselecteerd pakket libcacard0:amd64 wordt geselecteerd.
Uitpakken van .../libcacard0_1%3a2.8.0-3+b2_amd64.deb wordt voorbereid...
Bezig met uitpakken van libcacard0:amd64 (1:2.8.0-3+b2) ...
Instellen van libcacard0:amd64 (1:2.8.0-3+b2) ...
Instellen van cardpeek-data (0.8.4-3) ...
Instellen van liblua5.3-0:amd64 (5.3.6-2+b4) ...
Instellen van cardpeek (0.8.4-3) ...
Bezig met afhandelen van triggers voor desktop-file-utils (0.28-1) ...
Bezig met afhandelen van triggers voor hicolor-icon-theme (0.18-2) ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor mailcap (3.74) ...
Je kunt Cardpeek starten via de Programmastarter > Systeem > Cardpeek. Laat Cardpeek bij de eerste start de werkmap .cardpeek aanmaken en herstart Cardpeek. Selecteer de aangesloten kaartlezer en laat Cardpeek regelmatig controleren op updates.
Na het updaten van de scripts, herstart je Cardpeek nogmaals om de scripts te activeren.
Met een oude ongeldige bankkaart in de kaartlezer, klik je op de knop in de werkbalk en daarna op EMV. Zoals de infotekst toont, heb je EMV nodig om bankkaarten te lezen.

Ga in het volgende dialoogvenster verder door op de knop te klikken.

Ga in het volgende dialoogvenster verder door nogmaals op de knop te klikken. De bankkaart beschikt namelijk over Bancontact en Maestro functies.

Na het voltooien van het onderzoek, krijg je een overzicht van de gegevens op de bankkaart. Je kunt in de boomstructuur naar hartenlust bladeren.

De mogelijkheden met Smartcards in Linux is zeer uitgebreid en complex. Het gaat namelijk over authentificeren, digitaal ondertekenen en versleutelen.
Linux heeft daarvoor verschillende hulpmiddelen ter beschikking. Zo bevat Debian Trixie standaard de volgende softwarepakketten, enkel en alleen voor pkcs11:
dany@pindabook:~$ apt search pkcs11
coolkey/stable 1.1.0-16.1 amd64
Smart Card PKCS #11 cryptographic module
gnome-keyring-pkcs11/stable,now 48.0-1 amd64 [geïnstalleerd,automatisch]
GNOME keyring module for the PKCS#11 module loading library
gnupg-pkcs11-scd/stable 0.10.0-5+b1 amd64
GnuPG smart-card daemon with PKCS#11 support
gnupg-pkcs11-scd-proxy/stable 0.10.0-5+b1 amd64
GnuPG smart-card daemon with PKCS#11 support, proxy
golang-github-google-go-pkcs11-dev/stable 0.3.0+dfsg-2 all
Go package for loading PKCS #11 modules (library)
golang-github-miekg-pkcs11-dev/stable 1.0.3+dfsg1-3 all
pkcs11 wrapper for Go
golang-github-stefanberger-go-pkcs11uri-dev/stable 0.0~git20201008.78d3cae-2 all
Golang pkcs11 URI library (library)
hsmwiz/stable 0.0.2-2 all
Easy handling of NitroKey HSM USB Smard Card
libengine-pkcs11-openssl/stable 0.4.13-1 amd64
OpenSSL engine for PKCS#11 modules
libnss3-tools/stable,now 2:3.110-1 amd64 [geïnstalleerd]
Network Security Service tools
libpam-pkcs11/stable 0.6.13-1 amd64
Fully featured PAM module for using PKCS#11 smart cards
libpkcs11-helper1-dev/stable 1.30.0-1+b1 amd64
library that simplifies the interaction with PKCS#11
libpkcs11-helper1t64/stable 1.30.0-1+b1 amd64
library that simplifies the interaction with PKCS#11
libpkcs11-proxy0/stable 0.4.1-3 amd64
proxy for the PKCS11-library (client)
libstrongswan-extra-plugins/stable-security 6.0.1-6+deb13u2 amd64
strongSwan utility and crypto library (extra plugins)
libtpm2-pkcs11-1/stable 1.9.1-0.1 amd64
pkcs11 library for tpm2
libtpm2-pkcs11-tools/stable 1.9.1-0.1 all
pkcs11 library for tpm2 - command-line tools
opensc-pkcs11/stable,now 0.26.1-2 amd64 [geïnstalleerd,automatisch]
Smart card utilities (PKCS#11 module)
pkcs11-daemon/stable 0.4.1-3 amd64
proxy for the PKCS11-library (server)
pkcs11-data/stable 0.7.4-2+b5 amd64
Manage PKCS#11 data objects
pkcs11-dump/stable 0.3.4-1.1+b5 amd64
Dump PKCS#11 token content
pkcs11-provider/stable 1.0-3 amd64
OpenSSL 3 provider for PKCS11
python3-pkcs11/stable 0.7.0-1+b5 amd64
high level PKCS#11 interface for Python
python3-pykcs11/stable 1.5.17-1+b2 amd64
PKCS#11 wrapper for Python
python3-tpm2-pkcs11-tools/stable 1.9.1-0.1 all
pkcs11 library for tpm2 - Python library
simple-tpm-pk11/stable 0.06-5+b1 amd64
simple library for using the TPM chip to secure SSH keys
tpm-tools-pkcs11/stable 1.3.9.2-0.2 amd64
Management tools for the TPM hardware (PKCS#11 tools)
yubihsm-pkcs11/stable 2.6.0-5 amd64
PKCS#11 module for communication with the YubiHSM 2
Wie meer wil weten over OpenSC kan terecht op de webpagina Using-pkcs11-tool-and-OpenSSL. En specifiek voor eID kaarten op Belgian_eID.
dany@pindabook:~$ sudo apt purge pcsc-tools libccid libacsccid1 pcscd libnss3-tools opensc cardpeek
[sudo] wachtwoord voor dany:
De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig:
cardpeek-data libcacard0 libintl-perl libintl-xs-perl liblua5.3-0 libpcsc-perl
Gebruik 'sudo apt autoremove' om ze te verwijderen.
VERWIJDEREN:
cardpeek* libacsccid1* libccid* libnss3-tools* opensc* pcsc-tools* pcscd*
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 7, Niet opwaarderen: 0
Vrijgemaakte ruimte: 9.181 kB
Doorgaan? [J/n]
(Database wordt ingelezen ... 207460 bestanden en mappen momenteel geïnstalleerd.)
cardpeek (0.8.4-3) wordt verwijderd ...
pcscd (2.3.3-1) wordt verwijderd ...
libacsccid1 (1.1.12-1) wordt verwijderd ...
libccid (1.6.2-1) wordt verwijderd ...
libnss3-tools (2:3.110-1) wordt verwijderd ...
opensc (0.26.1-2) wordt verwijderd ...
pcsc-tools (1.7.3-1) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor mailcap (3.74) ...
Bezig met afhandelen van triggers voor desktop-file-utils (0.28-1) ...
(Database wordt ingelezen ... 207232 bestanden en mappen momenteel geïnstalleerd.)
Configuratiebestanden voor libccid (1.6.2-1) worden gewist ...
Configuratiebestanden voor opensc (0.26.1-2) worden gewist ...
Configuratiebestanden voor pcscd (2.3.3-1) worden gewist ...
dany@pindabook:~$ sudo apt autoremove
VERWIJDEREN:
cardpeek-data libcacard0 libintl-perl libintl-xs-perl liblua5.3-0 libpcsc-perl
Samenvatting:
Opwaarderen: 0, Installeren: 0, Verwijderen: 6, Niet opwaarderen: 0
Vrijgemaakte ruimte: 6.551 kB
Doorgaan? [J/n]
(Database wordt ingelezen ... 207211 bestanden en mappen momenteel geïnstalleerd.)
cardpeek-data (0.8.4-3) wordt verwijderd ...
libcacard0:amd64 (1:2.8.0-3+b2) wordt verwijderd ...
libintl-xs-perl (1.35-1) wordt verwijderd ...
libintl-perl (1.35-1) wordt verwijderd ...
liblua5.3-0:amd64 (5.3.6-2+b4) wordt verwijderd ...
libpcsc-perl (1.4.16-1+b3) wordt verwijderd ...
Bezig met afhandelen van triggers voor libc-bin (2.41-12) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
Bezig met afhandelen van triggers voor hicolor-icon-theme (0.18-2) ...
dany@pindabook:~$ rm -r .cardpeek