计算机网络②——HTTPS详解

1. HTTPS介绍

  • 特点:
    • 信息加密:采⽤对称加密+⾮对称加密的混合加密的⽅式,对传输的数据加密
    • 校验机制:⽤摘要算法为数据⽣指纹校验码,指纹⽤来校验数据的完整性
    • 身份证书:将服务端的公钥放⼊到CA数字证书中,解决了服务端被冒充的⻛险
  • 优点:
    • 在数据传输过程中,使⽤秘钥加密,安全性更⾼
    • 可认证⽤户和服务器,确保数据发送到正确的⽤户和服务器
  • 缺点:
    • 握⼿阶段延时较⾼:在会话前还需进⾏SSL握⼿
    • 部署成本⾼:需要购买CA证书;需要加解密计算,占⽤CPU资源

2. HTTP和HTTPS的区别

在这里插入图片描述

  • HTTP以明⽂的⽅式在⽹络中传输数据,HTTPS 解决了HTTP 不安全的缺陷,在 TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输。
  • HTTPS 在 TCP 三次握⼿之后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。
  • HTTP 的端⼝号是 80,HTTPS 的端⼝号是 443。
  • HTTPS 协议需要向 CA(证书权威机构) 申请数字证书,来保证服务器的身份是可信的

3. 什么是SSL/TLS

  • SSL:Secure Socket Layer 安全套接字
  • TSL:Transport Layer Security 安全传输层协议
  • HTTPS(HyperText Transfer Protocol Secure)是基于TLS/SSL的安全版本的HTTP协议

4. 信息加密

  • 对称加密:也称为私钥加密,使⽤相同的密钥来进⾏加密和解密
    • 在加密过程中,明⽂数据通过应⽤特定的算法和密钥进⾏加密,⽣成密⽂数据。解密过程则是将密⽂数据应⽤同样的算法和密钥进⾏解密,恢复为明⽂数据。
    • 对称加密算法的速度通常较快,但密钥泄漏,攻击者可以轻易地解密数据
  • 非对称加密:也称为公钥加密,使⽤⼀对不同但相关的密钥:公钥和私钥
    • 公钥⽤于加密数据,私钥⽤于解密数据。如果使⽤公钥加密数据,只有拥有相应私钥的⼈才能解密数据;如果使⽤私钥加密数据,可以使⽤相应公钥解密。
    • 除了加密和解密,⾮对称加密还⽤于数字签名,可以验证消息的来源和完整性
  • 混合加密:以HTTPS为例,
    • 通信建立前:采⽤⾮对称加密的⽅式交换会话密钥,后续不再使⽤⾮对称加密
    • 通信过程中:全部使⽤对称加密的会话密钥⽅式,加密明⽂数据

4. 对称加密和非对称加密算法

  • 对称加密算法:
    • AES:对称加密算法中最流行和广泛使用的算法之一,支持不同的密钥长度(如AES-128、AES-256)。
  • 非对称加密算法:
    • RSA:最常见的非对称加密算法,用于数据加密和数字签名。
    • ECC:基于椭圆曲线的非对称加密算法,具有较高的安全性和效率,适用于移动设备等资源受限的环境。

5. 摘要算法+数字签名(用于验证数据完整性)

  • 摘要算法可以⽣成数据的唯⼀标识,用于验证数据的完整性
    • 将传输的内容计算出⼀个指纹,对⽅收到后,也把接收的内容计算出⼀个指纹,然后进⾏对⽐,如果指纹相同,则说明内容没有被篡改
    • 缺点:只能保证内容不被修改,不能保证发送者的身份
    • 解决:用⾮对称加密算法来解决,共有两个密钥:公钥⽤于验证签名,私钥⽤于⽣成签名。私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。
  • 流程:
    • ⽣成数字签名:
      • 发送者使⽤私钥对消息的摘要(通常是通过哈希函数计算得到)进⾏加密,⽣成数字签名。
    • 发送消息和数字签名:
      • 发送者将原始消息和⽣成的数字签名⼀起发送给接收者。
    • 验证数字签名:
      • 接收者收到消息和数字签名后,使⽤发送者的公钥对数字签名进⾏解密,得到摘要值。
      • 接收者再次计算收到的消息的摘要(使⽤相同的哈希函数),将其与解密得到的摘要值进⾏⽐较。
      • 如果两个摘要值相同,说明消息未被篡改过,数字签名有效,消息来源可信。

