https为何安全?

HTTPS(超文本传输安全协议)是一种用于安全通信的网络协议,它在HTTP协议的基础上通过SSL/TLS(安全套接层/传输层安全)协议来加密数据,以保护网络数据的传输安全。
[图片]

TLS/SSL 基础概念

概念源自百度百科:传输层安全性协议 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在 1994 年推出首版网页浏览器,网景导航者时,推出 HTTPS 协议,以 SSL 进行加密,这是 SSL 的起源。IETF 将 SSL 进行标准化,1999 年公布第一版 TLS 标准文件。随后又公布RFC 5246(2008年8月)与RFC 6176(2011年3月)。在浏览器、邮箱、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。主要的网站,如 Google、Facebook 等也以这个协议来创建安全连线,发送数据。目前已成为互联网上保密通信的工业标准
[图片]

TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性

题外:

  1. 握手期间所使用的的密钥交换和认证算法 (最常用的是 RSA [非对称加密]算法)
  2. 加密算法 (用于握手完成后的对称加密,常用的有 AES、3DES[对称加密]等)
  3. 信息摘要算法 (常用的有 SHA-256、SHA-1 和 MD5[散列函数] 等)

SSL/TLS 协议

HTTPS使用SSL/TLS协议来建立一个加密的通信通道。SSL/TLS协议的主要功能包括:

  • 身份验证:通过证书来验证服务器的身份,确保用户连接的是正确的服务器。
  • 数据加密:使用对称加密算法来加密传输的数据,保证数据的机密性。
  • 数据完整性:通过消息认证码(MAC)或数字签名来确保数据在传输过程中未被篡改。
    SSL 和 TLS 协议可以为通信双方提供识别和认证通道,从而保证通信的机密性和数据完整性。

TLS 协议是从Netscape SSL 3.0协议演变而来的,不过这两种协议并不兼容,SSL 已经逐渐被 TLS 取代,所以下文就以 TLS 指代安全层。 TLS 握手是启动 HTTPS 通信的过程,类似于 TCP 建立连接时的三次握手。 在 TLS 握手的过程中,通信双方交换消息以相互验证,相互确认,并确立它们所要使用的加密算法以及会话密钥 (用于对称加密的密钥)。可以说,TLS 握手是 HTTPS 通信的基础部分。

数字证书

数字证书是由可信的第三方机构(CA,证书颁发机构)颁发的,用于证明服务器的身份。证书中包含了:

  • 公钥:服务器的公钥,用于加密客户端发送的数据。
  • 证书持有者信息:服务器的名称和其他身份信息。
  • 证书颁发机构信息:CA的名称和其他信息。
  • 证书有效期:证书的有效时间范围。

握手过程

当用户通过浏览器访问一个HTTPS网站时,会触发SSL/TLS握手过程:

  • 客户端发起连接:浏览器向服务器发送一个“Hello”消息,包含支持的加密套件和协议版本
  • 服务器响应:服务器回复一个“Hello”消息,选择一个加密套件,并发送其数字证书
  • 证书验证:浏览器验证服务器的证书是否有效,包括证书链的完整性和证书的有效期
  • 密钥交换:使用DH(Diffie-Hellman)密钥交换算法或ECDH(椭圆曲线Diffie-Hellman)算法生成一个会话密钥
  • 加密通信:使用会话密钥对数据进行加密,然后通过安全的通道传输
    [图片]

对称加密与非对称加密

非对称加密:用于在握手阶段安全地交换密钥。服务器的公钥加密数据,只有服务器的私钥才能解密

  • 对称加密:用于加密实际传输的数据。使用会话密钥进行加密,速度快,适合大量数据的加密

安全特性

前向保密:即使服务器的私钥被泄露,也无法解密之前的通信数据

  • 完整性校验:通过消息认证码或数字签名确保数据在传输过程中未被篡改
  • 身份验证:通过证书验证服务器的身份,防止中间人攻击

https的优势

数据加密:保护用户数据不被窃听

  1. 身份验证:确保用户访问的是正确的服务器
  2. 数据完整性:确保数据在传输过程中未被篡改

https这么安全,那可以被抓包吗?

