网络安全—PKI公钥基础设施

news2024/11/30 11:37:36

文章目录

  • 前提知识
    • 散列函数
    • 非对称加密
    • 数字签名
  • PKI
    • 受信任的人
    • RA注册
    • CA颁发
    • IKE数字签名认证(交换证书)
    • 密钥管理

前提知识

散列函数

散列也可以叫哈希函数,MD5、SHA-1、SHA-2、、(不管叫啥,都记得是同一个东西就行)
散列的特点:

  • 固定大小
    不管你进行散列的文件大小有多大,最后输出的都是一个固定长度的散列值
  • 雪崩效应
    这个不要误解是缺点,这个雪崩其实是优点,意思是在你做散列之前的那个值如果其中有一个比特改变了,那出来的散列值将会与没动之前的值大大不同。这就叫做雪崩效应。这就很好的避免了别破解的手段,只能通过碰撞手段,在最短时间内找到不同的文件能够输出一样的散列值。
  • 单向
    散列函数就是一个单向函数。是一种只能由输入推断输出但不能由输出逆推输入的函数,即使攻击者知道了加密算法和密文,他们也很难解密出明文。
  • 冲突避免
    意思是很难在一个很短的时间内找到另一个散列值和现在输出的散列值一样的文件,就好比我们现在的指纹,短时间内很难找到另外一个人的指纹和我的指纹一样,冲突就避免了。

非对称加密

在这里插入图片描述

熟悉的 公钥加密,自己生成一对公钥私钥,公钥可以发布出去谁都可以知道,但是私钥只有自己知道。

  • 加解密
    在加解密中的公私钥中,是使用公钥加密私钥解密,私钥加密的公钥解不开,这是在加解密中是这样的。
  • 签名
    在签名中的公私钥,是私钥签名公钥验证,公钥无法签名,只有私钥能验证持有者身份,和加解密是相反的,首先算法上就是不一样的。
  • 通常加解密的公私钥和签名的公私钥不一样,但是理论上是可以一样的(如果是我,我肯定两对钥匙不同,不然有一个私钥泄露了那也只崩一边不会两边都崩)
    签名算法只是算法不同性导致他是使用私钥签名,公钥验证,有的人会觉得签名怎么看起来一点都不安全,其实恰恰相反,因为我们签名就是用来给别人验证的,安全性是建立在你私钥保管好了,没有人能够伪造你的签名,因为不知道你的私钥。

小结:由于这种非对称加密的出现虽然一开始觉得没有对称美,但是后来发现非对称加密才是最优雅的安全系数提升了很多的加密方式,用久了也会觉得非对称加密才是真正的对称美,实在是太优雅了!
但是由于他的缺点是加密速度非常慢,密文会变长,既然如此,那就正好了,我们散列出来的值就很小,这就是后面的数字签名,我们对散列值进行签名就是数字签名,数字签名由于是非对称的签名,签名是私钥签,公钥验证,所以其他人可以通过公钥来验证身份。
PGP就是结合了对称和非对称,就是使用随机产生的对称会话密钥加密,将会话密钥使用非对称加密->即使用私钥进行加密,那这样只有持有我的公钥的人可以拿出这个会话密钥进行解密这份数据包。很优雅的解决了非对称加密速度慢的问题。

数字签名

在这里插入图片描述

主要是关注图中的数字签名。

  • 数字签名流程
    原文件进行散列函数得到唯一的散列值

    散列值使用发送者的私钥进行签名

    发送者的数字签名就出来了(无法伪造)

    接收方使用发送者的公钥进行验证签名,即得到散列值

    将得到的文件做一个散列函数得到散列值,
    比对一下两个散列值是否相同即完成了数字签名验证的过程了。

PKI

先明确一下我们现在赤裸裸的进行交换公钥交换信息的话会出现什么问题

  • 双方翻脸不认人,某一方可以说我的收到的信息不是长这样或者我发过去的时候不是这么写的,中间肯定有黑客截获了直接把我所有信息都替换掉了?
  • 当出现上面这种争执的时候就可能双方给得打官司了,谁也不服谁。
  • 你怎么知道交换公钥的时候,那个公钥是我的呢?万一早就在公钥交换的过程就被攻击了,那我们以前交流的信息其实就没有一条是可信任的了。

受信任的人

