2.5. 使用证书系统进行智能卡令牌管理
智能卡 是一个包含加密证书和密钥的硬件加密设备。用户可以参与安全网站访问和安全邮件等操作。它还可作为身份验证设备来登录到 Red Hat Enterprise Linux 等各种操作系统。在服务的整个生命周期中,这些卡或令牌的管理由令牌 管理系统 (TMS)完成。
TMS 环境需要一个证书颁发机构(CA)、令牌密钥服务(TKS)和令牌处理系统(TPS),其中包含用于服务器端密钥生成和密钥归档和恢复的可选密钥恢复授权(KRA)。也可以使用在线证书状态协议(OCSP)与 CA 合作来提供在线证书状态请求。本章概述 TKS 和 TPS 系统,它提供了 Red Hat Certificate System 的智能卡管理功能以及企业安全客户端(ESC),它们可用于用户末尾的 TMS。
图 2.4. TMS 如何管理智能卡
2.5.1. 令牌密钥服务(TKS) 复制链接链接已复制到粘贴板!
Token Key Service (TKS)负责管理一个或多个主密钥。它维护 主密钥,是 TMS 中唯一可访问关键资料的实体。在操作环境中,每个有效的智能卡令牌都包含从主密钥和对卡(CUID)唯一的 ID 派生的一组对称密钥。
最初,制造商在每个智能卡上初始化一组默认(仅每个制造商主密钥)集。部署站点应通过密钥 更改 操作来更改此默认集合,以便在 TKS 上生成新的主密钥。作为 master 密钥的唯一所有者,当给出智能卡的 CUID 时,TKS 能够分离驻留在该特定智能卡上的对称密钥集合,然后允许 TKS 建立基于会话的安全频道,以便在 TMS 和每个智能卡之间进行安全通信。
由于 TKS 管理的数据敏感度,在防火墙后面应设置具有受限访问权限的 TKS。
2.5.1.1. 主键和密钥集 复制链接链接已复制到粘贴板!
TKS 支持多个智能卡密钥集。每个智能卡厂商为其智能卡令牌库存创建不同的默认(开发人员)静态密钥集,TKS 则附带静态密钥集(每个制造商)来 kickstart 空白令牌的格式过程。
在空白智能卡令牌的格式过程中,Java 小程序和唯一派生的对称密钥集将注入到令牌中。每个主密钥(在某些情况下被称为 keySet)在 TKS 配置文件(CS.cfg
)中包含一组条目。每个 TPS 配置文件都包含一个配置,将注册定向到匹配的密钥生成过程的正确 TKS 密钥Set,这基本上负责建立由 TMS 和智能卡令牌之间的一组特定会话密钥保护的安全频道。
在 TKS 上,主密钥由名为 keySets 来定义,供 TPS 引用。在 TPS 上,根据注册类型(内部或外部注册),keySet 在 TPS 配置文件中指定,或者由 keySet Mapping Resolver 决定。
2.5.1.3. 密钥更新(密钥更改) 复制链接链接已复制到粘贴板!
当在工厂上创建与全局平台兼容智能卡时,制造商会将一组默认对称密钥刻录到令牌中。TKS 最初配置为使用这些对称密钥(TKS 配置中每个供应商一个 KeySet 条目)。但是,由于这些对称密钥并不对来自同一库存的智能卡而言是唯一的,而且由于这些对称密钥是已知的密钥,因此强烈建议将这些对称密钥替换为每个令牌的唯一集合,而不是由制造商共享,以限制可操作令牌的实体集合。
通过 Token Key Service 子系统的帮助,对密钥的更改进行。TKS 其中一个功能是覆盖之前讨论的智能卡令牌密钥的主密钥。在 TKS 控制下可以有多个主密钥。
当在令牌上完成此密钥更改过程时,该令牌将来可能会不可用,因为它不再启用了默认密钥。只要置备令牌的 TPS 和 TKS 系统有效,密钥基本上可以正常工作。因此,务必要保留所有主密钥,即使它们都已过时。
您可以在 TKS 中禁用旧的主密钥以更好地控制,除非禁用令牌是您的计划的一部分。支持将令牌密钥恢复到原始密钥集,如果在某些一种测试场景中再次重复使用令牌。
2.5.1.4. APDU 和安全频道 复制链接链接已复制到粘贴板!
Red Hat Certificate System Token Management System (TMS)支持 GlobalPlatform 智能卡规格,其中安全频道实现由令牌密钥系统(TKS)管理主密钥和令牌处理系统(TPS)与智能卡(令牌)与应用程序 协议数据单元(A PDU)通信。
APDU 有两种类型:
- 命令 A PDU,由 TPS 发送到智能卡
- 响应 A PDU,由智能卡发送到 TPS,作为命令 APDU 的响应
当客户端采取行动并连接到证书系统服务器以获取请求时,可能会触发 APDU 命令的启动。安全通道从从 TPS 发送到智能卡令牌的 InitializeUpdate APDU 开头,并与 ExternalAuthenticate APDU 完全建立。然后,令牌和 TMS 都建立一组共享 secret,称为 会话密钥,用于加密和验证通信。这个验证和加密的通信频道称为安全频道。
由于 TKS 是唯一可访问主密钥的唯一实体,该密钥能够派生唯一对称在令牌智能卡密钥集,所以安全频道在 TMS 和每个令牌之间提供适当的保护通信。任何频道的连接都需要为新频道重新建立新的会话密钥。
2.5.2. 令牌处理系统(TPS) 复制链接链接已复制到粘贴板!
令牌处理系统(TPS)是智能卡证书注册的注册机构。它充当用户中心型企业安全客户端(ESC)之间的机制,它与客户端侧智能卡令牌交互,以及证书系统后端子系统,如证书颁发机构(CA)和密钥恢复授权机构(KRA)。
在 TMS 中,需要 TPS 来管理智能卡,因为它是了解 APDU 命令和响应的唯一 TMS 实体。TPS 将命令发送到智能卡,以帮助它们为特定实体(如用户或设备)生成和存储密钥和证书。智能卡操作通过 TPS 进行,并转发到适当的子系统以进行操作,例如 CA 生成证书或 KRA 以生成、存档或恢复密钥。
2.5.2.1. CoolKey 小程序 复制链接链接已复制到粘贴板!
Red Hat Certificate System 包含 Coolkey
Java 小程序,专门用于在 TMS 支持的智能卡令牌上运行。Coolkey
小程序连接到处理证书和密钥相关操作的 PKCSxdg 模块。在令牌格式操作过程中,这个小程序使用安全频道协议注入智能卡令牌,并可以根据配置更新。
2.5.2.2. 令牌操作 复制链接链接已复制到粘贴板!
Red Hat Certificate System 中的 TPS 可用于代表智能卡的最终用户调配智能卡。令牌处理系统支持以下主要令牌操作:
- Token Format - 格式操作负责将正确的 Coolkey 小程序安装到令牌中。小程序提供了一个稍后可以放置后续加密密钥和证书的平台。
Token Enrollment - 注册操作会导致智能卡填充所需的加密密钥和加密证书。本材料允许用户参与诸如安全网站访问和安全邮件等操作。支持两种类型的注册,这些注册是全局配置的:
- 由 TPS 配置集确定 的内部 注册服务注册由配置集 映射解析器 决定。
- 由 TPS 配置集由用户的 LDAP 记录中的条目决定 的外部 注册注册。
- 令牌 PIN 重置 - 令牌 PIN 重置操作允许令牌的用户指定用于登录到令牌的新 PIN,使其可用于执行加密操作。
以下其他操作可以被视为附加操作,或对上面列出的主操作进行固有的操作。它们可根据相关配置或令牌的状态触发。
Key Generation - 每个 PKI 证书由一个公钥/私钥对组成。在 Red Hat Certificate System 中,可以通过两种方式完成密钥生成,具体取决于 TPS 配置集配置 :
- Token Side Key Generation - PKI 密钥对在智能卡令牌上生成。在令牌端生成密钥对 不允许 密钥归档。
- Server Side Key Generation - PKI 密钥对在 TMS 服务器端生成。然后,密钥对会使用安全频道返回到令牌。在服务器端生成密钥对允许密钥归档。
- 证书续订 - 此操作允许之前注册的令牌在重新使用同一密钥时在令牌上重新发布证书。当旧证书过期且您想要创建新证书但维护原始密钥材料时,这非常有用。
证书撤销- 可以根据 TPS 配置集配置或根据令牌状态触发证书撤销。
通常,只有签发证书的 CA 可以撤销它,这可能意味着重新发布 CA 会导致无法撤销某些证书。但是,可以将令牌的撤销请求路由到已停用 CA,同时仍然会将所有其他请求(如注册)路由到新的活跃 CA。这种机制称为撤销 路由。
- Token Key Changeover - 由格式操作触发的密钥更改操作,从而可以将令牌的内部密钥从默认开发人员密钥集改为由 Token Processing System 部署控制的新密钥集。这通常在任何实际部署场景中完成,因为开发人员密钥集更适合测试情况。
- 小程序更新 - 在 TMS 部署过程中,如果需要,可以更新或降级 Coolkey 智能卡小程序。
2.5.2.3. TPS 配置集 复制链接链接已复制到粘贴板!
证书系统令牌处理系统子系统有助于管理智能卡令牌。令牌由 TPS 置备,以便它们从空白状态获取为 Formatted 或 Enrolled 条件。格式化令牌是包含 TPS 支持的 CoolKey
小程序的令牌,而注册的令牌则被个人化为具有必要证书和加密密钥的个人。 此完全置备的令牌可用于 crytptographic 操作。
TPS 也可以管理配置文件 。令牌配置文件的概念与:
- 格式化或注册令牌的步骤。
- 操作成功完成后,完成令牌中包含的属性。
以下列表包含组成唯一令牌配置集的一些数量:
- TPS 如何连接到用户的身份验证 LDAP 数据库?
- 此令牌操作是否需要用户身份验证?如果是这样,将使用什么身份验证管理器?
- TPS 如何连接到将从中获取证书的证书系统 CA?
- 此令牌上生成的私钥和公钥如何?它们是否在令牌侧或服务器端生成?
- 生成私钥和公钥时要使用的密钥大小(以位为单位)是什么?
哪个证书注册配置文件(由 CA 置备)用于在此令牌上生成证书?
注意此设置将决定要写入令牌的证书的最终结构。可根据证书中包含的扩展,为不同的用途创建不同的证书。例如,一个证书可以特殊化数据加密,另一个证书可用于签名操作。
- 令牌中需要哪些 Coolkey 小版本?
- 在此令牌上放置多少个证书以进行注册操作?
以上和许多其他令牌可以为每个令牌类型或配置文件配置。有关可用配置选项的完整列表,请参见 Red Hat Certificate System 管理指南。
要考虑的另一个问题是用户调配的给定令牌如何映射到单独的令牌配置集。注册有两种类型:
-
内部注册 - 在这种情况下,TPS 配置集(
tokenType
)由配置集 Mapping Resolver 决定。此基于过滤的解析器可以配置为将令牌提供的任何数据纳入帐户并确定目标配置集。 外部注册 - 使用外部注册时,配置文件(仅在名称中 - 仍在 TPS 中以与内部注册使用的相同)定义,在每个用户的 LDAP 记录中指定,该配置文件在身份验证期间获得。这允许 TPS 从存储用户信息的外部注册目录服务器获取密钥注册和恢复信息。这可让您控制覆盖 TPS 内部注册机制的注册、撤销和恢复策略。与外部注册相关的用户 LDAP 记录属性名称可以配置。
当需要"组证书"的概念时,外部注册非常有用。在这种情况下,组中的所有用户都可以在其 LDAP 配置文件中配置特殊记录,以下载共享证书和密钥。
要使用的注册是按 TPS 实例全局配置的。
2.5.2.4. 令牌数据库 复制链接链接已复制到粘贴板!
令牌处理系统利用 LDAP 令牌数据库存储,用于保留活动令牌及其相应证书的列表,并跟踪每个令牌的当前状态。新令牌被视为 未初始化,而完全注册的令牌则被视为注册。 在处理令牌时,TPS 会持续更新并查询此数据存储。
2.5.2.4.1. 令牌状态和转换 复制链接链接已复制到粘贴板!
Token Processing System 将状态存储在其内部数据库中,以确定当前令牌状态以及可以在令牌上执行的操作。
2.5.2.4.1.1. 令牌状态 复制链接链接已复制到粘贴板!
下表列出了所有可能的令牌状态:
Name | 代码 | 标签 |
---|---|---|
格式化 | 0 | 格式化(未初始化) |
已损坏 | 1 | 物理损坏的 |
PERM_LOST | 2 | 永久丢失 |
暂停 | 3 | 暂停(临时丢失) |
ACTIVE | 4 | Active |
已终止 | 6 | 已终止 |
未格式化 | 7 | 未格式化 |
命令行界面使用上面列出的 Name 显示令牌状态。图形界面改为使用 Label。
以上表不包含带有代码 5
的状态,之前属于已删除的状态。
2.5.2.4.1.2. 使用图形或命令行界面进行令牌状态转换 复制链接链接已复制到粘贴板!
每个令牌状态具有有限的下一个状态,它可以过渡到。例如,令牌可以将状态从 FORMATTED
更改为 ACTIVE
或 DAMAGED
,但它不能从 FORMATTED
转变为 UNFORMATTED
。
另外,令牌可以转换的状态列表会因使用命令行还是图形界面手动触发,还是自动使用令牌操作来触发。允许手动转换的列表存储在 tokendb.allowedTransitions
属性中,tps.operations.allowedTransitions
属性控制允许由令牌操作触发的转换。
手动和基于令牌操作的转换的默认配置都存储在 /usr/share/pki/tps/conf/CS.cfg
配置文件中。
2.5.2.4.1.2.1. 使用命令行或图形界面转换令牌状态 复制链接链接已复制到粘贴板!
使用 tokendb.allowedTransitions
属性描述了命令行或图形界面中允许的所有可能转换:
tokendb.allowedTransitions=0:1,0:2,0:3,0:6,3:2,3:6,4:1,4:2,4:3,4:6,6:7
tokendb.allowedTransitions=0:1,0:2,0:3,0:6,3:2,3:6,4:1,4:2,4:3,4:6,6:7
属性包含以逗号分隔的转换列表。每个转换都是以 < current code> :_& lt;new code>_
格式编写的。代码在 表 2.10 “可能的手动令牌状态转换” 中进行了描述。默认配置保留在 /usr/share/pki/tps/conf/CS.cfg
中。
下表描述了每个可能的转换详情:
Trans | 当前状态 | 下一个状态 | 描述 |
---|---|---|---|
0:1 | 格式化 | 已损坏 | 此令牌已物理损坏。 |
0:2 | 格式化 | PERM_LOST | 此令牌已永久丢失。 |
0:3 | 格式化 | 暂停 | 此令牌已被暂停(临时丢失)。 |
0:6 | 格式化 | 已终止 | 此令牌已终止。 |
3:2 | 暂停 | PERM_LOST | 这个暂停的令牌已永久丢失。 |
3:6 | 暂停 | 已终止 | 这个暂停的令牌已终止。 |
4:1 | ACTIVE | 已损坏 | 此令牌已物理损坏。 |
4:2 | ACTIVE | PERM_LOST | 此令牌已永久丢失。 |
4:3 | ACTIVE | 暂停 | 此令牌已被暂停(临时丢失)。 |
4:6 | ACTIVE | 已终止 | 此令牌已终止。 |
6:7 | 已终止 | 未格式化 | 重复使用此令牌。 |
以下转换会根据令牌的原始状态自动生成。如果令牌最初为 FORMATTED
,然后成为 SUSPENDED
,则只能返回到 FORMATTED
状态。如果令牌最初为 ACTIVE
,然后变为 SUSPENDED
,它只能返回到 ACTIVE
状态。
Trans | 当前状态 | 下一个状态 | 描述 |
---|---|---|---|
3:0 | 暂停 | 格式化 | 这个暂停(临时丢失)令牌已被发现。 |
3:4 | 暂停 | ACTIVE | 这个暂停(临时丢失)令牌已被发现。 |
2.5.2.4.1.3. 使用令牌操作进行令牌状态转换 复制链接链接已复制到粘贴板!
TPS 配置文件使用 tokendb.allowedTransitions
属性描述了所有可以使用令牌操作完成的可能转换:
tps.operations.allowedTransitions=0:0,0:4,4:4,4:0,7:0
tps.operations.allowedTransitions=0:0,0:4,4:4,4:0,7:0
属性包含以逗号分隔的转换列表。每个转换都是以 < current code> :_& lt;new code>_
格式编写的。代码在 表 2.10 “可能的手动令牌状态转换” 中进行了描述。默认配置保留在 /usr/share/pki/tps/conf/CS.cfg
中。
下表描述了每个可能的转换详情:
Trans | 当前状态 | 下一个状态 | 描述 |
---|---|---|---|
0:0 | 格式化 | 格式化 | 这允许重新格式化令牌或升级令牌中的 applet/key。 |
0:4 | 格式化 | ACTIVE | 这允许注册令牌。 |
4:4 | ACTIVE | ACTIVE | 这允许重新注册活跃令牌。可能对外部注册非常有用。 |
4:0 | ACTIVE | 格式化 | 这允许格式化活跃令牌。 |
7:0 | 未格式化 | 格式化 | 这允许格式化空白或之前使用的令牌。 |
2.5.2.4.1.4. 令牌状态和转换标签 复制链接链接已复制到粘贴板!
令牌状态和转换的默认标签存储在 /usr/share/pki/tps/conf/token-states.properties
配置文件中。默认情况下,该文件包含以下内容:
2.5.2.4.1.5. 自定义允许的令牌状态转换 复制链接链接已复制到粘贴板!
要自定义令牌状态转换列表,请编辑 /var/lib/pki/instance_name/tps/conf/CS.cfg
中的以下属性:
-
tokendb.allowedTransitions
,使用命令行或图形界面自定义允许转换的列表 -
TPS.operations.allowedTransitions
,使用令牌操作自定义允许转换列表
如果需要,可以从默认列表中删除转换,除非新转换位于默认列表中。默认值存储在 /usr/share/pki/tps/conf/CS.cfg
中。
2.5.2.4.1.6. 自定义令牌状态和转换标签 复制链接链接已复制到粘贴板!
要自定义令牌状态并转换标签,请将默认的 /usr/share/pki/tps/conf/token-states.properties
复制到您的实例文件夹(/var/lib/pki/instance_name/tps/conf/CS.cfg
),并根据需要更改列出的标签。
更改将立即生效,不需要重新启动服务器。TPS 用户界面可能需要重新载入。
要恢复到默认状态和标签名称,请从实例文件夹中删除编辑的 token-states.properties
文件。
2.5.2.4.1.7. 令牌活动日志 复制链接链接已复制到粘贴板!
记录某些 TPS 活动。下表中列出了日志文件中可能的事件。
活动 | 描述 |
---|---|
add | 添加了令牌。 |
格式 | 令牌被格式化。 |
注册 | 已注册令牌。 |
recovery | 令牌已被恢复。 |
续订 | 令牌已被续订。 |
pin_reset | 令牌 PIN 被重置。 |
token_status_change | 令牌状态是使用命令行或图形界面来更改的。 |
token_modify | 令牌已被修改。 |
delete | 令牌已删除。 |
cert_revocation | 令牌证书已被撤销。 |
cert_unrevocation | 令牌证书已被撤销。 |
2.5.2.4.2. 令牌策略 复制链接链接已复制到粘贴板!
如果是内部注册,每个令牌都可以由一组令牌策略进行管理。默认策略是:
RE_ENROLL=YES;RENEW=NO;FORCE_FORMAT=NO;PIN_RESET=NO;RESET_PIN_RESET_TO_NO=NO;RENEW_KEEP_OLD_ENC_CERTS=YES
RE_ENROLL=YES;RENEW=NO;FORCE_FORMAT=NO;PIN_RESET=NO;RESET_PIN_RESET_TO_NO=NO;RENEW_KEEP_OLD_ENC_CERTS=YES
内部注册下的所有 TPS 操作都受到令牌记录中指定的策略。如果没有为令牌指定策略,TPS 将使用默认策略集合。
2.5.2.5. 映射解析器 复制链接链接已复制到粘贴板!
Mapping Resolver 是 TPS 使用的可扩展机制,用于根据可配置的标准决定哪些令牌配置文件分配给特定令牌。每个映射解析器实例都可以在配置中唯一定义,每个操作都可指向各种定义的映射解析器实例。
映射解析器框架提供了一个编写自定义插件的平台。但是,如何编写插件的说明超出了本文档的范围。
FilterMappingResolver
是默认情况下,由 TPS 提供的唯一映射解析器实现。它允许您为每个 映射 定义一组映射和目标结果。每个映射都包含一组过滤器,其中:
-
如果输入过滤器参数传递映射 中的所有 过滤器,则会分配
target
值。 - 如果输入参数失败,则会跳过该映射,并按顺序尝试下一个映射。
- 如果过滤器没有指定值,它将始终通过。
- 如果过滤器具有指定的值,则输入参数必须完全匹配。
- 定义映射的顺序非常重要。第一个通过的映射被视为已解析,并返回到调用者。
输入过滤器参数是从智能卡令牌接收的信息,且没有扩展。它们会根据上述规则针对 FilterMappingResolver
运行。FilterMappingResolver
支持以下输入过滤器参数:
-
appletMajorVersion
- 令牌上 Coolkey 小程序的主要版本。 -
appletMinorVersion
- 令牌上 Coolkey 小程序的次要版本。 keySet
ortokenType
-
keySet
- 可以在客户端请求中设置为扩展。如果指定了扩展名,则必须匹配过滤器中的值。keySet 映射解析器用于在使用外部注册时确定 keySet 值。当支持多个密钥集(例如,不同的智能卡令牌供应商),则外部注册环境中需要 Key Set Mapping Resolver。在 TKS 上标识主密钥需要 keySet 值,这对建立安全频道至关重要。当用户的 LDAP 记录填充了 set tokenType (TPS 配置集)时,它不知道哪个卡最终进行注册,因此 keySet 无法预先确定。keySetMappingResolver
允许在身份验证前解决 keySet 来帮助解决这个问题。 -
tokenType
- okenType 可以在客户端请求中设置为扩展。如果指定了扩展,则必须匹配过滤器中的值。tokenType (也称为 TPS Profile)在此时为内部注册环境决定。
-
-
tokenATR
- 令牌回答重置(ATR)。 -
tokenCUID
- "start" 和 "end" 定义令牌的 Card Unique ID (CUID)的范围,才能传递此过滤器。
2.5.2.6. TPS 角色 复制链接链接已复制到粘贴板!
TPS 默认支持以下角色:
TPS Administrator - 此角色允许:
- 管理 TPS 令牌
- 查看 TPS 证书和活动
- 管理 TPS 用户和组
- 更改常规 TPS 配置
- 管理 TPS 验证器和连接器
- 配置 TPS 配置集和配置文件映射
- 配置 TPS 审计日志记录
TPS Agent - 此角色允许:
- 配置 TPS 令牌
- 查看 TPS 证书和活动
- 更改 TPS 配置集的状态
TPS Operator - 允许此角色:
- 查看 TPS 令牌、证书和活动
2.5.4. 企业安全客户端(ESC) 复制链接链接已复制到粘贴板!
企业安全客户端 是一个 HTTP 客户端应用程序,类似于 Web 浏览器,它与 TPS 通信并处理客户端中的智能卡令牌。虽然 ESC 和 TPS 之间建立 HTTPS 连接,但在每个 TLS 会话中的令牌和 TMS 之间建立底层安全频道。