数字证书、数字签名及其关系

一.数字证书与数字签名

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 小时前
阿里云ESC服务器一次性全部迁移到另一个ESC
服务器·阿里云·云计算
gywl2 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
了一li3 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
日记跟新中3 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
唐小旭3 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
明 庭3 小时前
Ubuntu下通过Docker部署NGINX服务器
服务器·ubuntu·docker
BUG 4043 小时前
Linux——Shell
linux·运维·服务器
007php0073 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
yang_shengy3 小时前
【JavaEE】网络(6)
服务器·网络·http·https