之前看到过一个视频讲了一个例子十分好,在我们去到新公司上班的时候如何快速和其他人打好关系建立信任,那就是需要一位德高望重的老员工带着我们去一个一个的认识和介绍。
OK,这一点的提出貌似有了点头绪,那我们为了避免交换公钥后出现的各种不安全问题,就需要一个可信任的第三方机构。那么这个机构就是我们的RA注册机构、CA证书颁发机构等等,多个机构和设施结合就是我们的PKI。
PKI最核心的就是CA,颁发证书的机构,他颁发的证书可信的是很高的,也就是说大家都相信他颁发的证书,都去他那里注册,然后这样大家就可以通过这个"老员工"相互认识和通信了,可信度也高。

RA注册

注册机构,首先我们要知道RA是类似于我们去银行前台办理一系列的手续,前台就是我们的RA,所以说有时候也赖不得说线下办理麻烦,不能搞个线上吗?其实线下是为了保证你的业务安全性。
回到正题,RA注册就是一个注册你身份到PKI这个机构里面,让你可以和其他人一起玩,一起交流沟通,注册完成后就能够去CA颁发一个证书给你了。

注册一般最基本的就是提交你的公钥,你的ID名字、有效期等等,最重要的是你的公钥,线下提交的总不能被黑客劫持到了吧?!当然了,有些地区是支持你线上办理的,有一说一,你都这么谨慎去办理CA了,还不如线下来的安全,还敢线上办理?(没有贬低线上办理的意思)
(关于注册的更多细节我就不深究了)
有时候还有需要你提交你办理的业务也就是说待会颁发的证书是什么类型的。

CA颁发

证书颁发机构。
明确一个点:CA证书服务器也可以类比成用户,他也是有私钥和公钥的,所以说我们是相信他的私钥不会丢失且能够保管好我们的信息的这么一个机构。
这个就是等你在前台办完手续后,通过资格认证后,我们的CA证书机构就会颁发一个属于你自己的证书,然后你就可以通过这个证书来和其他人做一个安全的公钥交换。

目前还有点懵,但是我们需要知道的是,我们公钥交换不安全,需要第三方给我们一个可靠的安全公钥交换,但是和我们预期的不同的是,不是机构带着我们去做公钥交换,而是给你一个可以提供安全公钥交换的证书,交换证书就能够完成安全的公钥交换。下面开始解析具体细节。

  • 首先我们的公钥和其他信息交给了CA,然后CA就开始生成属于我的证书
    CA证书里面最基本的内容:ID名(你自己的)、你的公钥、证书服务器的签名、有效期等等。
    • 这个签名很重要,签名是证书服务器的私钥签名的。需要证书服务器的公钥验证,巧了这不,我来到你家门办理业务,那么这个公钥待会肯定会给到我们,不用担心,因为他的公钥是给你一个根证书,里面有他的CA公钥
    • 根证书:存着CA的个人信息、CA的公钥、CA的服务器签名。
      到这的时候很熟悉,一股Kerberos的味道,用根证书解开别人的证书里面的CA服务器签名得到哈希散列值,然后用对方证书里面的东西做一个哈希散列值一对比两个一不一样就代表是否是成功且安全的交换了公钥了。
  • 我们拿到证书了,就可以愉快的和其他人也有该机构颁发的证书进行安全的公钥交换了。

在这里插入图片描述


IKE数字签名认证(交换证书)

其实上面PKI已经完成工作了,也就注册申请证书了,如果你信任他,就拿着他颁发下来的证书和其他人进行公钥交换就行,如果需要深究那就需要理解为什么这么做还有为什么就可以实现安全的交换。

  • 如下图所示
    IKE(Internet Key Exchange)中数字签名认证通常涉及交换数字证书的过程。

在这里插入图片描述
多么优雅的一个图片,签名、根证书、交换等等一系列操作组合起来太优雅了!


回到正题,我们现在不用CA颁发的证书的话面临的问题就是之前提到过的,公钥交换不安全,由于可能被人截获替换了公钥,那么我们可能接下来的对话都被黑客操控者。

  • 假设我们注册完成了,OK捋一下我们都有些什么
    CA根证书 == CA个人信息、CA公钥、CA证书服务器签名、有效时间…
  • 我们要和对方交换证书的流程(使用IKE数字签名)
    图中从左往右数
    第一个包:我们将以后交流信息要使用到的散列函数和其他对方要知道的信息做一个散列哈希值,然后用自己的私钥进行数字签名。
    第二个包:我的证书,是CA权威机构颁发下来的证书。
    第三个包:我的个人信息(你的让人家知道你是谁)
    第四个包:Header,其他关键信息
  • 接收方接收到证书后如何操作得到我的公钥呢?
    下面以接受方视角解释
    首先接收方一定有CA根证书

    拿到数据包后第一件事情可以拿出根证书里面的CA公钥,将对方发送过来的证书里面的CA服务器的签名使用CA公钥进行验证(签名肯定是CA使用私钥给对方的信息签名的),验证得到一个散列哈希值

    取出对方证书里面的除了刚刚的签名,其他信息做一个散列哈希值。然后将之前验证得到的散列哈希值和现在这个散列哈希做一个对比就知道是否真的是对方发来的且这个这证书是可信的。

    这时候其实还要继续,我们通过对方的证书拿到了对方的公钥,然后就可以通过对方的公钥对那个第一个包的数字签名进行验证,然后得到哈希散列值,同理将对方要告诉我的其他信息也做一个散列哈希值,二者进行对比就知道公钥真真正正是对方的了。

