HTTP与HTTPS的区别及HTTPS如何安全的传输数据

简介: 在Https传输过程中,客户端和服务端使用非对称加密生成对称加密的密钥,然后用对称加密传输网络中的数据。这就是最优解。

首先要先了解几个基本概念

HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。

HTTP默认是工作在TCP协议80端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。

HTTP协议以明文的形式发送内容,不对数据进行任何加密,容易受到攻击拦截获取到信息,因此HTTP不适合传输敏感信息,比如信用卡号,密码等支付信息。

HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

HTTPS默认工作在TCP协议443端口,它的工作流程一般如下:

1、TCP 三次同步握手
2、客户端验证服务器数字证书
3、DH 算法协商对称加密算法的密钥、hash 算法的密钥
4、SSL 安全加密隧道协商完成
5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
对称加密:用同一把钥匙进行加密和解密;

非对称加密:两把不同的钥匙,一把公钥,一把私钥,用公钥来加密明文,用私钥来解密密文;

这里要说一下这两种加密方式的优缺点

column1 非对称机密 对称加密
速度
效率
安全性
常见算法 RSA\DH AES\DES\IDEA

从表格中我们可以看出,非对称机密虽然安全性高,但是速度慢、效率低;而对称加密安全性低,却速度快,效率高,那如何选择使用,才是一种最优做法呢?

答案就是两者结合,在Https传输过程中,客户端和服务端使用非对称加密生成对称加密的密钥,然后用对称加密传输网络中的数据。这就是最优解。

那么钥匙哪里来的呢?从CA(数字证书认证机构)机构来,正规的Https都是需要从CA机构那边申请获取证书的,当然是要收钱的,也可以自己本地生成,区别在于自己制作的证书需要客户端验证通过才能继续访问。

那证书到底是什么,其实证书就是一对公钥跟密钥,可以理解证书就是你去商店买的一把锁,你买的锁肯定是一套的,一个锁头,一把钥匙,你可以用锁头锁上你所要锁上的东西,但是钥匙只有一把啊,就在你手上,只有你一个人能打开锁拿出东西,所以公钥就是锁头,可以锁住https传输过程中的数据,确保安全,而私钥就是要解开这把锁拿到数据的钥匙。

还有一点需要知道的是,这个证书本身是包含很多信息,比如颁发机构,可以理解为生产这个锁的地方,还有过期时间,每个东西都有保质期的嘛,还有一起其他的信息等。

接下来就是我们本篇文章的重点,Https在传输过程中,是如果结合对称加密和非对称加密,然后进行数据安全传输的。

非对称加密的公钥跟私钥我们已经有了,就是证书,是服务器去向CA机构申请获取的。

第一步,客户端去请求Https的时候,可以获取到证书,也就是非对称加密的公钥跟私钥,这部分工作是通过客户端的TLS来完成的,首先会去验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题;(这个跟我们平时访问一些小网站是同个道理 😏);如果证书没有问题,那么就会生成一个随机值,注意了,这个随机值其实就是对称加密的钥匙,用证书对这个随机值进行加密得到密文,也就是用公钥对随机值进行加密,只有私钥才能解密获取随机值。

第二步,数据传输到服务器,服务器获取密文后,用证书中的私钥对密文进行解密,这样服务器就已经获取到了随机值,也就是对称加密的钥匙,这样子客户端拥有对称加密的钥匙,服务端也有了同样一把钥匙,后面传输数据就可以通过这个随机值(钥匙)来进行加解密了。

第三步,服务端传输数据给客户端,用的是第二步获取到的随机值(钥匙)对数据进行对称加密,数据到达客户端之后,客户端也要随机值(钥匙,与服务端同一把)解密,如此来进行通信。

通过上面可以得出,第一、二步主要是利用非对称加密的安全性来传输对称加密的钥匙,当客户端跟服务端都拥有同一把对称加密的钥匙之后呢,再通过这把钥匙来进行通信,也就是其实通信用的是对称加密的方式,所以效率高,速度快。

以上就是https传输数据中对称加密与非对称加密结合起来的使用详情,既安全又高效

相关文章
|
2天前
|
安全 Go
解决https页面加载http资源报错
请注意,混合内容可能导致安全性问题,因此在使用上述方法时要小心。最好的方式是尽量减少或完全消除混合内容,以确保页面的安全性。
5 0
|
7天前
|
网络协议 网络安全 数据安全/隐私保护
http和https的区别!
http和https的区别!
|
7天前
|
网络协议 Linux Windows
TCP/IP、Http、Socket之间的区别
TCP/IP、Http、Socket之间的区别
|
10天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
10 0
|
13天前
|
缓存 安全 网络协议
【面试必备】HTTP和HTTPS是什么?有什么差异?
HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。
20 2
|
29天前
|
前端开发 应用服务中间件 网络安全
http转为https,ssl证书安装及nginx配置
http转为https,ssl证书安装及nginx配置
46 1
|
29天前
|
安全 数据安全/隐私保护
深入解析:HTTP和HTTPS的三次握手与四次挥手
在这些握手和挥手过程中,双方交换信息,协商参数,建立或关闭连接,以保证数据的可靠传输。HTTPS在此基础上加入了数字证书验证和加密通信,增加了安全性。这些步骤确保了HTTP和HTTPS协议的通信过程的稳定和安全。
115 0
|
1月前
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
21 0
|
1月前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
141 0
|
3月前
|
Web App开发 移动开发 JavaScript
Python网络编程(三),HTTP协议
Python网络编程(三),HTTP协议
61 0