深入理解PKI

安全始终是网络通信的核心议题,PKI提供了一组标准的网络安全组件,可以为通信双方提供加密、完整性保护、认证等安全基础设施。原文: Public Key Infrastructure (PKI)

Jacek Dylag@Unsplash
Jacek Dylag@Unsplash

由于用户名和密码不足以验证用户的身份,因此PKI(公钥基础设施,Public Key Infrastructure)提供了一组角色、策略、硬件、软件和流程,为一系列网络活动(如电子商务、网上银行、实时转账以及加密电子邮件)增强信息的安全传输。

作为人类,我们可以通过外表、身材、声音、眼睛的颜色、发型等很容易识别出不同的人。然而,随着贸易的发展,识别成本逐渐增加。有时候,双方对彼此的了解都很少,因此如何建立人与人之间的信任就成了重要问题。过去,互联网世界很少考虑安全问题,核心通信协议本身就不安全。因此,如何对彼此身份进行认证对网络安全[1]来说至关重要。认证技术是保护信息安全的第一道屏障,其基本思想是在允许用户访问系统或资源之前对用户或设备进行验证。

公钥基础设施(Public Key Infrastructure, PKI)[2]是一种典型的加密应用技术,为广泛的应用程序提供公钥加密和数字签名服务,以建立值得信任的网络环境。PKI包含对应的软件、加密技术和服务,因此可以作为组织的网络安全架构,支持包括互联网、内网和外网上的安全事务。

在PKI系统中,证书颁发机构(CA, Certificate Authority)颁发数字证书,并将用户身份信息(用户名、电话号码、地址等)链接到公钥。每个用户标识必须是唯一的,每个用户都有一对公钥和私钥。

发送方用接收方的公钥对要传输的数据进行加密。

接收方用持有的私钥解密数据。


主要服务
  1. 身份验证(Authentication) —— 验证用户的身份
  2. 完整性保护(Integrity) —— 确保数据没有被其他用户有意或无意的修改。有两种技术可以保证数据的完整性: 数字签名和消息认证码(Message Authentication Code, DES-CBC-MAC [3]HMAC-MD5 [4])
  3. 机密性(Confidentiality) —— 向用户保证他们是唯一一个解密数据的接收者
  4. 不可否认性(Non-Repudiation) —— 确保信息发送方提供了发送证明,而接收方获取到了发送方的身份证明,这样双方以后都不能否认处理过信息

PKI组件
图片来源: https://en.wikipedia.org/wiki/Public_key_infrastructure
图片来源: https://en.wikipedia.org/wiki/Public_key_infrastructure

PKI管理加密密钥和数字证书的颁发,并提供密钥管理(密钥更新、密钥恢复、密钥授权等)、证书管理(证书生成、证书更新、证书撤销等)和策略管理。因此,组织可以通过证书级或直接交叉认证与其他域建立信任关系。在实际应用中,可以将硬件系统、软件系统和安全策略相结合,形成一套完整的安全机制,使用户能够以数字证书为基础使用。

  1. 证书颁发机构(CA, Certificate Authority) —— PKI系统的核心组件。用于确认申请数字证书的用户身份,并生成带有公钥的数字证书。这样,一对公钥和私钥之间就建立了对应关系。
  2. 注册中心(RA, Registration Authority) —— 负责接收用户申请,检查用户真实身份,只接收符合数字证书签发条件的用户
  3. 中央目录(Central Directory) —— 已颁发证书和公钥的集中存储,用户可以方便的查询所有已颁发证书和其他相关信息。
  4. 验证机构(VA, Validation Authority) —— 当用户身份发生变化、解密密钥丢失或证书超过有效期时,将生成新的数字证书,旧证书将被撤销。因此,检查证书是否超过有效期是PKI系统不可缺少的一部分,如果超期,则通知CA启动证书更新程序,生成新的证书,并吊销过期证书。
  5. 证书管理系统(Certificate Management System) —— 这是管理系统的另一个核心功能。系统可以将加密密钥备份并保存在中心目录中,当解密密钥丢失时,证书颁发机构将为用户恢复密钥。
  6. 应用接口(Application Interface) —— 为用户提供满足PKI系统各种功能实现的安全服务。
  7. 公钥(Public Key) —— 和用户身份关联的带签名的电子纪录。
  8. 证书撤销列表(CRLs, Certificate Revocation lists) —— 当公钥所有者丢失私钥或更改用户身份信息时,必须撤销证书,通常由相同的签发实体签署。
  9. 依赖方(Relying party) —— 接收包括证书和签名在内的信息,使用公钥对客户端进行认证和授权,并与客户端建立加密通信的个人或组织。
  10. 终端用户(End-User) —— 需要访问资源的安全主体(用户、应用程序、服务、防火墙和组)。
