公钥、私钥
对称加密:
加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。
非对称加密:
公钥加密,私钥解密。
A发送信息给B时:A使用B的公钥加密信息,传给B,B使用自己的私钥解密。B回复A时:同理使用A的公钥加密发送给A,A使用自己的私钥解密。(但AB之间可能会有C来冒充A或者B)
数字签名/证书:
私钥签名,公钥验证。
为了解决‘冒充’问题,A为了证明自己是A,找到"证书中心"(certificate authority,简称CA),为A自己的公钥做认证。证书中心用自己的私钥,对A的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。以后B需要给A发送信息时,A先把自己的公钥以及CA给颁发的数字证书都发给A,从而证明自己就是货真价实的A。B拿到A发来的公钥和证书,先用CA的公钥解密A的证书,拿解密后的公钥和A直接发过来的公钥比对,如果不同,说明信息可能被篡改或者A不是真的A,反之就可以信任A。
HTTPS:
https协议用于网页加密,它就是应用了数字签名。
客户端首先发送加密请求给服务器,服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。