En esta guía, se proporcionan comandos pkcs11-tool
de muestra para usar una clave de Cloud HSM en
Debian 11 (Bullseye) con la biblioteca PKCS #11. Es posible que los comandos incluidos en estas instrucciones requieran cambios según tu SO o distribución de Linux.
Antes de comenzar
Antes de continuar, completa los pasos que se indican en Cómo usar una clave de Cloud HSM con OpenSSL.
Usa la encriptación y desencriptación simétricas
En las siguientes secciones, se muestra cómo encriptar y desencriptar con una clave de encriptación simétrica, OpenSSL y pkcs11-tool.
Requisitos previos
Crea una clave de encriptación simétrica sin procesar de Cloud HSM. Para crear una clave de Cloud HSM, configura el nivel de protección a HSM mientras se crea una clave nueva.
Toma nota del algoritmo de encriptación simétrica sin procesar que elijas para la clave. Cada algoritmo tiene sus propios requisitos para el padding, los vectores de inicialización y los datos autenticados adicionales.
Crea un archivo de entrada que contenga los datos que deseas encriptar.
Encriptar
Para encriptar un archivo de texto, ejecuta el siguiente comando:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --encrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file INPUT_TEXT_FILE_PATH \
--output-file ENCRYPTED_TEXT_FILE_PATH
Reemplaza lo siguiente:
PATH_TO_LIBKMSP11_SO
: La ruta de acceso al módulo PKCS#11, por ejemplo,/usr/local/lib/libkmsp11.so
.MECHANISM
: Es el mecanismo que se usará, según la clave. algoritmo, por ejemplo,AES-CBC-PAD
.HSM_KEY_NAME
: Es el nombre de la clave de Cloud HSM que se usará para la encriptación.INITIALIZATION_VECTOR
: Es el valor del vector de inicialización que se usará como parte de la encriptación.INPUT_TEXT_FILE_PATH
: Es la ruta de acceso al archivo de entrada que deseas encriptar.ENCRYPTED_TEXT_FILE_PATH
: Es la ruta en la que deseas guardar. el archivo de texto encriptado.
Decrypt
Para desencriptar un archivo de texto, ejecuta el siguiente comando:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --decrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file ENCRYPTED_TEXT_FILE_PATH \
--output-file DECRYPTED_TEXT_FILE_PATH
Reemplaza lo siguiente:
PATH_TO_LIBKMSP11_SO
: Es la ruta de acceso a PKCS#11. módulo, por ejemplo,/usr/local/lib/libkmsp11.so
.MECHANISM
: Es el mecanismo que se usará, según el algoritmo de la clave, por ejemplo,ECDSA
.HSM_KEY_NAME
: Es el nombre de la clave de Cloud HSM. que se usó para encriptar el archivo que deseas desencriptar.INITIALIZATION_VECTOR
: el valor de la inicialización que se usará como parte de la encriptación.ENCRYPTED_TEXT_FILE_PATH
: Es la ruta de acceso al archivo que deseas desencriptar.DECRYPTED_TEXT_FILE_PATH
: Es la ruta en la que deseas guardar. el archivo de texto desencriptado.
Usa la encriptación y desencriptación asimétrica
En las siguientes secciones, se muestra cómo encriptar y desencriptar con una clave de encriptación asimétrica, OpenSSL y pkcs11-tool.
Requisitos previos
Crea una desencriptación asimétrica de Cloud HSM clave y descarga su propia clave .
Crea un archivo de entrada con algún texto.
echo Hello World! >> input.txt
Encriptar
Para encriptar un archivo de texto, ejecuta el siguiente comando:
openssl pkeyutl -in INPUT_TEXT_FILE_PATH -encrypt -pubin \
-inkey PUBLIC_KEY \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 > ENCRYPTED_TEXT_FILE_PATH
Reemplaza lo siguiente:
INPUT_TEXT_FILE_PATH
: Es la ruta de acceso al archivo de entrada que deseas encriptar.PUBLIC_KEY
: Es la ruta de acceso a la clave pública.ENCRYPTED_TEXT_FILE_PATH
: Es la ruta en la que deseas guardar. el archivo de texto encriptado.
Decrypt
Para desencriptar un archivo de texto, ejecuta el siguiente comando:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO \
--decrypt --mechanism RSA-PKCS-OAEP --slot 0 --hash-algorithm=sha256 \
--mgf MGF1-SHA256 --label HSM_KEY_NAME --type privkey \
-i ENCRYPTED_TEXT_FILE_PATH \
-o OUTPUT_TEXT_FILE_PATH
Reemplaza lo siguiente:
PATH_TO_LIBKMSP11_SO
: Es la ruta de acceso al módulo PKCS#11. (ruta/a/libkmsp11.so).HSM_KEY_NAME
: Es el nombre de la clave de Cloud HSM que corresponde a la clave pública que se usa para encriptar el archivo de texto.ENCRYPTED_TEXT_FILE_PATH
: Es la ruta de acceso al archivo que deseas desencriptar.OUTPUT_TEXT_FILE_PATH
: Es la ruta en la que deseas guardar. el resultado desencriptado.
Firma y verifica
En las siguientes secciones, se muestra cómo firmar y verificar con una clave de firma asimétrica y pkcs11-tool.
Requisitos previos
Crea una clave de firma asimétrica de Cloud HSM.
Crea un archivo con los datos de entrada con hash que deseas firmar.
Firmar
Para firmar un archivo de texto, ejecuta el siguiente comando:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --sign \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
-o OUTPUT_SIGNATURE_FILE_PATH
Reemplaza lo siguiente:
PATH_TO_LIBKMSP11_SO
: Es la ruta de acceso al módulo PKCS#11. por ejemplopath/to/libkmsp11.so
.HSM_KEY_NAME
: Es el nombre de la clave de Cloud HSM. que quieres usar para firmar.MECHANISM
: Es el mecanismo que se usará, según la clave. de codificador-decodificador. Por ejemplo,ECDSA
INPUT_TEXT_FILE_PATH
: Es la ruta de acceso al archivo de entrada que deseas. firmar.OUTPUT_SIGNATURE_FILE_PATH
: Es la ruta a la que deseas ir. guardar el archivo de firma.
Verificar
Para verificar un archivo de firma, ejecuta el siguiente comando:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --verify \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
--signature-file SIGNATURE_FILE_PATH
Reemplaza lo siguiente:
PATH_TO_LIBKMSP11_SO
: La ruta de acceso al módulo PKCS#11, por ejemplo,path/to/libkmsp11.so
.HSM_KEY_NAME
: Es el nombre de la clave de Cloud HSM que se usó para generar la firma que deseas verificar.MECHANISM
: Es el mecanismo que se usará, según el algoritmo de claves. Por ejemplo,ECDSA
INPUT_TEXT_FILE_PATH
: La ruta de acceso al archivo que se firmados anteriormente.SIGNATURE_FILE_PATH
: Es la ruta de acceso al archivo de firma.