CONSISTENT PKCS#11 CONSISTENT PKCS#11 IN OPERATING SYSTEMS IN - - PowerPoint PPT Presentation

consistent pkcs 11 consistent pkcs 11
SMART_READER_LITE
LIVE PREVIEW

CONSISTENT PKCS#11 CONSISTENT PKCS#11 IN OPERATING SYSTEMS IN - - PowerPoint PPT Presentation

CONSISTENT PKCS#11 CONSISTENT PKCS#11 IN OPERATING SYSTEMS IN OPERATING SYSTEMS IMPROVING USER EXPERIENCE AND SECURITY IN RHEL AND FEDORA IMPROVING USER EXPERIENCE AND SECURITY IN RHEL AND FEDORA Jakub Jelen Software Engineer Red Hat


slide-1
SLIDE 1

CONSISTENT PKCS#11 CONSISTENT PKCS#11

Jakub Jelen Software Engineer Red Hat jjelen@redhat.com @JakujeCZ Jakuje

IMPROVING USER EXPERIENCE AND SECURITY IN RHEL AND FEDORA IMPROVING USER EXPERIENCE AND SECURITY IN RHEL AND FEDORA

IN OPERATING SYSTEMS IN OPERATING SYSTEMS

slide-2
SLIDE 2

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-3
SLIDE 3

Email signatures & decryption

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-4
SLIDE 4

Email signatures & decryption SSH authentication, remote git

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-5
SLIDE 5

Email signatures & decryption SSH authentication, remote git Git commit/tag signing

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-6
SLIDE 6

Email signatures & decryption SSH authentication, remote git Git commit/tag signing TLS client authentication (eGovernment, banking)

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-7
SLIDE 7

Email signatures & decryption SSH authentication, remote git Git commit/tag signing TLS client authentication (eGovernment, banking) More secure password replacement

PRIVATE KEYS, CERTIFICATES PRIVATE KEYS, CERTIFICATES

WHAT ARE THEY USED FOR? WHAT ARE THEY USED FOR?

slide-8
SLIDE 8

WHERE ARE THEY STORED? WHERE ARE THEY STORED?

Hard drive Computer memory Backup in cloud

slide-9
SLIDE 9

ARE THEY SECURE? ARE THEY SECURE?

slide-10
SLIDE 10

ARE THEY SECURE? ARE THEY SECURE?

ZERO DAY EXPLOITS? ZERO DAY EXPLOITS?

slide-11
SLIDE 11

Last year

slide-12
SLIDE 12

Last year

slide-13
SLIDE 13

Last year

$ pkcs11-tool --read-object --id 01 --type cert \

  • -output-file cert.der

$ pkcs11-tool --sign --id 01 --mechanism RSA-PKCS --login \

  • -input-file data --output-file data.sig

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -I /usr/lib64/pkcs11/opensc-pkcs11.so example.com

slide-14
SLIDE 14

Last year

$ pkcs11-tool --read-object --id 01 --type cert \

  • -output-file cert.der

$ pkcs11-tool --sign --id 01 --mechanism RSA-PKCS --login \

  • -input-file data --output-file data.sig

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -I /usr/lib64/pkcs11/opensc-pkcs11.so example.com

DEDICATED HARDWARE IN OS IS NOT DEDICATED HARDWARE IN OS IS NOT EASY EASY

slide-15
SLIDE 15

PKCS#11 in OS

PC/SC USB Firefox ISO/IEC 7816 NSS OpenSSH OpenSC pcsc-lite + CCID: pcscd Card reader USB token Smart Card p11-kit-proxy PKCS#11 3rd party module OpenSSL-pkcs11 GnuTLS httpd wget OpenSSL nginx LibreSwan curl HSM

slide-16
SLIDE 16

User expectations

Firefox USB token Smart Card magic httpd wget nginx LibreSwan curl HSM

slide-17
SLIDE 17

AGENDA AGENDA

PKCS#11 Usability improvements PKCS#11 URI p11-kit-proxy Application support OpenSSH HTTPS clients & servers Firefox Your application? Further work

slide-18
SLIDE 18

Open Standard for cryptographic tokens controlling authentication information (personal identity, cryptographic keys, certificates, digital signatures, ...) PKCS#11 module: implementation of PKCS#11 interface providing access to cryptographic tokens low-level C API

PKCS#11 PKCS#11

slide-19
SLIDE 19

system-wide consistency for usage and configuration

CONSISTENT PKCS#11 CONSISTENT PKCS#11

slide-20
SLIDE 20

$ p11tool --list-all "pkcs11:manufacturer=piv_II;token=SSH%20key"

system-wide consistency for usage and configuration

CONSISTENT PKCS#11 CONSISTENT PKCS#11

$ pkcs11-tool --read-object --id 01 --type cert \

  • -output-file cert.der

$ ssh -I /usr/lib64/pkcs11/opensc-pkcs11.so example.com

slide-21
SLIDE 21

$ p11tool --list-all "pkcs11:manufacturer=piv_II;token=SSH%20key"

system-wide consistency for usage and configuration

CONSISTENT PKCS#11 CONSISTENT PKCS#11

$ pkcs11-tool --read-object --id 01 --type cert \

  • -output-file cert.der

$ ssh -I /usr/lib64/pkcs11/opensc-pkcs11.so example.com

slide-22
SLIDE 22

PKCS#11 URI ( PKCS#11 URI (RFC 7512) RFC 7512)

