We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我们知道HTTP是明文传输的,这也是他不安全的原因,那如何保证安全呢,由此就产生了HTTPS。
HTTPS并不是一种新的协议,而是在HTTP协议之上增加了 SSL/TSL协议,来保证其传输安全, 可以说 HTTPS = HTTP + SSL。
SSL(Secure Sockets Layer 安全套接字协议),是属于会话层的一种协议,在TSL发布前,SSL协议经历了三个版本,直到第四个版本才发布为TSL协议,可以说,TLS是SSL的继任者,TLS = SSL3.1。
对称加密方式速度快,但是安全性不如非对称加密好。而非对称加密随发安全性好,但是加解密耗费的时间更长,速度慢。
CA证书包含:
客户端在拿到服务端给的数字证书之后,首先拿到证书中的公钥对证书中的数字签名(加密后的摘要)进行解密,得到一个摘要hash-a,再拿摘要算法对证书中除了数字签名以外的内容计算出一个摘要hash-b,比对这两个摘要值是否一致,如果一致则说明证书是真的,服务端是可以被信任的,可以放心地在后续传输数据时使用证书中的公钥对数据进行加密。如果不一致,则说明证书被篡改,服务器不可信任。
上面我们说到了,HTTPS是利用了SSL进行的加密工作的。那么SSL协议是怎么进行握手的呢。
我们知道,非对称加密算法比起对称加密是更安全的,因为只有公钥被公开给客户端用于加密数据后传输给服务端,而私钥则是保留在服务端对加密过的数据进行解密,这个过程是可以保证数据的安全的。但是这中间还是有一个漏洞,客户端需要拿到公钥才能加密数据,但如果公钥被中间人进行篡改,那么服务端就无法拿到正确的数据了,这种攻击就称为中间人攻击。
针对中间人攻击,我们就需要对公钥再进行一次验证,怎么做呢,就是通过CA证书进行公正,服务端将公正后得到的CA证书交给客户端,客户端根据证书中的相关信息进行公钥的验证,确认无误后就可以保证这个传输过程的数据不被窃取并且不被篡改。
但是由于非对称加密算法是比较慢的,如果在每次数据传输时都需要进行非对称加密的计算的话,通信的效率会大大降低,我们还需要解决一下效率的问题。那么上面提到了,对称加密的速度是很快的,而且只需要一个密钥进行加密解密,那么如果我们通过非对称加密的方式对对称密钥进行加密,后需传输数据,客户端和服务端都可以使用这个密钥对数据进行加密和解密了。
那么对称加密的密钥怎么得到呢,是通过SSL握手过程中互相传递三个随机数,并通过这三个随机数生成的密钥。
那么流程就很清晰了:
1、客户端拿到服务端的CA证书验证公钥是否正确
2、公钥正确的情况下,客户端和服务端都各自使用前面握手过程中产生的三个随机数来生成密钥
3、利用同一个密钥进行数据传输
**所以我们可以得到,其实HTTPS的加密是对称加密和非对称加密的结合,其中非对称加密是用来加密对称加密的密钥的,而对称加密才是真正用来传输数据的。**即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。
并不是,在数据传输阶段的对称加密密钥是通过随机数生成的,而随机数是客户端来生成的并且是存储在本地的,如果在本地的随机数被窃取,就有可能通过随机数生成密钥来冒充服务器。但是这个就不属于HTTPS的安全范畴了,HTTPS是保护传输过程的安全的,而这属于本地安全范畴,应该通过在客户端安装杀毒程序或者反木马程序,以及浏览器布丁升级来避免。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
HTTPS是什么
我们知道HTTP是明文传输的,这也是他不安全的原因,那如何保证安全呢,由此就产生了HTTPS。
HTTPS并不是一种新的协议,而是在HTTP协议之上增加了 SSL/TSL协议,来保证其传输安全, 可以说 HTTPS = HTTP + SSL。
SSL(Secure Sockets Layer 安全套接字协议),是属于会话层的一种协议,在TSL发布前,SSL协议经历了三个版本,直到第四个版本才发布为TSL协议,可以说,TLS是SSL的继任者,TLS = SSL3.1。
HTTPS的作用
对称加密和非对称加密
对称加密方式速度快,但是安全性不如非对称加密好。而非对称加密随发安全性好,但是加解密耗费的时间更长,速度慢。
HTTPS的实现原理
从CA证书说起
CA证书包含:
客户端在拿到服务端给的数字证书之后,首先拿到证书中的公钥对证书中的数字签名(加密后的摘要)进行解密,得到一个摘要hash-a,再拿摘要算法对证书中除了数字签名以外的内容计算出一个摘要hash-b,比对这两个摘要值是否一致,如果一致则说明证书是真的,服务端是可以被信任的,可以放心地在后续传输数据时使用证书中的公钥对数据进行加密。如果不一致,则说明证书被篡改,服务器不可信任。
SSL的握手过程
上面我们说到了,HTTPS是利用了SSL进行的加密工作的。那么SSL协议是怎么进行握手的呢。
过程分析
我们知道,非对称加密算法比起对称加密是更安全的,因为只有公钥被公开给客户端用于加密数据后传输给服务端,而私钥则是保留在服务端对加密过的数据进行解密,这个过程是可以保证数据的安全的。但是这中间还是有一个漏洞,客户端需要拿到公钥才能加密数据,但如果公钥被中间人进行篡改,那么服务端就无法拿到正确的数据了,这种攻击就称为中间人攻击。
针对中间人攻击,我们就需要对公钥再进行一次验证,怎么做呢,就是通过CA证书进行公正,服务端将公正后得到的CA证书交给客户端,客户端根据证书中的相关信息进行公钥的验证,确认无误后就可以保证这个传输过程的数据不被窃取并且不被篡改。
但是由于非对称加密算法是比较慢的,如果在每次数据传输时都需要进行非对称加密的计算的话,通信的效率会大大降低,我们还需要解决一下效率的问题。那么上面提到了,对称加密的速度是很快的,而且只需要一个密钥进行加密解密,那么如果我们通过非对称加密的方式对对称密钥进行加密,后需传输数据,客户端和服务端都可以使用这个密钥对数据进行加密和解密了。
那么对称加密的密钥怎么得到呢,是通过SSL握手过程中互相传递三个随机数,并通过这三个随机数生成的密钥。
那么流程就很清晰了:
1、客户端拿到服务端的CA证书验证公钥是否正确
2、公钥正确的情况下,客户端和服务端都各自使用前面握手过程中产生的三个随机数来生成密钥
3、利用同一个密钥进行数据传输
**所以我们可以得到,其实HTTPS的加密是对称加密和非对称加密的结合,其中非对称加密是用来加密对称加密的密钥的,而对称加密才是真正用来传输数据的。**即利用了非对称加密安全性高的特点,又利用了对称加密速度快,效率高的好处。
HTTPS绝对安全吗
并不是,在数据传输阶段的对称加密密钥是通过随机数生成的,而随机数是客户端来生成的并且是存储在本地的,如果在本地的随机数被窃取,就有可能通过随机数生成密钥来冒充服务器。但是这个就不属于HTTPS的安全范畴了,HTTPS是保护传输过程的安全的,而这属于本地安全范畴,应该通过在客户端安装杀毒程序或者反木马程序,以及浏览器布丁升级来避免。
The text was updated successfully, but these errors were encountered: