IBM Cloud Docs
认证

认证

认证是缺省情况下在虚拟实例创建时启动的过程,可确保虚拟服务器实例映像确实由 IBM构建,并且未对其进行修改。 此过程还提供信息,并允许验证在部署时提供给实例的任何数据。

使用 IBM Hyper Protect Container Runtime 映像创建虚拟服务器实例时,该映像使用受加密保护并由 IBM Secure Execution 签署的初始文件系统。 有关更多信息,请参阅 使用 LinuxONE进行保密计算。 要了解有关认证过程的更多信息,请参阅此 视频

引导过程会创建唯一的根磁盘加密密钥,以确保对根磁盘的保护。 要执行认证,虚拟服务器实例映像包含认证-签名密钥以及构建时根分区的散列。 引导过程将验证根分区。 如果根分区的散列不匹配,那么引导过程不会继续,因为它假定在引导之前已修改映像。 认证签名密钥是由 Hyper Protect Crypto Services中维护的 IBM 根密钥签署的随机 RSA 4 K 密钥。 IBM 根密钥由 Digicert 签署。

在云中部署虚拟服务器实例期间,将创建认证记录。 它包含以下项的散列:

  • 原始基本图像
  • 第一次引导时的根分区
  • 构建时的根分区
  • 云初始化选项

认证记录由认证密钥签名。 作为额外的保护层,您可以在部署期间提供公用密钥,针对该公用密钥加密认证记录。 该公开密钥的哈希值会被添加到证明记录中,因此只有合规机构才能查看该记录。 通过哈希值可以很容易地识别预期的授权。

在将任何工作负载上载到实例之前,需要验证认证记录。 创建实例后,可以验证所创建实例中的认证记录。 您的实例必须有权访问 /var/hyperprotect 目录。 如果是这样,请遵循以下过程:

  • 认证记录由认证签名密钥进行签名。
  • 认证签名密钥可由 IBM 中间证书确认。 IBM中间证书由 DigiCert,签署,并由 DigiCert,的根证书证明,从而完成信任链。

加密和认证证书由 IBM 中间证书签署,而 IBM Digicert 中间证书签署加密和认证证书。 IBM Digicert 中间证书由 DigiCert 可信根 G4 签署。 有关证书的更多信息,请参阅 DigiCert 受信任的根授权证书

使用以下过程来验证认证记录和散列:

  • 从 VPC 实例的 Hyper Protect Virtual Servers 获取认证记录 se-checksums.txt 和签名文件 se-signature.bin。 为此,您可以实现容器以提供认证记录和签名文件。 认证记录和签名文件可供 /var/hyperprotect 目录中的容器使用。
  • 获取 IBM 认证证书。 下表根据映像的版本列出了认证证书的到期日期。

从 2025 年 3 月 25 日起,证书链接将发生变化。

认证证书有效期
映像版本 证书链接 到期日期
ibm-hyper-protect-container-runtime-1-0-s390x-23 证书 2026 年 4 月 25 日
ibm-hyper-protect-container-runtime-1-0-s390x-22 证书 2026 年 3 月 21 日
ibm-hyper-protect-container-runtime-1-0-s390x-21 证书 2026年3月4日
ibm-hyper-protect-container-runtime-1-0-s390x-20 证书 2025 年 11 月 20 日
ibm-hyper-protect-container-runtime-1-0-s390x-19 证书 2025 年 9 月 19 日
ibm-hyper-protect-container-runtime-1-0-s390x-18 证书 2025 年 8 月 1 日
ibm-hyper-protect-container-runtime-1-0-s390x-17 证书 2025 年 7 月 4 日
  • 遵循 此处 的指示信息来验证认证证书。

  • 使用以下命令从认证证书中提取认证公用密钥:

    openssl x509 -pubkey -noout -in ibm-hyper-protect-container-runtime-1-0-s390x-23-attestation.crt > contract-public-key.pub
    
  • 验证认证记录的签名:

    openssl sha256 -verify contract-public-key.pub -signature se-signature.bin se-checksums.txt
    

    必须在 解密认证文件 上完成签名验证。

  • 现在,您可以使用认证记录中的散列进行验证。

