【计算机网络】什么是HTTPS?HTTPS为什么是安全的?

【面试经典题】

前言:

HTTP最初的设计就是用于数据的共享和传输,并没有考虑到数据的安全性,如窃听风险,篡改风险和冒充风险。HTTPS是在 HTTP 的基础上引入了一个加密层。HTTPS通过数据加密,数据完整性检验和身份认证有效的保证了数据传输的安全性。HTTP默认端口号80,HTTPS默认端口号是443。是接下来说说这些方法具体是咋实现的。

HTTPS:这里的S指的是TLS(前身是SSL,后来更名了)传输层安全协议。可以理解为HTTPS=HTTP+TLS。TLS是一种安全性协议。旨在保障通信数据的保密性,完整性,真实性。TLS位于应用层和传输层之间。 

TLS的发展历程

    

HTTP为什么不安全?

互联网上任何数据包的传输,都需要经过许许多多的网络设备如路由器等,如果其中一台设备是恶意的,或者被恶意的人劫持(如黑客),那传输的数据就可能会被窃取或者修改。并且HTTP是明文传输的,传输的数据没有进行任何加密。数据就会被轻易窃取。并且数据没有经过任何的校验,要是数据被篡改,也无法感知。并且通信双方也没有进行身份认证,就会存在通信对象可能不是目标对象的情况,如黑客冒充成客户端或者服务器端与对方进行交互。

综上所述:HTTP存在以下三种安全风险:

  1. 窃听风险
  2. 篡改风险
  3. 冒充风险

HTTPS的工作过程

对于如何解决第一种风险,我们首先能想到的是进行加密,加密有两种,对称加密和非对称加密。

1.使用对称加密

这种对称加密使用同一种秘钥,秘钥是由客户端这边生成的,不同的客户端秘钥不同,然后向服务器发送,并于服务器约定使用这个秘钥传输。秘钥既可以加密也可以解密,虽然数据传输进行了加密,但秘钥在传输过程中并没有被加密,就会容易被截获,截获的人就可以通过秘钥解密数据,造成风险。


2.使用非对称加密

如上图所示,加密过程共有四步: 

  1. 首先浏览器向服务器发送获取公钥的请求,
  2. 服务器收到请求返回自己的公钥,
  3. 浏览器收到公钥后,将请求数据和公钥通过加密算法进行加密生成密文,然后发送给服务器。
  4. 服务器收到密文后,用私钥和密文通过解密算法获得明文数据,然后服务器又将响应数据使用私钥加密后发给浏览器,浏览器收到密文再通过公钥进行解密。

这种加密显然优于第一种,非对称加密使用一对秘钥,公钥和私钥,公钥是公开的,私钥是仅服务器拥有的。非对称加密的特点是通过公钥加密的密文必须由私钥解密,通过私钥加密的密文必须由公钥解密。但是纯使用非对称加密这种也有缺点,一是效率太慢(因为涉及到复杂的数学运算)

二是传输过程中公钥是可以被截获的,并且第四步服务器返回响应是通过私钥加密的,截获公钥的不法分子就能够通过公钥解密。


3.使用非对称加密+对称加密

如上图所示,非对称加密过程共有五步:

  1. 浏览器向服务器发起获取非对称加密公钥的请求。
  2. 服务器收到请求返回自己的公钥。
  3. 浏览器将对称加密秘钥使用公钥加密后发送给服务器,服务器收到密文使用自己的私钥解密后获得对称加密秘钥。
  4. 浏览器将请求数据使用对称加密秘钥加密后发送给服务器。
  5. 服务器使用刚才获得的对称秘钥对密文进行解密,得到请求数据。服务器根据请求处理数据,服务器将响应数据使用对称秘钥加密后发给浏览器,浏览器使用对称秘钥解密后获得响应。

非对称加密主要用来传输对称加密的秘钥,而不是传输业务数据。传输业务数据交给对称加密。这样就算不法分子能够拿到公钥,也无济于事。我们的目标是让对称加密的秘钥安全的发送给服务器。发送过去后,剩下的数据传输就全部用秘钥进行加密解密。总的来说就是两种加密方式的加密对象不同。作用时间不同。这样做就可以有效防止窃听风险。但还不够,魔高一尺道高一丈。如果黑客冒充服务器并伪造公钥该咋办?

非对称加密为什么要引入对称加密?

因为非对称加密/解密,运算成本是比较高的,运算速度也比较慢;而对称加密运算成本低,速度快。上文中单单使用对称加密不安全是因为秘钥在传输过程中没有加密,容易被截获。即使用对称加密的要害是传输秘钥。如果我们使用非对称加密进行传输对称秘钥,然后在后面的数据传输中均使用对称加密。这样相互配合,就可以在保证安全的同时,效率也提高。如果整个过程都是用非对称加密传输,传输效率会大打折扣。


3.1详解冒充风险

不法分子是如何冒充的?

