HTTPS

HTTPS

1.1 HTTPS握手图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jotZTyn2-1574496457026)(./6.png)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAKH4ish-1574496457031)(./7.png)]

在这里插入图片描述在这里插入图片描述

1.2 HTTPS握手细节

1.2.1 ClientHello (Client --> Server)

由于Client与Server进行通讯时双方环境有一定的差异,比如加密方法。由此在这一步中Client会向服务器发送自身的条件。比如
1. 可用的版本
2. 当前时间
3. 客户端随机数
4. 会话ID(用于会话端口复用)
5. 可用的密码套件清单
6. 可用的压缩方式

1.2.2 ServerHello (Server --> Client)

一般来说服务器会更具Client发送过来的ClientHello。来决定下一步使用的压缩方法,密码套件等同时也会发送Server产生的随机数

1.2.3 Certificate (Server --> Client)

Server会给Client发送自己的证书清单
首先发送服务器自身的证书,其次会按照顺序发送对Server证书签名的认证机构的证书
当匿名通讯时,不发送Certificate消息

1.2.4 ServerKeyExchange (Server --> Client)

当Certificate证书不满足需求时,服务器会通过ServerKeyExchange向Client发送一些必要的消息。
具体发送会更具使用的密码套件而有所不同

1.2.5 CertificateRequest (Server --> Client)

当Server需要验证Client时,需要发送此消息。使Client发送自身的证书
用于双向认证

1.2.6 ServerHelloDone (Server --> Client)

发送这条消息表示以ServerHello开始的消息结束

1.2.7 Certificate (Client --> Server)

当server向Client发送“CertificateRequest”时,Client才会想Server发送自身的证书

1.2.8 ClientKeyExchange (Client --> Server)

Client 会向 Server发送经过加密的预备主密码

1.2.9 CertificateVerify(Client --> Server)

Client会在Server发送完“CertificateRequest”消息时才会发送此消息。这个消息是向Server证明自己是客户端证书持有者
为了实现这一目的,客户端会计算主密码和握手协议中传送的消息的散列值,并加上自己的数字签名后发给Server

1.2.10 ChangeCipherSpec(Client --> Server)

事实上这不是握手协议的消息,而是密码变更协议的消息。
在这一消息之后,TLS记录协议开始使用双方协商决定的密码通讯方式。

1.2.11 Finished (Client --> Server)

由于已经完成了密码切换,所以Finished消息是加密过的。
而且Finished的包是固定的。通过这一个消息,Server可以确认握手协议是否正常结束
密码套件的切换是否正确

1.2.12 ChangeCipherSpec (Server --> Client)

发送此消息表示Server也要改变密码套件

1.2.13 ServerHelloDone (Server --> Client)

握手协议结束

1.2.14 ServerHelloDone (Server --> Client)

2.1 为什么要HTTS

https相对于http多了一层tls。他可以保证数据在网络中传输时无法被获取,即使出现网络中间人截取我们之间的通讯数据也没用,因为中间人无法解密。
2.2为什么https可以保证数据的安全性
首先说明tls中间加密是__对称加密__[1],不是__非对称加密__[2](非对称加密分为公钥和私钥),当使用公钥加密时必须使用私钥进行解密,同样的,当使用私钥进行加密时必须使用公钥进行解密](私钥和秘钥)。那既然是对称加密对称加密是指一个秘钥既可以用于加密也用于解密]凭什么不会被破解,为什么不直接使用私钥或者公钥加密。首先,如果我们所有的数据使用私钥和公钥进行加密的话,客户端和服务端就会花费大量资源去解密和加密数据,得不偿失。

好,既然是对称加密那如何保证数据的安全性。是因为tls进行握手时,会产生__三个随机数__。前两个分别有客户端和服务端产生的,是公开的。最后一个随机数是有客户端产生的,叫做__预备主密码__。而这个随机数却是使用服务端的公钥进行加密的,而只有服务器只有其私钥,所以保证了最后“预备主密码”的保密性。而https的后序数据加密均使用这三个随机数生成的对称秘钥进行加密和解密的。

看似很有道理,但是凭什么说公钥和私钥加密的数据就不会被别人破解?如果有这个疑问的话,我们可以浅谈一下公钥和私钥是怎样生成的(注意公钥和私钥属于非对称加密)。我们看看明文和密文的关系

在这里插入图片描述
在这里插入图片描述

由此 公钥可以理解为数E和数N

私钥可以理解为数D和数N

首先__N__ = p * q, p和q是两个质数(一般来说p和q数值很大可能为512个比特,大约为10的154次方)

中间数 L ,L为(p-1)和(q-1)的最小公倍数。

