我的编程空间,编程开发者的网络收藏夹
学习永远不晚

https使用对称加密还是非对称加密

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

https使用对称加密还是非对称加密

这篇文章主要介绍了https使用对称加密还是非对称加密的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇https使用对称加密还是非对称加密文章都会有所收获,下面我们一起来看看吧。

HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

https使用对称加密还是非对称加密

客户端开发需要了解 https吗?

客户端开发人员到底需不需要了解 https 呢?我认为还是有一定必要的,掌握了 https 的工作原理可以帮助你更加有效地理解并解决一些工作当中遇到的问题。另外,有很多公司也喜欢在面试的时候问一些 https 相关的问题,如果你完全不了解的话,在这里就很容易会被刷掉。

我自己当初在学习 https 的时候查阅了很多网上的资料,但是绝大多数的文章写得都不是那么易懂,让不少人对 https 产生了一些畏惧。我认为要想理解 https 的工作原理,并不一定非得要知道它方方面面的细节(网上许多文章就是因为写得太细,导致很难懂),其实只要掌握它的整体工作流程,以及搞清楚为什么它能够保证网络通信的安全就可以了。因此,今天我就给大家带来一篇最好懂的 https 讲解。

两个基本概念

在正式开始讲解 https 之前我们还得先搞清楚两个概念:什么是对称加密,以及什么是非对称加密?这两个概念都是属于加密学中的基础知识,其实非常好懂。

对称加密比较简单,就是客户端和服务器共用同一个密钥,该密钥可以用于加密一段内容,同时也可以用于解密这段内容。对称加密的优点是加解密效率高,但是在安全性方面可能存在一些问题,因为密钥存放在客户端有被窃取的风险。对称加密的代表算法有:AES、DES 等。

而非对称加密则要复杂一点,它将密钥分成了两种:公钥和私钥。公钥通常存放在客户端,私钥通常存放在服务器。使用公钥加密的数据只有用私钥才能解密,反过来使用私钥加密的数据也只有用公钥才能解密。非对称加密的优点是安全性更高,因为客户端发送给服务器的加密信息只有用服务器的私钥才能解密,因此不用担心被别人破解,但缺点是加解密的效率相比于对称加密要差很多。非对称加密的代表算法有:RSA、ElGamal 等。

掌握了这两个概念之后,我们就可以开始学习 https 了。这里先提前抛出一个问题,同时也是面试时可能经常会问到的一个问题:https 为了保证数据传输的安全,使用的是对称加密还是非对称加密呢?

使用指南

首先我们来看一下,传统的 http 方式在网络传输时存在哪些问题。

由于我们在传输数据时信息都是明文的,因此很容易出现数据被监听和窃取的情况。示意图如下:

https使用对称加密还是非对称加密

另外,传输的数据还有可能被一些别有用心的人篡改,导致浏览器与网站收发的内容不一致。示意图如下:

https使用对称加密还是非对称加密

也就是说,使用 http 传输数据至少存在着数据被监听以及数据被篡改这两大风险,因此 http 是一种不安全的传输协议。

那么解决方案大家肯定都知道是使用 https,但是我们先尝试着自己思考一下该如何保证 http 传输的安全性,进而也就能一步步地理解 https 的工作原理了。

既然数据以明文的形式在网络上传输是不安全的,那么我们显然要对数据进行加密才行。刚才提到了,加密方式主要有两种,对称加密和非对称加密。对称加密的优点是加解密效率高,而我们在网络上传输数据是非常讲究效率的,因此这里很明显应该使用对称加密。示意图如下:

https使用对称加密还是非对称加密

可以看到,由于我们在网络上传输的数据都是密文,所以不怕被监听者获取到,因为他们无法得知原文是什么。而浏览器收到密文之后,只需要使用和网站相同的密钥来对数据进行解密就可以了。

这种工作机制看上去好像确实保证了数据传输的安全性,但是却存在一个巨大的漏洞:浏览器和网站怎样商定使用什么密钥呢?

这绝对是一个计算机界的难题,浏览器和网站要使用相同的密钥才能正常对数据进行加解密,但是如何让这个密钥只让它们俩知晓,而不被任何监听者知晓呢?你会发现不管怎么商定,浏览器和网站的首次通信过程必定是明文的。这就意味着,按照上述的工作流程,我们始终无法创建一个安全的对称加密密钥。