客户端向服务器请求公钥后,服务器会返回一个公钥,但在这个中间,公钥存在被截获的风险,黑客这边提前自己也生成一对公钥和私钥,截获后黑客就可以将公钥替换成自己的。但是客户端不知道,就会拿着黑客提供的公钥进行加密,然后传给服务器,中间又会被黑客截获,由于公钥是黑客的,那自然黑客手中的秘钥就能对它解密,这个过程中黑客就获得了秘钥,这时通信双方并没有正式进行数据通信,黑客继续伪装,使用之前截获的服务器的公钥(不是伪造的,如果这里伪造,数据传到服务器那边是解不开的)对秘钥加密,发送给服务器。服务器使用私钥解密,于是双方就约定使用这个秘钥进行数据传输了,殊不知秘钥已经被黑客截获了。后续黑客只需要通过秘钥就能轻松地获取数据了。这个过程的关键是秘钥被黑客给截取了。


4.使用证书机制

解决上述冒充问题的办法就是进入公证机构。在客户端和服务器起初建立连接时,服务器就给客户端返回一个证书。这个证书就好比人的身份证,用来作为网站的身份标识。而每搭建一个 HTTPS 网址时都需要在认证机构申请一个证书。

证书含有的重要信息:

  • 证书发布机构
  • 证书有效期
  • 公钥(服务器的公钥)
  • 证书所有者
  • 签名

即在搭建服务器时,服务器会去公证机构申请证书并提交一系列材料。认证成功后,公证机构会给这个服务器颁发证书(证书中就含有公钥)。接下来每次客户端访问服务器时,都会先请求服务器的证书,服务器返回证书给客户端。接下来分两步进行检验:

第一步:检验证书是否合法

万一证书是伪造的,校验证书方式有:

  1. 判定证书的有效期是否过期
  2. 判定证书的发布机构是否受信任
  3. 判定证书是否被篡改(从系统中拿到该证书发布机构的公钥,对签名解密,得到一个 hash 值(称为数据摘要),设为 hash1。然后计算整个证书的 hash 值,设为 hash2。对比 hash1 和 hash2 是否相等,如果相等,则说明证书是没有被篡改过的)

证书检验通过后,进行检验证书中的数据是否被篡改过。

第二步:检验证书中数据是否被篡改

目的是为了检验公钥是否被修改过,进行数字签名(其实就是被加密后的校验和), 这里的校验和就是把证书中所有数据的每个字节带入公式就会算出一个结果数字,这个数字就是校验和。为了防止该校验和又被修改,我们对校验和进行了加密。这个加密是由公正机构完成的,公证哪个机构那边也有一对公钥和私钥,其中公钥分发给各个客户端,私钥用来加密校验和。现如今我们的操作系统上已经拥有许多知名认证机构的公钥,客户端收到证书并确认证书无误后,开始使用公钥解密获得检验和(一串数字),同时客户端这白牛也用相同的公式将证书中的数据进行计算得出一个校验和,与解密后的校验和对比,以此来最终确认证书有没有被篡改过。通过后就可以开始进一步传输秘钥,传输数据了。解决冒充问题的关键就是验证这个证书中携带的服务器的公钥是否被修改过。 


常见的计算校验和的算法有MD5 和 SHA,以下以 MD5 为例,介绍其特点:

  • 定长:无论多长的字符串,计算出来的 MD5 值都是固定长度(16字节版本或者32字节版本)
  • 分散:源字符串只要改变一点点,最终得到的 MD5 值都会差别很大
  • 不可逆:通过源字符串生成 MD5 很容易,但是通过 MD5 还原成原串理论上是不可能的

由于 MD5 这样的特性,因此可以认为如果两段数据的 MD5 值相同,则这两段数据相同。

总结:

  1. 对称加密:由客户端生成的对称密钥,用于对传输的数据进行加密,需要将该对称密钥告知给服务器。
  2. 非对称加密: 服务器给客户端提供一个公钥(私钥自己持有),将公钥传发送给客户端,客户端使用公钥对对称密钥进行加密,将密文传送给服务器。
  3. 证书机制: 通过第三方公证机构,向网站颁发证书,该证书里面就含有服务器的公钥。客户端首先向服务器请求证书,客户端拿到证书后进行校验,如果证书合法并且证书里的数据没有被篡改,就使用里面的公钥对对称密钥进行加密。
     

通过上面三种方式的结合,就可以保证传输过程中的安全了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/109020.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“破解我!“---160个CrackMe练习001-Acid buen.exe

文章目录 前言题目分析破解过程Serial/Name验证方式爆破注册机 追码 Serial验证 前言 想开个系列,160个Crackme的练习,这个在52pojie上有个精华帖总结,写的特别好,推荐!写这个系列主要还是记录一下自己的学习记录&…

26 行为型模式-命令模式

1 命令模式介绍 2 命令模式原理 3 命令模式实现 模拟酒店后厨的出餐流程,来对命令模式进行一个演示,命令模式角色的角色与案例中角色的对应关系如下: 服务员: 即调用者角色,由她来发起命令. 厨师: 接收者,真正执行命令的对象. 订单: 命令中包含订单 /*** 订单类**/ public cl…

✔ ★【备战实习(面经+项目+算法)】 10.29学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

Android [SPI,AutoSerivce,ServiceLoader]

