数字签名 及 数字证书 原理笔记

这里是对 数字签名 及 数字证书 原理该视频做的一个笔记,链接

前言

如果对一些加密算法不懂可以参考这篇文章

数字签名

小明发送文件给小红时对文件做出签名

将文件进行hash算法加密得到hash值,并且对该hash值使用私钥进行加密(私钥加密的数据必须使用公钥进行解密,如果不明白可以参考这篇文章中的非对称加密

小明发送文件时,同时将 文件, 公钥,数字签名一起发送

小红如何验证签名?

小红收到文件后, 使用公钥数字签名进行解密得到hash值A, 同时对文件进行hash运算得到hash值B,最后判断A和B是否相等来判断该文件是否被篡改和伪造

如何确保文件不被篡改呢?

如果文件被篡改,那么hash值将会发生改变,hash值不相等说明文件被篡改

如何确保文件是小明本人签署的呢?

因为数字签名是由私钥生成的,能被公钥验证的签名肯定就是私钥拥有者(小明)

但是我们不能确保公钥一定就是小明发布的,因为黑客也可以生成一套公钥和私钥,使用自己的私钥对文件进行数字签名,并且将公钥替换为自己的公钥,这样小红验证的时候条件依然成立


数字证书

那么我们如何确保私钥拥有者就是小明呢?

这里就涉及到了数字证书

我们知道公钥私钥是配套生成的,某一私钥对应着唯一公钥,某一私钥拥有者也就是某一公钥拥有者,因此只需要证明公钥生成者的身份为小明即可,这就是数字证书的作用

小明将个人信息和公钥发送给CA机构,CA机构核实小明的身份信息后颁发一个数字证书,证书内包含了小明的身份信息和公钥

小明将文件,数字签名,数字证书,一并发送,这样小红通过数字证书中的公钥就能对数字签名进行验证,验证方式和前面一样

如何确保数字证书不被伪造?

数字证书由CA机构颁发,CA机构也有一套自己的公钥私钥,CA机构使用私钥对刚才数字证书中的所有内容进行hahs运算,再对该hash值进行加密得到该数字证书的数字签名

再将数字签名加入到数字证书中。

而CA机构的公钥则在安装操作系统时就被嵌入在操作系统中,杜绝了伪造的可能

小红拿到数字证书后,使用公钥对数字证书中的数字签名进行验证,验证通过则说明数字证书中小明的身份即公钥是真的,再使用小明的公钥验证文件的数字签名,验证通过,可确定文件未被篡改

总结

我认为的数字签名

通过公钥和私钥实现,通过对文件进行hash算法生成唯一hash值(摘要),再通过私钥进行加密得到自己的数字签名,由公钥来验证数字签名


验证

相关推荐
今儿敲了吗1 小时前
计算机网络第四章笔记(四)
笔记·计算机网络
了一梨1 小时前
SQLite3学习笔记2:SQL 基础语法
笔记·学习·sqlite
Cathy Bryant1 小时前
softmax函数与logits
笔记·神经网络·机器学习·概率论·信息与通信
charlie1145141912 小时前
现代嵌入式 C++——自定义删除器(Custom Deleter)
开发语言·c++·笔记·学习·嵌入式
Wilber的技术分享2 小时前
【Transformer原理详解2】Decoder结构解析、Decoder-Only结构中的Decoder
人工智能·笔记·深度学习·llm·transformer
历程里程碑2 小时前
Linux 9:GCC编译全流程详解
linux·运维·服务器·c语言·笔记·编辑器·vim
pass_port_csdn2 小时前
zotero搬家,迁移换机/重装100% 完美克隆指南:文献PDF、插件配置、文献分类、标签、笔记等所有信息全克隆
笔记·pdf·zotero
weixin_440730502 小时前
04python编程笔记-06文件+07异常+08模块导入+09unittest框架
笔记·python
小龙报2 小时前
【SOLIDWORKS 练习题】草图专题:3.机械臂
笔记·单片机·嵌入式硬件·物联网·开源·硬件工程·材料工程
im_AMBER2 小时前
Leetcode 108 交换链表中的节点
数据结构·笔记·学习·算法·leetcode·链表