数字签名是什么
1.
Bob有两把钥钥,一把公钥、一把私钥。
2.
Bob把公钥给朋友们,每人一把。
3.
Susan要给Bob写一封加密的信,用Bob的公钥进行加密;Bob收到信以后,使用私钥解密。注意只要Bob的私钥不泄露,信件就是安全的。
5.
Bob给Susan回信,采用“数字签名”(digital signature)。先用Hash函数生成信件的摘要(digest)。
然后,Bob使用私钥,对digest加密,生成“数字签名”(digital signature)。
Bob将数字签名附在信件下面,一起发给Susan。
6.
Susan收到信后,取下数字签名,用Bob的公钥解密,得到digest,由此证明,该信件确实是Bob发出的;Susan再对信件本身使用Hash函数生成digest,将两个digest进行对比,若一致则证明信件未被修改过。
7.
但是!如果Doug偷梁换柱,用自己的公钥换走了Bob的公钥,此时Doug冒充Bob,用自己的私钥做成“数字签名”,写信给Susan,让Susan用假Bob公钥解密。此时Susan就无法确定公钥是不是真的属于Bob。
那么,可以让Bob去“证书中心”(certificate authority,简称CA)为公钥做认证。证书中心用自己的私钥对Bob的公钥和一些相关信息一起加密,生成“数字证书”(Digital Certificate),Bob数字证书在手就安全了。以后写信,只要在签名的同时,在附上数字证书就可以了。
8.
Susan收信后,用CA的公钥解开数字证书,拿到Bob真实的公钥!然后就能证明“数字签名”是否真的是Bob的。
9.应用:https协议—主要用于网页加密
- (1)
首先,客户端向服务器发送加密请求。 - (2)
服务器用自己的私钥加密网页后,连同本身的数字证书(Digital Certificate)一起发给客户端。 - (3)
客户端(浏览器)根据“证书管理器”中“受信任的根证书颁发机构”列表,查看解开数字证书的公钥是否在列表之内。 - (4)
如果数字证书记载的网址,与你浏览的网址不一致,则说明数字证书可能被冒用,浏览器将发出警告。
如果数字证书不是由受信任的机构颁发的,浏览器将发出另一种警告。
如果数字证书可靠,客户端就可以使用数字证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。参考:
http://www.youdzone.com/signature.html
http://www.youdzone.com/signature.html