HTTP协议和HTTPS协议的那些事
文章目录
HTTPS VS HTTP
HTTPS=HTTP+加密+证书+完整性保护
加密
对称加密
非对称加密
混合加密
证书
完整性保护
HTTPS并不能取代HTTP
SSL是把双刃剑
HTTPS的遗憾之处
HTTPS VS HTTP
计算机网络 (二) 应用层 :HTTP协议详解
在之前的文章中介绍了HTTP协议,虽然从中了解了他优秀的一面,但是也能看到他许多的不足。
由于其本身通信使用明文,没有进行加密,也没有确认通信方的一种机制,所以在互联网上近似于裸奔,很容易就会受到中间人攻击,导致安全存在问题。
通信时数据并没有进行加密,而是使用明文,很容易就会被窃听
没有验证通信对象的机制,导致了可能会有人假扮客户端进行通信
无法验证报文的完整性,中途可能被人篡改,自己又无法确认
HTTP的主要缺点如下
- 通信使用明文,内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法验证报文的完整性,有可能遭到篡改
为了弥补上述缺点,HTTPS就诞生了,HTTPS并不是一个新的协议,而是身披SSL外壳的HTTP,通过引入加密,证书,完整性保护来保证了他的安全。
HTTPS=HTTP+加密+证书+完整性保护
加密
对称加密
对称密钥加密也叫做共享密钥加密,其实就是加密和解密采用了同一个密钥
双方在进行通信时,发送方会利用密钥进行加密,再将密钥一同发送给接收方,让其使用这个密钥进行解密。
这种方法看起来不错,但是也存在问题,如果在发送的时候被拦截下来,密钥就会泄露给中间人,此时中间人就可以通过密钥来对之后的数据进行解密,此时也就失去了加密的意义
这时,就引入了非对称加密
非对称加密
非对称加密又叫做公开密钥加密,他使用一对非对称的密钥,一把叫做私有密钥,一把叫做公有密钥。故名思意,共有密钥是公开的,任何人都可以获得,而私有密钥则不能让任何人知道
当进行通信时,发送方使用对方的公有密钥进行加密,而接收方接收时则使用自己的私有密钥进行解密,这样一来,用于解密的私钥就完全掌握在接收者自己手里,中间人也无法从中窃取密钥,安全也一定程度的得到了保障。
混合加密
但是,从上面的描述也可以看出来,由于非对称加密的处理比起对称加密来说较为复杂,所以如果在通信时一直使用非对称加密,就会导致通信的效率大大的降低,所以HTTPS采用对称加密和非对称加密并用的混合加密机制
具体怎么做呢?
- 使用非对称加密的方式来交换之后用来进行加密解密的对称加密密钥
(因为对称加密的主要问题就是无法确保密钥是否安全,而此时采用非对称加密来传输密钥,就能很好的规避这个问题) - 在确保之前交换安全的情况下,使用对称加密密钥来进行通信
(而非对称加密的最大问题就在于其复杂的处理机制导致效率降低,所以在安全的情况下使用对称加密就可以大大提高效率)
证书
虽然数据得到了加密,不至于明文裸奔,但是这时以及安全了吗?
答案是否定的,我们还需要考虑到HTTP的第二个缺点,没有验证对象。
假设这样一个情景,小明和小张进行通信,中间人在双方第一次通信时就截获了小明的公钥,即使无法使用私钥解密,但是他仍然想出了一个坏点子——偷天换日,此时他冒充小明,将自己生成的公钥发送给小张。
此时小张误以为他就是小明,所以使用中间人的公钥进行加密,将对称加密的密钥发送了过去。
此时中间人就可以通过自己的私钥来进行解密,于是就获取了对称加密的密钥。之后他接着使坏——此时再伪装成小张,将密钥再一次加密后发送给小明,此时小明也认为他就是小张。
通过这种手法,中间人就能在双方都不知情的情况下,掌握了双方的对称加密密钥,轻松的截取了双方的通信内容。
为了解决这个问题,HTTPS引入了数字证书这一机制。
服务器的运营人员会向数字证书认证机构来进行认证,在机构对其验明身份之后,就会对服务器的公钥做一个数字签名,并且将公钥放入公钥证书后绑定在一起。
此时当客户端接收到服务器发送的公钥证书的时候,就会向证书认证机构来验证数字签名是否正确,来判断该公钥是否遭到替换,确保了公钥的真实性。
此时即使中间人想仿造公钥证书,但也因为无法通过机构的验证而被识破。
此时,中间人就没有使坏的空间了。
这就是HTTPS使用加密以及证书来确保安全的整个流程
完整性保护
在上面的流程中,应用层发送数据的时候会附加MAC报文摘要,MAC能够查知报文是否遭受到篡改,从而让保护报文的完整性。
HTTPS并不能取代HTTP
SSL是把双刃剑
HTTPS也叫做披着SSL外壳的HTTP,在通信接口部分他使用了SSL和TLS来进行代替。
对于HTTP协议来说,他直接和TCP进行通信。
而HTTPS为了保证安全,使用了SSL来提供保障,通信时首先与SSL进行通信,再由SSL来与TCP进行通信,正是因为由SSL的存在,才使得HTTP具备了HTTPS的加密、证书、安全性保障这些功能。
但是成也萧何,败也萧何,SSL为HTTPS保障安全的同时,也降低了他的效率
SSL主要慢在两个方面
- 和HTTP相比,网络负载可能会变慢2到100倍。由于HTTPS还需要额外进行SSL通信,整体上处理通信量不可避免的增加了。
- SSL为了确保安全,在客户端和服务端都需要进行大量的加密和解密的运算处理,导致其比起HTTP来说会更多的消耗服务器和客户端的硬件资源,导致负载增强。
HTTPS的遗憾之处
- SSL的高度安全带来的低效率以及高负载使得HTTPS并不会一直使用(或者干脆不用)
(对于高访问量的Web网站来说,进行大量的加密解密出来带来的负载十分庞大,并且对于非敏感信息(可公开信息)也没有加密的必要,所以大多数网站并不会一直使用HTTPS,而是只在进行私密内容传输的时候才会使用,来确保资源的节约。) - 数字证书的高昂成本使得个人网站及非盈利网站望而却步
(要进行HTTPS通信,数字证书是必不可少的,但是对于一些非盈利的网站以及个人网站来说,每年用来购买数字证书带来的花销并不是一个小数目,所以大多还是继续使用HTTP
HTTP协议和HTTPS协议的那些事的更多相关文章
- http协议和https协议
内容: 1.http协议介绍 2.https协议介绍 3.http协议和https协议对比 1.http协议介绍 (1)http协议是什么 1 一个传输协议,协议就是双方都遵守的规范. 2 为什么叫超 ...
- HTTP协议和HTTPS协议初探
概况 HTTP是hypertext transfer protocol(超文本传输协议)的简写.它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEBserver之间交换数据的过程. HT ...
- 1.http 协议和 https 协议的原理
首先,我们得知道应用层是 OSI 七层网络模型的第七层,不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP. 等协议都是用于解决其各 ...
- http协议和https协议的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...
- Http协议和Https协议的安全性问题
https://www.cnblogs.com/intsmaze/p/6009648.html https://blog.csdn.net/jeffleo/article/details/768630 ...
- Bytom BIP-32协议和BIP-44协议
我们知道HD(分层确定性)钱包,基于 BIP-32:多币种和多帐户钱包,基于 BIP-44:最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容 ...
- HTTP协议和SOCKS5协议
HTTP协议和SOCKS5协议 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们平时上网的时候基本上是离不开浏览器的,尤其是搜索资料的时候,那么这个浏览器是如何工作的呢?用的又是 ...
- http协议及http协议和tcp协议的区别
http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...
- Java基础之UDP协议和TCP协议简介及简单案例的实现
写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...
随机推荐
- 第51篇-SharedRuntime::generate_native_wrapper()生成编译入口
当某个native方法被调用时,一开始它会从解释入口进入,也就是我之前介绍的.由InterpreterGenerator::generate_native_entry()函数生成的入口例程.在这个例程 ...
- kibana7.x安装配置操作elasticsearch
什么是Kibana? Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等. 而且还 ...
- F5 BIG-IP 远程代码执行漏洞环境搭建
最近F5设备里的远程代码执行漏洞可谓是火爆,漏洞评分10分,所以,我也想搭建下环境复现一下该漏洞 漏洞详情 F5 BIG-IP 是美国F5公司一款集成流量管理.DNS.出入站规则.web应用防火墙.w ...
- RHCSA 第三天
1.将echo "This is my first time to use pipe"内容输出到屏幕上,且保存到pipe_data.txt中 2. 重定向: a.新建一个文件red ...
- Java类与对象的创建
以类的方式组织代码,以对象的方式组织(封装)数据 组织代码(类) public class Demo04 { String name;//默认值null int age;//默认值0 public v ...
- 阿里巴巴如何进行测试提效 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- gorm中的基本查询
检索单个对象 GORM 提供了 First.Take.Last 方法,以便从数据库中检索单个对象.当查询数据库时它添加了 LIMIT 1 条件 // 获取第一条记录(主键升序) db.First(&a ...
- golang中的sync
1. Go语言中可以使用sync.WaitGroup来实现并发任务的同步 package main import ( "fmt" "sync" ) func h ...
- 集合框架-工具类-JDK5.0特性-ForEach循环
1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 impo ...
- Telegra.ph | 简洁的文章发布平台
https://telegra.ph 自由 Telegraph 并不强调内容管理方这一概念,真正做到了「人人都是媒体」.通过 Telegraph 发布的文章,理论上来说不会存在删除的危险,并且由于会产 ...