HTTPS加密原理


前言

    HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,旨在通过加密通信、数据完整性验证和身份验证,确保在网络上传输的数据的安全性。它在HTTP的基础上加入了SSL/TLS协议,使用加密技术防止第三方在数据传输过程中的窃听、篡改和伪装

加密

    HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全

对称加密

    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密

  • 特征:加密和解密所用的密钥是相同的
  • 常见对称加密算法:DES、3DES、AES、TDEA、Blowfish、RC2 等
  • 特点:算法公开、计算量⼩、加密速度快、加密效率⾼

非对称加密

    需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)

  • 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。
  • 常见非对称加密算法:RSA,DSA,ECDSA
  • 需要两个密钥来进行加密和解密, 单个密钥无法同时加密和解密
    • 通过公钥对明文加密, 变成密文
    • 通过私钥对密文解密, 变成明文
    反之
    • 通过私钥对明文加密, 变成密文
    • 通过公钥对密文解密, 变成明文

数字签名

数据摘要

    数据摘要(Message Digest)是通过一种哈希函数(也称为散列函数)将任意长度的输入数据转换成固定长度的输出数据,即摘要值。这种摘要过程具有不可逆性,即无法从摘要值还原出原始数据。数据摘要用于验证数据的完整性
    而数字签名就是加密之后的数据摘要

加密措施以及中间人攻击

中间人攻击

  • 中间人攻击(Man-in-the-Middle Attack,MITM)是一种网络攻击形式,攻击者通过拦截、篡改或伪装在两方之间传输的数据,未被双方察觉的情况下获取敏感信息或控制通信。此类攻击常用于窃取个人信息、信用卡号码、登录凭据等敏感数据

只使用对称密钥

    通信双方都各自持有同一个密钥来加密通信, 如果在通信前就约定好密钥, 通信时使用即可, 这样似乎可以保证通信安全, 但一个服务端会对多个客户端提供服务, 要求每个密钥都不一样, 维护成本太大, 如果在通信时约定密钥, 这份密钥就是明文传输的, 会被中间人拿到, 后面的加密就没有意义了
在这里插入图片描述

只使用非对称密钥

    通信双方使用非对称密钥来通信, 服务端向客户端发送公钥, 客户端使用公钥把数据进行加密发送回服务端, 服务端使用私钥解密数据, 由于公钥是无法解密数据的, 所以即使中间人拿到公钥也无法解密数据, 这样看似可以保证客户端->服务端的单向安全通信, 服务端->客户端无法保证
在这里插入图片描述

双方都使用非对称密钥

    基于上一种方法, 双方都发送给对方各自的公钥, 让对方使用自己的公钥进行加密, 自己使用私钥解密, 这种方法看似可以保证双向通信, 但非对称密钥的速度是较慢的, 并且中间人也可以通过替换密钥的方式来窃取数据, 当一方发送自己的公钥时, 中间人可扣下这份公钥, 将自己的公钥发送给对方, 这样另一方拿到的就是中间人的公钥, 当另一方发送数据时, 中间人获取数据, 使用私钥解密, 就窃取到了数据, 再使用之前拿到的对方的公钥进行加密发送给对方, 这样就秘密窃取到了数据
在这里插入图片描述
中间人篡改公钥

在这里插入图片描述

使用非对称+对称

    为了解决非对称密钥的速度问题, 在一方向对方发送公钥后, 对方使用公钥加密一份对称密钥发送回来, 就拿到了加密的对称密钥, 使用私钥解密, 于是双方都获得的一份对称密钥, 使用这份密钥进行通信, 这样避免了非对称密钥的速度问题, 但还是没有解决中间人的篡改公钥问题
在这里插入图片描述
中间人依然可以像上面那种情况一样篡改密钥

CA认证

    上面介绍了几种加密通信方式, 但它们都有缺陷, 都是不安全的, 为了避免中间人篡改公钥, HTTPS使用数字证书解决这个问题
服务端在使用 HTTPS 前,需要向 CA 机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性
在这里插入图片描述

工作原理

    CA证书可以避免被中间人篡改公钥的问题

  1. 网站所有者(或服务器管理员)向CA申请一个SSL/TLS证书。申请者会生成一个私钥和对应的公钥,并将公钥连同其身份信息提交给CA。CA验证身份:
  2. 证书颁发机构会根据申请者提供的信息进行身份验证,确认申请者是否具有域名的所有权或服务器的管理权限。颁发证书:
  3. 验证通过后,CA会使用自己的私钥对申请者的公钥和身份信息进行数字签名,生成CA证书。该证书包含公钥、申请者的身份信息、证书有效期、CA的签名等
  4. 当用户访问使用HTTPS的网站时,网站会将其CA证书发送给用户的浏览器。浏览器会验证该证书的合法性:
  5. 客户端使用CA的公钥对证书的数字签名解密, 与证书的数据摘要做对比, 如果相同, 表示证书未被篡改

HTTPS完整流程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值