为什么用同样的HTTPS协议,有些网站浏览器直接显示绿色小锁,有些却提示"证书不受信任"?数字签名号称能防抵赖,但如果私钥泄露了怎么办?软考信息安全工程师、系统架构设计师、网络规划设计师等至少六个科目都反复考查PKI,但大多数考生只记住了"CA签发证书"六个字就上考场了。本文从PKI的底层信任逻辑出发,拆解数字证书的X.509结构、RA与CA的分工机制、CRL与OCSP两种吊销检测方案,以及层次信任、交叉认证、桥CA、信任列表四种信任模型,让你彻底理解公钥基础设施的运行原理。
要理解公钥基础设施存在的必要性,必须先看清公钥密码学的一个根本问题:公钥从哪里来,以及你怎么确定拿到的公钥确实属于对方。
公钥密码体制的典型代表是RSA算法和椭圆曲线密码。以RSA为例,每个通信实体拥有一对数学上相关但无法互相推导的密钥:公钥公开给所有人,私钥由持有者严格保密。当张三要给李四发送机密消息时,张三用李四的公钥加密,只有李四用自己的私钥才能解密。这个过程在算法层面是安全的,但它默认了一个前提:张三拿到的那把"李四的公钥",确实是李四本人的。
如果中间人王五在张三获取李四公钥的环节做了替换——把自己生成的公钥冒充成李四的公钥交给张三——那么张三用这把假公钥加密的所有消息,王五都能用自己的私钥解密,读完后再用真正的李四公钥加密转发。整个过程中张三和李四都感觉不到异常,但这种中间人攻击彻底击穿了公钥体系的安全假设。
问题的本质在于,公钥本身只是一串二进制数字,没有内嵌的身份信息。你需要一个可信的第三方站出来,用某种方式为"这把公钥属于李四"这件事做担保。这个第三方就是认证中心,而围绕认证中心建立的一整套管理公钥的体系,就是公钥基础设施。
国际电信联盟的X.509标准对PKI给出了严格定义:公钥基础设施是支持公钥管理,并能支持认证、加密、完整性和不可否认性服务的基础设施。更通俗地理解,PKI解决的是"如何在不可信的网络环境中安全地分发公钥"这个根本命题。它把密码学算法从数学理论层面拉到了实际工程部署层面,让非对称加密真正具备了大规模应用的前提条件。
PKI不是一个单一软件或协议,而是由多个功能组件协作运行的体系化平台。按软考标准教材的定义,PKI的核心实体包括认证中心、注册机构、证书库和密钥管理中心四部分,各司其职形成完整的信任链条。
认证中心是PKI体系中最核心的角色,负责数字证书的全生命周期管理。CA的具体职责包括:受理和审批数字证书申请、生成并签发数字证书、发布证书吊销列表、管理证书序列号和有效期、对签发的证书做归档留存。
CA签发证书的操作本质是用CA自身的私钥对证书内容做数字签名。当用户拿到一张证书时,用CA的公钥验证签名通过,就说明这张证书确实由该CA签发且内容未被篡改。CA的公钥本身也需要一个可信的获取途径——要么预置在操作系统或浏览器的根证书列表中,要么通过更高层级的CA签名来认证。
这里引出了PKI理论中最关键的一个概念:信任锚。根CA的自签名证书就是整个信任体系的锚点。所谓自签名,是指证书的签发者和主体是同一个实体——根CA用自己的私钥给自己签发证书。这张证书无法通过密码学运算自证可信,它的可信性来自于带外机制,比如微软、苹果、谷歌等操作系统厂商把根CA证书预置到系统信任库中。
在软考命题中,CA与RA的职责划分是高频辨析点。有一道架构真题这样考查:PKI系统结构中,负责生成和签署数字证书的是CA,负责验证用户身份的是RA。这里的区分逻辑很清晰——CA管证书的签发和撤销,RA管用户身份真实性的事前审核。
注册机构是CA的代理机构,主要功能是在证书颁发之前对申请者的身份进行核实和审批。RA不签发证书,不做数字签名,它的存在是为了将身份审核这个人力密集型工作从CA中分离出来,让CA专注于证书的密码学操作。
RA的具体工作包括:接收用户的证书申请请求、验证用户提交的身份证明材料、将审核通过的申请提交给CA、协助处理证书更新和密钥恢复等。在一些小型PKI部署中,RA的功能可以合并到CA内部,但在大型企业级或行业级PKI中,RA通常做为一个独立实体分布在各个业务区域,形成CA集中签发、RA分布审核的架构。
需要注意的是,RA本身不持有CA的签名私钥,也不能代表CA签发证书。有一道信息安全工程师真题问:在PKI体系中,注册机构RA的功能不包括什么?正确选项就是"签发数字证书"——这是CA的专属职能。
证书库是存储已签发数字证书及证书吊销列表的公开目录服务,通常基于LDAP协议或HTTP协议对外提供查询接口。证书库的核心价值在于让依赖方可以随时获取通信对方的数字证书以及该证书的当前状态。
每张数字证书都有明确的有效期。在有效期内,如果出现私钥泄露、持有者信息变更、CA本身被攻破等情况,需要提前终止该证书的信任。CA的做法是维护一份证书吊销列表,将被撤销的证书序列号、吊销时间和吊销原因记录在其中,并定期更新和发布。
一个关键的技术事实是:被吊销的证书并不会从证书库中物理删除,而是在CRL中被标记为无效。有一道网络规划设计师真题问:"证书到期或废弃后的处理方法是什么?"正确答案是"放于CRL并发布",而非"删除"或"回收放入待用证书库"。
CRL的发布时间间隔是一个需要权衡的参数。发布太频繁会增加CA和证书库的负载,发布太稀疏则会导致已经被吊销的证书在较长的时间窗口内仍然被依赖方视为有效。为了弥补CRL的时效性缺陷,在线证书状态协议OCSP被设计出来。OCSP客户端向响应器发送待查询证书的序列号,响应器实时返回证书的当前状态:正常、已吊销或未知。OCSP的响应本身也需要由响应器签名,以确保查询结果不会被中间人篡改。
密钥管理中心负责密钥的全生命周期管理,包括密钥生成、密钥存储、密钥分发、密钥更新、密钥归档和密钥销毁。在企业级PKI中,密钥管理中心通常还承担密钥备份与恢复的功能,防止因密钥丢失导致加密数据无法解密。
在双证书体系中,加密证书的私钥需要在密钥管理中心做托管备份,以满足企业数据恢复和合规审计的诉求;而签名证书的私钥则绝对不能备份或托管,否则数字签名的不可否认性就无从谈起。
X.509是由国际电信联盟定义的数字证书标准格式,目前使用最广泛的版本是v3。软考信息安全工程师真题明确问过X.509数字证书的内容不包括什么,这道题的核心在于区分证书包含什么、不包含什么。
一张标准的X.509 v3数字证书包含以下核心字段:
版本号标识证书遵循的X.509版本。序列号由CA分配,在同一个CA域内具有唯一性,用于在CRL中标识被吊销的证书。签名算法标识符指明CA签名时使用的算法,常见的是sha256WithRSAEncryption。颁发者可分辨名称是CA的X.500格式名称,包括国家、组织、通用名称等字段。有效期由生效时间和失效时间组成,证书只在两者之间的时间窗口内有效。主体可分辨名称是证书持有者的身份标识。主体公钥信息包括公钥算法标识和公钥值本身,这是证书最核心的技术载荷。
除基本字段外,v3版本支持扩展字段,常见的有:密钥用法标识密钥用途是签名还是加密;基本约束用于区分CA证书和终端实体证书;主题密钥标识符和授权密钥标识符用于证书链的快速匹配;CRL分发点给出吊销状态查询地址;证书策略描述CA的签发规则。
有一道软考真题的典型挖坑方式是:把"持有者私钥"列为数字证书的内容。私钥永远不在证书中——证书只包含公钥和身份信息,私钥由持有者自行安全存储,这是非对称密码的基本前提。
另一个常见考点是数字证书中CA签名的作用。系分真题考查:数字证书的一般格式中包含认证机构的签名,该数据域的作用是什么?正确答案的核心是"验证证书的真实性与完整性"——CA用私钥对证书内容散列值签名,任意依赖方用CA公钥验签即可确认证书未被篡改且确实由该CA签发。
单个CA签发的孤立证书无法构建
本篇完!