Linux网络编程:详解https协议

目录

一. https协议概述

二. 中间人截获

三. 常见的加密方法

3.1 对称加密

3.2 非对称加密

四. 数据摘要和数据签名的概念

五. https不同加密方式的安全性的探究

5.1 使用对称加密

5.2 使用非对称加密 

5.3 非对称加密和对称加密配合使用

六. CA认证 

七. 总结


一. https协议概述

在早期的网络中,传输数据一般采用http协议。但是,无论是用GET方法通过url传递数据,还是使用POST方法通过报文正文传递数据,都是明文传送数据,只要是明文传送数据,那就是不安全的,在传输过程中就很容易被中间人截获,造成信息泄露或者信息被篡改。

结论:http采用明文传递数据,不具有安全性。

为了解决http协议明文传输数据的安全性问题,就需要对数据进行加密处理,加密是在应用层实现的,将加密数据在网络中传输的协议,即为https协议。相较于http协议,https协议更具有安全性,图1.1为https协议工作方式的图解。

结论:https协议传输加密数据,安全性更有保证。

图1.1 https协议工作原理

二. 中间人截获

在早期采用http协议传输数据时,有时候会存在运营商截获现象,一个最典型的场景是,我们希望下载软件A,但是使用软件A的下载链接下载后,发现实际上下载的是软件B。造成这种现象可能得原因之一,就是运营商在网络中截获的数据信息,发现了软件A的下载链接,将软件A得下载链接替换为软件B的下载链接,就造成了希望下载的软件与实际下载的软件不同的现象。

在这种场景下,运营商充当的就是中间人,在网络中截获并篡改数据

在公共场所中,我们常会用到免费WIFI,这其实就是安全隐患,提供免费WIFI的路由器等设备,都有可能截取到用户发送的数据,造成信息泄露。

图1.2 中间人截获并篡改数据的原理

三. 常见的加密方法

3.1 对称加密

  • 对称加密仅使用一个秘钥key,加密和解密都使用这一把秘钥,这种加密解密的方法称为对称加密,也称为单秘钥加密。
  • 常见的对称加密算法:DES,3DES,Blowfish。
  • 对称加密的特征:算法简单,加密解密速度快、效率高。

通过按位异或的方式加密解密,就是最简单的一种对称加密方式。如,原文数据a=2023,秘钥key=8888,那么a加密后的数据c就变为了c=a^key=9567,使用同一把秘钥key对密文数据进行解密获取原文数据,a=c^key=2023。

3.2 非对称加密

  • 对称加密使用两把秘钥配对使用,一把公钥一把私钥,公钥向全网公开,私钥则是私密的。当客户端拿到公钥时,可以使用公钥进行加密,服务端在获取到加密后的信息后,通过秘钥进行解密,从而获取原始的明文数据。
  • 公钥和私钥,一把用于加密一把用于解密,可以用公钥加密私钥解密,反过来使用私钥加密公钥解密亦可。
  • 常见的非对称加密算法:RSA、DSA、ECDSA。
  • 非对称加密的特点:加密的可靠性依赖于秘钥、公钥以及算法的可靠性和复杂度,由于其算法复杂,因此加密和解密效率较低。

四. 数据摘要和数据签名的概念

数据摘要:

  • 数据摘要,就是通过哈希算法,将原文转换为一定长度的密文,即使非常小幅度的改变原文,通过哈希算法生成的密文差别也会非常大。
  • 通过哈希算法生成的数据摘要,严格来说不能算是一种加密方法,因为没有对应的解密手段,即:原文生成密文很容易,但是如果要通过密文破解原文,难度则非常之大。
  • 常见生成数据摘要的哈希算法:MD5、SHA256、SHA512。
  • 数据摘要,也被称为数据指纹。

数据签名:

  • 通过特点的秘钥对数据摘要加密生成的密文,被称为数据签名。
  • 数据签名,主要用于认证数据的合法性,保证客户端接收到的数据不会被中间人篡改(见第六章)。

五. https不同加密方式的安全性的探究

5.1 使用对称加密

使用对称加密时,客户端和服务器要事先协商秘钥,客户端和服务器在向网络中发送数据时,都要实现通过秘钥加密,这样中间人在网络中截获到的数据就是被加密后的数据,中间人拿不到秘钥,也就无法破解密文获取原文数据。

对称加密要保证安全性,就必须为每个客户端都单独维护一个秘钥,因为如果使用相同的秘钥,那么秘钥就会广泛分布在网络设备中,黑客就可以很容易的获取到秘钥,也就无法保证安全性,而为每个客户端都维护独立的秘钥成本很高。

那么如果客户端和服务端在进行通信之前,事先协商秘钥呢?这样也是不可行的。因为双方协商的秘钥需要通过网络进行传输,而秘钥传输要通过明文进行,如果黑客截获了秘钥,那么后续传输的数据就很容易被黑客截获并破译。

那么如果将双方协商的秘钥再用另一把秘钥加密呢?对秘钥进行加密的秘钥要需要事先通过明文传送让通信双方获取,这样本质上与上段所提到的不安全场景没有区别,只不过是多了一层而已。

图5.1 对称加密实现协商秘钥不安全的原因

5.2 使用非对称加密 

非对称加密要用到一把公钥C和一把私钥S,,将公钥C公布于网络中,假设客户端使用公钥C加密,那么如果黑客在网络中截获了客户端加密后的信息,由于没有私钥,就无法破译原文,这样就可以基本保证客户端发送给服务端数据和安全性。但是服务器向客户端发送数据时,通过私钥加密,客户端就需要公钥来解密,由于公钥是在网络中公开的,黑客自然也就可以获取公钥,这样单向的非对称加密就无法保证数据的安全性。

