密码学 | 数字签名 + 数字证书

news2024/11/16 13:56:32

🥑原文:数字签名和数字证书的原理解读 - 知乎

🥑声明:后文图中若未明确指明,默认是 Bob 的公钥或私钥。

Step1:Bob 有两把钥匙,一把是公钥,另一把是私钥。 

Step2:Bob 把公钥分发给他的朋友们 —— Alice 和 Chris —— 每人一把。 

Step3:假设 Alice 要给 Bob 写一封保密的信。

Alice 写完信后用 Bob 的公钥进行加密,就可以达到保密的效果。

Step4:Bob 收信后,用私钥解密,就看到了信件内容。

这里需要强调的是,只要 Bob 的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

Step5:Bob 给 Alice 回信,决定采用 数字签名

Bob 写完后先对信件内容使用 Hash 函数,生成信件的 digest 总结。

Step6:然后,Bob 使用私钥,为这个总结生成一个 数字签名

Step7:Bob 将这个数字签名,附在信件后面,一起发给 Alice 。

Step8:Alice 收信后,取下数字签名,用 Bob 的公钥解密,得到信件的总结。由此证明,这封信确实是 Bob 发出的。

数字签名作用一:验证这封信到底是谁发的,见第 8 步。

数字签名作用二:验证这封信是否被篡改过,见第 9 步。

Step9:Alice 再对信件本身使用 Hash 函数,将得到的结果,与上一步得到的总结进行对比。如果两者一致,就证明这封信未被篡改过。

为什么不直接对 digest 进行解析?答:因为哈希函数具有单向性,所以没有办法根据 Hash 结果求解原始值。这里重新对信件内容使用 Hash 函数,通过比较新老 Hash 结果是否一致,来判断信件内容是否被篡改。

Step10:复杂的情况出现了。

  1. Chris 偷偷打开 Alice 的电脑,把 Bob 的公钥换成了自己的公钥;
  2. Alice 实际拥有的是 Chris 的公钥,但她还以为这是 Bob 的公钥;
  3. Chris 冒充 Bob,用自己的私钥制造数字签名,并写信给 Alice;
  4. Alice 将会使用假的 Bob 公钥进行解密。

Step11:后来,Alice 感觉不对劲,发现自己无法确定公钥是否真的属于 Bob 。

Alice 想到了一个办法,要求 Bob 去找 证书中心,为公钥做认证。证书中心用自己的私钥,对 Bob 的公钥和一些相关信息一起加密,生成 数字证书

证书中心的英文是 certificate authority,简称 CA;数字证书的英文是 Digital Certificate 。

Step12:Bob 拿到 数字证书 以后,就可以放心了。以后再给 Alice 写信,只要在签名的同时,再附上 数字证书 就行了。

Step13:Alice 收信后,用 CA 的公钥解开 数字证书,就可以拿到 Bob 真实的公钥了,然后就能证明 数字签名 是否真的是 Bob 签的。

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

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

相关文章

Redis中的BigKey

Redis中的BigKey 文章目录 Redis中的BigKey什么是BigKey?BigKey的危害找到Bigkey删除BigKey优化BigKeyBigKey对持久化的影响对AOF日志的影响对AOF重写和RDB的影响 什么是BigKey? 大 key 并不是指 key 的值很大,而是 key 对应的 value 很大。…

Docker操作容器打包(commit),压缩(save),挂载(load)

文章目录 前言一、容器打包二、将镜像压缩成tar包三、将tar包挂载为镜像结束 前言 将容器打包成镜像时,你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式,…

使用自己训练好的模型YOLOv8进行X-AnyLabeling自动标注

目录 1. 下载项目2. 创建环境3. 运行程序3.1 自行下载和添加官方模型3.2 使用自己训练好的模型标注自己的数据集 本机环境:win 10, GPU 1. 下载项目 git clone https://github.com/CVHub520/X-AnyLabeling.git2. 创建环境 仔细查看项目的README文件 …

FastGPT+ChatGLM3本地部署

FastGPTChatGLM本地部署 本地部署硬性要求:显存13g以上 关于环境的安装就不多赘述,conda pip 可以解决大部分问题 ChatGLM本地运行 m3e-basechatglm3-6b 在huggingface上可以下载上述模型,如果没有梯子可以使用huggingface镜像 从git…

Linux shell 脚本基础与部署SpringCloud实战

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

Java学习笔记零基础入门1

