1 介绍

随着 HTTPS 的不断普及和使用成本的下降,现阶段大部分的系统都已经开始用上 HTTPS 协议。 HTTPS 与 HTTP 相比, 主打的就是安全概念,相关的知识如 SSL 、非对称加密、 CA证书、数据完整性保护 等,我们多多少少也都有听过。 本文重点从原理上讲解 HTTPS 的安全性,以及同HTTP的比较说明。

2 HTTP和HTTPS的比较

HTTP(全称:HyperText Transfer Protocol,超文本传输协议)和HTTPS(全称: Hypertext Transfer Protocol Secure,超文本传输安全协议)都是互联网中用于数据传输的协议,它们在多个方面有着显著的差异和特点。

2.1 HTTP

HTTP(Hypertext Transfer Protocol),是一种发送和接收HTML页面的方法,主要用于Web浏览器和网站服务器之间传递信息。它的主要特点如下:

1. 基于请求响应模式: HTTP协议采用客户端-服务器架构模式,客户端向服务器发送请求,服务器返回相应的响应。这种模式能有效分离应用逻辑,提高系统的可维护性和扩展性。

2. 基于文本传输: HTTP协议使用ASCII码作为通信协议,每个请求和响应都是一条文本消息,这使得通信协议更加简单、直观、易于处理。

3. 支持多媒体传输: HTTP协议可以传输多种类型的数据,如HTML、XML、JSON、图片、音频、视频等,这使得HTTP协议成为一种通用的网络传输协议,适用于各种不同类型的应用场景。

4. 无连接: HTTP协议是一个无连接协议,每个请求都是独立的,服务器处理请求后立即关闭连接。这有助于节省资源,但也带来了一些缺点,如需要重新建立连接、重复发送相同的头部信息等。

5. 无状态: HTTP协议没有客户端的状态存储,也没有事务处理的“内存”能力。这意味着每次访问网站时可能需要重复的登录操作。

然而,HTTP协议也存在一些不足之处。由于它以明文方式发送内容,不提供任何方式的数据加密,因此安全性较差。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。因此,HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等支付信息。

2.2 HTTPS

与HTTP相比,HTTPS(Hypertext Transfer Protocol Secure)则是以安全为目标的HTTP通道。它在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS的内容加密、身份验证以及数据完整性保护的原理主要依赖于SSL/TLS协议。下面我们详细来看看这几方面的实现原理。

2.2.1 内容加密

HTTPS使用对称加密和非对称加密相结合的方式来实现内容加密。

1. 对称加密:在密钥交换完成后,客户端和服务器会生成一个共享的会话密钥。这个会话密钥用于后续的加密和解密操作。双方使用这个会话密钥,通过对称加密算法(如AES)对传输的数据进行加密和解密,确保数据在传输过程中的安全性。

如上图,对称加密虽然保证了消息的保密性,但是因Client和Service共享一个密匙,这样就导致密匙特别容易泄露。

2. 非对称加密:在HTTPS的握手阶段,服务器会将其公钥发送给客户端。这个公钥用于后续的加密通信。客户端使用服务器的公钥加密一个随机数,然后将加密后的随机数发送给服务器。服务器使用其私钥解密这个随机数,从而确保双方都能安全地交换密钥,这个过程称为密钥交换。

如上图,

  • 非对称加密时需要使用到接收方的公匙对消息进行加密,但是公匙不保密,可以截获客户端发来的消息,然后篡改形成攻击
  • 非对称加密的性能会慢上至少几倍,增加系统消耗。因此,Https将两种加密结合起来使用。

2.2.2 身份验证

HTTPS使用数字证书来验证服务器的身份。

1. 数字证书:数字证书是由权威的证书颁发机构(CA)颁发的,包含了服务器的公钥、服务器的身份信息以及CA的签名等信息。当客户端与服务器建立HTTPS连接时,服务器会将其数字证书发送给客户端。

2. 验证过程:客户端收到服务器的数字证书后,会验证证书的合法性。首先,客户端会检查证书是否由受信任的CA颁发。然后,客户端会检查证书是否过期以及证书中的服务器身份信息是否与正在连接的服务器一致。最后,客户端会使用CA的公钥验证证书上的签名,确保证书在传输过程中没有被篡改。如果证书验证通过,客户端就可以确认服务器的身份是可信的。

2.2.3 数据完整性

HTTPS通过消息认证码(MAC)来确保数据的完整性。

1. 消息认证码:在HTTPS通信过程中,每个传输的数据包都会附带一个MAC值。这个MAC值是通过将数据包的内容和会话密钥一起输入到一个哈希函数中计算得出的。因此,只有持有相同会话密钥的接收方才能计算出正确的MAC值。

2. 完整性校验:当接收方收到数据包时,它会使用相同的会话密钥和哈希函数计算MAC值,并与数据包中附带的MAC值进行比较。如果两个MAC值相同,那么接收方就可以确认数据包在传输过程中没有被篡改,从而保证了数据的完整性和安全性。

2.2.4 端口

HTTP 默认使用 80 端口,而 HTTPS 默认使用 443 端口。

2.2.5 性能

因为HTTPS 需要进行加密和解密操作,因此它的性能可能略低于 HTTP。但随着技术的发展,这种性能差距已经接近可以忽略。

3 总结

HTTP和HTTPS在差异方面,最显著的是安全性。HTTP是明文传输协议,而HTTPS是加密传输协议。这种加密特性使得HTTPS在传输敏感信息时更具优势。此外,浏览器地址展示方式也有所不同,Https有绿色安全锁标志,而http则有网站不安全标志提醒。在协议层面,HTTPS在HTTP的基础上加入了SSL安全认证证书,从而提供了更高级别的安全防护。在涉及敏感信息传输的场景中,如在线购物、银行业务等,基本都是用HTTPS协议进行数据传输。