理论上,HTTPS 协议本身是安全的,不容易被“抓包”(即在传输过程中被截获和阅读)。但是,确实存在一些特定情况下可以实施抓包的方法,这些方法通常需要满足一些前提条件,并且可能伴随着安全风险
实现HTTPS抓包的几种方法:

  1. 中间人攻击(MITM):攻击者通过篡改网络配置,使目标流量经过其控制的服务器,从而实现对HTTPS流量的截获和可能的解密
  2. 安装根证书:攻击者通过让客户端安装一个由其控制的根证书,可以对通过该根证书签名的所有HTTPS流量进行解密。如果攻击者能够让客户端安装一个由他们控制的根证书,那么攻击者可以创建一个伪造的CA,并用这个伪造的CA签发一个看似合法的服务器证书。当客户端尝试连接到服务器时:
    a.伪造证书:攻击者可以拦截服务器的原始证书,并替换为伪造的证书。
    b.证书链验证:由于客户端信任攻击者的根证书,伪造的证书在验证过程中会被认为是有效的。
    c.密钥交换:客户端使用伪造证书中的公钥加密会话密钥,并发送给攻击者(MITM代理)。
    d.中间人攻击:攻击者(MITM代理)解密会话密钥,然后使用这个密钥加密自己的会话密钥发送给服务器。此时,攻击者拥有了两个会话密钥,可以解密和重新加密客户端和服务器之间的通信。
    e.流量捕获:攻击者可以捕获、查看和修改客户端和服务器之间的加密通信。
  3. 使用代理工具:网络调试和代理工具(如Fiddler、Charles或Wireshark)可以配置为MITM代理,用于截获和分析HTTPS流量,但这通常需要用户信任并安装代理服务器的证书
  4. 利用漏洞:如果客户端或服务器存在安全漏洞,攻击者可能利用这些漏洞来解密或篡改HTTPS流量
  5. 浏览器扩展或插件:恶意的浏览器扩展或插件可以捕获并分析通过浏览器传输的HTTPS流量
  6. 操作系统或网络驱动级别的工具:某些操作系统或网络驱动级别的工具能够捕获网络流量,包括加密的HTTPS流量
  7. 合作方:如果通信的一方与攻击者合作,攻击者可能获得解密密钥
    合法性和道德考量: 大多数合法的HTTPS抓包活动都是在用户知情并同意的情况下进行的,例如在开发和测试环境中。然而,未经授权的抓取和解密HTTPS流量通常被视为非法行为,因为它侵犯了通信的隐私和安全性
    工具配置示例: Wireshark和Charles等工具可以用于捕获HTTPS流量,但这通常需要用户或管理员进行特定配置,例如安装根证书或设置SSLKEYLOGFILE环境变量以记录TLS会话密钥。这些操作可以帮助开发者或网络安全专家在合法和道德的范围内分析和调试HTTPS流量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内存的基本知识与连续分配管理

目录 一. 内存的基础知识1.1. 什么是内存1.2 指令的工作原理1.2.1 装入的三种方式 - 绝对装入1.2.2 可重定位装入1.2.3 动态重定位装入1.3 从写程序到程序运行 二. 基本内存管理的概念三. 覆盖与交换3.1 覆盖技术3.2 交换技术 四. 连续分配管理方式4.1 单一连续分配4.2 固定分区…

【全开源】知识答题系统源码小程序(FastAdmin+ThinkPHP+Unipp)

打造智慧问答的基石 一、引言:知识答题系统的时代意义 在信息爆炸的时代,知识答题系统源码作为一种高效、有趣的知识传播方式,受到了越来越多人的关注和喜爱。通过搭建知识答题系统,我们可以将海量的知识内容以答题的形式展现给…

网络协议——Modbus-TCP

目录 1、简介 2、Modbus-TCP与Modbus-RTU的区别 3、消息格式 4、功能码01H 5、功能码02H 6、功能码03H 7、功能码04H 8、功能码05H 9、功能码06H 10、功能码0FH 11、功能码10H 1、简介 Modbus-TCP(Modbus Transmission Control Protocol)是一…

【linux】g++/gcc编译器

目录 背景知识 gcc如何完成 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码) 链接(生成可执行文件或库文件) 在这里涉及到一个重要的概念:函数库 函数库一般分为静态库和动态库两…

DOS学习-目录与文件应用操作经典案例-comp

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 案例 1: 基本比较 案例 2: 十进制显示差异 案例 3: 字符形式显…

【数据结构】二叉树和堆

文章目录 一、 什么是二叉树二、 二叉树的存储结构顺序存储视图 三、 堆堆的结构及概念大堆和小堆 四、 建堆五、 堆排序六、 topk问题 一、 什么是二叉树 二叉树,作为一种重要的数据结构,由节点组成,每个节点可以有两个子节点,通…

精品丨快速申请免费https证书

https域名证书对提高网站排名有一定的好处,所以当今很多企业为了给网站一个好的安全防护,就会去申请该证书。如今很多企业虽然重视网站的安全防护,但是也重视成本,所以为了节约成本会考虑申请免费的https证书。 第一个好处 企业不…

阻塞信号集和未决信号集_代码实现

