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传输数据中对称加密与非对称加密结合起来的使用详情,既安全又高效

相关文章
|
10月前
|
XML JSON API
识别这些API接口定义(http,https,api,RPC,webservice,Restful api ,OpenAPI)
本内容介绍了API相关的术语分类,包括传输协议(HTTP/HTTPS)、接口风格(RESTful、WebService、RPC)及开放程度(API、OpenAPI),帮助理解各类API的特点与应用场景。
|
10月前
|
Android开发 Kotlin
|
10月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
882 2
|
安全 网络安全 数据安全/隐私保护
网页安全演进:HTTP、HTTPS与HSTS
这整个进程实质上是网页安全由“裸奔”到“穿衣”再到“绑带”的演变史。它保障了数据的机密性和完整性,降低了中间人攻击的风险,最终实现了更自由、更安全的网络环境。但别忘了,技术永远在发展,网络安全的赛跑也永无终点。*ENDPOINT*
1017 11
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
400 19
|
运维 安全 网络安全
443端口:HTTPS通信的安全基石
作为互联网安全的基石,443端口通过加密与认证机制,保护了数十亿用户的隐私与数据完整性。无论是开发者、运维人员还是普通用户,理解其原理与作用都至关重要。在享受便利的同时,也需时刻关注安全实践,防范潜在风险。
4080 12
|
Web App开发 前端开发 关系型数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
fuser可用于查询文件、目录、socket端口和文件系统的使用进程 1.查询文件和目录使用者 fuser最基本的用法是查询某个文件或目录被哪个进程使用: # fuser -v .
1050 0
|
Web App开发 Linux
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
内存是影响Linux性能的主要因素之一,内存资源的充足与否直接影响应用系统的使用性能。 free命令:监控Linux内存使用状况。
1416 0
|
Web App开发 前端开发 算法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
基于大数据的精准营销与应用场景 2015年08月11日 大数据 大数据营销时代来临营销学领域过去半个多世纪的发展让我们见证了从“以产品为中心”到“以客户为中心”的转变。
1130 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
 Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭;    如果知道实际连接服务器的并发客户数没有超过服务器的承载量,看下有没有网络流量异常。
1084 0