如果您提供了用于加密认证记录的公用密钥,那么以下脚本可能有助于对记录进行解密。

#!/bin/bash
#
# Example script to decrypt attestation document.
#
# Usage:
#   ./decrypt-attestation.sh <rsa-priv-key.pem> [file]
#
# Token Format:
#   hyper-protect-basic.<ENC_AES_KEY_BASE64>.<ENC_MESSAGE_BASE64>


RSA_PRIV_KEY="$1"
if [ -z "$RSA_PRIV_KEY" ]; then
    echo "Usage: $0 <rsa-priv-key.pem>"
    exit 1
fi
INPUT_FILE="${2:-se-checksums.txt.enc}"
TMP_DIR="$(mktemp -d)"
#trap 'rm -r $TMP_DIR' EXIT


PASSWORD_ENC="${TMP_DIR}/password_enc"
MESSAGE_ENC="${TMP_DIR}/message_enc"


# extract encrypted AES key and encrypted message
cut -d. -f 2 "$INPUT_FILE"| base64 -d > "$PASSWORD_ENC"
cut -d. -f 3 "$INPUT_FILE"| base64 -d > "$MESSAGE_ENC"

# decrypt password
PASSWORD=$(openssl pkeyutl -decrypt -inkey "$RSA_PRIV_KEY" -in "$PASSWORD_ENC")

# decrypt message
echo -n "$PASSWORD" | openssl aes-256-cbc -d -pbkdf2 -in "$MESSAGE_ENC" -pass stdin --out se-checksums.txt

对于 Docker 容器,可以通过在 Docker 容器中安装 /var/hyperprotect 来访问 decrypt-attestation.sh 文件。 例如

 volumes:
      - "/var/hyperprotect/:/var/hyperprotect/:ro"

对于 Podman 容器,可以通过在 Podman 容器中安装 /var/hyperprotect 来访问 decrypt-attestation.sh 文件。 例如

 volumeMounts:
     - name: attestation
       readOnly: true
       mountPath: /var/hyperprotect:Z,U

认证文档

认证文档位于 /var/hyperprotect/se-checksums.txt 上的 Hyper Protect Virtual Servers for VPC 实例中。 其他相关文件也位于同一目录中。

/var/hyperprotect/ 目录中提供了以下信息:

/var/hyperprotect/
|-- cidata
|   |-- meta-data
|   |-- vendor-data
|-- se-checksums.txt
|-- se-signature.bin
|-- se-version
|-- user-data.decrypted

校验和是消息摘要的 SHA256,可使用以下 Linux 命令行实用程序进行计算:

sha256sum <file>

以下片段是认证文档的示例:

25.4.0
Machine Type/Plant/Serial: 3932/02/8A018
Image age: 11 days since creation.
Ultravisor CUID: 0x580f2286ec628711ec828b17b31a572c
Host HKD: HKD-3932-028A018.crt (HKD-3932-028A018.crt)
HKD is valid until: Feb 27 18:11:39 2025 GMT
AP device present: true
Number of configured APs: 1
e23a548070908ae09eb8b42df1865c2bc03c2f7135ddbae56b9064ec015fc867 AP(1):secret
84ae048bc5d88e99f6ec13b4c4ba3e2ffe5f10285f7dd71a65ea99eaa1838ce0 root.tar.gz
3e13f7658ef790dbc040e90ff4f8d537c9c10da879b0b16df9e98265c7b5170a baseimage
348f4e1c9ff891956ab23f4dbec91b3cc46a761afc1187d06c2d77ef87ed44b9 /dev/disk/by-label/cidata
58d327a44a3a13a679b153900ab215c4a163c7f9ca8f4152074027f9d1d2d33a cidata/meta-data
c2530f161027a25e948a82b50e1b7fd4a0df74449d0317c315e30d9e089f2f23 cidata/user-data
5a2b8897d00e4f03436494a36304776a637bf3f134ae10107f2a47e9859ed0fb cidata/vendor-data
a17a6ea7d8fdd9831c345510c1ceb4823c929ccef89bfab3d43fdf1b6a87871f contract:attestationPublicKey
23364d8558c5d151e15963543c82c8127d05f2635720fd559a76e5cc20290ab7 contract:env
e568d46f563a0afc41059f71e4c9e9eab26c4f4dffde24701dc3e7d5b14a16ae contract:workload

