将 Cloud HSM 密钥与 pkcs11-tool 结合使用

本指南提供了一些 pkcs11-tool 命令示例,以便您使用 PKCS #11 库在 Debian 11 (Bullseye) 上使用 Cloud HSM 密钥。文件中包含的命令 您可能需要根据操作系统或 Linux 发行版对这些说明进行更改。

准备工作

在继续之前,请先完成 将 Cloud HSM 密钥与 OpenSSL 搭配使用

使用对称加密和解密

以下各部分介绍如何使用对称密钥进行加密和解密 OpenSSL 和 pkcs11-tool

前提条件

  1. 创建 Cloud HSM 原始对称加密密钥。如需创建 Cloud HSM 密钥,请在创建新密钥时将保护级别设置为 HSM

  2. 记下您为密钥选择的原始对称加密算法。每种算法都有自己的 填充、初始化矢量和其他经过身份验证的数据。

  3. 创建包含要加密的数据的输入文件。

加密

如需加密文本文件,请运行以下命令:

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

替换以下内容:

  • PATH_TO_LIBKMSP11_SO:PKCS#11 的路径 模块,例如 /usr/local/lib/libkmsp11.so
  • MECHANISM:要使用的机制(基于密钥算法),例如 AES-CBC-PAD
  • HSM_KEY_NAME:Cloud HSM 密钥的名称 用于加密
  • INITIALIZATION_VECTOR:初始化的值 矢量数据。
  • INPUT_TEXT_FILE_PATH:所需输入文件的路径 进行加密。
  • ENCRYPTED_TEXT_FILE_PATH:您要保存加密文本文件的路径。

解密

如需解密文本文件,请运行以下命令:

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

替换以下内容:

  • PATH_TO_LIBKMSP11_SO:PKCS#11 的路径 模块,例如 /usr/local/lib/libkmsp11.so
  • MECHANISM:要使用的机制,基于键 算法,例如 ECDSA
  • HSM_KEY_NAME:Cloud HSM 密钥的名称 。
  • INITIALIZATION_VECTOR:初始化的值 矢量数据。
  • ENCRYPTED_TEXT_FILE_PATH:所需文件的路径 解密。
  • DECRYPTED_TEXT_FILE_PATH:要保存的路径 解密后的文本文件。

使用非对称加密和解密

以下部分介绍了如何使用非对称加密密钥、OpenSSL 和 pkcs11-tool 进行加密和解密。

前提条件

  1. 创建 Cloud HSM 非对称解密 密钥下载其公钥, 键。

  2. 创建一个包含一些文本的输入文件。

    echo Hello World! >> input.txt
    

加密

如需加密文本文件,请运行以下命令:

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

替换以下内容:

  • INPUT_TEXT_FILE_PATH:您要加密的输入文件的路径。
  • PUBLIC_KEY:公钥的路径。
  • ENCRYPTED_TEXT_FILE_PATH:要保存的路径 加密的文本文件。

解密

如需解密文本文件,请运行以下命令:

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

替换以下内容:

  • PATH_TO_LIBKMSP11_SO:PKCS#11 模块的路径(path/to/libkmsp11.so)。
  • HSM_KEY_NAME:Cloud HSM 密钥的名称 (对应于加密文本文件的公钥)。
  • ENCRYPTED_TEXT_FILE_PATH:您要解密的文件的路径。
  • OUTPUT_TEXT_FILE_PATH:要保存解密输出的路径。

签名并验证

以下部分介绍了如何使用非对称签名密钥和 pkcs11 工具进行签名和验证。

前提条件

  1. 创建 Cloud HSM 非对称签名密钥

  2. 创建一个文件,其中包含您要签名的经过哈希处理的输入数据。

签名

如需为文本文件签名,请运行以下命令:

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

替换以下内容:

  • PATH_TO_LIBKMSP11_SO:PKCS#11 模块的路径,例如 path/to/libkmsp11.so
  • HSM_KEY_NAME:Cloud HSM 密钥的名称 签名。
  • MECHANISM:要使用的机制,基于键 算法。例如 ECDSA
  • INPUT_TEXT_FILE_PATH:您要签名的输入文件的路径。
  • OUTPUT_SIGNATURE_FILE_PATH:您要 保存签名文件。

验证

如需验证签名文件,请运行以下命令:

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

替换以下内容:

  • PATH_TO_LIBKMSP11_SO:PKCS#11 模块的路径,例如 path/to/libkmsp11.so
  • HSM_KEY_NAME:用于生成要验证的签名的 Cloud HSM 密钥的名称。
  • MECHANISM:要使用的机制,基于密钥算法。例如 ECDSA
  • INPUT_TEXT_FILE_PATH:之前存储的 之前已签过名。
  • SIGNATURE_FILE_PATH:签名文件的路径。