数字签名

Posted 光一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字签名相关的知识,希望对你有一定的参考价值。

前提

发送端有私钥,接收端有发送端的公钥。

一、加密步骤:

第一步:
对信息使用Hash函数,生成信件的摘要(digest)。
第二步:
对这个摘要进行加密(使用私钥),生成"数字签名"(signature)。

二、发送

将数字签名随信息一起发送。

三、解密过程:

第一步:
使用公钥对数字签名进行解密,得到摘要。 //证明信息确实来自发送端
第二步:
对信息使用Hash函数,将得到的结果与使用公钥解密的得到的摘要进行对比;
如果两者一致,就证明信息未被修改过。

四、发现新问题

如果接收端公钥被替换,接收端依然正常接受信息,即接收端并不知道真正的发送端是谁。

五、解决新问题

接收端去找"证书中心"(certificate authority,简称CA),为公钥做认证;
证书中心用自己的私钥,对发送端的公钥做认证,即证书中心用自己的私钥对发送端的公钥和一些相关信息(如发送端信息、证书的信息等)一起加密,生成"数字证书"(Digital Certificate)
认证中心将自己的公钥交给接收端。

六、发送

将数字签名及数字证书随信息一起发送。

七、解密过程(加了数字证书后)

第一步(多出的一步):
先用认证中心给的公钥对数字证书进行解密,拿到发送端的公钥;
第二步:
然后使用发送端的公钥对数字签名进行解密,得到摘要; //证明"数字签名"是否真的是发送端签的
第三步:
对信息使用Hash函数,将得到的结果与使用公钥解密的得到的摘要进行对比;
如果两者一致,就证明信息未被修改过。

学习:

数字签名是什么?

以上是关于数字签名的主要内容,如果未能解决你的问题,请参考以下文章

数字签名和数字证书

WHQL的数字签名是怎么回事

Go-数字签名详解与Rsa数字签名代码

如何验证PDF文档中的数字签名

怎么给PDF文件添加数字签名

如何将程序进行数字签名?