Importante
Questo driver è ancora una prima implementazione Proof of Concept che implementa solo le funzioni necessarie per il funzionamento dei server TLS, come ad esempio un server HTTPS.
Accedere a un NetHSM usando il driver PKCS#11#
Scarica il driver PKCS#11 per NetHSM.
Modificate il file di configurazione
p11nethsm.conf
secondo la vostra configurazione (es. indirizzo, nome dell’operatore) e memorizzarlo in$HOME/.nitrokey
,/etc/nitrokey/
, o nella cartella dove viene eseguita la vostra applicazione.
Crittografia e decrittografia#
Dopo aver creato una chiave (qui: ID 42) con il meccanismo corrispondente, è possibile utilizzarla per la crittografia e la decrittografia, ma prima è necessario creare la chiave:
$ KEYID=42
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem
Ora è possibile crittografare:
$ echo 'NetHSM rulez!' | openssl pkeyutl -encrypt -pubin -inkey public.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha512 -pkeyopt rsa_mgf1_md:sha512 -out encrypted.data
… E decifrare:
$ pkcs11-tool --module p11nethsm.so -v --decrypt --mechanism RSA-PKCS-OAEP --input-file encrypted.data --id $HEXID --hash-algorithm SHA512
Firma#
Per prima cosa creare nuovamente la chiave:
$ KEYID=23
$ HEXID=$(echo ${KEYID}'\c' | xxd -ps)
$ curl -s -X GET https://nethsmdemo.nitrokey.com/api/v1/keys/$KEYID/public.pem -o public.pem
Dopo aver creato una chiave (in questo caso: ID 23) con il meccanismo corrispondente, è possibile utilizzarla per la firma:
$ echo 'NetHSM rulez!' | pkcs11-tool --module p11nethsm.so -v --sign --mechanism SHA512-RSA-PKCS-PSS --output-file sig.data --id $HEXID
$ echo 'NetHSM rulez!' | openssl dgst -keyform PEM -verify public.pem -sha512 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature sig.data