CA证书及PKI

文章目录

  • 概述
  • 非对称加密
    • User Case: 数据加密
    • User Case: 签名验证
    • 潜在问题
  • CA
    • CA证书的组成
    • CA签发证书流程
    • CA验证签名流程
    • CA吊销证书流程
  • PKI
    • 信任链
    • 证书链

概述

首先我们需要简单对证书有一个基本的概念,以几个问题进入了解

证书是一种电子文档(可以理解为网络世界的身份证),用于在通信双方时验证对方的身份,它包含了证书持有者的信息,公钥以及由可信第三方(称为证书颁发机构,CA)对这些信息的数字签名

在这里插入图片描述

证书的在网络安全通信中作用极大:

  • 身份验证: 证书用于验证通信双方的身份,通过证书可以确认对方是可信的,从而防止身份伪造和中间人攻击
  • 数据加密:证书包含的公钥用于加密数据,从而确保数据在传输过长中不被窃听和篡改,只有持有相应私钥的接收方来解密这些数据
  • 数字签名:证书用于对数据进行数字签名,以确保数据的完整性和不可否认性。数字签名可以证明数据在传输过程中未被篡改,且签名确实来自签名者
  • 安全通信:证书在安全协议(如SSL/TLS)中起着至关重要的作用。这些协议通过使用证书来建立安全的通信通道,保护数据的机密性和完整性
  • 信任建立:证书通过公钥基础设施(PKI)来建立信任链。根证书由权威的CA签发,任何经过根证书认证的证书都被认为是可信的,从而形成一个信任体系。

非对称加密

非对称加密在证书中扮演了非常重要的角色,甚至可以说是为了非对称加密这瓶醋才包了证书这盘饺子

公钥:可以向任何人公开,发送方使用接收方的公钥来加密消息

私钥:仅归自己所有,不可被公开,接收方使用自己的私钥来解密发送方加密的消息,只有拥有正确私钥的人才能解密由其公钥加密的数据。

在这里插入图片描述

User Case: 数据加密

公钥和私钥在数据加密中使用流程如下,图片十分清晰,我们不再赘述

在这里插入图片描述

User Case: 签名验证

在这里插入图片描述

辅助上图,描述下整体流程(我们以Server代发送方,Client代接收方):

  • Server生成数据签名流程
    1. Server对原始数据(文件或消息)使用Hash函数生成一个固定长度的hash值
    2. Server使用自己的私钥加密hash值
    3. Server添加证书或TimeStamp与hash值一起生产一个数字签名
    4. 发布数字签名
  • Client验证签名流程
    1. Client接受到 原始数据 和 附加的数字签名
    2. Client对 原始数据应用相同的散列函数,生成一个新的hash值 用于与签名中的hash值进行比较
    3. Client使用Server发布的公钥解密数字签名,获得Server端生成的hash值
    4. Client对比两个hash值(Client生产的和Server生产的),如果hash值一致则能确定数据未被篡改

潜在问题

公钥私钥已经保证了一定的安全性

发送者使用数字签名来认证自己

client验证身份后,双方在对称加密和hash算法保护的安全信道上发送消息

例如:如果Server和Client发送数字签名时,数据被中间人截获,导致最终发送给Client的数据是中间人生成的签名怎么办呢?

在这里插入图片描述

解决方案是: 找个三方提前证明下Sender的身份,CA应运而生

在这里插入图片描述

CA

CA全称Certificate Authority,是一个受信的第三方机构,负责管理和签发证书,可类比理解为颁发身份证的官方机构

需要证书的S向CA申请签发证书,CA验证证书申请人S的身份并颁发含有S公钥的证书,然后,CA将使用自己的私钥对颁发的证书进行数字签名,以建立对证书的有效性的信任(即获得证书方可以通过CA签名确认签发机构是否合法)

CA证书的组成

一个证书主要由三大部分组成:申请者与颁发者信息,申请者公钥,CA签名

明文:申请者公钥,申请者的组织信息和个人信息,签发机构CA的信息,证书有效时间,证书序列号等信息

密文:CA数字签名

以下是google签发的一个证书样例:

在这里插入图片描述

