HTTPS(安全的HTTP)

news/2024/7/12 2:49:03 标签: http, https, 安全
http://www.w3.org/2000/svg" style="display: none;">

https-安全http

  • 什么是https?
  • 加密和解密
  • HTTPS的工作过程
    • 1.引入对称加密
    • 2.引入非对称加密
    • 3.引入证书
  • HTTPS整个工作流程概述

https_1">什么是https?

HTTP(超文本传输协议)是在网络上用于传输数据的一种协议,它是客户端和服务器之间通信的基础。HTTPS(安全的HTTP)是HTTP的安全版本,使用加密通道保护数据通信的安全。它通过使用SSL(安全套接层)或TLS(传输层安全)协议来加密HTTP通信内筒,以确保数据的机密性和完整性,防止信息在传输过程中被第三方篡改或窃取。HTTPS通常用于安全敏感的网站,例如银行,电子商务和社交媒体等网站。

加密和解密

加密: 加密是将原来的数据通过某种算法转换或混淆成一份密文的过程,以保证数据的机密性,不被未经授权的人员所获取。加密通常需要使用密钥来控制数据转换过程和密文的生成,只有拥有正确的密钥才能得到原始的数据。常见的加密算法有对称加密算法非对称加密算法

解密: 解密是从密文中还原出原始数据的过程,在解密是需要使用相应的密钥。对于对称加密算法,加密和解密使用相同的密钥,而非对称加密算法则需要使用一对密钥公钥负责加密私钥负责解密。解密过程是加密的逆过程,当使用正确的密钥时,就能够还原出原始数据。

HTTPS的工作过程

1.引入对称加密

对称加密其实是通过同一个密钥 ,把明文加密成密文,并且也能密文解密成明文。

引入对称加密后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真是内容是啥了。

由于上述过程是黑客不知道密钥是啥才不知道真实内容,但事情没有那么简单。服务器同一时刻其实是给很多客户端提供服务的。这么多客户端,每个人用的密钥都必须是不同的(如果是相同的那密钥就太容易扩散了,黑客就也能拿到了)。因此服务器就需要维护每个客户端和每个密钥之间的关联关系了

基于上述情况比较理想的做法是对于每次连接客户端和服务器就要协商本次数据传输的密钥是啥。

但是如果把密钥明文传输的话,黑客也就知道密钥是啥,因此对后续的加密操作就形如虚设了。所以我们的密钥必须是加密传输的。

因此我们就非常有必要映入非对称加密了。

2.引入非对称加密

非对称加密要用到两个密钥,一个叫做公钥 ,一个叫做私钥
公钥和私钥是配对的,最大的缺点就是运算速度非常慢 , 比对称加密要慢很多。

  • 通过公钥对明文加密,变成密文
  • 通过私钥对密文解密,变成明文

也可以反着用

  • 通过私钥 对明文加密
  • 通过公钥 对明文解密

说明: 即使是这样也并非对加密的数据保证绝对安全,我们使用公钥对数据进行加密,使用私钥密文进行解密的这个过程。还有可能出现这样一个情况,当客户端向服务器索要公钥时,服务器就知道生成自己生成非对称密钥 返回给客户端,数据可能就中途被黑客拦截,此时黑客可以生成自己的一对非对称密钥 ,黑客就把自己生成非对称密钥返回给客户端进行加密明文成密文返回,黑客再把数据拦截下来使用自己的私钥进行解密得到数据并且使用服务器公钥进行加密返回给服务器 ,以此达到骗过服务器和客户端。这个过程是真的老6

要解决这个问题的本质原因是客户端怎么获取到服务器的公钥,而不是得到老6公钥。

那我们怎么办呢? 接下来后续…

3.引入证书

在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个证书
这个证书包含了上述的公钥,也包含了网站的身份信息等。

这个证书就好比人的身份证,作为这个网站的身份标识,搭建一个HTTPS网站要在CA机构先申请一个证书(类似于去公安局半个身份证)

