Provided by: openssl-pkcs11-sign-provider_1.0.1-0ubuntu3_amd64 bug

NAME

       pkcs11sign - OpenSSL PKCS#11 sign provider module

DESCRIPTION

       The  pkcs11-sign-provider  implements  the  OpenSSL  3.0  provider  interface  and provides cryptographic
       operation on asymmetric key material,  available  in  PKCS#11  infrastructure  (e.g.  opencryptoki).  The
       pkcs11-sign-provider  will  register  a  key  storage  for  PKCS#11  URIs  (RFC 7512). All keys which are
       referenced by a PKCS#11 URI will be handled by the pkcs11-sign-provider.  Other keys  (e.g.   file-based)
       are  forwarded by the pkcs11-sign-provider to another OpenSSL-Provider, e.g. the built-in OpenSSL default
       provider.

       The pkcs11-sign-provider will only process algorithms with existing  (private)  asymmetric  keys  in  the
       related PKCS11-token. All other actions will be handled by the forward-provider as clear-key operations.

       The  pkcs11-sign-provider  does  not support key creation or removal of PKCS#11 keys. For key management,
       external tools are required.

       Supported PKCS#11 mechanisms for RSA:

       • CKM_RSA_PKCS

       • CKM_RSA_PKCS_OAEP

       • CKM_RSA_PSS

       • CKM_RSA_X_509

       Supported PKCS#11 mechanisms for EC:

       • CKM_ECDSA

APPLICATION INTERFACE

       An application, which should  use  asymmetric  keys  in  PKCS#11  infrastructure,  must  use  an  OpenSSL
       configuration  for  the  pkcs11-sign-provider  and  refer  to the keys by an PKCS#11 URI. The rest of the
       application should not need any changes.

   Configuration
       If the system-wide OpenSSL configuration does not configure the pkcs11-sign-provider, the application can
       use  its  own  OpenSSL  configuration file and refer to it in its environment variable OPENSSL_CONF.  For
       more details about the configuration see pkcs11sign.cnf(5).

   Key references
       Instead of referring to a private key file (e.g. "file:/path/to/key.pem"), the application should use the
       PKCS#11 URI of the key ("pkcs11:<path-attributes>?<queue-attributes>").

       The  PKCS#11  URI should specify path parameters of the key, at least the ID or label of the key, as well
       as its type. The key reference should be unique.

       Example for a PKCS#11 URI to a private key:
           pkcs11:token=mytok;object=ec-key;type=private&pin-source=/path/to/token-pinfile.txt

       Note   The current version of pkcs11-sign-provider supports only the queue parameters pin-value and  pin-
              source.  All other queue parameters are not yet supported.

   PIN handling
       The  PIN is required to login to a PKCS#11 token, to manage or work with sensitive PKCS#11 objects (keys)
       and should not be proposed to anyone without a need-to-know.

       An application, which is using key material in a PKCS#11 token, has  such  a  need-to-know,  so  the  PIN
       should be under control of the application.

       The pkcs11-sign-provider supports the PIN handling in the PKCS#11 URI with the queue attributes pin-value
       and pin-source.  While the first one contains the plain-text PIN, the latter one refers to a file,  which
       contains  the  PIN.  It is highly recommended to use the file reference and set the access permissions of
       the PIN file accordingly.

   PIN file
       The PIN gives access to a PKCS#11 token and its objects (keys, certificates, data). It should be  treated
       as  a  secret  information  and  only the application should have access to it. With the right setup, the
       usage of a PIN file provides the best protection for the PIN.

       Rules for the PIN file:

       • one PIN per PIN file

       • the PIN file must only contain the PIN, no comments, no linefeed or other characters

       • the PIN file must be readable by the application

       • the PIN file should not be writable by the application

       • the PIN file must not be readable nor writable by other unprivileged users.

       The following snippet shows, how to create a protected PIN file. It will prompt for the PIN and write  it
       to a file, which is only accessible for the user.

           PINFILE="/path/to/my_pinfile.txt"
           touch "${PINFILE}"
           chmod u=rw,g=,o= "${PINFILE}"
           (read -rsp "Enter PIN: " PIN; echo -n ${PIN}) > "${PINFILE}"

       If  required, the file ownership can later be changed to another user and group. This would require extra
       capabilities (e.g. by using "sudo").

SEE ALSO

       pkcs11sign.cnf(5), EVP(7)

Copyright

       Copyright © International Business Machines Corp. 2022, 2023