作为一名ABC搬运工,我相信很多人都知道Https,也都知道它是用来保证通信安全的,但是如果你没有深入了解过Https,可能并不知道它是如何保证通信安全的。我也是借着这次机会,和大家分享下我深入了解的一个过程。

本文主要带着以下几个问题进行探讨:

1、什么是Https?

2、Https和Http有什么区别?

3、Https是如何保证通信安全的,它解决了哪些问题?

1.离不开的Https基础理论

HTTPS是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

通过上面的定义,我们关注到两点:传输加密、身份认证。那我们先来了解下Https中将要用到的加密技术和认证技术。

1)对称加密

加密数据,需要秘钥对(加密秘钥和解密秘钥),对称加密很容易理解,即:通信双方分别持有的加密秘钥和解密秘钥是一样的。

2)非对称加密

非对称加密从字面上理解,即:通信双方分别持有的加密秘钥和解密秘钥是不一样的。我们将私人持有的秘钥称为私钥,将公开的允许大多数人持有的秘钥称为公钥,现实场景中,通常是使用公钥加密通信数据,然后私钥解密保证数据安全性。

3)数字签名

保证数据传输的完整性和发送方可信。数字签名是非对称密钥加密技术与数字摘要技术的应用,通常使用hash算法对数据进行数字摘要(生成一段唯一的数据标识,该过程不可逆),然后使用私钥对数字摘要进行加密;接收方收到数据后,使用发送放提供的公钥对数据解密,确保数据是发送方发送的(如果不能解密,说明发送方并不是真实的),然后使用相同的hash算法对解密的数据进行数字摘要,比较前后两次数字摘要信息,如果相同则说明数据未被修改,从而确保数据完整性。

4)数字证书

数字证书又称数字标识,由用户申请,证书签证机关CA对其核实签发,对用户的公钥认证。前面提到的几种技术都是在发送方正确的情况下所做的加密认证技术,然而当发送方本身就是伪造的,那么后续的加密认证必然没有意义。而证书签证机构一般都是权威机构,通过其签发的证书确保了发送方提供的公钥是可信的。

上面的理论描述可能理解起来不是很直接,大家可以继续跟着后面的分析过程,逐步渗透理解。

2.和Http区别

Https和Http的区别,我们在这里不做详细描述,主要通过一张图了解一下:

通过上图我们可以直观的发现,HTTPS是在HTTP的基础上加了SSL安全协议层,通俗的理解HTTPS=HTTP+SSL,SSL安全协议保证了通信过程的安全性。

主要体现在以下几方面:

1)信息加密安全

2)信息完整性

3)身份认证

3.如何保证通信安全

我们先来看下HTTP的一次数据通信过程。TCP建立连接和断开连接的过程,这里就不再描述了。

图一

存在的安全性问题:

1)图一过程①和②都有可能被黑客截取,用户的信息暴露,非常危险。

HTTPS为了解决这个问题,允许通信双方共同约定一种加解密方式,即对称加密技术,仅通信双方知晓密钥以确保传输数据的安全;可是依然存在一个问题:通行双方如何交互这个密钥呢?

于是又提出通过非对称加密技术实现密钥的交互,即服务端向客户端提供自己的公钥,然后客户端通过公钥加密秘钥传输给服务端,服务端收到后使用私钥解密,获取密钥,后续通信双方通过该对称密钥进行通信。

图二

2)图二中的过程②,如果被黑客拦截会发生什么?

黑客可以伪造成服务器,将黑客自己的公钥分发给客户端,也就是说“服务器”本身就是个假的,这样的话图二中过程③客户端加密的密钥就很容易被黑客获取,显然后续的通信过程一直被黑客监听,信息完全暴露。

HTTPS为了解决这个问题提出了“数字证书”,由于数字证书是权威机构颁发的,申请者需要提交很多资料审核,正常情况下伪造者很难申请到证书,因此也就保证了服务端提供的公钥是安全可信的。

图三

3)图三中的过程②颁发的证书,被黑客拦截篡改怎么办?

如果证书被黑客拦截了。虽然黑客拿着证书也没啥用,但是万一黑客捣乱把证书信息篡改了,那么客户端接收后就根本不知道了,同样存在安全隐患。

所以,CA机构在生成证书的时候就使用了“数字签名”,保证了证书的完整性。

原理:CA机构使用Hash算法得到证书明文信息的“信息摘要”,然后使用自己的私钥对“信息摘要”加密,生成数字签名一同放在数字证书中;当客户端收到服务器发送的证书时,可以通过证书中的Hash算法对证书信息签名得到“信息摘要”,然后使用CA机构的公钥对原证书中的签名信息解密,如果解密后的“信息摘要”和自签名得到的一致,则说明没问题。(CA机构一般都是权威性的,所以通常它的公钥都是内置在客户端系统中的)

