【计算机网络】HTTPS?SSL?

参考:
https://zhuanlan.zhihu.com/p/525030348

https://blog.csdn.net/ahelloyou/article/details/118889539?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-118889539-blog-124535950.pc_relevant_multi_platform_whitelistv4eslandingctr2&spm=1001.2101.3001.4242.1&utm_relevant_index=3

https://blog.csdn.net/sullivan_jia/article/details/124535950

今天面试遇到的一个问题

面试官:HTTP 和HTTPS的区别
我:巴拉巴拉。。。(回答出HTTP无加密,安全性较差 HTTPS有加密机制,安全性较高。HTTP运行在TCP协议之上 HTTPS运行在SSL协议之上,SSL运行在TCP协议之上)
面试官:HTTPS如何加密
我:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
面试官:SSL协议怎么实现加密
我:。。。。。
面试官:本科的计算机网络应该都学过,基础不牢固啊

二、HTTP和HTTPS

在这里插入图片描述

HTTP(Hyper TEXT Transfer Protocol 超文本传输协议): 明文,不进行加密容易泄露

HTTPS(Hyper TEXT Transfer Protocol over Secure Socket Layer ) : HTTPS是在HTTP的基础上加入SSL协议。传输以密文传输,保证数据传输的安全以及确认网站的真实性(数字证书)。

HTTPS和SSL

总结:HTTP是一种明文传输协议,而HTTPS就是在HTTP的基础上加了SSL协议来对传输的数据进行加密

HTTP(Hyper TEXT Transfer Protocol - 超文本传输协议)是目前互联网上应用最为广泛的一种网络协议,用于在Web浏览器和网站服务器之间传递信息。

但是HTTP协议以明文的方式发送内容,不提供任何数据加密,攻击者能够很轻易通过抓包的方式截取传输内容并读懂其中的信息,所以HTTP不适合传输一些比较私密的信息。

为了解决HTTP安全性较差这一缺陷,HTTPS(Hyper TEXT Transfer Protocol over Secure Socket Layer)协议出现。

HTTPS是在HTTP的基础上加入SSL协议。以密文传输,保证数据传输安全以及确认网站的真实性(数字证书)。

H T T P + S S L = H T T P S HTTP+SSL = HTTPS HTTP+SSL=HTTPS

什么是SSL

SSL英文全称为Secure Socket Layer-安全套接层,一种为网络通信提供安全以及数据完整性的安全协议,在传输层对网络进行加密。

它主要是分为两层:

  • SSL记录协议: 为高层协议提供安全封装,压缩,加密等基本功能
  • SSL握手协议:OpenSSL是SSL的开源实现,它是作为密码学的安全开发包,提供相当强大全面的功能,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。它一共提供了8种对称加密算法和4种非对称加密算法。

SSL怎么实现加密

一、SSL加密方式

  • 对称加密
  • 非对称加密

加密过程:信息+密钥+算法=密文

对称加密

对称加密算法也是最常见的加密算法,不足是钥匙只有一把,加密解密都用同一把钥匙。

对称加密实质上加密和解密都使用同一个密钥,对称加密只有一个密钥,作为私钥。

这就好比现实生活中的钥匙和锁,将想要传达的信息通过对称加密算法用私钥进行加密,形成密文,然后将这密文传送给同样拥有这把锁的“钥匙”的人,对方就用同样的算法和私钥将密文解密出来。

常用的对称加密算法有DESAES
但是在现实中,这种传输方式并不是特别方便,密钥怎么给对方是一个很关键的问题,而且密钥交给了其他人自己也不是很放心。

于是非对称加密出现。

非对称加密

非对称加密是指加密和解密用的是不同密钥,并且是成对存在的。一把称为公钥,能够放心的交给别人,一把是私钥,只能自己保存。

其中用公钥加密的信息只能用私钥解密,用私钥加密的信息只能用公钥解密。

加密过程:信息+密钥+算法=密文

在这里插入图片描述

这里的私钥和密钥都是对应的,就是说我的私钥可以解密用我的公钥加密的信息,但是他人的私钥不能解密用我的公钥加密的信息。

常用的非对称加密算法有:RSADHDSA三种

具体的加密过程

