当前位置: 首页 > news >正文

计算机网络--应用层(https)

       

        上一篇博主将来关于应用层http协议的博客,在实际面试中大部分情况是够用的,可能也有百分之十的情况会被问道https。我们对于学习呢也要有全面的认知,对于https我们还是要学习一下它的理论知识。万一哪天,大家去做了红客呢?况且现在的网站几乎都是https协议的。

目录

补充背景知识

http和https的关系

背景知识1:加密方式

对称加密

非对称加密 

背景知识2:数字签名

概念

 如何校验

秘钥交换协商

仅使用对称秘钥(NO)

仅使用非对称秘钥(NO)

使用两对非对称秘钥(NO)

使用对称秘钥和非对称秘钥(NO)

什么是安全?中间人攻击

CA证书认证&&使用对称秘钥和非对称秘钥

CA证书

如果中间人修改基本信息呢?

如果中间人修改数字签名呢?

如果是"合法的"中间人修改基本信息和数字签名呢?

补充


补充背景知识

http和https的关系

https = http + TLS/SSL

TLS/SSL:也是一个应用层的一个"软件",是对http进行加密处理的,他就是数据的加密解密层。

我们用图来表示一下他们之间的关系:

       我们可以看到,http响应的数据是要经过加密处理,所以我们通常说https = http + TLS/SSL。如果http不经过数据的加密解密层,就相当于直接把数据发送到网络中,这时候数据就是裸奔的,也是非常不安全的,如果我们使用像Fillder这样的工具是可以获取到这些数据的。

背景知识1:加密方式

对称加密

秘钥只有一个,用该秘钥就可以进行加密或解密。

我们来举一个简单的场景,比如我们C语言中学习过异或这个语法。

我们写一个简单的代码来验证一下:

 

非对称加密 

非对称加密,有一对秘钥:公钥和私钥

可以用公钥加密,但是只能用私钥解密

或者只能用私钥加密,但是只能用公钥加密

一般而言,公钥是全世界公开的,私钥是自己必须进行私有保存的。

背景知识2:数字签名

如何防止文本中的内容被篡改?以及识别到被篡改?

概念

 如何校验

假设我们提交一个文本,是把原文本的数据签名和"修改"的文本一起提交:

        好了,有了上面的知识补充,接下来我们就讲讲秘钥协商具体是怎么实现的,而且如何保证数据的安全呢?

秘钥交换协商

仅使用对称秘钥(NO)

       注意:为了防止给大家造成误解,这里(NO)表示实际过程中我们不采用这种协商手段,但是博主写在这里了,是为了帮助大家理解,甚至必要时,给面试官展示一下自己的深入思考。

对称加密:

双方第一次通信的时候,需要先将秘钥得到秘钥,有两种方法:

1、预装:这种显然是不现实的,这种做法成本太高,我们不采取。

2、协商:双方通信的时候,秘钥协商第一次有加密吗??绝对没有!! 

        这时候问题就出来了,我们第一次把秘钥X交给对方的时候,是很有可能被其他人获取到的!那么以后双发再次通信,数据都会被别人用X进行解密,这样做是非常不安全的!所以这种方式我们不采取。

仅使用非对称秘钥(NO)

        所以,由上面可以看出来,单使用非对称秘钥也是不能成功实现秘钥协商的,它只能保证单向的数据安全传送,那我们就可以发现,如果使用两对非对称秘钥不就可以保证数据双向的安全传输了?

使用两对非对称秘钥(NO)

从上面的过程来看,好像是保证了数据的安全传输的问题,按照上面的方法就可以了吗?事实并非如此:

1、依旧有被非法窃取的风险。(这个问题我们到后面来说,这里先简单忽略掉)

 2、非对称加密算法,是特别费时间!(对称加密算法是比较节省时间的)

        所以,为了效率的提高,实际并不采用上面的协商方案。那么我们使用对称秘钥(效率高)和非对称秘钥(安全)结合使用呢?

使用对称秘钥和非对称秘钥(NO)

进一步来看:

 

在秘钥协商阶段,server以安全的方式拿到了client发来的对称秘钥的私钥信息X。 

什么是安全?中间人攻击

