安全始终是网络通信的核心议题,PKI 提供了一组标准的网络安全组件,可以为通信双方提供加密、完整性保护、认证等安全基础设施。原文: Public Key Infrastructure (PKI)
由于用户名和密码不足以验证用户的身份,因此 PKI(公钥基础设施,Public Key Infrastructure)提供了一组角色、策略、硬件、软件和流程,为一系列网络活动(如电子商务、网上银行、实时转账以及加密电子邮件)增强信息的安全传输。
作为人类,我们可以通过外表、身材、声音、眼睛的颜色、发型等很容易识别出不同的人。然而,随着贸易的发展,识别成本逐渐增加。有时候,双方对彼此的了解都很少,因此如何建立人与人之间的信任就成了重要问题。过去,互联网世界很少考虑安全问题,核心通信协议本身就不安全。因此,如何对彼此身份进行认证对网络安全来说至关重要。认证技术是保护信息安全的第一道屏障,其基本思想是在允许用户访问系统或资源之前对用户或设备进行验证。
公钥基础设施(Public Key Infrastructure, PKI)是一种典型的加密应用技术,为广泛的应用程序提供公钥加密和数字签名服务,以建立值得信任的网络环境。PKI 包含对应的软件、加密技术和服务,因此可以作为组织的网络安全架构,支持包括互联网、内网和外网上的安全事务。
在 PKI 系统中,证书颁发机构(CA, Certificate Authority)颁发数字证书,并将用户身份信息(用户名、电话号码、地址等)链接到公钥。每个用户标识必须是唯一的,每个用户都有一对公钥和私钥。
发送方用接收方的公钥对要传输的数据进行加密。
接收方用持有的私钥解密数据。
主要服务
- 身份验证(Authentication) —— 验证用户的身份
- 完整性保护(Integrity) —— 确保数据没有被其他用户有意或无意的修改。有两种技术可以保证数据的完整性: 数字签名和消息认证码(Message Authentication Code, DES-CBC-MAC或HMAC-MD5)
- 机密性(Confidentiality) —— 向用户保证他们是唯一一个解密数据的接收者
- 不可否认性(Non-Repudiation) —— 确保信息发送方提供了发送证明,而接收方获取到了发送方的身份证明,这样双方以后都不能否认处理过信息
PKI 组件
图片来源: https://en.wikipedia.org/wiki/Public_key_infrastructure
PKI 管理加密密钥和数字证书的颁发,并提供密钥管理(密钥更新、密钥恢复、密钥授权等)、证书管理(证书生成、证书更新、证书撤销等)和策略管理。因此,组织可以通过证书级或直接交叉认证与其他域建立信任关系。在实际应用中,可以将硬件系统、软件系统和安全策略相结合,形成一套完整的安全机制,使用户能够以数字证书为基础使用。
- 证书颁发机构(CA, Certificate Authority) —— PKI 系统的核心组件。用于确认申请数字证书的用户身份,并生成带有公钥的数字证书。这样,一对公钥和私钥之间就建立了对应关系。
- 注册中心(RA, Registration Authority) —— 负责接收用户申请,检查用户真实身份,只接收符合数字证书签发条件的用户
- 中央目录(Central Directory) —— 已颁发证书和公钥的集中存储,用户可以方便的查询所有已颁发证书和其他相关信息。
- 验证机构(VA, Validation Authority) —— 当用户身份发生变化、解密密钥丢失或证书超过有效期时,将生成新的数字证书,旧证书将被撤销。因此,检查证书是否超过有效期是 PKI 系统不可缺少的一部分,如果超期,则通知 CA 启动证书更新程序,生成新的证书,并吊销过期证书。
- 证书管理系统(Certificate Management System) —— 这是管理系统的另一个核心功能。系统可以将加密密钥备份并保存在中心目录中,当解密密钥丢失时,证书颁发机构将为用户恢复密钥。
- 应用接口(Application Interface) —— 为用户提供满足 PKI 系统各种功能实现的安全服务。
- 公钥(Public Key) —— 和用户身份关联的带签名的电子纪录。
- 证书撤销列表(CRLs, Certificate Revocation lists) —— 当公钥所有者丢失私钥或更改用户身份信息时,必须撤销证书,通常由相同的签发实体签署。
- 依赖方(Relying party) —— 接收包括证书和签名在内的信息,使用公钥对客户端进行认证和授权,并与客户端建立加密通信的个人或组织。
- 终端用户(End-User) —— 需要访问资源的安全主体(用户、应用程序、服务、防火墙和组)。
图片来源: 微软
流程
级别 1 — 数据加密
为保证数据传输的保密性,简单有效的方法是对传输数据进行加密。无论使用什么加密算法,目的都是要能最大限度保证只有通信双方才能读取数据。
- 对称加密(Symmetric Encryption)
- 加密密钥=解密密钥
- 缺陷: 如何传输加密密钥才能避免被窃取的危险?此外,无法验证服务器的身份信息
- 常用算法有 DES、3DES、AES、TDEA、Blowfish、RC4、RC5、SM1、SM4、IDEA
- 非对称加密(Asymmetric Encryption)
- 需要两个密钥: 一个公钥和一个私钥
- 公钥和私钥之间建立对应关系
- 如果数据使用公钥加密,则相应的私钥只能用于解密数据
- 该机制目的是为了实现保密信息的交换。发送方使用公钥对要传输的数据进行加密,接收方使用私钥对数据进行解密。在这种情况下,发送方使用接收方的公钥对机密信息进行签名,接收方使用自己的私钥对数据签名进行验证
- 常用的非对称加密算法: RSA、Elgamal、背包(Knapsack)算法、Rabin、DH、椭圆曲线加密算法(ECC)
- 缺点: 可以解决密钥被窃取的问题,但仍然不能验证服务器的身份信息
事实上,只要合理使用这两种方法,一般都可以完成加解密的过程。只要密钥不被截获,就能在一定程度上保证数据的保密性。只要需要传递密钥,就不难看出这一过程中的致命问题,那就是密钥被拦截的风险。由于私钥不需要传递,因此非对称加密可以减少密钥在传输过程中被截获的风险。但是这种传播仍然存在问题,如果第三方更改或删除密文,甚至用公钥替换新的加密数据,该怎么办?这里没有办法进行区分。
非对称加密看起来安全,但非常耗时并且消耗资源。在实际应用中,仍然会使用对称加密。两种算法都能满足安全目的和标准。对称加密用于传输大量数据,非对称加密用于传输对称加密密钥。此外,非对称加密也可用于少量数据传输。
级别 2 — 单向加密数据
为了保证数据完整性,最简单的方法就是利用单向加密特性。由于单向加密是不可逆的,所以加密后的密文是唯一的,即称为摘要(digest)。密文和摘要同时发送到接收端。密文不会立即被解密,相反,需要使用相同的单向加密方法对密文进行加密,以获得摘要。接收方比较两个摘要,如果一致,就意味着数据没有被修改。如果不一致,则意味着数据可能被篡改或发生了错误。
数据完整性问题也可以解决,但有一个问题,双方都必须检查哈希值,因为黑客可以用相应的数据替换哈希值。因此,在哈希值比较过程中,可以对单向加密做一点优化,以保证算法的完整性。每次使用哈希算法生成摘要时,可以在单向加密之前向字段添加固定的字符串,但并不传输这一字符串。接收方同样添加固定字符串来解密摘要以进行验证,这被称为消息验证码(MAC)。只要这一固定字符串不被泄露,消息认证码就是安全有效的。当然,它并不完美,仍然有 MAC 传输的问题。发送方可以拒绝接收方发送的 MAC。而且,接收方可以向发送方发送欺诈信息。
级别 3 — 数字签名
对称和非对称加密 — 数据保密
单向哈希 — 数据完整性
数字签名 — 数据可靠性
这是一种验证固定字符串消息、公钥或私钥生成的签名的真实性的机制。数字签名使用加密哈希函数计算消息的哈希值,并使用发送方私钥对哈希值进行加密,这个过程就像发送方在消息上签名一样。接收方可以验证发送方消息签名的真实性。接收方拥有发送方的公钥,并使用公钥解密数据签名以获得消息的哈希值。接收方计算哈希值并比较结果,只有验证结果一致,消息才能被验证。
级别 4 — 数字证书
证书由证书颁发机构和注册中心颁发,包含公共信息和发送方的签名,因此用户知道通信对端是正确的用户,并且消息在传递之后不会被修改。
版本(Version) — 确定证书使用的标准版本,该版本可能影响证书中指定的信息。
序列号(Serial number) — 为证书分配的序列号,以区别于其他证书。
签名算法标识符(Signature Algorithm Identifier) — 用于标识 CA 签名证书时使用的算法。
颁发机构(Issuer Authority) — 证书颁发机构(CA)。
有效期限(Validity period) — 有效期通过开始日期和结束日期表示。
实体名称(Subject Name) - 公钥可以被证书识别的实体的名称。
公钥信息(Public Key information) — 算法标识符指定密钥所属的公钥以及所有相关的密钥参数。
签名值(Signature Value) — 证书颁发机构的签名。
参考文献
AD FS OpenID Connect/OAuth Concepts
Certificate revocation list - Wikipedia
Identity Federation Using Multidomain Authentication in PKI
Public Key Infrastructure: An Enhanced Validation Framework
Ldapwiki: Public Key Infrastructure
Public key infrastructure - Wikipedia
What is PKI? A Public Key Infrastructure Definitive Guide
What is PKI? And how it secures just about everything online
What is PKI(Public Key Infrastructure)?
Public Key Infrastructure - GeeksforGeeks
Cryptography: Public Key Infrastructure(PKI)
What is Public Key Infrastructure(PKI)? | Venafi
PKI | What is PKI? | PKI Management | Role of Certificates in PKI