所以,只使用对称加密看来是永远无法解决这个问题了,这个时候我们需要将非对称加密引入进来,协助解决无法安全创建对称加密密钥的问题。

那么为什么非对称加密就可以解决这个问题呢?我们还是通过示意图的方式来理解一下:

https使用对称加密还是非对称加密

可以看到,如果我们想要安全地创建一个对称加密的密钥,可以让浏览器这边来随机生成,但是生成出来的密钥不能直接在网络上传输,而是要用网站提供的公钥对其进行非对称加密。由于公钥加密后的数据只能使用私钥来解密,因此这段数据在网络上传输是绝对安全的。而网站在收到消息之后,只需要使用私钥对其解密,就获取到浏览器生成的密钥了。

另外,使用这种方式,只有在浏览器和网站首次商定密钥的时候需要使用非对称加密,一旦网站收到了浏览器随机生成的密钥之后,双方就可以都使用对称加密来进行通信了,因此工作效率是非常高的。

那么,上述的工作机制你认为已经非常完善了吗?其实并没有,因为我们还是差了非常关键的一步,浏览器该怎样才能获取到网站的公钥呢?虽然公钥是属于公开的数据,在网络上传输不怕被别人监听,但是如果公钥被别人篡改了怎么办?示意图如下:

https使用对称加密还是非对称加密
HTTPS协议讲解HTTPS协议讲解

也就是说,只要我们从网络上去获取任何网站的公钥,就必然存在着公钥被篡改的风险。而一旦你使用了假的公钥来对数据进行加密,那么就可以被别人以假的私钥进行解密,后果不堪设想。

方案设计到这里好像已经进入了死胡同,因为无论如何我们都无法安全地获取到一个网站的公钥,而我们显然也不可能将世界上所有网站的公钥都预置在操作系统当中。

这个时候,就必须引入一个新的概念来打破僵局了:CA 机构。

CA 机构专门用于给各个网站签发数字证书,从而保证浏览器可以安全地获得各个网站的公钥。那么 CA 机构是如何完成这个艰巨的任务的呢?下面开始一步步解析。

首先,我们作为一个网站的管理员需要向 CA 机构进行申请,将自己的公钥提交给 CA 机构。CA 机构则会使用我们提交的公钥,再加上一系列其他的信息,如网站域名、有效时长等,来制作证书。

证书制作完成后,CA 机构会使用自己的私钥对其加密,并将加密后的数据返回给我们,我们只需要将获得的加密数据配置到网站服务器上即可。

然后,每当有浏览器请求我们的网站时,首先会将这段加密数据返回给浏览器,此时浏览器会用 CA 机构的公钥来对这段数据解密。

如果能解密成功,就可以得到 CA 机构给我们网站颁发的证书了,其中当然也包括了我们网站的公钥。你可以在浏览器的地址栏上,点击网址左侧的小锁图标来查看证书的详细信息,如下图所示。

https使用对称加密还是非对称加密

得到了公钥之后,接下来的流程就和刚才示意图中所描述的一样了。

而如果无法解密成功,则说明此段加密数据并不是由一个合法的 CA 机构使用私钥加密而来的,有可能是被篡改了,于是会在浏览器上显示一个著名的异常界面,如下图所示。

https使用对称加密还是非对称加密

那么你可能会问了,有了 CA 机构之后就真的安全了吗?我们在浏览器端要使用 CA 机构的公钥来解密数据,那么又该如何安全地获取到 CA 机构的公钥呢?

这个问题就很好解决了,因为世界上的网站是无限多的,而 CA 机构总共就那么几家。任何正版操作系统都会将所有主流 CA 机构的公钥内置到操作系统当中,所以我们不用额外获取,解密时只需遍历系统中所有内置的 CA 机构的公钥,只要有任何一个公钥能够正常解密出数据,就说明它是合法的。

Windows 系统的内置证书如下:

https使用对称加密还是非对称加密

但是即使使用 CA 机构的公钥能够正常解密出数据,目前的流程也还是存在问题的。因为每一家 CA 机构都会给成千上万的网站制作证书,假如攻击者知道 abc.com 使用的是某家 CA 机构的证书,那么他也可以同样去这家 CA 机构申请一个合法的证书,然后在浏览器请求 abc.com 时对返回的加密证书数据进行替换。示意图如下:

https使用对称加密还是非对称加密

可以看到,由于攻击者申请的证书也是由正规 CA 机构制作的,因此这段加密数据当然可以成功被解密。

