本章概述了 OKM-ICSF 集成解决方案。
在 KMS 2.0.x 及更高版本中,Oracle Key Manager (OKM) 群集中的 KMA 会使用其 Sun Cryptographic Accelerator (SCA) 6000 卡生成自己的密钥。一些客户会希望 KMA 使用在外部密钥库中创建和存储的主密钥。
KMS 2.2 引入了“主密钥模式”功能。启用此功能时,OKM 群集将从一组主密钥派生磁带密钥。主密钥在外部密钥库中创建和存储。只需要有磁带、主密钥和出厂默认 OKM 设备,即可进行完整的灾难恢复。
在此解决方案中,外部密钥库位于 IBM 大型机中,使用 TLS/XML 协议进行访问。在 IBM 大型机中支持与此协议一起使用 IBM 集成加密服务工具 (Integrated Cryptography Service Facility, ICSF) 中令牌数据集中存储的密钥。图 1-1 显示了一个典型配置。
OKM 群集定期向 IBM 大型机发出请求,要求创建新的主密钥(在 ICSF 中称为应用程序密钥)并将其返回给 OKM 群集。然后 KMA 将使用这些新的主密钥派生新的磁带密钥。
以下组件组成了集成解决方案并将在本节中进行讨论:
主(应用程序)密钥存储在令牌数据集 (Token Data Set, TKDS) 中,如 IBM ICSF 文档中所定义。TKDS 位于 ICSF 安装选项数据集中。z/OS 系统程序员可以使用 IDCAMS 实用程序创建 TKDS。
TKDS 中存储的密钥是未加密的,但对数据集本身以及可调用的服务和令牌(密钥集)的访问权限是由 RACF 或其他等效工具控制的。可以通过针对主密钥备份和恢复的当前策略来定义对 TKDS 的访问权限。
必须向现有的 Oracle 大型机软件添加一个模块以实施 ICSF 可调用服务代理。此代理允许 OKM 群集调用 PKCS#11 功能以访问密钥库。在 IBM 大型机上使用 z/OS 应用程序透明-传输层安全性 (Application Transparent - Transport Layer Security, AT-TLS) 来实现与 OKM 群集的安全通信。
AT-TLS 是用于 TCP/IP 应用程序的加密解决方案,它对应用程序客户机和服务器是完全透明的。包的加密和解密在 TCP 协议层的 z/OS TCP/IP 地址空间中进行。加密的包有效载荷在被嗅探和跟踪时会难以理解,但送达至应用程序后该有效载荷又变得可读。
在 IBM 大型机上 OKM 群集实施了传输层安全性 (Transport Layer Security, TLS) 协议以便与代理通信。
z/OS 系统程序员将生成并导出两个自签名的 X.509v3 证书和一个 RSA 2048 位公钥对,然后(使用 FTP)将其传递出 IBM 大型机。第一个证书是一个根证书颁发机构 (Certificate Authority, CA) 证书。系统程序员将使用此根 CA 证书生成客户机证书和密钥对。这些证书和密钥对是手动安装在 IBM 大型机中的,并使用 RACF 和 AT-TLS 进行配置,以便代理可以识别有效的 OKM 请求。证书和密钥对的私钥安装在 OKM 群集中,以便其对代理进行身份验证。因此,只有有效 OKM 群集中的 KMA 可以向代理发出请求,并且它们仅接受来自有效代理的响应。
OKM 群集从代理接受主密钥值和 18 个字节的主密钥 ID。它通过将 2 字节的标头与 18 字节的主密钥 ID 和内部生成的 10 字节值连接,创建一个 30 个字节的密钥 ID。然后,将使用主密钥值加密该密钥 ID(填充至 32 个字节),从而创建派生的密钥值。
磁带机和 OKM 群集之间的密钥管理仍然使用当前的 OKM 策略。因此,无需进行固件升级。
OKM 群集控制主密钥生命周期。它将基于当前日期向代理请求当前主密钥值。代理使用 PKCS#11 函数调用序列从 TKDS 检索当前主密钥。如果没有当前主密钥值,OKM 群集将向代理发出创建主密钥的请求。然后,OKM 可重新提交请求以从代理获得当前主密钥值。
OKM 群集会保留它所创建的所有派生密钥和密钥 ID。如果群集中没有针对指定的一组写入数据的密钥,则群集会从密钥 ID 构成主密钥 ID,然后向代理发出检索请求以获取 TKDS 中存储的主密钥值,从而重新派生密钥。然后,OKM 可重新派生密钥值,以使其代理可以读取数据。
只要 TKDS 中归档的主密钥可用,通过此密钥恢复机制可“从零开始”恢复此系统所加密的所有磁带。