CA签发证书流程

以下以Server代证书申请人

申请者生成密钥对
创建证书签名请求CSR
提交CSR给CA
CA验证申请者身份
身份验证通过?
生成证书
CA使用私钥签名证书
分发证书给申请者
发布证书到证书库
拒绝申请并通知申请者
  1. Server生成自己的一对公钥和私钥,私钥一般由Server独自控制和拥有,但某些情况下,私钥可能会在颁发CA控制的硬件安全模块(HSM)中生成并安全存储
  2. Server向CA发送包含其公钥和其他识别详细信息的证书签名请求(CSR)
  3. CA采取措施验证Server的身份和在CSR中申领凭证的权力(如Server的域名是否有效或电子邮件证书的电子邮件地址是否有效),即确认提交的CSR确实由Server创建
  4. CA验证成功Server身份,为Server颁发包含CSR详细信息和公钥的证书。同时CA将使用自己的私钥对颁发的证书进行数字签名,并且将新签证书发布到证书库,以便其他用户和系统能够验证其有效性

CA验证签名流程

以下以Client代证书申请验证人

  1. Client向Server首次建立通信时,Server返回被签发的证书
  2. Client读取证书中相关明文的信息(明文中含有CA签名的Hash算法),Client采用相同的Hash算法计算明文信息的info digest,然后使用CA的公钥解密签名数据,对比证书的加密的info digest,如果一致,则可以确认证书的合法性
  3. Client验证证书相关的域名信息,有效时间等信息
  4. Client会内置安装CA本身的证书信息(由CA自签发),如果CA不被信任,Client找不到对应的CA证书,证书也会判定为非法

CA吊销证书流程

证书超过有效期时,证书就不再有效或不可信,证书持有者或第三方(如系统管理员)就会向CA提交吊销证书请求

CA也会通过自动检测(如发现私钥泄露,证书被滥用等)发起吊销流程

接收吊销请求
验证吊销请求
验证通过?
记录吊销信息
拒绝吊销请求并通知请求方
更新CRL
更新OCSP数据
发布更新后的CRL
通知证书持有者
通知依赖方
  1. CA验证吊销请求的真实性和合法性,可能包括身份验证、关联凭证检查等。

  2. CA在内部数据库中记录证书的吊销信息,包括吊销日期和原因

  3. CA更新证书吊销列表(CRL),将被吊销的证书信息添加到CRL中

  4. CA定期发布更新后的CRL,使依赖方(如客户端、服务器)能够获取最新的吊销信息

  5. CA更新在线证书状态协议(OCSP)响应数据,确保实时查询能够返回最新的吊销状态

  6. CA通知证书持有者其证书已被吊销,说明吊销原因和后续步骤

    CA可能通过公告或直接通知相关依赖方,确保其知晓证书吊销信息。

PKI

PKI 全称Public Key Infrastructure, 是一组构成加密框架的技术和流程,可以理解为PKI为减轻CA的负担搭建的一套以CA为核心的服务框架扩展,从而实现更系统化,标准化和大规模管理数字证书

PKI主要包含以下几部分

在这里插入图片描述

  • CA:这里的CA专职颁发,存储和签署数字证书

  • RA:RA分担了原来CA的功能,专门负责审查证书申请者的身份,判断是否同意CA向申请者签发证书

  • VA: Validation Authority, 由于证书具有有效期,VA负责的是证书状态的实时验证,以下简述VA的工作流程

    1. VA定期从CA下载最新的证书吊销列表(CRL)和获取实时证书状态并存储在本地数据库
    2. Client发起证书验证请求(OCSP 在线证书状态协议),请求中包含要验证证书的唯一标识,OCSP请求会发送至VA的OCSP服务器
    3. VA解析请求内容,提取出待验证证书信息,查询本地数据库获取证书状态
    4. 根据查询结果生成OCSP响应并用自己的私钥对响应签名,确保响应的完整性和可信性
    5. 客户端拿到响应,根据证书状态确定下一步操作
    发送OCSP请求
    发送OCSP响应
    有效
    吊销
    未知
    客户端生成OCSP请求
    VA接收并解析请求
    VA查询证书状态
    生成OCSP响应
    VA用私钥签名响应
    客户端接收并验证响应
    证书状态
    继续通信
    中止通信
    安全措施

    CA会定期向VA发送更新的证书撤销清单(CRL)

    接收方会将接收到的证书发送给VA,由VA进行验证证书是否依旧处于有效期

