【网络】HTTPS协议原理

目录

一、HTTPS是什么?

二、常见加密方式

2.1、只使用对称加密

2.2、只使用非对称加密

2.3、双方都使用非对称加密

2.4、非对称加密+对称加密(中间人攻击情况)

2.5、非对称加密+对称加密+证书认证

三、数据摘要&&数据指纹

四、CA证书

五、数字签名

六、HTTPS的工作过程

七、完整流程

八、总结


一、HTTPS是什么?

       http协议是明文传输的,数据安全得不到保证,https是应用层协议,是在http协议基础上通过TLS/SSL软件层进行加密,到达对方主机通过TLS/SSL软件层解密。

二、常见加密方式

2.1、只使用对称加密

对称加密:采用单密钥系统的加密方式,同一个密钥可以同时用作信息的加密和解密,加密和解密所用的密钥是相同的,加密速度快,效率高。(例如按位异或)

2.2、只使用非对称加密

非对称加密:用两个密钥进行加密和解密,一个是公钥一个是私钥,缺点是运算速度非常慢。

可以通过公钥对明文进行加密,形成密文,通过密钥对密文进行解密,形成明文。

当然可以通过密钥对明文进行加密,公钥对明文进行解密,但是公钥是公开的,也就明文也随之公开了。

客户端服务器密钥协商过程

       服务器生成公钥私钥,客户端首先向服务器发起请求,服务器发送公钥给客户端,客户端收到公钥后,将要发送的数据用服务端的公钥进行加密,保证了客户端到服务器的信道安全,但是服务器到客户端的信道是不安全的,因为公钥是公开的,而且公钥是一开始是明文传输给客户端的,如果这个公钥被中间人截获,也能通过公钥解密服务器发来的数据。

2.3、双方都使用非对称加密

客户端服务器密钥协商阶段

1、服务端有公钥S和私钥S',客户端有公钥C和私钥C。

2、客户端服务器交换公钥

3、客户端给服务端发信息:先用S对数据加密,再发送,只能由服务器解密,因为只有服务器有私钥 S'

4、服务端给客户端发信息:先用C对数据加密,在发送,只能由客户端解密,因为只有客户端有私钥 C'

2.4、非对称加密+对称加密(中间人攻击情况)

密钥协商阶段

1.  服务端具有非对称公钥S和私钥S'
2.  客户端发起https请求,获取服务端公钥S
3.  客户端在本地生成对称密钥C, 通过公钥S加密, 发送给服务器.
4.  由于中间的网络设备没有私钥, 即使截获了数据, 也五法还原出内部的原文, 也就无法获取到对称密钥(中间人在密钥协商完成后才截获数据,这时候中间人来已经晚了)。
5.  服务器通过私钥S'解密, 还原出客户端发送的对称密钥C. 并且使用这个对称密钥加密给客户端返回的响应数据.
      后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其 他主机/设备不知道密钥即使截获数据也没有意义。
      由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密上面情况是针对中间人没有在密钥协商阶段进行攻击,如果这时开始攻击。
中间人攻击 - 针对上面的场景
Man-in-the-MiddleAttack,简称“ MITM攻击
      在方案2/3/4中,客户端获取到公钥S之后,对客户端形成的对称秘钥X用服务端给客户端的公钥 S进行加密,中间人即使窃取到了数据,此时中间⼈确实无法解出客户端形成的密钥X,因为只有服务 器有私钥S' ,但是中间人的攻击,如果在最开始握手协商的时候就进行了,那就不⼀定了,假设hacker已经成功成 为中间人
1. 服务器具有非对称加密算法的公钥S,私钥S'
2. 中间人具有非对称加密算法的公钥M,私钥M'
3. 客户端向服务器发起请求,服务器明文传送公钥S给客户端
4. 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M, 并将伪造报文发给客户端
5. 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称秘钥X,用公钥M加密X,形成报文发送给服务器
6. 中间人劫持后,直接用自己的私钥M'进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加 密后,将报文推送给服务器
7. 服务器拿到报文,用自己的私钥S'解密,得到通信秘钥X
8. 双方开始采用X进行对称加密,进行通信。但是⼀切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

2.5、非对称加密+对称加密+证书认证

      上面方案被中间人截获的本质是中间人能够对数据的篡改以及Client无法验证收到的公钥是目标服务器的合法公钥。引入证书认证就能保证数据不被篡改和获取服务器的合法公钥。

       在客户端和服务器刚⼀建立连接的时候, 服务器给客户端返回⼀个 证书,证书包含了之前服务端的公钥, 也包含了网站的身份信息.
        客户端进行认证 ,当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).
判定证书的有效期是否过期
判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到⼀个 hash 值(称为数 据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对比 hash1 和 hash2 是否相等. 如 果相等, 则说明证书是没有被篡改过的

三、数据摘要&&数据指纹

       数据摘要(数据指纹)基本原理是利用单向散列函数(Hash函数)进行信息运算,生成一串固定长度的数字摘要。数据摘要(数据指纹)并不是一种加密机制,可以判断数据是否被篡改。因为加密机制是可以对密文信息进行解密和加密,所以不是一种加密机制。

四、CA证书

       服务端在使用HTTPS前,需要向CA机构申领⼀份数字证书,数字证书里含有证书申请者信息、公钥信 息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性。
中间人有没有可能篡改该证书?
中间人篡改了证书的明文
由于他没有CA机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后 的证书形成匹配的签名
如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不⼀致,则说明证书已被篡改, 证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人
中间人整个掉包证书?
因为中间人没有CA私钥,所以无法制作假的证书
所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包
这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。
永远记住:中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

五、数字签名

         签名的形成是基于非对称加密算法的

       当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如 下:
1. CA机构拥有非对称加密的私钥A和公钥A'。
2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要。
3. 然后对数据摘要用CA私钥A'加密,得到数字签名S 服务端申请的证书明文和数字签名S 共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了

六、HTTPS的工作过程

https的工作过程分为两个阶段:密钥协商阶段,通信阶段

       客户端向服务器发送请求,服务端发送CA证书给客户端,客户端进行合法性验证,用CA机构的公钥对CA证书的数字签名进行解密得到数据摘要,再对服务端申请的证书明文进行hash散列得到数据摘要,如果两个数据摘要相等,服务端发送过来的CA证书中的公钥就是合法的,就可以生成对称密钥X,用服务端的公钥进行加密,发送给服务端,服务端对密文进行解密,得到对称密钥X,从此以后,双方就使用对称密钥X对数据加密来进行通信。

七、完整流程

八、总结

HTTPS工作过程涉及到三组密钥

第一组:CA机构的公钥和私钥

保证客户端拿到服务器的公钥

第二组:服务器持有的公钥和私钥

用于协商对称密钥的私钥,客户端拿到服务端的合法公钥,就会随机生成对称密钥并且加密,发送给服务端,服务端通过私钥进行解密获取到对称密钥

第三组:客户端生成的对称密钥

客户端和服务器后续数据传输都是通过这个对称密钥进行加密解密

总的来说,两组非对称密钥都是为了保证客户端拿到服务器的合法公钥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值