4)同样的问题,客户端和服务端在通信过程中,虽然黑客没有“会话密钥”无法获取真实的传输信息,但是黑客可以“修改数据”,比如删除一段信息,这样通信双方拿到数据后,并不知道数据被修改了。

HTTPS为了保证数据的完整性,同样使用了“数字签名”,使用的是HMAC算法进行签名,保证了通行过程中的信息完整性。

至此,HTTPS已经帮我们实现了通信双方之间的安全通信。

深入理解Https如何保证通信安全的更多相关文章

  1. 理解 HTTPS 的工作原理

    目标读者:理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理. 读完本文,你能明白 什么是HTTPS,TLS(SSL),TLS和HTTPS是什么关系? 什么是证书和数字签名,它们是如 ...

  2. 一分钟理解 HTTPS 到底解决了什么问题

    本文原作者“虞大胆的叽叽喳喳”,原文链接:jianshu.com/p/8861da5734ba,感谢原作者. 1.引言 很多人一提到 HTTPS,第一反应就是安全,对于普通用户来说这就足够了: 但对于 ...

  3. 如果这样来理解HTTPS,一篇就够了!

    1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...

  4. java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS

    概述 java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS 如果想要理解好https,请尽量了解好以上信息等. 参看文章: http://www.ruanyifeng.com/blog/ ...

  5. HTTPS 如何保证数据传输的安全性

    为什么需要 HTTPS? 我们知道 HTTP 是一个纯文本传输协议,对传输过程中的数据包不进行加密,是明文传输,那这样的话对于介于在发送端和接收端之间的任何 一个节点都能知道传输的内容,这些节点可能是 ...

  6. 轻松理解https,So easy!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:翟志军 https://showme.codes/2017-02-20/understand-https/ 本文尝试一 ...

  7. 接口测试之深入理解HTTPS

    前言 随着网络安全问题越来越被重视,HTTPS协议的使用已经逐渐主流化.目前的主流站点均已使用了HTTPS协议:比如:百度.淘宝.京东等一二线主站都已经迁移到HTTPS服务之上.而作为测试人员来讲,也 ...

  8. HTTPS 怎样保证数据传输的安全性

    大家都知道,在客户端与服务器数据传输的过程中,HTTP协议的传输是不安全的,也就是一般情况下HTTP是明文传输的.但HTTPS协议的数据传输是安全的,也就是说HTTPS数据的传输是经过加密的. 在客户 ...

  9. 一文看懂https如何保证数据传输的安全性的【转载、收藏】

    一文看懂https如何保证数据传输的安全性的   一文看懂https如何保证数据传输的安全性的 大家都知道,在客户端与服务器数据传输的过程中,http协议的传输是不安全的,也就是一般情况下http是明 ...

随机推荐

  1. 乘风破浪,遇见下一代操作系统Windows 11,迄今为止最美版本,原生支持安卓应用

    遇见下一代操作系统Windows 11 全新Windows体验,让您与热爱的人和事物离得更近. Windows一直是世界创新的舞台.它是全球企业的基石,助力众多蓬勃发展的初创公司变得家喻户晓.网络在W ...

  2. Java基础篇(JVM)——类加载机制

    这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...

  3. UVA 10689 Yet another Number Sequence 矩阵快速幂 水呀水

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  4. 树莓派4B-SPI读写flash-FM25CL16B(同时支持FM25CL64等其它系列Flash)

    1.树莓派SPI介绍 4B的引脚如下图所示: 其中Pin19.21.23是SPI0,接口定义如下所示: 时钟(SPI CLK, SCLK) 主机输出.从机输入(MOSI) 主机输入.从机输出(MISO ...

  5. ActiveMq 之JMS 看这一篇就够了

    什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务. JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MO ...

  6. linux下的压缩命令 tar zip gunzip

    p.p1 { margin: 0; font: 12px Arial; color: rgba(5, 42, 136, 1) } p.p2 { margin: 0; font: 12px " ...

  7. python 正则表达式 中级

    1.子表达式 将几个字符的组合形式看做一个大的字符,例如匹配IP地址,形如 127.0.0.1 答案一:p1='\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' pattern1 ...

  8. C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型

    控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...

  9. 解决ionic5多个模态关闭一个其他不显示的问题

    ionic5 modal使用过程中,在模态窗中打开另外一个模态窗,浏览器中显示正常,但是andorid8系统真机调试时,关闭最上层模态窗,上级模态窗DOM中存在,但是不显示. 原因是android版本 ...

  10. 利用漏洞破解win7密码

    一.利用5次shift漏洞破解win7密码 1.在未登录系统时,连续按5次shift键,弹出程序:C:\Windows\system32\sethc.exe 2.部分win7及win10可通过系统修复 ...