图片来源: 微软
图片来源: 微软

流程

级别1 — 数据加密

为保证数据传输的保密性,简单有效的方法是对传输数据进行加密。无论使用什么加密算法,目的都是要能最大限度保证只有通信双方才能读取数据。

  1. 对称加密(Symmetric Encryption)
  • 加密密钥=解密密钥
  • 缺陷: 如何传输加密密钥才能避免被窃取的危险?此外,无法验证服务器的身份信息
  • 常用算法有DES、3DES、AES、TDEA、Blowfish、RC4、RC5、SM1、SM4、IDEA
  1. 非对称加密(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[5]

Certificate revocation list - Wikipedia[6]

Identity Federation Using Multidomain Authentication in PKI[7]

Public Key Infrastructure: An Enhanced Validation Framework[8]

Ldapwiki: Public Key Infrastructure[9]

Public key infrastructure - Wikipedia[10]

What is PKI? A Public Key Infrastructure Definitive Guide[11]

What is PKI? And how it secures just about everything online[12]

What is PKI?[13]

Public Key Infrastructure[14]

What is PKI(Public Key Infrastructure)?[15]

Public Key Infrastructure - GeeksforGeeks[16]

Cryptography: Public Key Infrastructure(PKI)[17]

What is Public Key Infrastructure(PKI)? | Venafi[18]

PKI | What is PKI? | PKI Management | Role of Certificates in PKI[19]


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

参考资料

[1]

网络安全: https://twitter.com/jinlow_blogger/status/1580022516751667200

[2]

Public Key Infrastructure: https://en.wikipedia.org/wiki/Public_key_infrastructure

[3]

DES-CBC-MAC: https://en.wikipedia.org/wiki/CBC-MAC

[4]

HMAC-MD5: https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.hmacmd5?view=netframework-4.8

[5]

AD FS OpenID Connect/OAuth Concepts: https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/development/ad-fs-openid-connect-oauth-concepts

[6]

Certificate revocation list - Wikipedia: https://en.wikipedia.org/wiki/Certificate_revocation_list

[7]

Identity Federation Using Multidomain Authentication in PKI: https://www.diva-portal.org/smash/get/diva2:872471/FULLTEXT02

[8]

Public Key Infrastructure: An Enhanced Validation Framework: https://www.scirp.org/journal/paperinformation.aspx?paperid=103117

[9]

Ldapwiki: Public Key Infrastructure: https://ldapwiki.com/wiki/Public%20Key%20Infrastructure

[10]

Public key infrastructure - Wikipedia: https://en.wikipedia.org/wiki/Public_key_infrastructure

[11]

What is PKI? A Public Key Infrastructure Definitive Guide: https://www.keyfactor.com/resources/what-is-pki

[12]

What is PKI? And how it secures just about everything online: https://www.csoonline.com/article/3400836/what-is-pki-and-how-it-secures-just-about-everything-online.html

[13]

What is PKI?: https://cpl.thalesgroup.com/faq/public-key-infrastructure-pki/what-public-key-infrastructure-pki

[14]

Public Key Infrastructure: https://www.tutorialspoint.com/cryptography/public_key_infrastructure.htm

[15]

What is PKI(Public Key Infrastructure)?: https://www.ssh.com/academy/pki#:~:text=Public%20Key%20Infrastructure%20%28PKI%29%20is,a%20particular%20user%20or%20device.

[16]

Public Key Infrastructure - GeeksforGeeks: https://www.geeksforgeeks.org/public-key-infrastructure

[17]

Cryptography: Public Key Infrastructure(PKI): https://freemanlaw.com/pki-cryptography

[18]

What is Public Key Infrastructure(PKI)? | Venafi: https://www.venafi.com/education-center/pki/how-does-pki-work

[19]

PKI | What is PKI? | PKI Management | Role of Certificates in PKI: https://www.appviewx.com/education-center/pki

- END -

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/129449.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deep learning of free boundary and Stefan problems论文阅读复现

Deep learning of free boundary and Stefan problems论文阅读复现 摘要1. 一维一相Stefan问题1.1 Direct Stefan problem1.2 Inverse Type I1.3 Inverse Type II 2. 一维二相Stefan问题2.1 Direct Stefan problem2.2 Inverse Type I2.3 Inverse Type II 3. 二维一相Stefan问题…

使用chat-GPT接口提取合同中关键信息

1 业务需求 目前公司有几千份合同,而且还会不断的增长;现在需要将合同中的关键信息提取出来给业务使用,业务现在需要将这些关键字段信息录入存档到档案系统;人工去阅读整个合同去提取这些信息,是很浪费人力的&#xff…

Netty深入浅出(无处不在的IO)

为什么要有Netty Netty是为了解决网络编程的复杂性和提供易于使用、高性能和可扩展的框架而开发的。它通过提供一组可重用的组件来处理网络通信的低级细节,例如套接字管理、线程和缓冲,简化了开发网络应用程序的过程。这使开发人员可以专注于应用程序逻…

Dubbo 环境隔离

通过标签实现流量隔离环境(灰度、多套开发环境等) 无论是在日常开发测试环境,还是在预发生产环境,我们经常都会遇到流量隔离环境的需求。 在日常开发中,为了避免开发测试过程中互相干扰,我们有搭建多套独…

Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))

