HTTPS小记

来源:互联网 发布:软件开发技术要求 编辑:程序博客网 时间:2024/06/02 18:23

我们发现,现在很多的大型网站请求链接都是HTTPS的,比如说我们熟悉的天猫,京东,百度等等。那么它们为什么要使用HTTPS来请求自己的网站呢,想必大家都知道是因为HTTPS是安全的,而HTTP却不安全,所以它们都会用HTTPS来作为自己网站的请求头。今天,我们便来讲讲这HTTPS。

数据的安全性

加密算法:对称加密算法、非对称加密算法、HASH算法等

对称加密算法: Server和Client共用一把秘钥,Server用此秘钥加密数据,Client用此秘钥解密数据。
优缺点:优点是加密处理简单,加解密速度快,密钥较短,系统开销小,适合加密大量数据。 缺点是进行安全通信前需要以安全方式进行密钥交换,加密度低,且当Client的数量较多时就得维护大量的密钥,毕竟总不能让所有的Client共用一个密钥吧。
常见的对称加密算法:AES、DES、3DES等

非对称加密算法:需要两个密钥,一个是私钥,一个是公钥;Server拥有私钥,Client拥有公钥;Server可以通过私钥加密数据,然后Client通过公钥解密该数据,反之,Client也可以通过公钥加密数据,然后Server通过私钥解密该数据。
优缺点:算法强度复杂,安全性相较于对称加密算法更高,但是加解密速度低,所以仅适用于加密少量数据。
常见的非对称加密算法:RSA、Elgamal等。

HTTPS
为什么要采用HTTPS:目的是为了保护数据在传输过程中的隐私,因为使用HTTPS,在传输过程中是无法窥探到传输的明文数据的。

HTTPS的加密是基于SSL/TLS协议的,SSL/TLS协议的基本思路就是采用非对称加密算法,Client向Server索要公钥,然后用公钥加密数据,Server收到密文以后,用自己的私钥解密。

HTTPS同时使用了对称加密算法可非对称加密算法。

HTTPS引入了一个随机数的概念,使用随机数来生成对称加密算法,通过随机数就可以保证Server和Client每次交互时都是新的加密算法,只有在交互的那一刻才能确定加密算法。

接下来我们用图形来描述消息在传输过程中的安全性问题:

  1. 正常下Client向Server发送请求。
    这里写图片描述

  2. 这时我们如何保证数据的安全性呢?大家可能会先想到用一个秘钥来加密Client和Server之间传输的数据,这样钓鱼网站即使拦截到此条消息,在没有秘钥的情况下也无法窥探到明文数据的。
    这里写图片描述

  3. 正常情况下这样是没有问题的,但是新问题又来了,如果存在很多个Client呢,这种方法还适用嘛?答案当然是NO!为什么?这还用问嘛?如果你要让所有的Client共用一个秘钥的话,秘钥泄露的可能性将大大增大,且秘钥泄露后你也不知道是谁泄露的,到那时候所谓的加密就成为了笑话了。
    这里写图片描述

  4. 当然你也可以为每个客户端分配一个私钥。
    这里写图片描述

  5. 但是我们有没有更好的解决方法呢?这时,我们便想到了非对称加密算法,Server维护一个私钥,每个Client维护同一把公钥即可。
    这里写图片描述

  6. 可能你会觉得这样的话,如果所有的客户端共用同一把公钥的话,那么公钥便有泄露的风险,这时我们就使用多对公私钥来解决这个问题。
    这里写图片描述

在使用对称加密算法的时候,Client是如何获取公钥的呢?
获得公钥的过程
1. Server将公钥发送给每一个Client
2. Server将公钥放到一个远程服务器上,Client请求拿到(不可取,因为多了一次请求操作)

但是获取公钥的过程中却有可能会被中间人串改(因为Client在获取公钥的时候没有对Server的身份做一个识别),如图:
这里写图片描述

这时我们可以通过第三方机构的数字证书来保证Client获取公钥时不会被中间人串改,也就是CA认证(讲通俗点就是引入第三方机构的公钥来解决此问题)。
这里写图片描述
这样即使中间人获取到了数字证书,他也无法获取证书中的Server公钥,因为只有Client才能读取证书中的Server公钥(其实就是解密证书)。

我们可以把数字证书看成是学历证书,证书上有证书编号,毕业院校,毕业时间等信息,而第三方机构便是学信网,用来验证证书的真伪性。

HTTPS通信
在开始加密通信之前,客户端和服务器首先必须建立链接和交换参数,这个过程叫做握手。
四次握手:
1. 客户端向服务端发送加密通道请求,发送消息如下
a. 给出一个协议版本号(SSL/TLS)
b. 客户端生成的随机数(用于生成对话的秘钥)
c. 客户端支持的加密算法,如RSA
d. 支持的压缩算法
2. 服务端收到消息后,向客户端回应
a. 确认双方使用的加密通道协议版本号,如果浏览器版本和服务器支持的版本不一致,则关闭加密通道
b. 服务器生成的随机数(用于生成对话的秘钥)
c. 确认使用的加密算法
d. 服务器的数字证书
3. 客户端收到服务器回应后,验证证书是否有效(包括可信机构、证书域名、证书是否过期)。验证成功后,客户端会从证书中获取服务器的公钥,然后向服务器发送如下信息
a. 生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数
b. 编码改变通知,协定双方的加密算法
c. 客户端握手结束通知
4. 服务端收到客户端的随机数后,计算生成本次的回话所用的“会话秘钥”,然后向客户端发送如下信息
a. 编码改变通知,协定双方的加密算法

后续的每次通信之前都是通过“会话秘钥”进行一个加密,而非每次通信都会有这么多复杂的过程。

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 倒库方向打早了怎么办 倒库左边小了怎么办 倒车入库小于30公分怎么办 倒库大于30公分怎么办 有行车记录仪遇到碰瓷怎么办 狗换了主人不吃怎么办 遇到扔东西碰瓷怎么办 碰见碰瓷的人怎么办 开店遇上碰瓷的顾客怎么办 我刮到别人的车怎么办 新车被刮了漆怎么办 停车擦到别人车怎么办 骑自行车被汽车撞了怎么办 车停在小区被刮怎么办 机动车被自行车撞了怎么办 单车撞小车后被起诉怎么办 给小车撞到电动单车怎么办 车停在路边被自行车撞怎么办 撞了碰瓷的人怎么办 谷丙转氨酶46该怎么办 渣土车开飞机了怎么办 自己车撞自己车怎么办 撞了人没钱赔怎么办 闯红灯扣了6分怎么办 开共享汽车闯红灯了怎么办 新手如果不小心闯红灯怎么办 红绿灯左转车道直行了怎么办 跟着大车后面闯了红灯怎么办 宝宝私处好红怎么办呢 甲亢难怀孕怎么办才好 怀孕8周查出甲亢怎么办 电动车被交警拖走了怎么办 电动车车被城管拖走了怎么办 12123地理反编码失败怎么办 苹果手机地理反编码失败怎么办 城管执法过程被打怎么办 老婆看不起老公不让碰怎么办 老婆总不让碰该怎么办 机动车扣满12分怎么办 吊车吊运货物失控应该怎么办 车辆违章扣6分怎么办