https为什么是安全的?
http的数据传输
http数据在网络上是明文传输的,也就是说网络上的黑客可以随意截取到网络上发送的数据,就会引发数据的安全问题:
- 数据有可能被黑客伪造
- 数据有可能被修改
- 数据可能被监听
为了解决这些问题,工程师们也是想了各种各样的办法,首先介绍下对称加密算法。
对称加密算法
对称加密算法,也就是说使用相同的秘钥对数据进行加密和解密。通信的双方必须提前协商好并保存好秘钥,如果一方的秘钥被泄露,那么加密信息也就不安全了。此外,每对用户在使用秘钥进行通信时,都必须使用和别人不一样的秘钥,这样就会导致通信的双方保存大量的秘钥,那么对双方来说,秘钥的管理就不那么容易了。
非对称加密算法
后来工程师们提出了非对称加密算法,非对称加密是指对数据的加密和解密使用不同的秘钥(公钥和私钥)进行。公钥加密私钥解,私钥加密公钥解。由通信的一方(服务器)生成一对秘钥并将公钥公开,需要向服务器发送数据的一方(客户端)通过公钥对要发送的数据进行加密,这样即便黑客获取到了客户端发送的加密的数据,由于没有私钥也无法对数据解密,但是即便这样,依然存在两个问题:
- 第一个问题:由于公钥是对外的,那么所有客户端都可以拿到服务器的公钥,包括黑客,那么服务器向客户端发送的数据,黑客就可以通过从服务器获取的公钥对数据进行解密,那么数据一样可以被监听和修改。
- 第二个问题:客户端与服务器的信任问题。黑客也可以作为一个服务器,生成自己的公钥和私钥。在客户端向服务器请求公钥时,黑客监听到请求,将自己的公钥发送给客户端,同时向真正的服务器发送请求公钥,将服务器返回的公钥保存下来。这样当客户端发送数据时,由于使用的是黑客的公钥进行加密的,所以黑客是可以使用私钥解密,这样就拿到了通信数据,再将数据使用真正服务器的公钥加密发送给真正的服务器,这样数据就可能被黑客伪造,修改和监听,此时黑客相当于中间人,这就是中间人攻击。
对称加密算法的优缺点
- 对称加密 速度快,但是秘钥容易泄露,不安全。秘钥较多不容易管理。
- 非对称加密 速度较慢,无法解决通讯双方的信任问题,即可能存在中间人攻击
https目前采用的方法
https目前采用对称加密和非对称加密结合的方法,在发送秘钥时,使用非对称加密,后面的数据传输,使用对称加密。信任问题是通过一个权威机构来解决的,这个机构称为CA机构,下面来说说CA机构具体是怎么解决客户端与服务器的信任问题的。

服务器首先向CA机构申请证书,服务器将自己的公钥和身份信息发送给CA机构,CA验证申请服务器的身份信息,验证通过后,使用CA机构的私钥对服务器提交的公钥和身份信息进行签名并生成数字证书发送给服务器,当客户端向该服务器发送请求时,服务器将数字证书发送给客户端,客户端拿到证书后,使用CA机构的公钥对证书进行解密,客户端对数据进行解密后,对数据中的身份信息进行验证是否是自己要请求的服务器的信息,验证通过后,客户端随机生成一个秘钥,并将生成的秘钥使用证书中的公钥(也就是服务器的公钥)进行加密发送给服务器,服务器接收到数据以后,使用私钥进行解密,这样服务器就可以拿到客户端发送的秘钥了,后面的传输就可以采用对称加密算法了。这样即便数据被黑客获取,由于黑客无法知道秘钥,也就无法对数据进行解密了。
常用的加密算法
对称加密
- AES
- DES
非对称加密算法
- RSA
hash算法
- SHA1
- SHA256
- MD5