理解
加密:把私钥留给自己,公钥给别人。别人传数据给我,用公钥加密后,我用私钥解密。
数字签名:1.把内容用hash函数,生成内容的摘要。2.再用私钥对摘要进行加密,生成『数字签名』。3.将数字签名和内容同时发给别人。4.接收者使用公钥解密,得到摘要。在对内容进行hash函数,对比结果是否一致,防止被篡改。
数字证书: 在接收者的公钥被人替换情况下,无法判断发送者。此时需要一个第三方机构证书中心。
证书中心(CA),证书中心用自己的私钥对发送者的公钥和一些相关信息一起加密,生成『数字证书』。
1.发送者发送信息,只要在签名的同时,附上数字证书就行了。2.接收者用CA的公钥解开数字证书,拿到私钥,然后去验证数字签名。
如何记忆
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
HTTPS 数字证书
1.客户端向服务器发出加密请求。
2.服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。
3.客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。
4.如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。
5.如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。
6.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。
数字签名与数字加密
数字签名的步骤:
信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;
信息发送者使用自己的私钥签名信息摘要;
信息发送者把信息本身和已签名的信息摘要一起发送出去;
信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。
数字加密的步骤:
当信息发送者需要发送信息时,首先生成一个对称密钥,用该对称密钥加密要发送的报文;
信息发送者用信息接收者的公钥加密上述对称密钥;
信息发送者将第一步和第二步的结果结合在一起传给信息接收者,称为数字信封;
信息接收者使用自己的私钥解密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,得到真正的原文。
数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。