校招后端面经--网络安全
1. HTTPS
https在传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息,基于TLS/SSL协议,使用了对称加密,非对称加密和hash算法
1. 过程
- 客户端将自己支持的一套加密规则发送给服务端
- 服务端从中选出一组加密算法和hash算法,并将自己的身份信息以证书的形式发回给客户端。证书里面包含了服务端的地址,加密公钥,以及证书的颁发机构
- 客户端获得网站的证书后,先验证证书的合法性,如果证书时受信任的,或者用户自己接收了不受信任的证书,客户端会生成一串随机数的密码,并用证书中提供的公钥加密
- 客户端使用约定好的hash算法计算握手信息,并使用生成的随机数对握手信息进行加密,最后将之前生成的所有信息发送给服务端
- 服务端接收到数据后,先用自己家的私钥将信息解密,把随机数密码取出来,用这个随机数密码去解密握手信息,将握手信息进行hash,验证其是否与发过来的hash值一样
- 然后使用密码加密一段握手信息,发送回客户端
- 客户端解密计算握手信息的hash,如果与服务端发过来的hash是一样的,握手过程结束,连接建立,之后的所有通信数据都由之前的随机数密码并使用对称加密算法进行加密,然后传输
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。
2. 对称加密和非对称加密
对称加密:加密和解密使用