也正是因为这个原因,所有 CA 机构在制作的证书时除了网站的公钥外,还要包含许多其他数据,用来辅助进行校验,比如说网站的域名就是其中一项重要的数据。

同样是刚才的例子,如果证书中加入了网站的域名,那么攻击者就只能无功而返了。因为,即使加密数据可以被成功解密,但是最终解密出来的证书中包含的域名和浏览器正在请求的域名对不上,那么此时浏览器仍然会显示异常界面。示意图如下:

https使用对称加密还是非对称加密

好了,方案设计到这里,其实我们的网络传输就已经做到足够的安全了。当然,这其实也就是 https 的工作原理。

那么回到一开始的问题:https 使用的是对称加密还是非对称加密呢?答案也很明显了,https 使用的是对称加密与非对称加密相结合的方式。

关于“https使用对称加密还是非对称加密”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“https使用对称加密还是非对称加密”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

https使用对称加密还是非对称加密

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

https使用对称加密还是非对称加密

这篇文章主要介绍了https使用对称加密还是非对称加密的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇https使用对称加密还是非对称加密文章都会有所收获,下面我们一起来看看吧。HTTPS协议是由SSL/TLS+
2023-06-27

Android对称加密与非对称加密

凯撒密码 1. 介绍 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏
2022-06-06

java对称加密和非对称加密有什么区别

对称加密和非对称加密是两种常见的加密算法,它们在加密和解密的过程中有以下区别:1. 密钥的数量:对称加密使用同一个密钥来进行加密和解密,而非对称加密使用一对密钥,即公钥和私钥。2. 密钥的分发:对称加密的密钥需要在加密和解密的双方之间进行传
2023-09-05

软件设计师对称加密与非对称加密考点

  软件设计师对称加密与非对称加密考点有哪些?为了方便考生及时有效的备考,编程学习网小编为大家精心整理了软考中级软件设计师对称加密与非对称加密考试知识点,供大家参考和学习。如想获取更多计算机软件水平考试的模拟题及备考资料,请关注编程学习网网站的更新。  【考法分析】  本知识点的考查形式有:区分对称加密和非对称加密算法;根据给
软件设计师对称加密与非对称加密考点
2024-04-18

Android 安全加密:非对称加密详解

Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Message DigestAndroid安全加密:数字签名和数字证书Android安全加密:Https编程
2022-06-06

PHP怎么使用OpenSSL加密中的非对称加密

这篇文章主要介绍了PHP怎么使用OpenSSL加密中的非对称加密,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的OpenSSL加密扩展学习:非对称加密生成私钥通过之前的
2023-06-15

2021年软件设计师考点:对称加密与非对称加密

  很多考生在备考2021年软件设计师考试,今天编程学习网小编为大家整理了2021年软件设计师考点:对称加密与非对称加密,希望对在备考软件设计师的考生会有帮助。  【考法分析】  本知识点的考查形式有:区分对称加密和非对称加密算法;根据给出的描述判断正误;根据对称加密和非对称加密算法的特点区分选择算法;或根据情景描述,确定
2021年软件设计师考点:对称加密与非对称加密
2024-04-18

python----RSA非对称加密算法

最近在搞项目的接口持续性自动化测试,好久没有更新博客了。项目中接触到很多加密相关的数据,很多项目都会用到非对称加密算法来保证前端和服务器交互的数据安全。下面介绍下python下怎么使用RSA加密算法:import rsa (publicke
2023-01-31

2022下半年软件设计师知识点:对称加密与非对称加密

  不少考生在备考2022下半年软件设计师考试,编程学习网小编为大家整理了2022下半年软件设计师知识点:对称加密与非对称加密,希望对大家备考有帮助。  为帮助考生备考软考软件设计师考试,编程学习网小编为大家整理了2022下半年软件设计师知识点:对称加密与非对称加密,相信对大家备考会有帮助。  对称加密与非对称加密(★★★) 
2022下半年软件设计师知识点:对称加密与非对称加密
2024-04-19

浅析Java中对称与非对称加密算法原理与使用

密码学是研究编制密码和破译密码的技术科学。这篇文章主要为大家介绍了Java中对称与非对称加密算法的原理与使用,感兴趣的小伙伴可以了解一下
2023-03-21

Java中对称与非对称加密算法原理与使用方法是什么

本篇内容介绍了“Java中对称与非对称加密算法原理与使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 加密概念密码学是研究编
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录