PKI 公钥基础设施,公钥私钥,信息摘要,数字签名,数字证书
PKI 公钥基础设施
https 基于 PKI 技术。PKI(Public Key Infrastructure,公钥基础设施)是一种安全体系结构,用于管理数字证书和密钥对,以确保安全的数据传输和身份验证。PKI 采用了公钥加密技术,其中每个实体都有一个公钥和一个私钥,这对密钥用于加密和解密通信。
信息摘要
使用一个哈希函数对文档进行摘要运算,生成一个固定长度的哈希值,这个哈希值通常称为信息摘要。
在前端领域,关于哈希函数这个概念还有哪些地方会用到?
(1)路由导航的 #号 表示的哈希路由
(2)资源打包之后会给文件名加上哈希值,用于静态资源完整性校验
(3)前端缓存管理,也可以使用哈希函数对数据进行缓存,防止健名冲突
常用的信息摘要算法:
- md5 生成128位的哈希值,但由于其容易被碰撞攻击破解,已经不再被广泛使用于安全领域,但是在业务逻辑中常用,把一个文件进行摘要获得唯一的哈希值,可以用来判断文件是否被修改。【前端经常用到的 md5 的npm 包】
- SHA-256、SHA-384、SHA-512: 属于SHA-2系列,分别生成256位、384位和512位的哈希值。目前在许多安全应用中仍然广泛使用。【前端经常使用crypto-js】
(1)信息摘要的目的,主要是为了防止数据被篡改,所以哈希算法是不可逆的
(2)信息摘要是唯一的,同一个数据用同样的哈希函数,得到的值是一定的。
对称加密和非对称加密
对称加密 | 非对称加密 |
一个密钥 | 两个密钥【公钥、私钥】 |
速度快 | 速度慢 |
DES、AES | RSA、ECC |
公钥和私钥
在加密通信中,公钥和私钥是一对密钥,通常用于非对称加密算法。这些算法允许一个密钥用于加密,而另一个密钥用于解密,其中:
-
公钥(Public Key): 公钥是一种可以自由分发的密钥,用于加密数据。任何人都可以使用公钥对数据进行加密,但只有拥有与之配对的私钥的实体才能解密这些数据。公钥通常用于加密通信中的敏感信息,例如用于建立安全连接或传输敏感数据。
-
私钥(Private Key): 私钥是一种保密的密钥,只有密钥的所有者知道。私钥用于解密由相应的公钥加密的数据。私钥通常用于解密接收到的加密数据,以及对数字签名进行生成或验证。私钥必须始终保持保密,以确保通信的机密性和完整性。
那么问题来了,如何生成公钥和私钥?
有公钥和私钥一定是非对称加密,通常使用 OpenSSL 生成公钥和私钥。【这看起来也不是前端的工作,哈哈】
数字签名
数字签名是一种用于验证电子文档真实性和完整性的技术。通过数字签名,发送者可以在文档上附加一个数字签名,接收者可以使用签名验证工具来确认文档的来源和是否在传输过程中被篡改。
数字签名防止数据被篡改这一点和信息摘要算法的作用是一样的。但是数字签名有更多的信息,相当于是信息摘要的一个扩展应用。
(1)数字签名生成的过程:
-
选择哈希算法: 首先,选择一个哈希算法,例如SHA-256。哈希算法用于将消息或文档转换为固定长度的哈希值。【生成签名一定要有哈希算法】
-
创建消息摘要: 使用选择的哈希算法对消息或文档进行哈希,得到一个称为消息摘要(message digest)的固定长度字符串。这个摘要是消息内容的唯一表示。
-
使用私钥进行加密: 数字签名的生成涉及使用私钥对消息摘要进行加密。这个过程使用的是非对称加密算法,通常是使用数字签名算法中的私钥。
-
将签名附加到原始消息或文档: 将生成的数字签名附加到原始消息或文档中,形成带有数字签名的消息。
(2)数字签名的基本原理包括:
-
消息摘要(Message Digest): 发送者使用一个哈希函数对要签名的文档进行摘要运算,生成一个固定长度的哈希值。这个哈希值通常称为消息摘要。【消息摘要就是信息摘要】
-
私钥签名: 发送者使用自己的私钥对消息摘要进行加密,形成数字签名。
-
公钥验证: 接收者使用发送者的公钥对数字签名进行解密,得到消息摘要。
-
验证摘要: 接收者再次对接收到的文档进行哈希运算,得到一个新的消息摘要。
-
比较摘要: 接收者将用公钥解密得到的消息摘要与重新计算得到的摘要进行比较。如果两者一致,说明文档未被篡改且确实来自于私钥持有者。
数字证书
数字证书是一种用于在网络通信中验证身份和确保数据传输安全的安全工具。它是由数字签名和公钥加密技术结合而成的一种电子凭证。数字证书通常包含以下信息:
-
主体信息(Subject): 证书中标识了证书的所有者,通常是一个实体(个人、组织或设备)的名称。
-
公钥: 证书中包含了与证书所有者相关联的公钥,用于加密和解密通信中的数据。
-
数字签名: 数字证书通过使用颁发者(Certificate Authority,CA)的私钥对证书中的数据进行签名,以确保证书的完整性和真实性。
-
颁发者信息(Issuer): 证书中标识了颁发该证书的CA的信息。
-
有效期: 证书包含了一个指定的有效期范围,确保证书在一段时间后会过期,从而促使证书的定期更新。
数字证书形成步骤:
-
生成密钥对: 实体首先生成一对非对称密钥,包括公钥和私钥。通常使用算法如RSA或ECC进行密钥对的生成。
-
创建证书请求(CSR): 实体生成一个包含其公钥以及其他相关信息的证书请求。这个请求包括实体的标识信息,例如域名、组织名称等。
-
提交证书请求: 将证书请求发送给证书颁发机构(CA)。CA是一个受信任的第三方机构,负责验证请求者的身份并颁发数字证书。
-
验证身份: CA对证书请求进行身份验证,以确保请求者拥有提供的标识信息(域名、组织等)。这可能包括域名验证、组织验证等。
-
颁发数字证书: CA验证成功后,颁发数字证书。数字证书包含实体的公钥,以及与证书相关的元数据,如证书有效期、签名算法等。
-
证书签名: CA 使用自己的私钥对数字证书中的信息进行签名,生成数字签名。这个签名可以被验证以确保证书的完整性和真实性。
-
证书发布: CA将数字证书返回给实体,实体将其安装在其服务器或应用程序中。
-
使用数字证书: 数字证书现在可以用于建立安全的通信通道,例如在HTTPS中,客户端和服务器可以相互验证身份并使用证书中的公钥进行加密通信。
PKI 关键组件的功能
- 证书颁发机构(Certificate Authority): CA 是 PKI 的核心组成部分,负责验证个体或实体的身份,并颁发数字证书。CA 签署证书,用于证明数字证书的真实性。中国的 CA 机构有。【注意这是一个机构,或者说一个公司】
- 中国互联网络信息中心(CNNIC)
- CFCA(中国金融认证中心)
- WoSign(沃通根证书认证机构)
- 数字证书: 数字证书是包含公钥及相关身份信息的文件,由CA签发。数字证书用于在网络上建立信任,确保通信方的身份。
- 注册机构(Registration Authority): RA 是 CA 的协助机构,负责验证证书请求者的身份信息,并将验证结果提交给 CA。RA在某些情况下可以由 CA 直接处理。
- 证书存储库: 证书存储库用于存储和检索数字证书。它是一个安全的存储区域,通常由 CA进行管理。
- 密钥对生成和管理: PKI 系统支持生成和管理加密算法所需的密钥对,包括公钥和私钥。这确保了通信的安全性,同时也涉及密钥的定期轮换和更新。
- 证书撤销列表(CRL): CRL 是CA 发布的一个列表,包含被吊销的数字证书的信息。这允许验证方检查证书是否仍然有效。
- 数字签名: PKI 使用数字签名来保证证书的真实性和完整性。数字签名是用私钥生成的,可通过公钥验证。
更多关于 https 中间人攻击的知识请参考这篇文章。
相关文章:
PKI 公钥基础设施,公钥私钥,信息摘要,数字签名,数字证书
PKI 公钥基础设施 https 基于 PKI 技术。PKI(Public Key Infrastructure,公钥基础设施)是一种安全体系结构,用于管理数字证书和密钥对,以确保安全的数据传输和身份验证。PKI 采用了公钥加密技术,其中每个实…...
企业Aspera替代方案有哪些推荐
随着企业数据量的不断增加,数据传输和共享成为了一个重要的问题。Aspera是一款高性能、低延迟的数据传输工具,但是它并不是万能的,随着数据量的不断增大,也有一些企业需要寻找Aspera的替代方案。本文将介绍三种常用的企业Aspera替…...
vue3 vuedraggable draggable element must have an item slot
vue3vite 看官网使用这种<template #item“{ element }”> <draggablev-model"myArray"start"onStart"end"onEnd":sort"false"item-key"id"draggable".item"handle".mover" ><template…...
如何缓解BOT攻击?分享灵活准确的防御之道
BOT流量在所有互联网流量中的占比过半,而且存在好坏之分。其中“好”的BOT,比如在互联网上搜索和查找内容的BOT,它们是我们不可或缺的帮手。恶意的BOT进行信息数据爬取、薅羊毛等攻击行为,正损害着企业和用户的利益。专业数据统计…...
了解JavaScript的执行环境及作用域
一、执行环境 执行环境定义了变量或函数有权访问的其他数据,决定了它们的各自行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。虽然我们无法访问这个对象,但是解析器在处理数据时会在后台使用它…...
嵌套调用和链式访问
嵌套调用 嵌套调用就是函数之间的互相调用,每个函数就是⼀个乐高零件,正是因为多个乐高的零件互相无缝的配合才能搭建出精美的乐高玩具,也正是因为函数之间有效的互相调用,最后写出来了相对大型的程序。 假设我们计算某年…...
DBA技术栈(二):MySQL 存储引擎
2.1 MySQL存储引擎概述 上个业余的图: MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一。他的前身就是我们在 MySQL 发展历程中所提到的 ISAM,是 ISAM 的升级版本。在 MySQL最开始发行的时候是 ISAM 存…...
java发送邮件到qq邮箱
自己的授权码自己记好 引入依赖 <dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version> </dependency> <dependency><groupId>javax.mail</groupId>&…...
MySQL中的JSON数据类型计数及多张表COUNT的数据相加
1.使用场景:在MySQL中,JSON作为一种数据类型存储在表的列中。需计算键值对的数量。 2.方法:SELECT COUNT(chief>$.number) FROM t_projectapplication where id #{id};(t_projectapplication:表;chief&…...
XDOJ78.机器人
标题 机器人 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 机器人按照给定的指令在网格中移动,指令有以下四种: N 向北(上)移动 S 向南(下)移动 E 向东(右)移动 W 向西&…...
分布式系统架构设计之分布式事务的概述和面临的挑战
在当今大规模应用和服务的背景下,分布式系统的广泛应用已经成为了一种必然的主流趋势。然后,伴随着分布式系统的应用范围的增长,分布式事务处理成为了一个至关重要的关键话题。在传统的单体系统中,事务处理通常相对简单࿰…...
私有化部署你的甘特图协作工具
安装 首先去官网 https://zz-plan.com/deploy 下载对应的版本 arm是对应m1 m2 m3的mac amd是老的intel处理器 准备工作 安装mysql zz-plan需要依赖mysql 生成token 解压下载的压缩包 创建token./zz-plan -c 复制创建的token去获取授权码,点击获取免费授权码 …...
编程笔记 html5cssjs 011 HTML内连框架
编程笔记 html5&css&js 011 HTML内连框架 一、内连框架(一)意义(二)属性 二、操作注意 接下来要看一下网页内的划分。通过内连框架在当前页面嵌入一个特定内容,是一种特定需要。 一、内连框架 HTML 内联框架元…...
Stable Diffusion 系列教程 - 5 ControlNet
ControlNet和LORA的定位都是对大模型做微调的额外网络。作为入门SD的最后一块拼图是必须要去了解和开发的。为什么ControlNet的影响力如此的大?在它之前,基于扩散模型的AIGC是非常难以控制的,扩散整张图像的过程充满了随机性。这种随机性并不…...
【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】
【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】 一、导出虚拟机二、导入虚拟机三、启动数据库四、使用Data Studio连接数据库 一、导出虚拟机 选择关机状态的虚拟机 -> 管理菜单 -> 导出虚拟电脑 点击完成后,需要等待一小段时间,如…...
“华为杯”杭州电子科技大学2023新生编程大赛---树
题目链接 Problem Description 给定一棵包含 n 个节点的带边权的树,树是一个无环的无向联通图。定义 xordist(u,v) 为节点 u 到 v 的简单路径上所有边权值的异或和。 有 q 次询问,每次给出 l r x,求 ∑rilxordist(i,x) 的值。 Input 测试…...
使用pnnx将Torch模型转换为ncnn
1. 引言 以往我们将Torch模型转换为ncnn模型,通常需经过Torch–>onnx,onnx–>ncnn两个过程。但经常会出现某些算子不支持的问题。 ncnn作者针对该问题,直接开发一个Torch直接转换ncnn模型的工具 (PNNX),以下为相关介绍及使…...
linux卸载小皮面板phpstudy教程
千万不要直接删文件夹! 千万不要直接删文件夹! 千万不要直接删文件夹! 我就是按照网上搜索的教程,直接删了,然后 系统就不停的崩溃 生成这种文件: -rw------- 1 root root 223M Dec 28 22:36…...
【萤火虫系列教程】1/5-Adobe Firefly 注册账号
001-Adobe Firefly 注册账号 AI时代如火如荼,Adobe也不甘落后,于今年3月份发布AI创意生成工具Firefly(中文翻译:萤火虫) Adobe Firefly简介 Adobe Firefly的官方介绍为:Firefly是Adobe产品中新的创意生成…...
【docker】Dockerfile 指令详解
一、Dockerfile 指令详解 Dockerfile是一个用于编写docker镜像生成过程的文件,其有特定的语法。Dockerfile的基本指令有十三个,分别是:FROM、MAINTAINER、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD。 …...
内存管理机制
内存管理机制与内存映射相关。 一、C与C 之所以将C与C放在一起是因为C是C的超集; 但是C是面向过程语言,C是面向对象的语言; C与C都可以使用malloc、calloc、realloc来申请内存空间; 其中void* malloc(size_t size)是在内存的动态…...
Jenkins工具使用
学习目录: 1、jenkins的安装 2、junkins的常规使用 3、jenkins在接口自动化测试实践 具体内容: 1、jenkins的安装 安装包下载:推荐Index of /jenkins/war/latest/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,…...
SpringBoot从配置文件中获取属性的方法
方式一:Value 基本类型属性注入,直接在字段上添加Value("${xxx.xxx}")即可.注意这里用的是$,而不是#,Value注入的属性,一般其他属性没有关联关系。 配置文件 user:name: Manaphyage: 19sex: m…...
oracle物化视图
物化视图定义 视图是一个虚拟表(也可以认为是一条语句),基于它创建时指定的查询语句返回的结果集,每次访问它都会导致这个查询语句被执行一次,为了避免每次访问都执行这个查询,可以将这个查询结果集存储到…...
基于ssm校园线上订餐系统的设计与实现论文
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...
鸿蒙南向开发—OpenHarmony技术编译构建框架
概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能: 以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系…...
Android Jetpack学习系列——Navigation
写在前面 Google在2018年就推出了Jetpack组件库,但是直到今天我才给重视起来,这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里,我一直在尝试做一套自己的组件库,帮助自己快速开发,虽然也听说过Jetpack&#…...
编程语言的新趋势
随着科技的飞速发展,IT行业经历了巨大的变革,其中编程语言作为技术生态的核心要素,其演变趋势对整个行业影响深远。从过去到现在,再到未来,编程语言的发展都呈现出明显的时代特征。本文将探讨当前IT行业的现状…...
C++:类和对象(2)
目录 1.strcut和class的区别 2.将成员属性设置为私有 3.对象的初始化和清理 3.1 构造函数和析构函数 3.1.1 构造函数语法 3.1.2 析构函数语法 3.1.3 检验 3.2 构造函数的分类和调用 3.3 拷贝构造函数调用 1.strcut和class的区别 struct和class的唯一区别在于默认的访问…...
【React系列】网络框架axios库的使用
本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. axios库的基本使用 1.1. 网络请求的选择 目前前端中发送网络请求的方式有很多种: 选择一:传统的Aj…...
wordpress 3.9 上传/企业危机公关
SqList.h //函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //Status是函数的类型,其值是函数结果状态代码 typedef int Status; typedef int…...
做二手车放在哪个网站好/搜索推广出价多少合适
Dynamic Network Embedding by Modeling Triadic Closure Process 作者是Lekui Zhou, Yang Yang, Xiang Ren, Fei Wu, Yueting Zhuang,发表于AAAI2018。主要是利用三元闭包过程建模动态网络嵌入,并且生成节点的embedding用于下游任务。 1 背景知识 网…...
济南集团网站建设方案/帮我搜一下长沙做网络销售
虚拟dom是什么?首先我们先示例一段简单的代码let div document.createElement("div"); let ret ""; for(let key in div){ret key ""; }; console.log(ret)我们看一下控制台打印我们只是新建了一个空的 div ,而且它只…...
php学完可以做网站/网络营销推广的渠道有哪些
树莓派利用pi Camera模块,通过mjpg-streamer软件获取视频,通过手机端或电脑端浏览实时视频。 mjpg-streame是一个开源的摄像头的媒体流,他是通过本地获取本地摄像头的数据,再通过http通讯发出来,到时候通过浏览器访问树…...
高唐网站建设服务商/汕头seo排名收费
目录1.LDA的数学原理(1)类间散度矩阵(2)类内散度矩阵(3)协方差矩阵2.LDA算法流程3.LDA与PCA的区别4.sklearn实现LDA(1)生成数据(2)PCA(3)LDA1.LDA的数学原理 LDA是一种有监督的降维技术,它的每个样本输出都是有类别的。 LDA的思想是投影后类间方差尽可能大…...
福州哪里做网站/seo深圳网络推广
Face由一个shape-vector来表示,其纹理由一个texture-vector表示; shape-vector等于平均shape加上m-1个特征值(权值)乘以特征向量(通过PCA提取)的积的Sum,texture-vector同理; 上述系…...