Machine Type/Plant/Serial

Machine Type/Plant/Serial 是获取安全执行 VM 的主机密钥文档所需的信息。 它反映了安全执行 VM 当前正在哪个机器上运行。

baseimage

baseimage 是 IBM 内部 QEMU Copy On Write Version 2 (QCOW2) 文件,用作 Hyper Protect Container Runtime 映像的大多数操作系统文件的源。 仅在映像构建时由启用程序进程使用。 启用程序将此源与其他 Debian 包一起使用,以创建 root.tar.gz 和加密的安全执行内核或 "initrd" 映像。

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-23 baseimage 的 shasum:

3e13f7658ef790dbc040e90ff4f8d537c9c10da879b0b16df9e98265c7b5170a baseimage

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-22 baseimage 的 shasum:

538170f79b7bd44553847e81afce7ae14c8ea8857df243e4f8656c9d06d42c18 baseimage

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-21 baseimage 的shasum:

538170f79b7bd44553847e81afce7ae14c8ea8857df243e4f8656c9d06d42c18 baseimage

以下是ibm-hyper-protect-container-runtime-1-0-ibm-hyper-protect-container-runtime-1-0-s390x-20-20 "baseimage 的和值:

080f817231fe4bc40021d24e20af9f1135a36711047212f9374664b86ab406ac baseimage

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-19 baseimage 的摘要:

b3fb54a3bb57fcbba070c456d7394fb5e7a4f9b1febaec0efc32c5aa0e325071 baseimage

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-18 baseimage 的摘要:

f9940321d043d133ddf2f22cd4794bc56be9d54b2e9c7893a6d6a4813635024c baseimage

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-17 和 ibm-hyper-protect-container-runtime-1-0-s390x-16 baseimage 的 shasum:

f9940321d043d133ddf2f22cd4794bc56be9d54b2e9c7893a6d6a4813635024c baseimage

root.tar.gz

root.tar.gz 是启用了最终安全执行的 IBM Hyper Protect Container Runtime 映像的一部分,并且包含所有操作系统文件。 它作为 /boot/root.tar.gz 存储在映像的第一个分区 (引导分区) 上。

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-23 root.tar.gz 的 shasum。

84ae048bc5d88e99f6ec13b4c4ba3e2ffe5f10285f7dd71a65ea99eaa1838ce0 root.tar.gz

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-22 root.tar.gz 的 shasum。

ff09f53f19d0f82ca24d4f2d5277c851516734c3d55ae7f8db47cde378a51ec9 root.tar.gz

以下是 ibm-hyper-protect-container-runtime-1-0-s390x-21 root.tar.gz 的shasum。

024ff109be23e1e4e7b9f07dc553afc60a5a93645939eedf2a936930cc8a44ae root.tar.gz

以下是ibm-hyper-protect-container-runtime-1-0-ibm-hyper-protect-container-runtime-1-0-s390x-20-20 "root.tar.gz 的和值。

ad65a3820d4a233c84e6d201ce537b8020435ccefe26682809da5ef9b176b8ae root.tar.gz

以下是ibm-hyper-protect-container-runtime-1-0-ibm-hyper-protect-container-runtime-1-0-s390x-19-19 "root.tar.gz 的和值。

d8e069345618143ce0948044cab27ba52ffc53eaba987d353bb5ab59f3ad2390 root.tar.gz

以下是ibm-hyper-protect-container-runtime-1-0-ibm-hyper-protect-container-runtime-1-0-s390x-18-18 "root.tar.gz 的和值。