那么如果通信双方均使用非对称加密呢?这样虽然可以极大地提高安全性,但也无法保证绝对安全,且由于非对称加密算法的复杂度大,这样加密和解密的效率就会很低。

图5.2 使用非对称加密不安全的原因

5.3 非对称加密和对称加密配合使用

非对称加密和对称加密配合使用的通信操作流程为:

  • 存在用于非对称加密的公钥M和私钥M'。
  • 在正式通信之前,客户端先向服务器发送请求,获取其公钥M。
  • 客户端生成对称加密的秘钥C,通过公钥M加密,服务器接收到了客户端加密传输的秘钥C,通过私钥M'解密,这条通信双方就都拿到了对称加密秘钥C。
  • 在之后的通信中,通信双方使用对称加密即可,秘钥双方已经通过非对称加密传输协商完成。
  • 这种场景下,如果黑客只截取了加密后的内容,由于拿不到秘钥,依旧无法破译获取原文。但是,黑客依旧有手段窃取和篡改数据。
图5.4 非对称加密与对称加密配合使用的原理

在这种场景下,虽然中间人(黑客)不能通过获取秘钥来破译信息,但依旧可以通过截取并篡改公钥的手段获取信息,原理如下:

  • 服务器有公钥S和配对秘钥S',中间人有一组公钥M和秘钥M'。
  • 当客户端向服务器发送请求获取公钥S时,服务器明文传回公钥S。
  • 此时,中间人如果截获了服务器明文传回的公钥,就可以将公钥S保存下来,然后替换为自己的公钥M发回给客户端,而客户端不知道公钥S已经被篡改为了M。
  • 之后客户端再向服务器发送协商好的对称加密秘钥C时,会使用中间人的公钥M加密,而中间人如果截获了客户端向服务器发送的数据,就可以使用自己的私钥M'破译出原文。
  • 中间人此时再通过先前保存的公钥S对破译获得的对称加密秘钥C加密发给服务器,服务器就无法得知C已经泄露,依旧使用秘钥S'解密获取C。
  • 之后客户端和服务器的正式通信都使用对称加密,秘钥为C已经被黑客窃取,此时如果信息被黑客截取,黑客就能够通过C解密获取原文。

六. CA认证 

首先分析对称加密和非对称加密配合使用场景下不安全的原因,这是由于黑客在对称加密秘钥协商完成之前就入侵了网络,并将数据进行了篡改。

那么,如果客户端能够识别出其收到的数据是被篡改过的数据,进而终止向服务器发送数据,就可以避免信息的泄露。而客户端识别数据是否被篡改的依据,就是权威的CA机构颁发的CA证书,在https协议中,服务器向客户端发送的就是其CA证书,CA证书上会携带服务器的公钥以及其他的服务器相关信息。

CA证书就类似于我们生活中的身份证,身份证由权威机构(政府)颁发,是可以被信任的,如果身份证冒用或者造假,很容易就会被识别出来。

如果某服务端希望实现https协议通信,那就要向权威的CA机构申请CA证书,CA机构会对服务端进行审核,审核通过为该网站生成专门的数据签名,流程如下:

  • CA机构尤其公钥A和私钥A'。
  • 通过Hash算法,获取服务端申请下来的认证证书对应的数据摘要。
  • CA机构通过其私钥A',对数据摘要进行加密,获取对应的数据签名。

我们可以认为,服务端获取的CA证书的内容为:证书的明文信息 + 对应数据签名,服务器就是将证书明文 + 对应数据签名发回给客户端的。

图6.1 通过CA认证获取数据签名的流程

客户端通过CA证书判别服务端发送的数据是否在网络中被黑客篡改的流程为:

  • 将服务器发回来的证书的明文信息和数据签名做分离。
  • 将分解出来的明文信息通过Hash算法生成对应的数据摘要,在通过CA机构的公钥A解密数据签名,得到解密后的数据摘掉。
  • 对比通过对明文Hash和解密数签名要后获取的摘要,如果不相同,则表示数据被替换过了,客户端会终止向服务器发送数据。如果相同,通过明文数据检查目标服务器是否正确,以防止黑客替换整张CA证书。
图6.2 客户端通过CA证书判断数据是否被篡改的流程

七. 总结

  • http协议采用明文传输数据,https协议采用密文传输数据,相对于http协议,https协议更加安全。
  • 早期采用http协议通信时,数据容易被中间人截获并篡改。
  • 对称加密和非对称加密是两种常用的加密方式,对称加密中加密和解密使用同一把秘钥进行,而非对称加密有一把公钥一把私钥,一把负责加密另一把负责解密,公钥在全网公开,私钥私有不公开。
  • 数据摘要是将正文内容通过Hash算法生成的内容,而数据签名则是对数据摘要使用秘钥加密后生成的内容。
  • 在https协议通信中,采用对称加密、非对称加密、对称加密与非对称加密配合的方法,都存在安全隐患,不能保证数据不被黑客截获。
  • 通过 CA认证 + 对称加密 + 非对称加密 的方式,可以保证数据传输的安全性。客户端通过检查服务端发回的CA证书的合法性,就能判断数据是否在网络中被第三方修改,如果数据被修改了,客户端就会终止向服务器发送数据。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值