Strongest and simplest expression pkcs11: uri scheme -- distinguishable from filenames Uniquely identifies each object in the system Non-mandatory filtering by PKCS#11 attributes Can provide also PIN or pkcs11 module pkcs11: pkcs11:manufacturer=piv_II;token=SSH%20key;id=%04;object =PIV%20AUTH%20pubkey;type=private

slide-23
SLIDE 23

P11-KIT P11-KIT

PKCS#11 modules exposed to users System-wide registry of PKCS#11 modules Automatically loaded by applications PKCS#11 modules registered in one place: System and 3rd party

$ cat /usr/share/p11-kit/modules/opensc.module module: opensc-pkcs11.so

slide-24
SLIDE 24

How does it work?

APPLICATION SUPPORT APPLICATION SUPPORT

slide-25
SLIDE 25

OPENSSH CLIENTS (WAS) OPENSSH CLIENTS (WAS)

Listing keys a a a a Public key authentication a a Filtering keys N/A

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so ssh-rsa AAAAB3Nza[...]751SVdOhUaBiTXGiClQ== /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -i /usr/lib64/pkcs11/opensc-pkcs11.so example.com Enter PIN for 'SSH key':

slide-26
SLIDE 26

OPENSSH CLIENTS (WAS) OPENSSH CLIENTS (WAS)

Listing keys a a a a Public key authentication a a Filtering keys N/A

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so ssh-rsa AAAAB3Nza[...]751SVdOhUaBiTXGiClQ== /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -i /usr/lib64/pkcs11/opensc-pkcs11.so example.com Enter PIN for 'SSH key':

slide-27
SLIDE 27

OPENSSH CLIENTS (WAS) OPENSSH CLIENTS (WAS)

Listing keys a a a a Public key authentication a a Filtering keys N/A

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so ssh-rsa AAAAB3Nza[...]751SVdOhUaBiTXGiClQ== /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -i /usr/lib64/pkcs11/opensc-pkcs11.so example.com Enter PIN for 'SSH key':

slide-28
SLIDE 28

OPENSSH CLIENTS (WAS) OPENSSH CLIENTS (WAS)

Listing keys a a a a Public key authentication a a Filtering keys N/A

$ ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so ssh-rsa AAAAB3Nza[...]751SVdOhUaBiTXGiClQ== /usr/lib64/pkcs11/opensc-pkcs11.so $ ssh -i /usr/lib64/pkcs11/opensc-pkcs11.so example.com Enter PIN for 'SSH key':

slide-29
SLIDE 29

OPENSSH CLIENTS OPENSSH CLIENTS

Listing keys a a a a Public key authentication a a Filtering keys

$ ssh-keygen -D pkcs11: ssh-rsa AAAAB3Nza[...]751SVdOhUaBiTXGiClQ== pkcs11:id=%03;[...]?module-path=/usr/lib64/p11-kit-proxy.so ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzd[...]SStk3J0hkYnnsM= $ ssh -i pkcs11: example.com Enter PIN for 'SSH key': $ ssh -i pkcs11:id=%02 localhost Enter PIN for 'SSH key':

slide-30
SLIDE 30

OPENSSH CLIENTS 2 OPENSSH CLIENTS 2

Using ssh-agent a a a a a Configuration

$ ssh-add pkcs11:id=%02 Enter passphrase for PKCS#11: Card added: pkcs11:id=%02 $ ssh-add -l 521 SHA256:5BrE5wevULd[...]+kF5hA9X8 ECDSA jjelen (ECDSA) $ ssh example.com $ cat ~/.ssh/config IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/opensc-pkcs11.so"

slide-31
SLIDE 31

HTTPS CLIENTS HTTPS CLIENTS

wget a a a curl

$ wget --certificate 'pkcs11:id=%01;type=cert' \

  • -private-key 'pkcs11:id=%01;type=private' https://example.com/

$ curl --cert 'pkcs11:id=%01;type=cert' \

  • -key 'pkcs11:id=%01;type=private' https://example.com/
slide-32
SLIDE 32

HTTPS SERVERS HTTPS SERVERS

httpd configuration file a a a nginx configuration file

SSLCertificateFile pkcs11:id=%01;type=cert SSLCertificateKeyFile pkcs11:id=%01;type=private # ssl_certificate # does not work ssl_certificate_key "engine:pkcs11:id=%01;type=private";

slide-33
SLIDE 33

FIREFOX FIREFOX

a a a a a a a a a

slide-34
SLIDE 34

FIREFOX FIREFOX

No more adding PKCS#11 modules a a a a a a a a a

slide-35
SLIDE 35

FIREFOX FIREFOX

No more adding PKCS#11 modules a a a a a a a a a Just works

slide-36
SLIDE 36

YOUR OTHER APPLICATION? YOUR OTHER APPLICATION?

might already work high-level crypto applications p11-kit Available tokens PKCS#11 URI Identify objects Handled p11-kit

slide-37
SLIDE 37

TRY IT AT HOME TRY IT AT HOME

TPM2.0 any computer from last years alternative to storing private keys on hard drive tied to specific machine TCG provides PKCS#11 module (tpm2-pkcs11) SoftHSM PKCS#11 module data stored on filesystem integrated in p11-kit

slide-38
SLIDE 38

SUMMARY SUMMARY

Security bugs in processors, OS, software Smart cards and HSMs to store secrets in HW Consistent identification using PKCS#11 URI System-wide registration in p11-kit-proxy Support for most important system applications jjelen@redhat.com @JakujeCZ Jakuje

QUESTIONS? QUESTIONS?