采用对称秘钥和非对称秘钥的协商手段真的就安全了吗?不是的,我们首先来谈谈什么是安全。

       安全不是不让别人拿不到就叫安全,因为在网络通信中,数据是不可能不被别人拿到的。所以说,安全就是,如果别人拿到了,也没法处理,或者破解的成本远远大于得到数据的效益。

说个题外话:一般来说,对于加密级别非常高的数据,传统计算机破解需要几十年、几百甚至上千年,前提是原算法不能做改变。现在我们国家大力发展量子计算机,相比较于传统二进制计算机,它的计算效率是上万倍甚至几十万被的提高,所以难免国外很担心我们在量子计算机的突破发展,事实上他们不是害怕我们量子计算机技术的提高,更重要的是国家信息安全层面上,如果暴力破解,原来几百年才能做到现在只需几秒就可以了。当然,我们并不会这么去做,而是用在有意义的地方。说不定大家将来就是参与量子计算机研究的科学家呢~

中间人攻击:

由上面过程我们可以看出来,中间人拿到了client和server通信的秘钥X,那么中间人随时可以获取他们之间的数据,使用秘钥X进行解密,获得数据,显然,这也是有很大风险的~ 

本质问题:client无法判断发来的秘钥协商报文是不是从合法的服务端发来的!!!

CA证书认证&&使用对称秘钥和非对称秘钥

CA机构是一个具有权威的机构,每一个人可以向他申请合法的CA证书,它有自己的公钥和私钥,私钥只有CA机构知道。

CA证书

如果加入CA证书为什么就保证安全了呢?

 

       client获取证书的时候,会将基本信息内容通过Hash散列形成数据摘要,数字签名使用公钥解密形成数据摘要,然后比较这两个数据摘要是否一致,一致的话,就接收,否则就不接收。 这个就是我我上面补充的背景知识了。

上面的前提是,client必须知道CA机构的公钥信息,并且只信任CA机构的公钥信息!也只认CA机构的公钥!

如果中间人修改基本信息呢?

没事的,如果仅仅修改基本信息,到后面通过Hash散列形成数据摘要,再到后面比对时,是不匹配的,client不信任此证书。

如果中间人修改数字签名呢?

中间人无法修改匹配的数字签名,因为CA机构才知道私钥,中间人是无法进行加密形成的。

如果是"合法的"中间人修改基本信息和数字签名呢?

如果中间人把自己申请的CA整数发给客户端,来获取对称秘钥呢可行吗?答案是不行!

别忘了,基本信息里面有个域名,当客户端接收CA证书后,假设当client访问百度网站时,由于域名不同,访问到了qq官网,那么client就立马检测到该整数不合法,立马就舍弃掉。

       CA机构并不止一家,但是他们之间的秘钥都是相互可信任的,所以这个不用担心申请哪家的CA证书。

补充

        client端的是知道CA机构的公钥信息,这个一般是内置的(我们可以在自己的电脑中查找)。当然也有少数情况我们在访问某浏览器时,会提示我们安装并信任某某CA机构证书。这种情况比较少见,通常这样提示,很有可能我们访问这个网站不安全~

看到这里,给博主点个赞吧~

                               

相关文章:

  • 网站建设系统开发/怎么找推广渠道
  • 泉州网站设计平台/推广优化网站排名
  • 上海做网站的价格/十大引擎网址
  • wordpress成品站源码/百度刷搜索词
  • 江苏有哪些做网站建设的公司/最近发生的重大新闻事件
  • asp网站没有数据库/国外b站推广网站
  • LeetCode每日一题——902. 最大为 N 的数字组合
  • 【上传图片,文件,视频功能合集】vue-elementul简单实现上传文件,上传图片,上传视频功能【详细注释,简单易用】
  • 大学四年庸庸碌碌,我弯道超车上了软件测试
  • 信安软考 第十八章 网络安全测评技术与标准
  • 粒子群算法PSO求解最大值和最小值案例(超详细注释)
  • ArrayList和CopyOnWriteArrayList
  • Java中的JDK动态代理
  • 基于Springboot实现留守儿童管理系统
  • go-zero 成长之路—微服务电商实战系列(六、条件查询)
  • 注意力机制以及实现
  • 物联网ARM开发-9STM32窗口看门狗
  • 【附源码】计算机毕业设计SSM软件缺陷管理系统