星光下的赶路人star的个人主页 这世上唯一扛得住岁月摧残的就是才华 文章目录 1、状态管理1.1 Flink中的状态1.1.1 概述1.1.2 状态的分类 1.2 按键分区状态(Keyed State)1.2.1 值状态(ValueState)1.2.2 列表状态(ListS…

在Remix中编写你的第一份智能合约

智能合约简单来讲就是:部署在去中心化区块链上的一个合约或者一组指令,当这个合约或者这组指令被部署以后,它就不能被改变了,并会自动执行,每个人都可以看到合约里面的条款。更深层次的理解就是:这些代码会…

王道考研计算机组成原理——计算机硬件的基础知识

计算机组成原理的基本概念 计算机硬件的针脚都是用来传递信息,传递数据用的: 服务程序包含一些调试程序: 计算机硬件的基本组成 控制器通过电信号来协调其他部件的工作,同时负责解析存储器里存放的程序指令,然后指挥…

vue3 组件v-model绑定props里的值,修改组件的值要触发回调

很早之前就写了&#xff0c;一直没写篇博客记录下 <select v-model"typeVal" />const emit defineEmits([update:type]); const props defineProps({type: { type: String, default: }, });const typeVal computed({get() {return props.type;},set(value…

Vue-1.8生命周期

Vue生命周期 一个Vue实例从创建到销毁的整个过程。 生命周期&#xff1a; 1&#xff09;创建&#xff1a;响应式数据 ->发送初始化渲染请求 2&#xff09;挂载&#xff1a;渲染数据->操作dom 3&#xff09;更新&#xff1a;数据修改&#xff0c;更新视图 4&#xf…

基于SpringBoot的桂林旅游景点导游平台

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 景点类型管理 景点信息管理 线路推荐管理 用户注册 线路推荐 论坛交流 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实…

一篇短小精悍的文章让你彻底明白KMP算法中next数组的原理

以后保持每日一更&#xff0c;由于兴趣较多&#xff0c;更新内容不限于数据结构&#xff0c;计算机组成原理&#xff0c;数论&#xff0c;拓扑学......&#xff0c;所谓&#xff1a;深度围绕职业发展&#xff0c;广度围绕兴趣爱好。往下看今日内容 一.什么是KMP算法 KMP&#x…

SpringCloudGateway网关整合swagger3+Knife4j3,basePath丢失请求404问题

在集成 Spring Cloud Gateway 网关的时候&#xff0c;会出现没有 basePath 的情况&#xff0c;例如定义的 /jeeplus-auth、/jeeplus-system 等微服务前缀导致访问接口404&#xff1a; maven依赖&#xff1a; swagger2于17年停止维护&#xff0c;现在最新的版本为 Swagger3&am…