防止窃听
- https是通过混合加密的方式来完成,防止会话被窃听的
- https通过非对称加密(秘钥协商算法)得到对称加密的会话秘钥,为什么每次连接都要建立新的会话秘钥呢? - 主要是为了确保会话通信的安全,每次的会话秘钥都是新生成的,可以确保当一次会话秘钥被泄露不会导致所有的会话被泄露。—还有一个回答方向,就是如果我们只使用非对称加密方式进行通信,由于公钥是公开的,所有含公钥的客户端都可以对服务器进行通信,并且加密方式都是一样的,一旦私钥被泄露,那么所有的客户端与服务器的通信全部被泄露。
- 非对称加密算法:RSA,ECDHA等算法 ; 对称加密算法:AES算法
防止篡改
- 在发送端,对内容取hash,得到hash1 (指纹1)
- 将内容和hash1发送到接收方
- 在接受方,将发送来的内容取hash得到hash2(指纹2),将发送过来的hash1与在接受方生成的hash2,看是否相同,(指纹比对),想同则通过,不相同则被篡改
防止身份顶替
- 数字证书: 数字证书是为了确保公钥的权威性和可信任, 我们数字证书会包含公钥然后由权威部门签发,来保证公钥的可信度,防止被替换和篡改。
- 证书签名:就是使用ca私钥对数据进行加密,
- 证书验证:对加密内容使用ca公钥解密,在同原数据进行比对,确保解密内容的正确性,从而确保该数据是由持有私钥的服务器签发的(私钥加密的内容,只能有公钥进行解密;所以说只要公钥可以正常解密的内容,其就是有持有私钥的服务器签发的,从而实现了身份验证)
- 私钥加密,公钥解密:证书签发(私钥加密)和身份验证(公钥解密,可以正确解密,说明数据是由含有私钥的服务器签发的,也就是正确服务器签发的数据)
- 公钥加密,私钥解密:用于确保数据传输的安全,生成我们的会话秘钥,确保客户端往服务器发送的数据是加密。(会话秘钥:可以确保每个tcp连接的加密方式都是不同的,防止私钥一旦被泄露,全部tcp连接的加密方式都被泄露)