通过一段具体的通信过程来模拟这一加密过程。
假设主人公是客户端A和服务端B

客户端A:B,你好,我想向你发一段消息,请你把你的公钥给我
服务端B:好的,我的公钥是:xxxxxxx。
客户端A:已收到你的公钥,我给你发送的消息经过你的公钥加密之后是这样的#$#$@#@!$%*(@
服务端B:收到,我现在用我的私钥来解密看看。

上述过程就是一个非对称加密的过程,这个过程安全么?
好像是很安全,即使C截取了密文和公钥没有私钥还是没法得到明文。

但是仔细想想信息真的可靠吗?

可如果第三者C发送给A他自己的公钥,然后A用B给的公钥加密密文发送了出去,B再通过自己的私钥解密,这不就泄露信息了么?
我们需要想个办法让A判断这个公钥到底是不是B发来的。

于是数字证书出现!

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。

简单来说数字证书就是一段信息,他内部的信息包括:

  • 签发证书的机构
  • 加密算法
  • Hash算法
  • 公钥
  • 证书到期时间等

贴一段实际的数字证书
通过查看CSDN的数字证书来帮助理解这一概念,chrome的网页栏一般有“安全”的字样,说明该网站的有数字证书的,数据传输的安全性是可以保证的。

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述


再来看看数字证书的内容:
它里面包含了一系列安全相关信息

在这里插入图片描述

在这里插入图片描述


数字证书是由权威机构----CA机构发行,绝对相信

为了防止证书颁发的过程中被人修改,又出现了一个数字签名的概念,所谓数字签名就是把证书内容做了一个hash操作生成固定长度的数据发送给服务端B,服务端B就能通过自己hash一遍对比发过来的hash来判断内容是否被修改。然而这还是可能被人截取修改内容重新生成hash再发给服务端B,这怎么办呢?
出于这个考虑,CA机构在颁发时又会用一个私钥将这个hash加密,这样就防止了证书被修改了。

数字签名,通俗来说就是将要传输的信息通过hash加密后,将这个hash用私钥加密,最后得到的东西称之为数字签名。用来验证传输的信息是否被更改,注意的是这个私钥是CA官方私钥。(两次加密)

正文+数字签名+数字证书

过程:

在这里插入图片描述


梳理下整个过程:
第一步 :客户端A开启一个新的浏览器访问客户端B时,会先让A安装一个数字证书,这个证书主要包含的是CA机构的公钥。
第二步:服务端B发来CA机构给自己的证书,通过CA公钥解密被CA私钥加密的hash1,然后再用B的证书里面的hash算法将信息生成一个hash2,比较两个hash,若相等,确认这个数字证书是服务端B的。

  • 由于非对称加密算法复杂度和计算量大,对称加密效率高,SSL就将这两种加密算法混合着用,这样安全和效率就都能保证了。

  • 通信双方通过对称加密来加密密文,然后使用非对称加密的方式来传递对称加密所使用的密钥。这样效率和安全就都能保证了。

协议握手具体的过程如下:
第一步 客户端A给出 支持的SSL版本+一个随机数+自己支持的加密方式
第二步 服务端B接收到这些信息后确认加密方式+自己的安全证书+一个随机数发给A
第三步 客户端A确认数字证书有效性(验证方法上面已经说明),然后生成一个随机数,并将这个随机数用B的数字证书公钥加密后发送给A。
第四步 服务端B使用自己的私钥解密这个随机数
第五步 A和B通过第二步确定的加密方法将前三个随机数生成一个对话密钥 用来接下来的通信(个人感觉不需要三个随机数,只用最后一个就够了,这样做可能是为了更安全)
于是A和B就能那个用对称加密的方式快速有效安全的通信了。

SSL协议的握手过程图示如下;

在这里插入图片描述

总体流程图:

在这里插入图片描述

整个进行数据加密的过程结束。
我们再来回忆下内容:

CA机构颁发数字证书给服务端B;
A和B进行SSL握手,A通过数字证书确定B的身份;
A和B传递三个随机数,第三个随机数通过非对称加密算法进行传递;
A和B通过一个对称加密算法生成一个对话密钥,加密接下来的通信内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340