深入理解PKI

news2024/11/22 23:22:15

安全始终是网络通信的核心议题,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.coloradmin.cn/o/1071851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构 | (二) List

什么是 List 在集合框架中, List 是一个接口,继承自 Collection 。 Collection 也是一个接口 ,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable 也是一个接口,表示实现该接口的类是可以逐个…

iPhone15手机拓展坞方案,支持手机快充+传输数据功能

手机拓展坞的组合有何意义?首先是数据存储场景,借助拓展坞扩展出的接口,可以连接U盘、移动硬盘等采用USB接口的设备,实现大文件的快速存储或者流转;其次是图片、视频的读取场景,想要读取相机、无人机SD/TF存…

阿里云ESS弹性伸缩的实例配置以及伸缩组规则配置

文章目录 1.配置伸缩组的实例来源信息1.1.创建伸缩组实例来源配置属性1.2.查看创建的伸缩来源配置信息 2.配置伸缩组的触发规则2.1.创建伸缩规则2.2.创建扩展实例的伸缩规则2.3.创建缩减实例的伸缩规则2.4.扩展缩减规则添加完成 1.配置伸缩组的实例来源信息 伸缩组的属性已经配…

自监督DINO论文笔记

论文名称:Emerging Properties in Self-Supervised Vision Transformers 发表时间:CVPR2021 作者及组织: Facebook AI Research GitHub:https://github.com/facebookresearch/dino/tree/main 问题与贡献 作者认为self-supervise…

【计算机网络黑皮书】传输层

【事先声明】 这是对于中科大的计算机网络的网课的学习笔记,感谢郑烇老师的无偿分享 书籍是《计算机网络(自顶向下方法 第6版)》 需要的可以私信我,无偿分享,课程简介下也有 课程链接 目录 传输服务与协议网络层与传输…

非局部均值滤波的指令集优化和加速(针对5*5的搜索特例,可达到单核1080P灰度图 28ms/帧的速度)。

非局部均值滤波(Non Local Means)作为三大最常提起来的去燥和滤波算法之一(双边滤波、非局部均值、BM3D),也是有着很多的论文作为研究和比较的对象,但是也是有着致命的缺点,速度慢,严重的影响了…

【Spring】Spring MVC 程序开发

Spring MVC 程序开发 一. 什么是 Spring MVC1. MVC2. Spring、Spring Boot 与 Spring MVC 二. 创建 Spring MVC 项目1. 创建项目2. 用户和程序的映射3. 获取用户请求参数①. 获取单个参数②. 获取多个参数③. 传递对象④. 后端参数重命名(后端参数映射)R…

谈谈Android Jetpack Compose中的状态提升

谈谈Android Jetpack Compose中的状态提升 在本文中,我们将了解Jetpack Compose中的状态提升(State Hoisting)。在深入研究这个主题之前,让我们先了解一下Jetpack Compose中的有状态(Stateful)和无状态&am…

如何快速查询众多未签收快递单号

在日常工作中,快递查询是一个常见的任务。无论是电商卖家、快递员还是收件人,都需要查询快递的状态和信息。然而,一个一个地查询快递单号不仅耗时,还容易出错。因此,使用固乔快递查询助手这样的工具可以大大提高查询效…

Polygon zkEVM递归证明技术文档(5)——附录:借助SNARKjs和PIL-STARK实现proof composition

前序博客有: Polygon zkEVM递归证明技术文档(1)【主要描述了相关工具 和 证明的组合、递归以及聚合】Polygon zkEVM递归证明技术文档(2)—— Polygon zkEVM架构设计Polygon zkEVM递归证明技术文档(3&#…

【数据结构】计数排序 排序系列所有源代码 复杂度分析(终章)

目录 一,计数排序 1,基本思想 2,思路实现 3,计数排序的特性总结: 二,排序算法复杂度及稳定性分析 三,排序系列所有源代码 Sort.h Sort.c Stack.h Stack.c 一,计数排序 计数…

origin作图上下对开,修改颜色

一般上下对开后默认两幅图颜色相同,如果要修改成不同的颜。双击空白处,在图层栏里取消勾选绘图属性。

基于Java的在线文档编辑管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

BRISK: Binary Robust Invariant Scalable Keypoints全文翻译

pdf链接:https://pan.baidu.com/s/1gFAYMPJStl4cF0CswY9cMQ 提取码:yyds 摘要 从图像中有效和高效地生成关键点是文献中深入研究的问题,并形成了许多计算机视觉应用的基础。该领域的领导者是SIFT和SURF算法,它们在各种图像转换下…

图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)

一、环境介绍 本文环境,以及本文所采用数据库为GreatSQL 8.0.32-24 $ cat /etc/system-release Red Hat Enterprise Linux Server release 7.9 (Maipo) $ uname -a Linux gip 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 G…

Xcode 15下,包含个推的项目运行时崩溃的处理办法

升级到Xcode15后,部分包含个推的项目在iOS17以下的系统版本运行时,会出现崩溃,由于崩溃在个推Framework内部,无法定位到具体代码,经过和个推官方沟通,确认问题是项目支持的最低版本问题。 需要将项目的最低…

关于 打开虚拟机出现“...由VMware产品创建,但该产品与此版VMwareWorkstateion不兼容,因此无法使用” 的解决方法

文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/133678951 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

我的创业之路:我为什么选择 Angular 作为前端的开发框架?

我是一名后端开发人员,在上班时我的主要精力集中在搜索和推荐系统的开发和设计工作上,我比较熟悉的语言包括java、golang和python。对于前端技术中typescript、dom、webpack等流行的框架和工具也懂一些。目前,已成为一名自由职业者&#xff0…

通用监控视频web播放方案

业务场景 对接监控视频,实现海康大华等监控摄像头的实时画面在web端播放 方案一,使用 RTSP2webnode.jsffmpeg 说明:需要node环境,原理就是RTSP2web实时调用ffmpeg解码。使用单独html页面部署到服务器后,在项目中需要播…

【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别

场景: 大家在开发stm32的时候,不管是标准库开发还是hal库开发,最基础的就是芯片引脚的某某设置,为什么这么设置?这样设置的好处是什么? 问题描述 — 开漏输出和推挽输出的用处和区别 什么是开漏输出&#x…