加密用于确保内存和系统信息库中的服务器数据以及在 Identity Manager 服务器和网关之间传送的所有数据的机密性和完整性。
以下各节提供了有关如何在 Identity Manager 服务器和网关中使用和管理加密的详细信息,并阐述了有关服务器和网关加密密钥的问题。
下表显示了在 Identity Manager 产品中受加密保护的数据类型,包括用于保护每种类型数据的加密器。
表 12–1 受加密保护的数据类型
数据类型 |
RSAMD5 |
NIST Triple DES168 位密钥 (DESede/ECB/NoPadding) |
PKCS#5 基于密码的加密 56 位密钥 (PBEwithMD5andDES) |
---|---|---|---|
服务器加密密钥 |
默认 |
配置选项 |
|
网关加密密钥 |
默认 |
配置选项1 |
|
字典策略词 |
是 | ||
用户密码 |
是 | ||
用户密码历史记录 |
是 | ||
用户答案 |
是 | ||
资源密码 |
是 | ||
资源密码历史记录 |
是 | ||
服务器和网关之间的所有有效负载 |
是 |
请阅读以下各节,以了解有关服务器加密密钥源、位置、维护和使用的常见问题的答案。
问题:服务器加密密钥来自哪里?
回答:服务器加密密钥是对称的 triple-DES 168 位密钥。
服务器支持以下两类密钥:
默认密钥。此密钥已编译为服务器代码。
随机生成的密钥。此密钥可以在服务器初始启动或当前密钥的安全性出问题时生成。
在哪里维护服务器加密密钥?
回答:在系统信息库中维护服务器加密密钥。在任一给定系统信息库中都会有许多数据加密密钥。
问题:服务器如何知道使用哪个密钥对已加密的数据进行解密和重新加密?
回答:存储于系统信息库中的每一加密数据都以服务器加密密钥(用于加密该数据)的 ID 为前缀。将包含加密数据的对象读入内存后,Identity Manager 使用与加密数据的 ID 前缀相关联的服务器加密密钥进行解密,然后使用相同的密钥重新加密(如果数据已更改)。
问题:如何更新服务器加密密钥?
回答:Identity Manager 提供了名为“管理服务器加密”的任务。
此任务允许授权的安全管理员执行多项密钥管理任务,包括:
生成新的“当前”服务器密钥
使用“当前”服务器密钥按类型重新加密包含已加密数据的现有对象
有关如何使用此任务的详细信息,请参见本章中的管理服务器加密。
问题:如果更改“当前”服务器密钥,则会对现有加密数据造成什么样的影响?
回答:没有影响。仍将使用现有加密数据 ID 前缀对应的密钥对现有加密数据进行解密或重新加密。如果生成了新的服务器加密密钥并设置为“当前”密钥,则任何要加密的新数据都将使用该新服务器密钥。
为避免出现多密钥问题,以及为了更好地维护数据的完整性,可以使用“管理服务器加密”任务重新加密所有带有“当前”服务器加密密钥的现有加密数据。
问题:如果导入的加密数据没有可用的加密密钥,此时会出现什么情况?
回答:如果导入包含加密数据的对象,但加密该数据所使用的密钥不在要导入该数据的系统信息库中,则仍会导入该数据,但不进行加密。
问题:怎样保护服务器密钥?
回答:如果未将服务器配置为使用基于密码的加密 (Password-based Encryption, PBE)(PKCS#5 加密,使用 pbeEncrypt 属性或“管理服务器加密”任务在系统配置对象中设置),则使用默认密钥对服务器密钥进行加密。对于安装的任何 Identity Manager,设置的默认密钥都是相同的。
如果将服务器配置为使用 PBE 加密,则每次启动服务器时都将生成 PBE 密钥。通过提供一个密码(由特定于服务器的秘密生成)作为 PBEwithMD5andDES 加密器来生成 PBE 密钥。PBE 密钥仅在内存中维护并从不具有持久性。另外,PBE 密钥对于共享一个公共系统信息库的所有服务器都是相同的。
要启用服务器密钥的 PBE 加密,加密器 PBEwithMD5andDES 必须可用。默认情况下,Identity Manager 不包括此加密器,但此加密器采用 PKCS#5 标准,许多 JCE 提供者实现(例如由 Sun 和 IBM 提供的实现)中都提供了该标准。
问题:我可以导出服务器密钥以安全地存储在外部吗?
回答:是。如果服务器密钥是 PBE 加密,则在导出之前,将使用默认密钥对这些密钥进行解密和重新加密。这使得它们可以独立于本地服务器 PBE 密钥而稍后被导入同一或其他服务器中。如果使用默认密钥对服务器密钥进行加密,则在导出之前不需要进行任何事先的处理。
将密钥导入服务器后,如果该服务器配置为 PBE 密钥,则将解密这些密钥。然后,如果该服务器配置为 PBE 密钥加密,则使用本地服务器的 PBE 密钥重新加密这些密钥。
问题:将对服务器和网关之间的哪些数据进行加密?
回答:在服务器和网关之间传送的所有数据(有效负载)都由针对每个服务器-网关会话随机生成的对称 168 位密钥进行 triple-DES 加密。
请阅读以下各节,以了解有关网关源、存储、分发和保护的常见问题的答案。
问题:加密或解密数据的网关密钥来自哪里?
回答:每次 Identity Manager 服务器连接到网关时,初始握手都将生成一个新的随机 168 位 triple-DES 会话密钥。此密钥将用于加密或解密随后在服务器和网关之间传送的所有数据。对于每个服务器/网关对,生成的会话密钥都是唯一的。
问题:如何将网关密钥分发到网关?
回答:会话密钥由服务器随机生成,然后在服务器和网关之间安全地进行交换,方法是使用作为服务器到网关初始握手的一部分的共享机密主密钥对会话密钥进行加密。
在初始握手期间,服务器会查询网关来确定网关支持的模式。网关可以以两种模式操作
默认模式。服务器到网关的初始协议握手使用编译为服务器代码的默认 168 位 triple-DES 密钥加密。
安全模式。生成针对每个共享系统信息库的随机 168 位密钥 triple-DES 网关密钥,并作为初始握手协议的一部分在服务器和网关之间进行通信。此网关密钥与其他加密密钥一样存储于服务器系统信息库中,并存储在网关的本地注册表中。
当服务器在安全模式下联系网关时,服务器将使用网关密钥加密测试数据并将其发送到网关。然后,网关将尝试解密测试数据,并将一些网关特有数据添加到测试数据中,接着重新加密这些数据并将其发送回服务器。如果服务器可以成功解密测试数据和网关特有数据,则服务器将生成服务器-网关会话唯一密钥,并使用网关密钥对其进行加密,然后将其发送到网关。收到之后,网关将解密会话密钥并保留该密钥,以供在服务器到网关会话中使用。如果服务器无法成功解密测试数据和网关特有数据,则服务器将使用默认密钥加密网关密钥并将其发送到网关。网关将使用默认密钥中已编译好的网关密钥来解密网关密钥,并将该网关密钥存储于网关的注册表中。然后,服务器将使用网关密钥对服务器-网关会话唯一密钥进行加密,并将其发送到网关以供在服务器到网关会话中使用。
之后,网关将仅接受已使用网关密钥加密了会话密钥的服务器请求。启动时,网关将检查注册表中的密钥。如果密钥存在,网关将使用该密钥。如果密钥不存在,则网关将使用默认密钥。一旦网关在注册表中设置了密钥,网关将不再允许使用默认密钥建立会话,这将阻止某些人设置流氓服务器并建立到网关的连接。
我可以更新网关密钥(用于加密或解密服务器到网关有效负载)吗?
回答:Identity Manager 提供了名为“管理服务器加密”的任务,它允许授权的安全管理员执行多项密钥管理任务,包括生成新的“当前”网关密钥并使用该“当前”网关密钥更新所有网关。这是用于加密每个会话密钥(用于保护在服务器和网关之间传送的所有有效负载)的密钥。将使用默认密钥或 PBE 密钥对新生成的网关密钥进行加密,具体取决于系统配置(编辑 Identity Manager 配置对象)中 pbeEncrypt 属性的值。
问题:在服务器、网关的什么地方存储网关密钥?
回答:在服务器上,网关密钥就像服务器密钥一样存储在系统信息库中。在网关上,网关密钥存储于本地注册表主键中。
问题:怎样保护网关密钥?
回答:保护网关密钥的方式与保护服务器密钥相同。如果将服务器配置为使用 PBE 加密,则网关密钥将使用 PBE 生成的密钥进行加密。如果该选项为 False,则将使用默认密钥加密。有关详细信息,请参见有关服务器加密密钥的常见问题。
问题:我可以导出网关密钥以安全地存储在外部吗?
回答:可以通过“管理服务器加密”任务导出网关密钥,就像导出服务器密钥一样。有关详细信息,请参见有关服务器加密密钥的常见问题。
问题:如何销毁服务器和网关密钥?
回答:通过从服务器系统信息库中删除服务器和网关密钥就可以销毁它们。请注意,只要仍在使用该密钥加密服务器数据或仍有网关依赖该密钥,就不应该删除该密钥。通过执行 "Manage Server Encryption" 任务,可以使用当前服务器密钥重新加密所有服务器数据,并将当前网关密钥与所有网关同步以确保在删除任何旧密钥之前不再使用旧密钥。