网络大全:使用HTTPS就绝对安全了吗?

ASP站长网朋友面试阿里,关于HTTPS被问了三道题,看看你能回到上几道题。
 
第一,为什么使用HTTPS之后,通信就安全了?
 
第二,HTTPS实现通信安全的原理是什么?
 
第三,使用了HTTPS就绝对安全了吗?
 
本篇文章就带大家一起聊聊HTTPS,顺便解答上面三个问题。
 
关于HTTPS
前面学习过HTTP协议的报文格式及交互模式,我们知道HTTP传输的内容本质上就是文本,HTTP/2采用了二进制字节的形式传输,但依旧可以进行反编译。也就是说,在通信的过程中只要拦截对应的请求,就可以获得通信的报文信息。从这个层面来讲,我们说HTTP协议是不安全的。
 
而HTTPS是身披SSL外壳的HTTP,利用SSL/TLS建立全信道,加密数据包。HTTPS的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
 
在HTTPS通信过程中,会涉及到非对称加密和对称加密两种算法,从而满足了性能和安全的双重需要。
 
HTTPS的特点
HTTPS传输的是加密之后的数据,即使被拦截也很难获得明文。HTTPS有以下特点:
 
内容加密:采用混合加密技术(结合对称加密和非对称加密技术),中间者无法直接查看明文内容;
验证身份:通过证书认证客户端访问的是自己的服务器;
保护数据完整性:防止传输的内容被中间人冒充或者篡改;
关于这些特点,我们可以在原理层面进行逐步分析。
 
HTTPS协议实现原理
采用HTTPS通信的过程涉及到两部分:证书验证和数据传输。
 
 
 
HTTPS原理
 
第一阶段,证书获取及验证过程:
 
浏览器发起一个HTTPS的请求;
服务器接收到请求,返回一个HTTPS证书,该证书内包含服务器私钥对应的公钥信息;
浏览器验证证书是否合法,如果不合法(未经过CA认证或未添加信任)则进行提示。通常位于浏览器中URL地址左侧有的小锁图标处;
第二阶段,加密秘钥传输及加密报文传输,可以统称数据传输:
 
证书验证合法或可信任,则在浏览器端生成一个随机数,该随机数用于通信报文的对称加密;
通过公钥将随机数加密,传输给服务器;
服务器获得加密的随机数,使用私钥进行解密,并存储随机数。此时,双方都有了对称加密的秘钥(随机数);
服务器使用随机数对要传输的数据进行对称加密,并将加密信息返回给客户端;
客户端获得加密数据,使用随机数作为秘钥,基于对称加密算法对报文进行解密,渲染呈现给用户;
关于HTTPS的实现原理总结一下就三步:
 
客户端向服务器端索要并验证公钥;
双方协商生成"对话密钥";
双方采用"对话密钥"进行加密通信;
其中前两步又称作"握手阶段"(handshake)。
 
上述流程看似简单,但会延伸出来几个问题,我们来逐个看看。
 
如何保证公钥不被篡改?
 
解决方法:将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。这也是为什么服务器返回的是证书,而不是单纯的公钥。
 
如何减少公钥加密耗时问题?
 
解决方法:每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
 
这也是为什么在HTTPS通信过程中会生成一个随机数的原因,它就是“对话密钥”,用来数据通信的对称加密,提升算法性能。
 
另外,一对公私钥只能实现单向的加解密,所以HTTPS中内容传输加密采取的是对称加密,而不是非对称加密。

dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。