信任链

由于数字证书的广泛应用,CA机构的需求也随之上升,从而引入了中间证书,通俗的理解为 较大的公司(根CA)验证过一些可信的小公司(子CA),授权这些小公司也可签发证书。

PKI中出现了信任链的概念,信任链是指通过一系列信任关系建立的信任路径,从根证书(Root Certificate)到最终用户证书(End-Entity Certificate),信任链的核心思想是,如果你信任链中的每一个证书,那么你就可以信任链中的所有证书。

在这里插入图片描述

信任链所带来的好处:

  • 安全性:根证书至关重要,信任链减少了根证书的直接使用,转而由中间证书来签署最终用户证书,可以降低根证书的风险,增强了整个PKI体系的安全性
  • 灵活性:引入中间证书后,CA可以更灵活地管理和更新证书。如果某个中间证书出现问题或需要更换,只需替换中间证书而不影响根证书和最终用户证书的信任关系。
  • 可扩展性:随着数字证书的应用范围不断扩大,需要不断添加新的证书颁发机构(CA)。信任链的存在使得可以方便地添加新的中间证书,扩展PKI体系而不影响现有的信任结构。
  • 透明性:信任链清晰地展示了证书的层级关系和信任路径,使数字证书的验证过程更加透明和可理解。通过查看证书链,可以了解到证书的签发者和信任关系,从而更好地评估证书的可信度

证书链

证书链是信任链的具体实现,Client在验证证书时,如果认为当前证书不可性,可以从最终用户证书开始,逐级上溯到根证书进行验证。

证书链体现的是证书的层级关系,每一级CA的证书都是由上一级CA签发,最顶层的根证书是自签名的(即自己签发),证书链包括了最终用户证书、中间证书和根证书

在这里插入图片描述

🐖:根证书预安装在客户端操作系统和浏览器中,通常由大型受信任CA签发,如果根证书被信任,所有由其签发的中间证书和最终用户证书也会被信任。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化——pyecharts库绘图