架构与思维:了解Http 和 Https的区别(图文详解)的更多相关文章

  1. Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览

    一.设计原理 1.Hadoop架构: 流水线(PipeLine) 2.Hadoop架构: HDFS中数据块的状态及其切换过程,GS与BGS 3.Hadoop架构: 关于Recovery (Lease ...

  2. XMind *思维导图的安装步骤(图文详解)

    不多说,直接上干货! XMind中文官网:  http://www.xmindchina.net/ 这一款软件,是非常实用和棒,也帮助我了很多地方.推荐给大家 需要正版和激活的,请见博文最下端的QQ技 ...

  3. 阿里云slb和ucloud负载均衡ulb添加ssl证书将http服务https化的配置详解

    阿里云和ucloud服务器配置ssl证书将http服务https化的配置详解 项目背景: 苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HT ...

  4. HTTPS(SSL)详解以及PHP调用方法

    HTTPS 详解 1. 两个加密秘钥的概念 (1) 对称加密 即加密的秘钥和解密的秘钥一样 (2) 非对称加密 即加密的秘钥和解密的秘钥不一样, 分别称为公钥 和 私钥,  公钥完全公开  私钥解密者 ...

  5. https加密解密过程详解

    要点: https协议对传输内容进行加密,具有更强的安全性,防止被抓包后解析出请求内容. https是建立在ssl之上的http协议. 服务器支持https协议必须安装一套数字证书,所谓数字证书就是一 ...

  6. HTTPS加密流程超详解(一)前期准备

    0.前言 前一阵子想写一个HTTPS的嗅探工具,之前只是大致了解SSL/TLS协议的加密流程,真正上起手来一步一步分析发现还是有点复杂的,于是我参考了wireshark的源码以及各种RFC,弄清楚了S ...

  7. HTTPS加密流程超详解(二)

    2.进入正题 上篇文章介绍了如何简单搭建一个环境帮助我们分析,今天我们就进入正题,开始在这个环境下分析. 我们使用IE浏览器访问Web服务器根目录的test.txt文件并抓包,可以抓到如下6个包(前面 ...

  8. 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件项目的托管平台:https://github.com/zlslch/)(图文详解)(博主推荐)

    不多说,直接上干货! https://github.com/ 欢迎大家,加入我的微信公众号:大数据躺过的坑        人工智能躺过的坑       同时,大家可以关注我的个人博客:    http ...

  9. https ssl 请求过程详解

    http  协议:http 协议是一种无状态,短链接的 通信协议,http 协议建立在 tcp 协议之上. http 协议 分成 三个 部分 请求行,请求头,请求体 请求行: 就是访问的地址 ( 包含 ...

  10. Oracle架构实现原理、含五大进程解析(图文详解)

    目录 目录 前言 Oracle RDBMS架构图 内存结构 系统全局区SGA 高速缓存缓冲区数据库缓冲区 日志缓冲区 共享池 其他结构 进程结构 用户连接进程 用户进程User Process Ser ...

随机推荐

  1. 使用 Gradio 的“热重载”模式快速开发 AI 应用

    在这篇文章中,我将展示如何利用 Gradio 的热重载模式快速构建一个功能齐全的 AI 应用.但在进入正题之前,让我们先了解一下什么是重载模式以及 Gradio 为什么要采用自定义的自动重载逻辑.如果 ...

  2. Docker部署Node应用简单实践

    简介: 本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用. 前言 本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用.本文假设 ...

  3. 一文详解 Nacos 高可用特性

    简介: 我今天介绍的 Nacos 高可用,是 Nacos 为了提升系统稳定性而采取的一系列手段.Nacos 的高可用不仅仅存在于服务端,同时也存在于客户端,以及一些与可用性相关的功能特性中,这些点组装 ...

  4. [FAQ] IDE: Goland 注释符后面添加空行

    如图所示,Code Style 对应语言 Go 勾选上注释空行的选项. Refer:Goland官网 Goland下载 Link:https://www.cnblogs.com/farwish/p/1 ...

  5. 2019-8-31-C#-获取进程退出代码

    title author date CreateTime categories C# 获取进程退出代码 lindexi 2019-08-31 16:55:58 +0800 2019-02-13 09: ...

  6. 使用sqlcmd命令行执行.sql文件

    用微软自带的sqlcmd命令行工具,可以执行导入.以SQL Server 2016版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:sqlcmd -S . -U sa ...

  7. 使用open webui+ollama部署本地大模型

    使用open webui+ollama部署本地大模型 上次使用了angthingllm + ollama部署了本地大模型,详情见:https://www.cnblogs.com/jokingremar ...

  8. foreach更改element内容后this到data不生效导致页面数据无变化

    list.forEach(element => {  element = element.split('^')    console.log(element)  }) 数据已经被更改,但在外部t ...

  9. 请查收这份 6.3k star的 Java 攻城狮学习指南!

    大家好,我是 Java陈序员. 自从一入 Java 开发的坑,可谓是每天过得神清气爽(水深火热). 每天不是被项目经理赶进度,就是被测试小姐姐追着改 Bug!都没有时间好好学习(摸鱼)了! 今天给大家 ...

  10. SAP UI5 官方教程学习记录

    最近有闲跟着官方的Get Started教程学习了UI5,记录一下自己学习中遇到的几个问题. 本文链接:https://www.cnblogs.com/hhelibeb/p/17835722.html ...