HTTPS和HTTP的区别,及HTTPS的相关知识

HTTPS(HTTP Secure)是一种构建在SSL或TLS上的HTTP协议,简单地说HTTPS就是HTTP的安全版本。SSL(Secure Sockets Layer)以及其继任者TLS(Transport Layer Security)是一种安全协议,为网络通信提供来源认证、数据加密和报文完整性检测,保证通信的保密性和可靠性。HTTPS协议都以"https://"开头,在访问某个Web页面时,客户端会打开一条到服务器443端口的连接。

SSL(Secure Sockets Layer) 安全套接层
TLS(Transport Layer Security)传输安全协议
在这里插入图片描述
HTTPS:数据加密+网站认证+完整性验证+HTTP
在这里插入图片描述
HTTP不安全的原因:
1)数据以明文传递,有被窃听的风险。
2)接收到的报文无法证明是发送时的报文,不能保证完整性
3)不验证通信两端的身份,请求或响应有被伪造的风险。

数据加密

加密:在密码学中,加密是指将明文转为难以理解的密文;解密与之相反,是把密文换回明文。加密和解密都由两部分组成:算法和秘钥。加密算法可以分为两大类:对称加密和非对称加密。

对称加密:
在加密和解密的过程中只使用一个秘钥,这个秘钥叫对称秘钥也叫共享秘钥。
优点:计算速度快
缺点:通信两端需要分享秘钥。客户端与服务器在进行对话前,要先将对称秘钥发送给对方,在传输的过程中秘钥有被窃取的风险,一旦被窃取,那么密文就能被翻译成明文,那加密保护也就没什么用。
加密算法: DES、3DES、RC-5、IDEA

非对称加密:
在加密的过程中使用公用秘钥,在解密过程中使用私钥解密。加密和解密的过程也可以反过来,使用私钥秘钥加密,再用公用秘钥解密。
缺点:计算速度慢
优点:避免信息泄露,通信两端如果都使用非对称,那么各自都会生成一对秘钥,私钥留在身边,公钥发给对象,公钥在传输途中即使被人窃取,也不用担心,因为没有私钥就无法轻易解密。在交换公钥后,就可以用对方的公钥把数据加密,开始密文对话。
加密算法: RSA(常用)、ECC

HTTPS采用混合加密机制,将两种加密算法组合使用,充分利用各自的优点。在交换公钥阶段使用的非对称加密,在传输报文阶段使用对称加密。即非对称加密传输密钥,对称加密传输数据,摘要保证数据完整性。

在这里插入图片描述

HTTPS连接创建的过程?
(1)客户端发送Client Hello报文开始SSL通信,报文中还包括协议版本号、加密算法等信息。
(2)服务器发送Server Hello报文作为应答,在报文中也会包括协议版本号、加密算法等信息。
(3)服务器发送数字证书,数字证书中包括服务器的公开秘钥
(4)客户端解开并验证数字证书,验证通过后,生成一个随机密码串(premaster secret),再用收到的服务器公钥加密,发送给服务器。
(5)客户端发送Change Cipher Spec报文,提示服务器在此报文之后,采用刚刚生成的随机密码串进行数据加密。
(6)服务器也发送Change Cipher Spec报文。
(7)SSL连接建立完成,接下来就开始可以传输数据了。

在这里插入图片描述
完整性验证采用数字签名

数字签名:是一段由发送者生成的特殊加密校验码,用于确定报文的完整性。数字签名的生成涉及两种技术:非对称加密和数字摘要。数字摘要可以将变成的报文提取为定长的摘要,报文内容不同,提取出的摘要也将不同,常用的摘要算法有MD5和SHA。签名和校验的过程如下:
(1)发送方用摘要算法对报文进行提取,生成一段摘要
(2)然后用私钥对摘要进行加密,加密后的摘要作为数字签名附加在报文上,一起发送给接收方
(3)接收方收到报文后,用同样的摘要算法提取出摘要
(4)再用接收到的公钥对报文中的数字签名进行解密
(5)如果两个摘要相同,那么就能证明报文没有被篡改

简单来说就是:对消息做摘要,用私钥加密摘要。密文即签名,签名同消息一起发送。
在这里插入图片描述
网站认证采用数字证书

数字证书:相当于网络上的身份证,用于身份识别,由权威的数字证书认证机构(CA)负责颁发和管理。证书的内容包括:有效期、颁发机构、颁发机构的签名、证书所有者的名称、证书所有者的公开秘钥、版本号和唯一序列号等信息。客户端(浏览器)会先植入一个受信任的颁发机构列表,如果收到的证书来自陌生的机构,那么会弹出一个安全警报对话框。
一般证书都安装在服务器处,当客户端发起安全请求时,服务器就会返回数字证书。客户端从受信机构列表中找到相应的公开秘钥,解开数字证书。然后验证数字证书中的信息,如果验证通过,就说明请求来自对的服务器,否则说明证书被冒用,客户端立即发出警告。

HTTPS的缺点?
(1)通信两端都需要进行加密,会消耗大量的CPU、内存等资源,增加服务器的负载。
(2)加密算法和多次握手降低了访问速度
(3)在开发阶段,加大了页面调试难度。由于信息都被加密了,所以用代理工具的话,需要先解密然后才能看到真实的信息
(4)用HTTPS访问的页面,页面内的外部资源都得用HTTPS请求,包括脚本中的AJAX请求。

HTTP相关知识:https://mp.csdn.net/postedit/84563762

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值