目录 官方文档 使用说明: 点击基本图表 可以点击你想要的图表 安装: 一些例图: 柱状图: 效果: 折线图: 效果: 环形图: 效果: 南丁格尔图(玫瑰图&am…

Mysql的InnoDB介绍

目录 show engines查看搜索殷勤,默认InnoDB。 Mysql为什么使用InnoDB作为默认存储引擎 InnoDB主要包括内存结构和磁盘结构 内存结构包含: 磁盘结构中包括: 为什么设计成内存结构和磁盘结构两部分 使用InnoDB存储引擎创建的表,对应的数据文件在哪里…

Android14之向build.prop添加属性(二百一十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

uniapp原生插件开发实战——集成Android端的Twitter登陆

Android集成Twitter登陆的官方教程:https://github.com/twitter-archive/twitter-kit-android/wiki 项目创建 首先可以先看下uniapp原生插件开发教程 uniapp原生插件类型分为两种: Module模式:能力扩展,无嵌入窗体的UI控件,类似于功能插件。Component模式:在窗体中内嵌…

php 混合xml js,html 代码报错 ,结束标签关闭, short_open_tag 的作用,php关闭文件结束判断

结束标签关闭, short_open_tag 的作用,php关闭文件结束判断 有时候我们我们会将php,xml,js,html 混合编写 php文件只要开始标签而不要结尾标签? 混合代码看代码 直接运行 yntax error, unexpected version (T_STRING) in php…

STM32智能家居项目esp8266上云OneNet【附源码+详细教程】

目录 一、硬件选材 二、OneNet使用教程 三、代码修改教程 四、添加数据流方法 五、项目工程(源码元件清单教程) 小白也能做,项目工程在后文可下载。 一、硬件选材 二、OneNet使用教程 拿到代码后肯定是连不上网的,因为源码…

Android.基本用法学习笔记

设置文本的内容 先在strings.xml声明变量 方法1. 方法2. 设置文本的大小 1.单位dp,大家可以去学一下有关的单位换算 2. 设置文本颜色 1. 2. 4.设置文本背景颜色 1. 2. 设置视图的宽高 与上级视图一致,也就是上一级有多宽就有多少 1. 2. 3. 4. 设置视图…

生成式人工智能重置:从初期热潮到战略扩展

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

cs61C | lecture4

cs61C | lecture4 C 语言内存布局 ### Stack 在最顶部,向下增长。包含局部变量和 function frame information。 > Each stack frame is a contiguous block of memory holding the local variables of a single procedure. > A stack frame includes: > …

C语言详解(文件操作)2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

浅析嵌入式实时系统中信号量的概念

目录 概述 1. 认识信号量 1.1 定义信号量 1.2 信号量的类型 1.2.1 二值信号量 1.2.2 计数信号量 1.2.3 互斥信号量 1.2.3.1 认识互斥信号量 1.2.3.2 互斥信号量的其他特性 2 典型信号量的使用 2.1 等待和信号同步 2.2 多任务等待和信号同步 2.3 信用跟踪同步 2.…

C++ - Clion安装Qt msvc2017版本教程,基础环境配置clion+ Qt5.12.12 msvc2017 + VS2019

背景:平时代码开发使用clion,但使用项目要制定mscv2017版本Qt。先装过mingw版本Qt无法运行,但msvc版本依赖装有Visual Studio,本地装的又是2019版。就出现了这个大坑,需要配置好clion Qt msvc2017 VS2019。 文章目录 …

深度学习中embedding层的理解

Embedding层作用 在深度学习领域中,Embedding层扮演着至关重要的角色,尤其在处理文本数据或类别数据。Embedding层的功能有两个: 1. 将高维稀疏的输入数据(如单词、类别标签等)转换为低维稠密的向量表示,…

LNMP配置

文章目录 一、相关概念CGI的由来FastCGIPHP-FPM 二、编译安装编译安装nginxyum安装mysql编译安装php配置nginx支持php解析增加数据库安装论坛 一、相关概念 CGI的由来 最早的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器…

Python | Leetcode Python题解之第144题二叉树的前序遍历

题目: 题解: class Solution:def preorderTraversal(self, root: TreeNode) -> List[int]:res list()if not root:return resp1 rootwhile p1:p2 p1.leftif p2:while p2.right and p2.right ! p1:p2 p2.rightif not p2.right:res.append(p1.val)…

DeepSpeed MoE

MoE概念 模型参数增加很多;计算量没有增加(gating小FNN,比以前的大FNN计算量要小);收敛速度变快; 效果:PR-MoE > 普通MoE > DenseTransformer MoE模型,可视为Sparse Model&…

手机投屏到电脑时,手机提示连接失败

前言 注意,本方法建立在你已经通过其他帖子等解决了前置条件的情况下,手机提示连接失败情况下,包括但不限于关闭防火墙、安装无线投屏工具、手机和电脑连接在同一个WiFi频段下、关闭杀毒软件等。 具体操作方法 1、请进入设置 > 系统和…

电脑存储设备,固态硬盘介绍,usb接口

简介 存储设备分为两大类主存和辅存,另外还有专门提供存储服务的网络存储 主存储器 随机存取存储器(RAM, Random Access Memory) 特点:高速、易失性存储器,断电后数据丢失。用途:临时存储正在使用的数据…

卷积神经网络 convolution neural network

1.数学卷积:滑动窗口 2.图像具有局部相关性和平移不变性,有许多冗余的特征点,如果用全连接的神经网络会很浪费时间。 3.卷积nn:减少参数,滑动提取特征,特征作为下层卷积的输入,然后放到全连接…

Androidstudio项目加载不出来,显示Connect timed out

Android studio加载不出来所需要的环境依赖,99%的问题都是网络原因 解决办法有两个: 1.科学上网 2.使用国内的镜像 方法一自行解决,下面重点介绍方法二 在项目目录下找到gradle->wrapper->gradle-wrapper.properties 将项目的distributionUrl改为https://mirrors.cl…