目录 第一章 Java概述 1.1 什么是程序 1.2 Java 技术体系平台 1.3 Java 重要特点 1.4 Java 的开发工具 4.1 工具选择 1.5 Java 运行机制及运行过程 5.1 Java 语言的特点:跨平台性 5.2 Java 核心机制-Java 虚拟机 [JVMjavavirtual machine] 1.6 什么是JDK&…

C++ PTA 天梯赛 L1-003 个位数统计 L1-005 考试座位号 【范围for循环】【. 与 -> 访问成员】

L1-003 个位数统计 最后一个测试点考察的是当N特别大时,如果用整数存会数据溢出,改成字符串可以增大范围 知识点: 1.范围 for 循环,它对于遍历容器(比如字符串)中的元素非常方便。在这里,N 是…

JavaEE初阶Day 10:多线程(8)

目录 Day 10:多线程(8)单例模式阻塞队列1. 生产者消费者模型1.1 生产者消费者模型解耦合1.2 生产者消费者模型削峰填谷 2. 生产者消费者代码3. 阻塞队列实现 Day 10:多线程(8) 单例模式 单例模式&#xf…

2024经常用且免费的10个网盘对比,看看哪个比较好用!

网盘在我们的工作和学习中经常会用到,也是存储资料的必备工具,有了它,我们就不用走到哪都带着移动硬盘了,而目前市场上的主流网盘还有数十款,其中有免费的也有付费的,各家不一,今天小编就来为您…

嵌入式操作系统FreeRTOS(队列管理)

1.队列管理 (1)数据存储 队列可以保存有限个具有确定长度的数据单元。队列可以保存的最大单元数目被称为队列的“深度”。在队列创建时需要设定其深度和每个单元的大小。通常情况下,队列被作为FIFO (先进先出)使用,即数据由队列尾…

Win10安装DeepSpeed 实测成功

I. 完整流程 按照DeepSpeed要求步骤安装,即 Windows Windows support is partially supported with DeepSpeed. On Windows you can build wheel with following steps, currently only inference mode is supported. Install pytorch, such as pytorch 1.8 cu…

Tomcat和Spring Boot配置https

生成测试证书 生成证书前,先验证本地是否正确配置jdk环境变量,如果jdk环境变量配置正确,在命令行程序输入生成证书的命令。 keytool -genkey -alias tomcat -keyalg RSA -keystore "F:\job\apache-tomcat-8.5.29\key\freeHttps.keysto…

goland2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境(IDE),专门用于 Go 语言的开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…

OpenHarmony实战开发-如何实现进入页面,点击动画卡片,动画播放并且文本发生变化。

介绍 Lottie是一个适用于OpenHarmony的动画库,它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画,并在移动设备上进行本地渲染, 可以在各种屏幕尺寸和分辨率上呈现,并且支持动画的交互性,通过…

设备基础命令,路由基础

直连路由 静态路由 动态路由 根据路由器学习路由信息、生成并维护路由表的方法包括直连路由(Direct)、静态路由(Static)和动态路由(Dynamic)。直连路由:路由器接口所连接的子网的路由方式称为直连路由;非直连路由:通过路由协议从别的路由器…

【机器学习300问】75、如何理解深度学习中Dropout正则化技术?

一、Dropout正则化的原理是什么? Dropout(随机失活)正则化是一种用于减少神经网络中过拟合现象的技术。Dropout正则化的做法是: 在训练过程中的每次迭代中,随机将网络中的一部分权重临时"丢弃"(即…

AndroidStudio AGP 7+, 编译aar并输出到本地仓库

1 编写构建gradle脚本代码 1.1 配置publication和repository 在指定moudle目录下新建名为"maven-publish.gradle"文件,其声明的publication和repository如下所示: apply plugin: maven-publish// This creates a task called publishReleas…

线性表的链式存储(循环链表)

文章目录 前言一、循环链表是什么?二、循环链表的操作实现总结 前言 T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)。所用教材为《数据结构 C语言版 第2版》严蔚敏。有关…

电商数据采集的5种方法|电商数据采集|电商数据分析|电商API接口

电商数据采集有5种方式,包括API、RPA、数据库连接、Excel下载和ERP等业务系统数据采集。这些方法可帮助卖家获取多平台电商数据,进行深度挖掘,实现电商运营的优化。 电商竞争白热化的今天,一个电商卖家往往会在多个平台铺设店铺来…

sora related

官方https://openai.com/research/video-generation-models-as-world-simulators 概述: sora可以生成变长的、不同分辨率的最长可到1分钟的视频;整体流程是 v i d e o c o m p r e s s i o n n e r w o r k ( v i d e o → l a t e n t ) p a t c h i…