架构与思维:了解Http 和 Https的区别(图文详解)
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的区别(图文详解)的更多相关文章
- Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览
一.设计原理 1.Hadoop架构: 流水线(PipeLine) 2.Hadoop架构: HDFS中数据块的状态及其切换过程,GS与BGS 3.Hadoop架构: 关于Recovery (Lease ...
- XMind *思维导图的安装步骤(图文详解)
不多说,直接上干货! XMind中文官网: http://www.xmindchina.net/ 这一款软件,是非常实用和棒,也帮助我了很多地方.推荐给大家 需要正版和激活的,请见博文最下端的QQ技 ...
- 阿里云slb和ucloud负载均衡ulb添加ssl证书将http服务https化的配置详解
阿里云和ucloud服务器配置ssl证书将http服务https化的配置详解 项目背景: 苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HT ...
- HTTPS(SSL)详解以及PHP调用方法
HTTPS 详解 1. 两个加密秘钥的概念 (1) 对称加密 即加密的秘钥和解密的秘钥一样 (2) 非对称加密 即加密的秘钥和解密的秘钥不一样, 分别称为公钥 和 私钥, 公钥完全公开 私钥解密者 ...
- https加密解密过程详解
要点: https协议对传输内容进行加密,具有更强的安全性,防止被抓包后解析出请求内容. https是建立在ssl之上的http协议. 服务器支持https协议必须安装一套数字证书,所谓数字证书就是一 ...
- HTTPS加密流程超详解(一)前期准备
0.前言 前一阵子想写一个HTTPS的嗅探工具,之前只是大致了解SSL/TLS协议的加密流程,真正上起手来一步一步分析发现还是有点复杂的,于是我参考了wireshark的源码以及各种RFC,弄清楚了S ...
- HTTPS加密流程超详解(二)
2.进入正题 上篇文章介绍了如何简单搭建一个环境帮助我们分析,今天我们就进入正题,开始在这个环境下分析. 我们使用IE浏览器访问Web服务器根目录的test.txt文件并抓包,可以抓到如下6个包(前面 ...
- 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件项目的托管平台:https://github.com/zlslch/)(图文详解)(博主推荐)
不多说,直接上干货! https://github.com/ 欢迎大家,加入我的微信公众号:大数据躺过的坑 人工智能躺过的坑 同时,大家可以关注我的个人博客: http ...
- https ssl 请求过程详解
http 协议:http 协议是一种无状态,短链接的 通信协议,http 协议建立在 tcp 协议之上. http 协议 分成 三个 部分 请求行,请求头,请求体 请求行: 就是访问的地址 ( 包含 ...
- Oracle架构实现原理、含五大进程解析(图文详解)
目录 目录 前言 Oracle RDBMS架构图 内存结构 系统全局区SGA 高速缓存缓冲区数据库缓冲区 日志缓冲区 共享池 其他结构 进程结构 用户连接进程 用户进程User Process Ser ...
随机推荐
- 牛客网-SQL专项训练7
①SQL语言可以分为多个类别,那么不属于数据操纵语言DML的是(B) 解析: SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL. 1. 数据查询语 ...
- PolarDB-X 全局二级索引
简介: 索引是数据库的基础组件,早在1970年代,SystemR 就已经通过增加索引来支持多维度查询.单机数据库中,索引主要按照用途和使用的数据结构分为 BTree 索引.Hash 索引.全文索引.空 ...
- 安全同学讲Maven间接依赖场景的仲裁机制
简介: 去年的Log4j-core的安全问题,再次把供应链安全推向了高潮.在供应链安全的场景,蚂蚁集团在静态代码扫描平台-STC和资产威胁透视平台-哈勃这2款产品在联合合作下,优势互补,很好的解决了直 ...
- 使用 Docker 自建一款怀旧游戏之 - 超级马里奥
1)超级马里奥 简介 < 超级马里奥 >(Super Mario)是任天堂公司创造的一款经典游戏系列,是世界上最知名.最成功的游戏之一.这个系列由日本设计师宫本茂于 1985 年创造,最初 ...
- vue的三种组件传值方式
一.父传子 1.在父组件引入的子组件标签内给需要传递的值自定义名称 <AlertSzs :abc='gameType'></AlertSzs> 2.在子组件内用props接收 ...
- SpringMVC学习四(文件上传/拦截器)
1.文件上传 1.1预备工作,需要两个jar包(Fileupload) jar包下载路径: [点击下载https://github.com/suyirulan/putao/tree/master/fi ...
- fastposter v2.7.1 紧急发布 电商海报编辑器
fastposter v2.7.1 紧急发布 电商海报编辑器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报, ...
- 网络拓扑—DHCP服务配置
目录 DHCP服务搭建 相关配置细节前提 安装DHCP服务 DHCP服务搭建 相关配置细节前提 系统:Windows Server 2003 IP网段:10.0.0.0/24 三台机子: 普通PC机 ...
- 网络拓扑—NAT内外网映射
使用Windows Server 2003 网络拓扑 Router 外网:NATIP 网段 = 192.168.17.0/24 内网:仅主机模式IP = 172.16.29.4 Client1:仅主机 ...
- 用 C 语言开发一门编程语言 — 跨平台的可移植性
目录 文章目录 目录 前文列表 实现跨平台的可移植性 使用预处理器指令 前文列表 <用 C 语言开发一门编程语言 - 交互式解析器l> 实现跨平台的可移植性 理想情况下,我希望我的代码可以 ...