1. 程序验证内容 将编号为0,1,2添加到阻塞信号集中&#xff0c;i<信号编号时&#xff0c;发出信号&#xff0c;观察未决信号集状态 当解除阻塞后&#xff0c;原先的信号是否执行&#xff0c;执行顺序是什么 2. 代码实现 #include <unistd.h> #include <stdlib.h…

Mac彩球一直转圈怎么解决 苹果电脑经常卡住 mac电脑运行慢怎么办

用Mac电脑办公的朋友在操作体积比较大的程序时&#xff0c;比如Final Cut Pro或者Photo Shop&#xff0c;一定遇到过鼠标变更彩球并不停转圈。这是怎么回事&#xff1f;今天本文就告诉大家Mac彩球一直转圈怎么解决&#xff0c;以及苹果电脑经常卡住是什么原因。 一、Mac彩球一直…

Wireshark 搜不到字符串?

一个原因是pcap里没有这个字符串&#xff0c; 另一个原因可能是ctrlF之后&#xff0c;选择搜索的地方不对&#xff0c;或者是编码方式选择的不对。 上面图片的第一个下拉框是要搜索的一个范围&#xff0c;是在哪一个panel搜索&#xff0c;范围说明在下面这个链接有详细说明&…

Java | Leetcode Java题解之第100题相同的树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if (p null && q null) {return true;} else if (p null || q null) {return false;}Queue<TreeNode> queue1 new LinkedList<TreeNode>();…

【QGIS入门实战精品教程】10.6:QGIS制作酒店分布热力图

相关阅读: ArcGIS实验教程——实验四十二:ArcGIS密度分析(核密度、点密度、线密度) 【ArcGIS微课1000例】0086:基于七普人口数据的人口密度分析与制图 ArcGIS实验教程——实验二十四:人口密度制图 文章目录 一、加载酒店分布数据二、热力分析一、加载酒店分布数据 订阅专…

Python 新手最容易踩的坑

Python新手最容易踩的坑 缩进错误忘记引入模块使用未定义的变量不理解变量作用域字符串格式化错误乱用关键字多余的符号本期图书推荐&#xff1a;Python算法小讲堂---39个算法案例带你玩转Python内容简介获取方式 在学习 Python 的过程中&#xff0c;新手往往会遇到一些常见的陷…

全免费的数据恢复工具哪个好?分享2024年性价比超高的12款数据恢复软件!

当您丢失重要文件时&#xff0c;您应该可不想遇到措手不及的情况吧&#xff1f;相反&#xff0c;您需要在系统中使用一些可靠的数据恢复软件&#xff0c;但是全免费的数据恢复工具哪个好呢&#xff1f;别担心&#xff0c;本文将帮助您选择最适合您的解决方案。 如何挑选一款合适…

栈和队列OJ题详解

一.有效的括号&#xff1a; 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 首先拿到这个题目&#xff0c;我的第一个思路是利用双指针来走&#xff0c;看看是不是匹配的 但是这种情况就把双指针的这个思路直接pass了&#xff0c;明明是匹配的括号&#xff0c;用双指…

Android Audio基础——AudioFlinger回放录制线程(七)

AndioFlinger 作为 Android 的音频系统引擎,重任之一是负责输入输出流设备的管理及音频流数据的处理传输,这是由回放线程 PlaybackThread 及其派生的子类和录制线程 RecordThread 进行的。 一、基础介绍 1、关系图 ThreadBase:PlaybackThread 和 RecordThread 的基类。 Re…

【linux】多线程(2)

文章目录 线程的应用生产消费者模型自制锁生产消费队列成员参数生产函数消费函数 任务处理方式主函数 POSIX信号量sem_wait()sem_post() 线程池应用场景示例 单例模式饿汉实现单例 吃完饭, 立刻洗碗, 这种就是饿汉方式. 因为下一顿吃的时候可以立刻拿着碗就能吃饭.懒汉实现单例…

visual studio code生成代码模板

编写需要生成代码片段的代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…

【C++】二分查找算法:x的平方根

1.题目 2.算法思路 看到题目可能不容易想到二分查找。 这题考察我们对算法的熟练程度。 二分查找的特点&#xff1a;数组具有二段性(不一定有序)。 题目中没有数组&#xff0c;我们可以造一个从0到x的数组&#xff0c;然后利用二分查找找到对应的值即可。 3.代码 class S…

ionic关于@angular版本报错解决方案(有效)

最近学校要求使用ionicangular学习&#xff0c;但是出现下面问题&#xff0c;这里我就分享一个我亲测有效的解决方案&#xff0c;提供学习&#xff08;在VScode中&#xff09; npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resol…