6. 数字证书

  • 要解决的问题:如果在客户端和服务器之间有⼀个中间⼈,中间⼈把原本双⽅通信的公钥篡改成⾃⼰的公钥,如何解决?
  • 流程:
    • 密钥⽣成:
      • ⾸先,实体(例如服务器、个⼈或组织)需要⽣成⼀对密钥:公钥和私钥。公钥是⽤于加密和验证的,可以被公开分享。私钥⽤于解密和签名,必须保密,只有持有者知道。
    • 证书请求(CSR - Certificate Signing Request):
      • 实体⽣成⼀个证书请求,其中包含公钥、实体信息(如名称、电⼦邮件等)和签名。
      • CSR是⼀个包含有关实体信息的⽂本块,可以被发送到数字证书颁发机构(CA)以获取数字证书。
    • 证书颁发:
      • 实体将证书请求发送给数字证书颁发机构(CA)。
      • CA会验证请求者的身份,然后使⽤⾃⼰的私钥对请求中的信息进⾏签名,⽣成数字证书。数字证书包括公钥、实体信息、CA的信息和签名等内容。
    • 证书验证:
      • 当实体收到数字证书时,可以使⽤CA的公钥验证证书的签名,确保证书未被篡改且由合法的CA签发
      • 接收者可以检查证书中的实体信息以及CA的信息,确保证书的合法性。
    • 数字证书使⽤:
      • 接收者可以使⽤数字证书中的公钥来加密数据,然后发送给证书的持有者。
      • 持有者使⽤私钥解密数据,保护数据的机密性。
      • 持有者还可以使⽤私钥⽣成数字签名,接收者使⽤公钥验证签名,验证数据的来源和完整性。
  • 证书信任链
    • 是数字证书的验证过程中的⼀部分,确保数字证书是由可信的CA签发的,并最终连接到根证书,形成⼀条链条
    • 根证书:是数字证书体系中的根基,它由操作系统或浏览器内置,作为信任的起点
    • 中间证书颁发机构:根证书下⽅可能有⼀个或多个中间CA,由根CA签发,它们作为信任链中的中继,⽤于签发其他证书
    • 服务器证书:由中间CA签发的,包含了服务器的公钥和相关信息。服务器证书需要在客户端验证的过程中被验证
  • 客户端会依次验证服务器证书、中间CA的证书、根CA的证书
    • 如果整个链条中的所有证书都可以被成功验证,那么数字证书被视为合法和可信的。
    • 如果任何⼀个证书⽆法验证,整个信任链就会被打断,数字证书将被视为不合法或不可信的

7. HTTPS连接过程(也称为HTTPS四次握手)

  • 客户端发送连接请求:
    • 当客户端想要与服务器建⽴HTTPS连接时,它会发送⼀个连接请求到服务器的443端⼝,表明它想要使⽤HTTPS进⾏通信。
  • 服务器响应:
    • 服务器收到连接请求后,会发送⼀个CA数字证书给客户端。这个证书包含了服务器的公钥、证书的颁发者信息以及其他相关信息。
  • 客户端验证证书:
    • 客户端接收到服务器发送的数字证书后,会验证证书的合法性。这个过程包括验证证书的签名、证书是否过期、是否与预期域名匹配等。
  • ⽣成会话密钥:
    • 如果证书验证成功,客户端会⽣成⼀个⽤于该连接的随机会话密钥(对称密钥)。这个密钥将⽤于加密通信数据。
  • ⽤公钥加密会话密钥:
    • 客户端使⽤服务器的公钥,将⽣成的会话密钥进⾏加密,并将加密后的会话密钥发送给服务器。
  • 服务器解密会话密钥:
    • 服务器使⽤⾃⼰的私钥对客户端发送的加密会话密钥进⾏解密,获得会话密钥。
  • 建⽴安全通信:
    • 从此时开始,客户端和服务器都有了相同的会话密钥,他们使⽤对称加密算法(如AES)来加密和解密通信数据,保证了通信的隐私性和完整性。
  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值