Importante

Este driver é ainda uma implementação antecipada da Prova de Conceito que implementa apenas as funções necessárias para o funcionamento de servidores TLS, como por exemplo um servidor HTTPS.

Acesso a um NetHSM usando o driver PKCS#11#

  1. Descarregar o PKCS#11 driver para NetHSM.

  2. Modifique o ficheiro de configuração p11nethsm.conf de acordo com a sua configuração (por exemplo, endereço, nome do operador) e guarde-o em $HOME/.nitrokey, /etc/nitrokey/, ou na pasta onde a sua aplicação é executada.

Encriptação eamp; Decriptação#

Após criar uma chave (aqui: ID 42) com o mecanismo de acordo, pode utilizá-la para encriptação e desencriptação, mas primeiro deve criar a chave:

$ 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

Agora pode encriptar:

$ 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 decifrar:

$ pkcs11-tool --module p11nethsm.so -v --decrypt --mechanism RSA-PKCS-OAEP --input-file encrypted.data --id $HEXID --hash-algorithm SHA512

Assinatura#

Primeiro crie novamente a chave:

$ 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

Depois de criar uma chave (aqui: ID 23) com o mecanismo de acordo, você pode usá-la para assinar:

$ 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