E  是一个比1 大但是比L小的数,其次E和L的最大公约数必须为1

D  E * D mod L = 1 ( 1 < D < L )

显然任何人都可以拥有 密文、公钥(E 和 N) 。那如何推算出私钥其中的D。如果知道了D也就得到了私钥。在数学中如果知道D,则必须知道 p 和 q。但是我们可以知道p和q是两个大质数相乘得出的结果。现在试想p和q的数值相乘的结果为10的300次方。从10的300次方中计算出p和q显然需要极大的计算量。假设我们使用1024或者2048个比特用于生成p和q,那解密难度更大。

2.3什么是数字签名

数字签名的主要作用是用于防止篡改和抵赖。比如你的老板给你发消息让你去搬砖,而你搬完砖之后老板说这不是我发的,是别人伪造的。而数字签名的作用就是防止这种抵赖。

接下来我们浅谈为什么数字签名可以防止抵赖,首先数字签名的过程其实更公钥和私钥差不多。数据发送方拥有自己的私钥,而其他人可用拥有其公钥。发送方的数据是由私钥进行加密的,而私钥只有发送方一个人有,而只有持有发送方的公钥才可以解密该数据,由此可以防止抵赖。

而防止篡改的原理如下。首先我们将一下最简单的防篡改的方式,比如Alice给Bob发送数据,那Alice要发送的数据可以由两部分组成,一个是消息体,另一个数数字签名。而数字签名就是将消息体使用私钥进行加密,生成的数据。当Bob接受到数据之后,首先使用公钥进行解密数字签名,然后将解密后的数据和消息体进行对比,如果一致则说明没有被篡改。但是这种方式要将所有的数据进行加密,还是那句话得不偿失,我们可以先将消息体生成一个散列值,而这种散列值是可以固定的(不同的消息体生成的散列值是惟一的)。然后对散列值进行加密,同样的Bob收到数据后对散列值进行解密得出A,然后将消息体生成一个散列B值,将A 和B进行对比,如果一致则没有被篡改。

在这里插入图片描述

[1]非对称加密分为公钥和私钥,当使用公钥加密时必须使用私钥进行解密,同样的,当使用私钥进行加密时必须使用公钥进行解密

2.4 什么是数字证书

证书里面有持有者的姓名、组织、邮箱、__认证机构__和__公钥__等等。

认证机构(Certification Authority、Certifying Authority, CA),就是你可以相信的人或者机构。其作用是__证明公钥确实属于这个人__。

比如Alice手中有公钥和私钥,他想生成证书。这个时候就需要找一个信得过的组织或个人,来生成证书(或者说是盖章)。比如说Alice找到了地方政府机构。地方政府想将Alice发过来的公钥生成摘要C,然后地方政府使用持有的私钥对摘要C进行加密生成数字签名。这样外加上其他的一些信息数字证书就生成了。同样的如何认证地方政府勒。这个时候可以使用省政府的机构来认证地方政府。而又可以通过中央政府的机构来认证省政府。但是总要有一个终点,就是不存在更高的认证机构,则我们称该机构为CA机构。而CA机构本身则采取自签名的方式。

在这里插入图片描述

可能有人会问,如果私钥作废,那我们怎么知道那些私钥作废,这里就有一个CRL(Certification Revocation List)证书作废清单。一般来说在认证之前是要检查CRL的。

等等,晕了没。这里有几个问题,帮你侧方位的缕缕。

1.证书怎么传过来的?

Alice申请了证书,现在Bob想与Alice通讯,那Bob就需要拿到Alice的证书,通过证书中的公钥去加密数据,再发给Alice。这有Alice有自己的私钥,所以只有Alice才可以解密Bob发送给自己的数据。首先Bob持有末端证书(CA证书),Bob使用CA证书去验证发布CA证书的机构(由于CA证书是自签名,所以就是验证CA机构),或者我们可以比作去验证中央政府。验证完成之后我们请求得到中央政府颁发的省政府证书。同样的我们通过省政府的证书去验证省政府机构,验证成功则得到地方政府的证书。最后再由地方政府得到Alice的证书,然后开始通讯。

2.谁去认证证书?

认证机构不认证证书,认证机构只颁发证书。

3.自己的私钥被泄露了怎么办?

通知认证机构,注销自己的证书,认证机构会维护一个证书作废清单(Certificate Revocation List) 简称CRL。

[1]非对称加密分为公钥和私钥,当使用公钥加密时必须使用私钥进行解密,同样的,当使用私钥进行加密时必须使用公钥进行解密

[2]对称加密是指一个秘钥既可以用于加密也用于解密

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值