HTTPS:给应用程序披上安全的防护罩。
https加密流程:
- 客户端发起https,连接到服务器端的443端口(https默认端口)
- 服务器端提供证书公钥和私钥
- 返回证书的公钥
- 客户端解析证书:证书是否有效、生成随机值、公钥加密
- 将加密的**发给服务端
- 服务器端进行解析,私钥解密得到**、**加密发送内容
- 服务器将收到的随机值当成共享加密(对称加密)的**进行加密。
RSA:非对称的加密算法,仅存在理论上**的可能
http在没有加密的情况下,相当于明文传输,很容易被黑客截取数据
对称加密是客户端和服务端都有一个**k,客户端和服务端有一对函数,可以对数据进行加密和解密。传送的x就是加密后的数据。
黑客不知道**的情况下是无法进行解密的,但是服务端不可能为每个客户端都保存一个k,那样数据太大了。但是如果所有客户端都只用一个k,就更不行了,那样黑客直接当成客户端就可以得到k了,完全没有了作用。
非对称加密:服务端有着公钥和私钥,当客户端去请求服务端时,服务端返回一个公钥给客户端,客户端将数据用公钥加密,只有私钥可以加密,传送至服务端,服务端进行解密。**但是服务端如何将数据传送至客户端呢,**首先,不能用公钥加密,应为客户端没有私钥,无法解密。如果用私钥加密呢?但是黑客也可以拿到这个公钥,还是会被黑客获取数据。
公钥加密,私钥解密;私钥加密,公钥解密。
上面的对称加密与非对称加密都有缺点,对称加密无法保证每个客户端都有一个独一无二的**;非对称加密从客户端传至服务端的用公钥加密的数据是安全的,因为服务端一个私钥可以解密。但是无法从服务端安全的传送数据到客户端,因为公钥是每个客户端都可以获取的。
对称加密+非对称加密:先从服务端获取公钥,生成一个随机数,经过公钥加密,传送至服务端经私钥解密。此时两端都知道次随机数,因此可以将此随机数作为对称加密的**,这样黑客无法获取到随机数,也就没办法解密数据了。
但是对称加密+非对称加密,黑客还可以通过 当 中间人,进行获取用户信息:客户端向服务端请求公钥的时候,就已经被黑客劫持,此时返回的是黑客的公钥,同时黑客自己再去请求服务端的公钥,同样的,客户端的随机数,也会被用自己的私钥解密,同时可以向服务端传送一个随机数来作为回头对称加密的**,此时,客户端请求数据,然后在得到服务端的数据,否是通过黑客这个中间人的过滤了,黑客可以从中得到自己想要的信息。
对称加密+非对称加密存在中间人问题。又有了CA
CA机构认证的公钥才是好公钥,CA机构认证的公钥基本上已经全部储存在了客户端(很多很多),因此当黑客想要当中间人的时候,这时候返回的公钥,客户端并没有,此时就会给浏览器返回证书不安全,这是可以避免黑客当中间人的威胁了。
此时客户端请求服务端,服务端会返回经过CA机构的专门私钥加密(**签名)**的公钥,返回给客户端,客户端再验证是否是安全的公钥(验签)。此时在进行传输随机数,确定对称加密的**。
在客户端与服务端确认对称加密的**时的经过:
首先会向服务器传送经过公钥加密 支持的SSL(套接字加密)版本、支持的非对称算法、随机数1;
服务端返回:用对应SSL版本、对称算法、随机数2、证书;
客户端证书认证,生成随机数3、用hash散列算法将1,2步骤的全部信息哈希整理发送到服务端,
服务端解密后将随机数1,2,3通过特殊的算法合成**k,同时将1,2,4通过hash散列算法哈希整理发送至客户端,
客户端再解密整理得到随机数生成的k。
之后进行对称算法。
对称算法+非对称算法+hash散列算法+CA安全证书。
我对https的理解
谈谈你对https的理解:
说到https,就不得不说一下http协议,http协议进行请求和响应时,是以明文进行的。这样就会很容易被一些有心人,给拦截数据。所以产生了https;
https就是http协议+对称算法+非对称算法+Hash散列算法+CA安全证书;
https又称为套接字加密为SSL加密。什么是SSL dai 了解。
先说一下用了https后的网络请求是什么样的:
用户对一个服务器发送https请求,服务器会返回一个CA证书和一个公钥,这个CA证书在浏览器本地一般都有存储,会验证这个CA证书是否可用。同时才会使用这个公钥加密浏览器端产生的一个随机数,公钥只有私钥才可以解密,所以只能是发送这个公钥的服务器才可以解密。这样 客户端发送的数据 就不会被有心人给拦截了。然后服务端再利用接收到的 随机数(被hash散列算法处理过) 用来 当作接下来对称算法的**。接下来客户端和服务器就可以开始安全的数据传递了。