Tips en Trucs 2025

Smartcard experimenten

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.

Software installeren

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)

OpenSC

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 en pkcs11

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

Een Smartcard grafisch onderzoeken

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.

EMV Banlkkaart

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

Bancontact

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

Maestro

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

cardpeek

En verder

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.

Opruimen