开始通过问题来说明这个优雅的IKE数字签名

  • 证书发的太多会不会造成威胁?
    不会,证书给谁发都行,因为你去注册后,根证书你自己已经拿到了,根证书这玩意你总不能会说伪造吧?根证书里面有CA公钥,通过CA公钥能够验证别人发过来的证书里面的机构给他的CA服务器签名得到散列哈希值,然后其他信息做一个散列哈希函数得到的值和验证签名出来的一不一样就知道证书是否有效(当然还有检查有效时间)

  • 那你还是没解决掉别人盗用我证书的威胁啊?
    别担心,不要忘记了还有一个数字签名,协商好的算法能不能验证出来就看刚刚解出来的对方申请下来的CA颁发的证书里面的公钥是不是对方的,这就无法盗用证书了。

  • 那万一别人直接将整个证书劫持了,使用了攻击者自己申请好的证书发给我怎么办,我岂不时直接就啥都不清楚的被欺骗了?
    别忘记了IKE数字签名流程里面还有你的ID号明文形式发送过去,这玩意要是篡改了,你证书总不能窜改吧,证书里面不是还有ID可以知道是不是对方吗?这两一对比你不就知道是不是对方了么。这就完美打破了你的这个"骇客"想法了。

  • 万一证书里面的ID和我另一个人长得很像那我岂不是也会被骗到?
    这个确实可以有一定概率骗到审核的人。
    不过这就是你的不对了,不能赖别人,别人名字没有错,错的是你,你自己就要承担责任了,因为发送方没有任何过失,你自己这么不谨慎怪不了谁的。

  • 最后还有一个问题不知道解决了没,那就是双方是否还可以翻脸不认人?
    有了第三方权威机构后,除非你买通了权威机构,这也是不道德的行为,所以基本上你翻脸不认人是不可能的,因为你要说公钥不是对方造成我信息泄露的话,那赖不得人家,这可是安全的公钥交换,自己没有细心的检查不能怪别人。
    私钥丢了呢?那也是你自己的问题,你泄露出去的,对方完全没有责任,私钥只有你自己的知道啊。我们没有协商任何的共享密钥。

密钥管理

密钥产生、更新、备份、恢复等等
(这里本人没有且不打算深入探究)


总结:
PKI就是帮助我们完成一个安全的公钥交换问题,解决了第三方直接伪造公钥的问题仅此而已,后面的你交流什么信息发送什么数据PKI不管的,给你颁发证书,用证书实现安全的公钥交换就行了。

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

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

相关文章

解决Hive在DataGrip 中注释乱码问题

注释属于元数据的一部分,同样存储在mysql的metastore库中,如果metastore库的字符集不支持中文,就会导致中文显示乱码。 不建议修改Hive元数据库的编码,此处我们在metastore中找存储注释的表,找到表中存储注释的字段&a…

三菱MR-JE伺服脉冲轴应用参数设置

三菱MR-JE伺服在脉冲轴控制上的应用,常用参数设置如下: 1、常用参数 未完...

【LLM-RAG】知识库问答 | 检索 | embedding

note RAG流程(写作论文中的background:公式设定、emb、召回内容、召回基准)(工作中的思路:嵌入模型、向量存储、向量存储检索器、LLM、query改写、RAG评测方法)仅为个人关于RAG的一些零碎总结,…

Intellij建议用String替换StringBuilder

文章目录 前言String 和 StringBuilder 性能对比String 和 StringBuilder 使用的字节码对比总结 本文收发地址 https://blog.csdn.net/CSqingchen/article/details/135324313 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 最近编码时看到 Intellij 建议使用 Stri…

Ubuntu系统开启和使用2D、3D远程可视化方式

