计算机网络-公钥基础设施体系的运作原理

一、概念
公钥基础设施(PKI, Public Key Infrastructure)是提供安全服务的基础设施,是现下十分流行的安全标准。技术上,PKI基于公钥加密算法,提供实体鉴别,完整性,机密性,抗抵赖等安全服务。PKI建立了一个密钥管理体系,通过第三方可信任机构(即CA, Certification Authority),生成用户公钥证书,为加密和数字签名提供安全,透明的保障。

证书(Certification)
证书是验证持有人身份的有效实体,相当于人的身份证。证书主要包括公共名,颁发者,有效时间,公钥,公钥加密算法和哈希算法,证书签名,证书指纹,扩展信息等。

证书颁发机构(CA, Certification Authority)
CA是PKI体系的顶层,主要负责保管私钥,并签发RA证书。一个CA的安全性和保密程度决定了以其为根的证书链的整体可信任度。目前主流的CA有:GlobalSign, Let's Encrypt, DigiCert

授权机构(RA, Registry Authority)
RA是CA和申请证书的客户的中间机构,主要负责接受客户的证书申请,并将授权的证书上传给CA。

证书公钥签名算法和哈希算法
证书的哈希算法指定了计算证书摘要时,所采用的算法,如SHA1, SHA256, SHA384, SHA512。其中SHA1已过时,目前常用的是SHA256,需更高安全性时使用SHA384,SHA512因性能问题也不常用。
证书的公钥签名算法是对证书摘要进行签名时,所采用的非对称加密算法(RSA或ECDSA),以及所采用的具体参数(如RSA采用PKCS#1填充,ECDSA采用X9.62标准)

证书签名
证书签名由并且只由证书颁发者计算得到数字签名。
它是PKI体系的核心,是认证证书的关键。证书签名由证书的颁发者通过其私钥对证书摘要进行加密得到,能通过成对的公钥进行解密得到证书摘要,以完成证书的验证。以下是签名和验证的过程:
0219-how-digital-signatures-work

证书指纹
证书的唯一标识,用于快速查找证书。

对称加密算法
对称加密算法是使用同一个密钥加密和解密的算法。

非对称加密算法
非对称加密算法是密钥由公钥和私钥组成。“非对称”是相对与对称加密算法的“对称”而言,对称加密算法中,加密和解密使用同一个密钥,因而得名对称。而相对的,非对称加密算法中,加密和解密采用不同密钥。
非对称加密算法的公钥是公开的,所有人都可以获取。私钥是保密的,仅由服务提供方保管。流行的非对称加密算法有:RSA, ECDSA。
公钥加密的过程如图所示:

Benefits-of-PKI-Diagram-090523-1600x1091

RSA
RSA是目前主流的非对称加密算法,RSA由其三个发明人的首字母缩写得名。
RSA算法的安全性随密钥的位数而提高,密钥的位数有:512bit, 768bit, 1024bit, 2048bit, 3072bit, 4096bit, 8192+bit等。其中低于2048bit的密钥因安全问题不考虑使用,2048bit是目前主流的位数,3072bit和4096bit应用在安全性需求较高的场景。

ECDSA
ECDSA(Elliptic Curve Digit Signature Algorithm),即椭圆曲线数字签名算法,是目前安全性较高的非对称加密算法。

密钥交换协议
RSA密钥交换协议,是目前使用最广泛的密钥交换协议,因其不具备前向保密性,目前已逐渐向ECDHE过渡。
ECDHE,是目前最兼具实用性和安全性的密钥交换协议。具有前向保密性。

二、核心原理
PKI体系的核心功能是证书链的验证
一个基本原则是,根CA保管其私钥,签署RA证书,RA则签署客户证书,构成三级证书体系(一般),即证书链。
当我们访问Web站点时,服务器将证书传给你,这时你的浏览器会去二级RA验证证书,RA找一级(CA)验证证书。这就是证书验证的链条。

原理:
PKI体系中,CA、RA、证书、非对称加密算法等实体共同配合,进行逐级签名验证,实现实体身份的认证。

首先。需要身份认证的实体,通过向RA发起证书申请请求,RA在经过审核后,批准并向实体发送证书。这时,形成了根CA->RA->实体的三级证书链。每一级的证书可以向其上级验证。证书主要包括实体的公共名(如域名),证书颁发者(用于其它人验证证书有效性),有效时间,公钥,签名所使用的公钥加密算法和哈希算法,证书签名,证书指纹,扩展信息等。

这里我们用到的主要分为公钥加密算法和哈希算法,证书签名以及待签名字段。在签发证书时,对证书待签名字段使用哈希运算得到摘要,然后使用自己的私钥对摘要进行加密,得到证书签名。在用户得到证书持有者的证书后,需要验证证书的有效性,这时需要1. 用指定的哈希算法计算证书的摘要a;
2. 从证书的颁发者获取其公钥,用公钥对证书签名进行解密,得到摘要b;
3. 将两个摘要比对,若一致,则说明证书是有效的;
4. 逐级向上验证签名,直到根CA。

为什么经过证书签名的验证过程,能确保证书确实是由颁发者签发的呢?
我们知道,用非对称加密算法的私钥加密,得到签名,公钥解密,得到原文。这个签名只有私钥的持有者,也就是证书颁发者能够计算,并且只有成对的公钥能够解密。
那么,我们用公钥解密签名,得到了摘要,并且对比摘要。如果一致,不就说明该签名确实是唯一能够通过私钥对摘要计算出该签名的颁发者计算出的。

这一过程是证书验证的核心流程。其实,主流的互联网提供商,如微软,Google,Oracle,保存有一个庞大的有效证书库,他们用证书指纹匹配证书,快速的验证证书的有效性,而不必经常去进行签名验证。
证书签名验证只是验证的其中一环,此外,还要进行有效时间的验证,域名的验证(如果证书用于网站,SMTP等服务),吊销状态验证(CA或RA私钥泄露后,需及时吊销)等。

安全小知识:

  1. 根私钥的保存是PKI体系的重中之重。一旦根CA的私钥泄露,将是对该CA的整个客户体系的极大破坏。通过根私钥签署的所有证书将得到的信任,这将导致极大的安全隐患。黑客冒名盗用网站还是其次,伪造银行/政府的证书,挟持军事机密,瘫痪重点民生设施等都将产生难以预估的损失,将是以该根CA为中心的安全信任体系的崩塌(2011年DigiNotar因私钥泄露事件而倒闭)。
    PKI体系中,CA对私钥有极其严格的保护措施(军事级保护),他们将私钥保存在专业的硬件之中,该硬件采用特殊的算法保存私钥,处于物理隔离之中,无法通过任何途径获取。在需要签名时,签名在硬件内部进行,外部只能获取签名结果。同时,因为CA已经签署了子证书,将证书申请的职责交给了RA,只有少数情况需要签名。
    确实需要签名时(比如签署RA),对于访问也有严格要求。a. 访问采用多因素验证,如生物识别,智能卡,密码等;b. 由专门培训的专业人员进行操作,每个验证步骤必须由不同的人员进行,所有访问都需要记录。
    当然,外围的安保等级就不必多说了。
    当然,并不能保证相关机构严格遵守规则或留有后门。如今权威CA厂商都在GlobalSign(比利时),DigiCert(美国),Let's Encrypt(美国)全在欧美控制之下,比起所谓IP根服务器体系的安全问题,PKI体系的潜在安全问题和破坏力显然大一点。
  2. 加密算法的破解是另一个安全问题。目前,量子计算的突破可能是破解加密算法的一个途径。

密钥交换协议
在报文传输过程中,由于非对称加密的性能远低于对称加密,因此,我们希望采用一种混合模式:用对称加密算法来加密报文,而非对称加密算法仅用来进行对称加密所需密钥的传输。

RSA密钥交换协议是目前主流的密钥交换协议。以下是Https中使用RSA密钥的证书,进行对称加密密钥交换的流程:
0220-how-does-https-work

ECDHE(Elliptic Curve Diffie-Hellman Ephemeral),即椭圆曲线迪菲赫尔曼临时算法是目前安全系数较高的密钥交换算法。

  1. 采用椭圆曲线算法(ECDSA)进行文本加密,兼具安全性和效率;
  2. 密钥对是临时的,会话结束后,不再保留,保证了数据的前向保密性;
  3. 采用迪菲赫尔曼密钥交换协议进行密钥交换。

在ECDHE中,服务器使用其保存的证书私钥(可能是RSA算法也可能是ECDSA算法)对ECDHE临时参数进行签名,客户端使用证书公钥进行解密,从而临时密钥对。
过程如下:
ecdhe-operation-graphic

四、应用
PKI证书的应用广泛,涵盖需要数字签名,数据加密,身份认证,完整性,防篡改的领域。

  • Https中使用TLS证书验证服务器身份,然后加密服务器和客户端的通信信道;
  • 邮件加密;
  • IoT设备身份认证;
  • 软件签名,如苹果的.dmp包使用证书验证发布者;
  • 金融和银行交易;
  • 区块链和数字货币使用证书验证节点身份;
  • 电子身份证,驾驶证

ref:
1.https://bytebytego.com/guides/how-digital-signatures-work/
2.https://bytebytego.com/guides/how-does-https-work/
3.https://www.microchip.com/en-us/about/media-center/blog/2022/tls-and-secure-elements

posted @ 2025-07-29 00:17  iance丶  阅读(41)  评论(0)    收藏  举报