数字证书、数字签名及其关系
一.数字证书与数字签名
1.数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。简单地说,数字证书是一段包含用户身份信息、用户公钥信息以及份验证机构数字签名的数据。
通俗理解:数字证书相当于【身份证】 —— 确认你是谁,用于确认身份
2.数字证书内容
数字证书由权威的第三方机构(CA,Certificate Authority)签发和管理的电子文档,内含密钥对(公钥和私钥)所有者的识别信息。主要包含:
证书的版本信息;
证书的序列号,每个证书都有一个唯一的证书序列号;
证书所使用的签名算法;
证书的发行机构名称;
证书的有效期;
证书所有人的名称;
证书所有人的密钥对;
证书发行者对证书的签名。
3.数字证书使用流程
证书申请:用户向CA机构提交个人信息和公钥,申请数字证书。
证书签发:CA机构验证用户身份后,将用户的公钥和个人信息绑定在一起,签发数字证书,并附上CA的签名信息。
证书使用:用户在网络通信中使用数字证书进行身份认证和数据加密/解密,接收方则通过验证数字证书来确认发送方的身份和数据的真实性。
4.PKI公钥体系
(1)PKI(Public Key Infrastructure,公钥基础设施)是一种基于公钥密码学的技术框架,用于安全地管理数字证书、公钥和私钥,从而确保通信和数据的机密性、完整性和身份验证。
(2)PKI的核心组件
数字证书颁发机构(CA):PKI的核心组件,负责验证用户的身份并颁发数字证书。数字证书包含用户的公钥和身份信息,并由CA签名以确保证书的合法性。
注册机构(RA):CA的合作伙伴,负责验证用户的身份和审核证书请求。RA通常处理与用户的直接接触,将身份验证结果传递给CA。
证书吊销列表(CRL):由CA维护的列表,包含吊销的数字证书的信息。当用户的数字证书被吊销时,其信息将被添加到CRL中,以通知其他用户不再信任该证书。
数字证书:包含用户的公钥和身份信息,以及CA的数字签名。这些证书用于身份验证、加密和数字签名。
公钥基础设施目录(PKID):一个全局目录服务,用于存储和分发公钥、证书和CRL,帮助用户查找和获取其他用户的证书。
(3)PKI的工作流程
注册:用户向CA或RA提交数字证书请求,并提供必要的身份信息。
身份验证:CA或RA对用户的身份信息进行验证,以确保其合法性。
证书颁发:如果身份验证成功,CA将为用户生成数字证书,包含用户的公钥和身份信息,并对证书进行数字签名。
证书发布:CA将颁发的数字证书发布到PKID或其他适当的目录服务中,以便其他用户访问。
证书使用:用户使用数字证书进行身份验证、加密通信和数字签名。
证书更新与吊销:数字证书通常具有有限的有效期,用户需要定期更新证书以保持其有效性。如果用户的私钥泄漏或其他原因,用户的数字证书需要吊销,CA将吊销信息发布到CRL中。
二.数字签名
1.数字签名是一种用于保证数字信息完整性、真实性和不可抵赖性的技术。它利用公钥加密技术,通过私钥对信息的摘要进行加密生成签名,接收方则使用公钥进行解密和验证。
数字签名相当于【持身份证进行签名】—— 作用对消息内容进行确认,确认的确是某人自愿签名,或是确实是某人发的消息
2.数字签名的原理
数字签名是基于非对称密钥加密技术与数字摘要技术的应用,是一个包含电子文件信息以及发送者身份,并能够鉴别发送者身份以及发送信息是否被篡改的一段数字串。一段数字签名数字串,包含了电子文件经过Hash编码后产生的数字摘要,即一个Hash函数值以及发送者的公钥和私钥三部分内容。发送方通过私钥加密后发送给接收方,接收方使用公钥解密,通过对比解密后的Hash函数值确定数据电文是否被篡改。
三.数字证书与数字签名关系及应用
1.数字签名和数字证书的关系
相互依赖:
数字签名依赖于数字证书中的公钥来验证签名的真实性。接收方在验证数字签名时,需要使用发送方证书中的公钥进行解密和验证。
同时,数字证书也需要通过数字签名来证明其有效性和可信度。CA在签发证书时,会使用自己的私钥对证书内容进行签名,接收方则使用CA的公钥进行验证。
共同保障信息安全:
数字证书和数字签名共同协作,可以大大提高网络通信的安全性和可靠性。数字证书确保了通信双方的身份真实可靠,而数字签名则确保了数据的完整性、真实性和不可抵赖性。
2.场景示例:用户A向用户B发送一段内容,但不想被窃取或篡改
(1)首先用户A对此内容进行 hash 运算【提取出摘要(hash值,就是一字符串)】,之后对此 hash 值用【自己的私钥】进行加密 —— 形成了数字签名
(2)之后用户A 将【数字签名(加密的内容hash值)】和【内容原文】一起发送给用户 B
(3)用户B通过之前用户A发送过来的证书 —— 获取【用户A的公钥】
此处证书的真伪,通过【公证机构CA】来辨别,每台机器上会【内置CA机构的证书,用来验证用户传来的证书】
此处证书确保了【用户A的公钥正确性,也就是用户A的身份真实性】
(4)用户B通过【证书中的公钥】,解开【数字签名(加密的内容hash值)】,获得【未加密的内容hash值】
(5)用户B通过与用户A相同的 hash 函数对【内容原文】进行hash运算,得到【摘要(hash值,就是一字符串)】,与步骤4中获取的【未加密的内容hash值】进行比较,从而判别内容是否被篡改
参考文章:https://blog.csdn.net/qq_24433609/article/details/127056721
相关文章:
数字证书、数字签名及其关系
一.数字证书与数字签名 1.数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。简单地说,数字证书是一段包含用户身份信息、用户公钥信息以及份验证机构数字签名的数据。 通俗理解:数字证书相当于【身份证】 —— 确认你…...
一文读懂:如何将广告融入大型语言模型(LLM)输出
本文是我翻译过来的,讨论了在线广告行业的现状以及如何将大型语言模型(LLM)应用于在线广告。 原文请参见”阅读原文“。 在2024年,预计全球媒体广告支出的69%将流向数字广告市场。这个数字预计到2029年将增长到79%。在Meta的2024…...
godotenv拜读
简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置,…...
解析REST API与OpenAPI之差异:避免混淆
在网络API领域,常提及的两种术语为Rest API与Open API,其既存在差异亦存在联系。前者是一种API设计方式,后者则是一种API描述及定义规范。值得注意的是,OpenAPI 可用于描述和定义REST API。 什么是REST API? REST API …...
一篇文章就搞懂了:过虑器 、拦截器 、监听器是什么
java 过虑器 、拦截器 、监听器的区别? 实现原理: 过滤器基于函数回调实现。拦截器基于Java的反射机制实现。监听器用于监听特定事件的发生,并作出相应处理。 使用范围: 过滤器依赖于Tomcat等容器,主要用于Web程序。拦截…...
本体映射与本体集成
文章目录 本体映射与本体集成本体映射分类知识挖掘是从己有的实体及实体关系出发挖掘新的知识,具体包括知识内容挖掘和知识结构挖掘。 本体映射与本体集成 解决本体异构的通用方法是本体集成与本体映射。本体集成直接将多个本体合并为一个大本体,本体映射则寻找本体间的映射…...
华媒舍:10种提升推特大V发文推广曝光率的方式
在社交媒体时代,推特已成为许多大V达到更广泛受众的重要渠道。并非所有的推文都能获得理想的曝光率。为了帮助大V们提升推文的曝光率,本文将介绍10种有效的方式。 1. 精心构思内容 好的内容是吸引读者和提升曝光率的关键。大V们应该从听众的角度出发&am…...
前端本地存储数据:深入解析与代码示例(Cookie、LocalStorage、SessionStorage和IndexedDB)
在现代Web应用中,前端本地存储是实现用户个性化体验的关键技术。本文将深入探讨前端本地存储的四种主要技术:Cookie、LocalStorage、SessionStorage和IndexedDB,并提供具体的代码示例。 Cookie 简介 Cookie是由服务器创建并存储在用户浏览…...
Java语言程序设计基础篇_编程练习题*18.21 (将十进制数转换为二进制数)
*18.21 (将十进制数转换为二进制数) 编写一个递归方法,将一个十进制数转换为一个二进制数的字符串。方法头如下: public static String dec2Bin(int value)编写一个测试程序,提示用户输入一个十进制数,然后显示等价的二进制数。 代码示例 …...
中年转行新可能:18 个月迈向大模型提示词工程师
【导读】 人到中年,想半路转行成为大模型提示词工程师,这可行吗?最近,一位国外小哥成功转行,他在一篇干货满满的硬核博客中给出了答案:完全可行! 转行成为大模型提示词工程师,到底…...
C++通过返回值和输出参数的原理是什么?分别有什么优势和缺点?
C中,通过返回值和输出参数(通常是通过引用或指针)是函数与外部世界交换数据的两种主要方式。它们各自有着不同的原理和优缺点。 通过返回值 原理: 当函数通过返回值向调用者传递数据时,它实际上是在函数执行完毕后&…...
AI客服机器人开启企业客户服务新纪元
随着人工智能(AI)技术的迅猛发展,使得AI客服机器人走进了我们的视野,成为提高客户满意度和业务效率的不二法宝。这些智能机器人不仅能够处理海量信息,还能为客户提供个性化的服务体验。 一、AI客服机器人的基本原理 AI客服机器人是基于人工智…...
TPM项目课题的确定需要考虑哪些因素?
确定一个合适的TPM项目课题,是企业启动并成功实施TPM计划的第一步。这一过程不仅需要深入洞察企业现状,还需前瞻性地规划未来发展。详情如深圳天行健精益化生产管理咨询公司下文所述: 一、企业战略目标 1.与企业长期发展规划的契合度 -TPM项…...
Rust 数据类型
文章目录 发现宝藏1. 标量类型1.1 整型1.2 浮点型1.3 布尔型1.4 字符型 2. 复合类型2.1 元组2.2 数组 3. 总结 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 Rust 是一种静态…...
C#无标题栏窗体拖动
要实现C#无标题栏窗体的拖动功能,可以通过以下步骤实现: 在窗体的构造函数中添加以下代码,以去掉标题栏: this.FormBorderStyle FormBorderStyle.None;然后,添加以下代码以处理鼠标按下事件: private c…...
MySQL容器配置连接数数,镜像重启生效
若有不理解,可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 方法一 在 docker-compose.yml 中配置 MySQL 的连接数,可以通过环境变量或配置文件来实现。以下…...
《OpenCV计算机视觉》—— 身份证号码识别案例
文章目录 一、案例实现的整体思路二、代码实现1.首先定义两个函数2.模板图像中数字的定位处理3.身份证号码数字的定位处理4.使用模板匹配,计算匹配得分,找到正确结果 一、案例实现的整体思路 下面是一个数字0~9的模板图片 案例身份证如下: 对…...
如何使用正则表达式替换字符串中的特定位置数字
如何使用正则表达式替换字符串中的特定位置数字 1、效果 把字符串中的第一个123替换掉: 2、代码 使用正则中的sub函数: re.sub(pattern,repl,string,count=0,flags=0) pattern:表示需要匹配的模式,即需要被替换的字符或字符串。 repl:表示替换后的字符串或函数,用于…...
【SQL】在SQL中,行转列
在SQL中,行转列通常是指将数据从水平方向(行)转换为垂直方向(列),这可以通过使用CASE语句或数据库特有的函数如PIVOT(在SQL Server中)来实现。下面我将通过一个具体的例子来说明如何…...
95. UE5 GAS RPG 实现创建多段飞弹攻击敌人
从这篇开始,我们将实现一些技能,比如多段火球术,闪电链等等。 在这一篇里,我们先实现多段火球术,技能可以通过配置发射出多个火球术进行攻击。 创建多段火球函数 首先在我们之前创建的RPGFireBolt.h类里面增加一个生…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