Ubuntu系统开启和使用2D、3D远程可视化方式 使用【3D可视化Ubuntu镜像】创建的云主机,可以使用3D可视化工具turbovnc进行远程连接。 注意: 1、系统环境里面已集成turbovnc远程可视化服务软件,请勿在系统里再里次重复安装任何VNC软件&#…

【IP-Adapter】进阶 - 同款人物【2】 ☑

测试模型:###最爱的模型\flat2DAnimerge_v30_2.safetensors [b2c93e7a89] 原图: 加入 control1 [IP-Adapter] 加入 control 2 [OpenPose] 通过openpose骨骼图修改人物动作。 加入 control 3 lineart 加入cotrol3 …

python3 识别人像照片并纠正照片正反

实现效果: 本程序可以将下图第二张照片进行人脸识别,发现相片是否是正向,如果不是就进行相片转正形成下图第一张图。 代码 安装配置 模型下载 首先在我的这篇文件下载相应的人脸识别模型,一般 64标记点就够用,当然你也可以换成68位 人脸识别模型 shape_predictor_68…

uniapp中的uview组件库丰富的Form 表单用法

目录 基本使用 #Form-item组件说明 #验证规则 #验证规则属性 #uView自带验证规则 #综合实战 #校验错误提示方式 #校验 基本使用 此组件一般是用于表单验证使用,每一个表单域由一个u-form-item组成,表单域中可以放置u-input、u-checkbox、u-radio…

2023-12-19 LeetCode每日一题(寻找峰值 II)

2023-12-19每日一题 一、题目编号 1901. 寻找峰值 II二、题目链接 点击跳转到题目位置 三、题目描述 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不…

小白入门java基础-反射详解

一:介绍 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。 Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。Java语言编写的程序,在一次编译后,可以在多个系统平台上运行。 主…

如何使用Docker compose安装Spug并实现远程访问登录界面

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. Docker安装Spug二. 本地访问测试三. Linux 安装cpolar四. 配置Spug公网访问…

气象预报与计算机技术:深度融合与未来展望

气象预报与计算机技术:深度融合与未来展望 一、引言 气象预报,作为人类对自然界气象变化的探索与预测,随着时间的推移和技术的进步,已经逐渐从单纯的经验模式转变为依赖于精密的仪器与强大的计算机技术的科学预测。在本文中,我们将深入探讨气象预报与计算机技术之间的密…

负载均衡概述

负载均衡 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 四层负载均衡 vs 七层负载均衡 四层负载均衡(目标地址和端口交换)…

Java集合/泛型篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、HashTable(线程安全)二、TreeMap(可排序)三、LinkHashMap(记录插入顺序)四、泛型类前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去…

Oracle merge into 语句用法 Oracle merge into 批量更新 关联更新 批量修改 关联修改

Oracle merge into 语句用法 Oracle merge into 批量更新 关联更新 批量修改 关联修改 一、概述 在开发任务中,遇到一个需求,同一批次的名单;根据一定的条件判断是否存在,若存在,则进行更新操作;若不存在&a…

VS Code技巧汇总

VS Code技巧汇总 前言设置快捷键插件汇总环境搭建HTMLC/CPython 远程SSH连接被控端准备安装扩展配置SSH创建SSH连接打开终端窗口通过公钥连接SSH 前言 本文介绍VS Code的使用技巧,内容包含设置、快捷键、插件汇总、环境搭建、远程SSH连接、等等。 设置 中文界面 …

芋道视频199 - 工作流 - 关系图 - ruoyi-vue-pro

一 新建表单 数据库:bpm_form。实体类:BpmFormDO.java: 二 流程模型、流程部署、流程定义 1 第1步:创建流程模型 页面操作:实体类:Model.java。数据库:ACT_RE_MODEL 流程模板信息表&#xf…

手拉手后端Springboot整合JWT

环境介绍 技术栈 springbootmybatis-plusmysqljava-jwt 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 Json Web令牌简称JWT Token是在服务端产生的一串字符串是客户端访问资源接口(AP)时所需要的资源凭证。…

认识Linux指令之 “mv” 指令

01.mv指令(重要) mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。 语法: mv [选项] 源文件或目录 目标文件或…

【JavaFX】基于JavaFX11 构建可编辑、对象存储、修改立即保存、支持条件过滤的TableView

文章目录 效果设计思路二、使用步骤1. 创建实体类2.读取本地文件数据3. 定义表格TableView总结效果 如图所示,这是一个存储application.properties内容的表格。这里的文件application.properties是从Linux服务器上获取来的。 当点击检索按钮,并输入条件匹配字符时,TableVie…