数字签名
前提
发送端有私钥,接收端有发送端的公钥。
一、加密步骤:
第一步:
对信息使用Hash函数,生成信件的摘要(digest)。
第二步:
对这个摘要进行加密(使用私钥),生成"数字签名"(signature)。
二、发送
将数字签名随信息一起发送。
三、解密过程:
第一步:
使用公钥对数字签名进行解密,得到摘要。 //证明信息确实来自发送端
第二步:
对信息使用Hash函数,将得到的结果与使用公钥解密的得到的摘要进行对比;
如果两者一致,就证明信息未被修改过。
四、发现新问题
如果接收端公钥被替换,接收端依然正常接受信息,即接收端并不知道真正的发送端是谁。
五、解决新问题
接收端去找"证书中心"(certificate authority,简称CA),为公钥做认证;
证书中心用自己的私钥,对发送端的公钥做认证,即证书中心用自己的私钥对发送端的公钥和一些相关信息(如发送端信息、证书的信息等)一起加密,生成"数字证书"(Digital Certificate);
认证中心将自己的公钥交给接收端。
六、发送
将数字签名及数字证书随信息一起发送。
七、解密过程(加了数字证书后)
第一步(多出的一步):
先用认证中心给的公钥对数字证书进行解密,拿到发送端的公钥;
第二步:
然后使用发送端的公钥对数字签名进行解密,得到摘要; //证明"数字签名"是否真的是发送端签的
第三步:
对信息使用Hash函数,将得到的结果与使用公钥解密的得到的摘要进行对比;
如果两者一致,就证明信息未被修改过。