记录一下在Android中使用SPI的过程。 1.项目gralde文件。 plugins {id kotlin-kapt } dependencies {implementation com.google.auto.service:auto-service:1.0-rc7 kapt "com.google.auto.service:auto-service:1.0-rc7" } 这个AutoServ…

Visual Studio 2019部署桌面exe(笔记)

一、使用Visual Studio自带的Publish功能 上述两张图片一般会自动加载,只需要查看一下即可。 签名问题: 生成exe执行文件 双击setup.exe 桌面生成(默认图标) 换图标: 对应桌面生成的exe

网络安全(黑客)—小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

ES性能优化最佳实践- 检索性能提升30倍!

Elasticsearch是被广泛使用的搜索引擎技术,它的应用领域远不止搜索引擎,还包括日志分析、实时数据监控、内容推荐、电子商务平台、企业级搜索解决方案以及许多其他领域。其强大的全文搜索、实时索引、分布式性能和丰富的插件生态系统使其成为了许多不同行…

RTE(Runtime Environment)

RTE(Runtime Environment)是一个运行时环境,在这个环境里,你可以实现的功能是: 作为一个缓冲buffer给应用层和BSW层的接口(例如COM)用来存储数据,也就是说定义一个全局变量供上层和下…

SAP业务从ECC升级到SAP S/4HANA有哪些变化?有哪些功能得到增强?

SAP在2015年推出了新一代商务套件SAP S/4 HANA。 SAP S/4 HANA (全称SAP Business suite 4 SAP HANA),这款新产品完全构建于目前先进的内存平台SAP HANA 之上,同时采用现代设计理念,通过SAP Fiori 提供精彩的用户体验 (UX)。提供比ECC更强大的功能。S/4h…

[SpringCloud] Nacos 简介

目录 一、Nacos,启动! 1、安装 Nacos 2、运行 Nacos 3、Nacos 服务注册 二、Nacos 服务多级存储模型 1、服务跨集群分配 2、NacosRule 负载均衡(优先本地) 3、服务实例的权重设置 4、环境隔离 三、Nacos 注册中心细节分…

[毕设记录]@开题调研:一些产品

我感觉产品能代表落地的一些实际应用,会和研究的角度有些差别,但是需求和兴趣往往是从现实中来的,在上一篇blog里面看外国blog的时候顺着搜搜到了很多国外的智慧校园chatbot解决方案 文章目录 Comm100streebomodern campusUniBuddy Comm100 …

私有云:【9】Connection配置

私有云:【9】Connection配置 1、关闭IE增强配置2、Connection配置2.1、登录connection管理台配置许可证2.2、添加VCenter主机2.3、配置Composer 1、关闭IE增强配置 关闭此项 全部关闭 2、Connection配置 2.1、登录connection管理台配置许可证 上一章connection…

Lua脚本语言

1. 概念 Lua(发音为"loo-ah",葡萄牙语中的"lua"意为月亮)是一种轻量级的、高效的、可嵌入的脚本编程语言。官网Lua最初由巴西计算机科学家Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开…

深度神经网络的数学原理:基于超平面、半空间与线性区域的表示

概述 以前的文章主要描述了神经网络,即多层感知机、全连接模型的运行原理,还是以实验为主,数学描述为辅的方式,这篇文章以纯数学的视角来描述神经网络的运行原理,主要以前馈过程为主(反向传播的动力学过程…

python爬虫selenium和ddddocr使用

python爬虫selenium和ddddocr使用 selenium使用 selenium实际上是web自动化测试工具,能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。 通过pythonselenium结合来实现爬虫十分巧妙。 由于是模拟人的点击来操作,所以实际上被反…

N-130基于springboot,vue校园社团管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本系…

mac安装nodejs,跑vue程序

1. 下载node.js for mac,地址:Node.js。一路安装就可以了,无需修改。 2. mac终端,查看node和npm的版本。 3. 配置环境变量, vim .bash_profile增加PATH$PATH:/usr/local/bin/ 4. 但是毕竟npm安装一些东西还是太慢了所…

Godot 官方2D C#重构(4):TileMap进阶使用

文章目录 前言完成内容项目节点结构TileMap设置图片资源备选图片添加物理碰撞添加y轴遮罩判断Y Sort Enable是干什么的? 脚本代码 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 完成内容 项目节点结构 TileMap设置 图片资源 备选图…

IDEA常用的一些插件

1、CodeGlance 代码迷你缩放图插件,可以快速拖动代码,和VScode一样 2、Codota 代码提示工具,扫描你的代码后,根据你的敲击完美提示。 Codota基于数百万个开源Java程序和您的上下文来完成代码行,从而帮助您以更少的…

云游长江大桥,3DCAT实时云渲染助力打造沉浸化数字文旅平台

南京长江大桥是中国第一座自主设计建造的双层公路铁路桥,也是世界上最早的双层公路铁路桥之一。它不仅是一座桥梁,更是一座历史文化的见证者和传承者。它见证了中国人民的智慧和奋斗,承载了中国社会的变迁和发展。 如何让这座不可移动的文物…