证书作用: 证书是由专业机构颁布的,里面就有服务器的公钥、校验以及网站的信息加密的密文,加密方式是使用专业机构非对称密钥进行加密 ,解密的私钥存在操作系统(相当于每个都有,黑客也有),当我们把证书发给客户端时,即使中途被黑客拦截进行解密,由于黑客不知道机构的私钥,无法对数据进行加密 ,或者黑客使用自己的一套非对称密钥加密也是无效 ,因为当证书到达客户端时无法解密以及校验和不正确。这样就保证了数据相对安全

以上相对安全的原因是黑客解密后无法对数据进行加密已达到骗过客户端

HTTPS整个工作流程概述

  1. 客户端向服务器发送SSL握手请求,并提供自己支持的SSL/TLS版本和加密套件列表。
  2. 服务器收到客户端的请求后,选择一个SSL/TLS版本和加密套件,生成一个随机数,并将选定的版本、加密套件和随机数打包成证书发送给客户端。
  3. 客户端验证服务器的证书是否有效,包括证书是否由信任的证书颁发机构签发,证书中的域名是否和实际访问的域名匹配等。
  4. 客户端生成一个随机数,使用服务器证书的公钥机密该随机数,并将机密后的密文发送到服务器。
  5. 服务器收到客户端发送的加密后的随机数后,使用自己的私钥解密得到原始随机数。
  6. 服务器和客户端分别使用双方协商好的加密套件和随机数生成一个会话密钥,该密钥将于用接下来的数据传输加密和解密。
  7. 客户端向服务器发送一份握手确认报文,通知服务器可以开始使用会话密钥进行数据的加密和解密。
  8. 之后的数据传输过程中,客户端和服务器使用会话密钥进行数据加密和解密,在传输的过程中保证数据的完整性和机密性。

http://www.niftyadmin.cn/n/353517.html

相关文章

目标检测YOLO实战应用案例100讲-基于FPGA的目标检测硬件加速技术及其应用研究

目录 基于FPGA的目标检测加速器设计 目标检测算法与加速方法 2.1 YOLO v2算法

volatile是线程安全的吗?它的底层原理如何实现的?

目录 一、线程安全三要素 二、可见性(强制刷新主内存) 三、有序性(禁止指令重排序) 四、总结 一、线程安全三要素 1)原子性: 一个操作或者多个操作,要么全部执行成功,要么全部执…

如何借助问答平台上做好网络营销?

作为消费者我们想了解某些品牌或产品时,往往搜索的关键词就是个问题,这时候会搜出来很多网络问答,如百度知道、知乎问答、搜狗问答等,这些问答很大程度上解决了用户面临的问题,因此网络问答也常常作为一种口碑推广的方…

我最近的练习一些全栈项目

嘿,大家好!作为一个程序员,我突然出现在这里,就像程序里的一个Bug一样突兀。我知道我很久没有发博客了,你们一定在想,这家伙是被代码迷宫困住了还是被Bug们抓走了?实际上,我一直忙于…

Unity 新建你的第一个游戏,以及如何按WASD控制角色运动 (Unity Demo2D)

文章目录 初始化项目新建角色物体游戏资源管理试着导入资源试着管理资源试着使用资源 脚本是啥新建脚本编辑脚本行为逻辑按键检测获取按键移动位置★ 最终代码 (有基础请直接跳到这) 初始化项目 当你打开 Unity Hub,初始化一个 2D 项目,进入了 Unity 编…

Linux命令总结

Linux基础命令 Linux的目录结构 /,根目录是最顶级的目录了Linux只有一个顶级目录:/路径描述的层次关系同样适用/来表示/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt ls命令 功能:列出…

chatgpt赋能Python-python_os拷贝文件

Python os拷贝文件 – 从简介到实现 Python os库是一个经常使用的工具,它是Python的标准库,提供了与操作系统进行交互的函数和方法。其中,os拷贝文件是其常用的功能之一,可以用来实现文件备份、文件复制等等操作。接下来&#xf…

chatgpt赋能Python-python_pe

Python PE(Python Performance Engineering)介绍 Python PE(Python Performance Engineering)是Python编程的一个方面,旨在提高Python程序的性能和效率。PE的目标是优化Python程序的执行时间、内存占用和资源消耗&…