4802242b82dce78d11c4b02129a9b9c1e62598b1cb8073f8e7b097449644bbb4 root.tar.gz

以下是ibm-hyper-protect-container-runtime-1-0-s390x-17和ibm-hyper-protect-container-runtime-1-0-s390x-16'root.tar.gz 的 shasum。

4802242b82dce78d11c4b02129a9b9c1e62598b1cb8073f8e7b097449644bbb4 root.tar.gz

/dev/disk/by-label/cidata

/dev/disk/by-label/cidata 是连接到正在运行的实例的块设备,该实例包含由 IBM Cloud® Virtual Private Cloud (VPC) 提供的 cloud-init 文件。 有关 Cloud-Init 的更多信息,请参阅 用户数据cloud-init 文档

cidata

58d327a44a3a13a679b153900ab215c4a163c7f9ca8f4152074027f9d1d2d33a cidata/meta-data
c2530f161027a25e948a82b50e1b7fd4a0df74449d0317c315e30d9e089f2f23 cidata/user-data
5a2b8897d00e4f03436494a36304776a637bf3f134ae10107f2a47e9859ed0fb cidata/vendor-data

attestationPublicKey

attestationPublicKey 是您提供的公钥,用于对证明文件进行加密。 attestationPublicKey 是用户数据文件的一部分。 可选择对证明文件加密。

a17a6ea7d8fdd9831c345510c1ceb4823c929ccef89bfab3d43fdf1b6a87871f contract:attestationPublicKey

解密认证文档

如果用户数据包含 RSA 公钥(属性:attestationPublicKey),那么验证文档(se-checksums.txt)将使用给定的密钥加密。 加密是通过与合同加密相同的过程完成的。 有关更多信息,请参阅 合同加密。 公用 RSA 密钥本身也可以像合同一样进行加密。

然后,将加密认证文档命名为 se-checksums.txt.enc

对于 Docker 容器,可以通过在 Docker 容器中安装 /var/hyperprotect 来访问 decrypt-attestation.sh 文件。 例如

 volumes:
      - "/var/hyperprotect/:/var/hyperprotect/:ro"

对于 Podman 容器,可以通过在 Podman 容器中安装 /var/hyperprotect 来访问 decrypt-attestation.sh 文件。 例如

 volumeMounts:
     - name: attestation
       readOnly: true
       mountPath: /var/hyperprotect:Z,U

了解认证流程

下图显示了从审计员的角度进行认证以验证部署是否为预期部署的两种方案。 图的左侧显示了植根于第三方认证中心的审计员建立信任的情况。 所使用的任何密钥都保留在 Hyper Protect Crypto Service 中,并根据第三方权限在证书链中进行签名。 Hyper Protect 所使用的构建环境正在使用 IBM Secure Execution Technology 的可信执行环境中运行。

结果是在图的末尾看到的一个安全执行映像,它是一个加密的安全执行映像。 在图右侧,概述了部署的验证。 为此,审计员在 IBM Hyper Protect 实例的加密工作负载合同中包含私钥的公用密钥,只有审计员可以控制该私钥。 此类私钥可通过适当的方法 (例如,Hyper Protect Crypto Service,HSM 或仅随机密钥) 进行保护。 只有在 IBM LinuxONE, 上通过 IBM Secure Execution for Linux 提供的可信执行环境中执行的 Hyper Protect 引导加载程序,才能运行 IBM Cloud Hyper Protect Virtual Servers for IBM Cloud® Virtual Private Cloud 的安全执行映像。 引导装入程序包含用于解密合同的私钥。

在引导期间,将采用多个组件和代码度量的散列,并将其添加到认证记录中。 为了进一步保护此认证记录,将使用审计员提供的公用密钥对记录进行加密。 通过执行此操作,只有审计员能够对认证记录进行解密,并且可以验证部署在封套中的工作负载是否是期望部署到 Hyper Protect Virtual Servers for VPC 实例中的工作负载的预期版本和未篡改版本。

图示验证过程
* 验证
*

后续步骤