HTTP和HTTPS的原理和区别

前言

近年来,随着用户和互联网企业安全意识的提高和HTTPS成本的下降,HTTPS已经越来越普及。
很多互联网巨头也在力推HTTPS,比如:谷歌的Chrome浏览器在访问HTTP网站时会在的址栏显示不安全的提醒。
微信要求所有的小程序必须使用HTTPS传输协议。
苹果也要求所有在App Store上架的应用必须采用HTTPS。
国内外的大部分主流网站也都迁移至HTTPS,可见HTTPS全面取代HTTP只是时间问题。

一、HTTP的原理

HTTP的最大弊端:不安全
HTTP之所以被HTTPS取代,最大的原因就是不安全,至于为什么不安全,看了下面这张图就一目了然了。
HTTP数据传输过程:
在这里插入图片描述
由图可见,HTTP在传输数据的过程中,所有的数据都是明文传输,自然没有安全性可言,特别是一些敏感数据,比如用户密码和信用卡信息等,一旦被第三方获取,后果不堪设想。
这里可能有人会说,我在前端页面对敏感数据进行加密不就行了,比如MD5加盐加密不就行了,比如MD5加盐加密。
这么想就太简单了。首先MD5并不是加密算法,其全称是Message Digest Algorithm MD5,意为信息摘要算法,是一种不可逆的哈希算法,也就是说经过前端MD5处理过的数据在服务器端是无法恢复的。
这里以密码举例,前端把用户密码通过MD5进行处理,并把得到的哈希值发送给服务器,服务器由于无法复原密码,就会直接用这个哈希值处理用户请求。
所以第三方在获取这个哈希值后,可以绕过前端登录页面直接访问服务器,造成安全问题。
另外,MD5算法本身的安全性也存在缺陷,这里就不展开谈了。总之MD5,SHA-1之类的哈希算法并不能让HTTP变得更安全。
要想让HTTP更安全,只能使用真正的加密算法,因为加密算法可以用密钥或还原数据,只要确保密钥不被第三方获取,那就能确保数据传输的安全了。
而这正是HTTPS的解决方案,那边下面就了解一下加密算法吧。
加密算法
HTTPS解决数据传输安全问题的方案就是使用加密算法,具体来说是混合加密算法,也就是对称加密和非对称加密的混合使用,这里有必要先了解一下这两种加密算法的区别和优缺点。
对称加密
对称加密,顾名思义就是加密和解密都是使用同一个密钥,常见的对称加密算法有DES,3DES和AES等。
优点:
算法公开、计算量小、加密速度快、加密效率高,适合加密比较大的数据。
缺点:
交易双方需要使用相同的密钥,也就无法避免密钥的传输,而密钥在传输过程中无法保证不被截获,因此对称加密的安全性得不到保证。
每次对用户使用对称加密算法时,都需要使用其他人不知道的唯一密钥,这会使得发收信双方所拥有得钥匙数量急剧增长,密钥管理成为双方得负担。
对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
本文不对具体得加密算法做详细介绍,如果直接对称加密算法用在HTTP中,会是下面的效果:
对称加密数据传输过程:
在这里插入图片描述
从图中可以看出,被加密的数据在传输过程中是无规则的乱码,即便被第三方截获,在没有密钥的情况下也无法解密数据,也就保证了数据的安全。
但是有一个致命的问题,那就是既然双方要使用相同的密钥,那就必然要在传输数据之前先由一方把密钥传给另一方,那么在此过程中密钥就很有可能被截获,这样一来加密的数据也会被轻松解密。
那如何确保密钥在传输过程中的安全呢?这就要用到非对称加密了。
非对称加密:
非对称加密,顾名思义,就是加密和解密需要使用两个不同的密钥:公钥(public key)和私钥(private key)。
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。
非对称加密算法实现机密信息交换的基本过程是:
甲方生成一对密钥并将其中的一把作为公钥对外公开;得到该公钥的乙方使用公钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的私钥对加密后的信息进行解密。
如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人。
别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
优点:
算法公开,加密和解密使用不同的钥匙,私钥不需要通过网络进行传输,安全性很高。
缺点:
计算量比较大,加密和解密速度相比对称加密慢很多。
由于非对称加密的强安全性,可以用它完美解决对称加密的密钥泄露问题,效果图如下:
客户端通过非对称加密把密钥key发送给服务器:
在这里插入图片描述
在上述过程中,客户端在拿到服务器的公钥后,会生成一个随机码(用key表示,这个key就是后续双方用于对称加密的密钥),然后客户端使用公钥把key加密后再发送给服务器。
服务器使用私钥将其解密,这样双方就有了同一个密钥key,然后双方再使用key进行对称加密交互数据。
在非对称加密传输key的过程中,即便第三方获取了公钥和加密后的key,在没有私钥的情况下也无法破解key(私钥存在服务器,泄露风险极小),也就保证了接下来对称加密的数据安全。
而上面这个流程图正是HTTPS的雏形,HTTPS正好综合了这两种加密算法的优点,不仅保证了通信安全,还保证了数据传输效率。

二、HTTPS的原理

HTTPS=HTTP+SSL/TLS
HTTPS加密、解密、验证及数据传输过程:
在这里插入图片描述
HTTPS的整个通信过程可以分为两大阶段:证书验证和数据传输阶段,数据传输阶段又可以分为非对称加密和对称加密两个阶段。
上述图中具体的流程:
(1)客户端请求HTTPS网址,然后连接到server的443端口(HTTPS默认端口,类似于HTTP的80端口)。
(2)采用HTTPS协议的服务器必须有一套数字CA(Certification Authority)证书,证书是需要申请的,并由专门的数字证书认证机构(CA)通过非常严格的审核之后颁发的电子证书(当然是要钱的,安全级别越高价格越贵)。

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值