https到底把什么加密了?

柳彪
• 阅读 106

原创: 车小胖谈网络 车小胖谈网络 1周前
问题描述

都说https是在http和tcp两层之间加密,针对的是传输过程,只有客户端和服务端才能解密,变成明文。但是又有很多人说,https协议下,用get请求不加密,需要用post才会加密,而且这么说的人很多。

我的疑惑就是,如果把整个数据都加密了,是不是无论get和post都是一样的?
因为不懂抓包技术,所以比较好奇。https传输下,抓包者抓到的都是乱码? 能抓到URL,或者header之类的信息嘛?

另外再补充一个问题哈,网上还有一种中间人抓包模式?

如果有人在我和服务器之间抓包,伪造证书,搞这个中间人模式,那么浏览器是不是直接提示证书不安全?

如果浏览器也分辨不出来的话,是不是ssl证书质量不过关?

如果ssl证书质量过关,浏览器还无法分辨的话,那https岂不是一点用没有?该抓还抓,该截还截?

正文

首先直接说结论,https安全通信模式,是使用TLS加密传输所有的http协议。再重复一遍,是所有!

通常将TLS加密传输http这个通信过程称为https,如果使用协议封装的逻辑结构来表达就是:

IP + TCP + TLS +【HTTP】

其中用【】括起来的http是完全被加密保护起来的。

既然http被完全加密起来了,那使用https加密传输信息,途径互联网的时候,互联网上的第三方可以知道我们在访问什么网站吗?

可以的!

你可能会很惊奇,既然http已经被完全加密了,怎么第三方还会知道我们访问什么网站?

我们在访问一个网站时,比如www.zhihu.com,首先会使用DNS将网站的域名解析成IP地址,然后才可以使用IP地址来网站建立TCP连接、TLS安全连接。由于DNS是不加密的,所以第三方只要通过读取明文的DNS查询与响应报文,就可以知道我们再访问哪些网站。

读者会心生一计,如果我将域名与IP地址的对应关系,保存在本地的host文件里,那么下次就不需要发送DNS查询报文了,那么第三方就无法知道我们在访问什么网站了,对吗?

好主意!

但是第三方可以通过服务器的IP地址,使用DNS反向解析得到服务器的域名。

像知乎这样的网站通常会使用边缘加速,一个边缘加速服务器IP地址会host成千上百个网站,使用DNS反向解析会返回上千个域名,对吗?

对的!

但是我们与服务器TLS握手时,会在Client Hello报文的“TLS Extension”里携带一个明文的“Server Name Indication”用于指示边缘服务器我们真正要访问哪个网站,第三方读取一下SNI就会得到答案。

即使我们的浏览器有点古老,不支持SNI扩展,第三方就没有办法知道我们访问哪个网站了?

当然可以知道,因为TLS握手时,服务器推送过来的Server Hello里会携带明文的证书,证书里会清清楚楚地标明客户端正要访问什么网站。

现在互联网上大体有以下三种通信模式:

不安全通信

不完全安全通信

安全通信

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SSH概述与配置文件说明
一、什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。在出现SSH之前,系统管理员需要登入远程服务器执行系统管理任务时,都是用telnet来实现的,telnet协议采用明文密码传送,在传送过程中对数据也不加密,很容易被不怀好意的人在网络上监听到密码。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可
Wesley13 Wesley13
3年前
java实现非对称加密
对称加密:加密和解密的过程使用的是相同的密钥!这里写图片描述(https://oscimg.oschina.net/oscnet/42e81282a912d5abcf561e846c2b997914e.png)非对称加密与对称加密不同,非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的”公开密钥”(公钥
Wesley13 Wesley13
3年前
SSH介绍及连接原理
SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)指定;在进行数据传输之前,SSH先对联机数据包通过加密技术处理,加密后在进行数据传输。确保了传递的数据安全。  SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,
kenx kenx
3年前
Java MD5和SHA256等常用加密算法
前言我们在做java项目开发的时候,在前后端接口分离模式下,接口信息需要加密处理,做签名认证,还有在用户登录信息密码等也都需要数据加密。信息加密是现在几乎所有项目都需要用到的技术,身份认证、单点登陆、信息通讯、支付交易等场景中经常会需要用到加密算法,所谓加密算法,就是将原本的明文通过一系列算法操作变成密文。1.BASE严格地说,属于编码格式,而非加密算法
Wesley13 Wesley13
3年前
DES与RSA加解密
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密 和单向加密 ,而双向加密又分为对称加密 和非对称加密(有些资料将加密直接分为对称加密和非对称加密)。 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而
Wesley13 Wesley13
3年前
HTTPS的工作原理
目的http就是我们平时浏览网页时候使用的一种协议(网站是以http://开头)。http协议传输的数据都是未加密的(明文),一次http协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,出现了https,下面讨论一下https的工作原理:概述HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一
Wesley13 Wesley13
3年前
JAVA_RSA_的加解密
RSA为非对称加密算法。数字签名的过程:1、对明文数据进行HASH加密,不可逆;2、对加密后的数据再用RSA的私钥进行二次加密。数字签名的验证过程:1、对明文数据进行HASH加密,不可逆;2、用RSA的公钥对数字签名后的数据进行解密;3、把1的结果和2的结果进行比较是否相等。RSA加密的过程和解密的过程都需要三步:加/解密、分组、填充。这三部分每
Wesley13 Wesley13
3年前
Go加密解密之DES
一、DES简介DES(DataEncryptionStandard)是对称加密算法,也就是加密和解密用相同的密钥。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解
Stella981 Stella981
3年前
IM系统服务端消息加解密方案
IM系统中信息可能涉及隐私或秘密,安全显得尤为重要,怎么确保信息的安全呢?端到端加密是最安全的,只有聊天双方知道具体是什么消息,传输链路和消息服务器端都不知道消息内容。但是端到端加密在有些场景不适用,比如大规模群聊就不太好办。另外基于某些合规性要求,端到端加密也不合适。如果不采用端到端加密,消息的加密就分为网咯传输加密和服务端存储加密
待兔 待兔
1年前
很多人讲不明白HTTPS,但是我能
很多人讲不明白HTTPS,但是我能今天我们用问答的形式,来彻底弄明白HTTPS的过程下面的问题都是小明和小丽两个人通信为例可以把小明想象成服务端,小丽想象成客户端1.https是做什么用的?答:数据安全传输用的。2.数据如何安全的传输?答:把数据加密以后,
融云IM即时通讯 融云IM即时通讯
7个月前
融云 IM 干货丨如何确保群组数据的安全性和隐私性?
确保群组数据的安全性和隐私性,可以采取以下多种措施:1.数据加密传输加密:使用SSL/TLS等加密协议对数据进行加密,确保数据在传输过程中的安全性。这些加密协议采用公钥和私钥的加密方式,防止数据被窃听或篡改。存储加密:在云存储服务器上,使用服务器端加密技术