Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么非对称加密比对称加密慢?

为什么非对称加密比对称加密慢?

作者头像
出其东门
发布于 2020-07-31 09:32:34
发布于 2020-07-31 09:32:34
4.3K0
举报
文章被收录于专栏:01二进制01二进制

这个问题是一个读者面试时遇到的一个问题,准备过面试的人应该都记得,非对称加密对称加密的区别之一就是非对称加密的速度慢,但是我们做业务开发的时候通常都是直接调用算法,对其原因并没有过多深究,因此如果有面试官问到了这个问题,的确会让人措手不及。正好借着这篇文章来说一说。

对称加密与非对称加密

首先我们先来说一下到底什么是对称加密,什么是非对称加密,这一节主要是用一些例子来介绍一下对称加密和非对称加密是什么,如果你已经了解了,可以跳过本节。

对称加密

高中生小明和小红是一对“地下情侣”,可偏偏他们一个坐在教室前,一个坐在教室后,所以晚自习的时候也只能通过纸条传情。这时一个很尴尬的事情就出现了,由于无法直接将纸条交给对方,因此纸条必须要经过多个人的传递,可总有一两个八卦的人喜欢看纸条里写的什么。为了避免被班主任抓包以及被同学们窥视,他们两约定,用现代汉语词典当作“密码本”,以后传纸条时,纸条上的内容是要写的字在词典里的页码及顺序,这样即使纸条被别人看了,不知道密码本是什么的人也就不会得知纸条里的真正内容了。在上述的例子中,纸条是承载信息的载体,纸条里的内容是信息,汉语词典是密钥,将文字映射到汉语词典的页码和顺序是加密方式(算法)。 类似于上面这种,在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥的加密方式就是对称密钥加密(Symmetric-key algorithm),简称对称加密。常见的对称加密算法有:AES、DES、3DES 所以你可以将对称加密简单理解为:一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。他们之间的关系如下图所示(这里借用一下@寒食君的图):

弊端

这种加密方式虽然简单,但是其弊端也是非常明显的。在上面的例子中,如果传递纸条的人知道了他们这种加密方式,那就同样可以通过查阅汉语词典解析出他们的纸条内容。如下图所示。这样为什么众多抗战片中会出现疯狂抢夺密码本这一情节也就很好理解了。

非对称加密

再举一个生活中非常常见的例子。小区里的小伙伴们经常可以在自家的邮箱里收到信件,比如你的录取通知书,当然更多可能是广告。不过,虽然说所有人都可以往里面扔邮件,但是只有你可以打开这个邮箱查看这个邮件。上面这个过程就是一个很形象的非对称加密。

非对称加密不同于对称加密,它有一对秘钥,一个称为公钥(publicKey) ,另一个称为私钥(privateKey),并且*只知道公钥是无法推算出私钥。*就和上面的例子中只知道邮箱位置却并不能打开邮箱是一个道理。常见的非对称加密算法有:RSA、DSA、ECC 另外,这种算法还有一个特别神奇的功能,那就是通过公钥加密的内容,只有私钥才可以解开,而通过私钥加密的内容,只有公钥才可以解开。

公钥/私钥的用法

第一种用法:公钥加密,私钥解密。---用于加解密 第二种用法:私钥签名,公钥验签。---用于签名 其实很容易理解:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

这里提一点:签名 ≠ 加密,通俗点说加密就是你哪怕看到了不该看到的东西,也理解不了。而签名就是你做了任何事,都抵赖不了。

为什么非对称加密比对称加密慢?

介绍了这两种加密方式后,我们终于可以回到本篇文章的开头了,为什么非对称加密会比对称加密慢?这是因为对称加密主要的运算是位运算,速度非常快,如果使用硬件计算,速度会更快。以 AES 算法为例,如下图所示,其运算本质上来说就是位移和替换。

但是非对称加密计算一般都比较复杂,比如 RSA,它里面涉及到大数乘法、大数模等等运算。其加解密可以用下面的公式来表示:

我们知道,幂运算的本质是乘法,乘法的基础单位是加法,也就是我们最常见的整数加。学过数字逻辑电路的同学想必都知道,在电路上实现“加法”比异或(XOR)要麻烦的多,况且后面还有一个模运算。因此非对称加密的速度自然而然是比不过对称加密的。当然,我想另外还有一个原因是,AES 中的许多中间计算过程是可以事先计算好的。加密数据时许多中间过程可以直接查表,而不需要实时地计算。

通常情况下,非对称加密(如 RSA)的解密速度会比加密速度更慢,详情可参考Why is RSA decryption slow?[1]

时空性

这里另外提一点,我们在学习算法的时候,一定听过时间复杂度和空间复杂度这两个名词。鱼和熊掌不可兼得,通常情况下,一个算法如果运行比较快,那么空间消耗相对来说就会高一些,反之亦然。因此才会有拿空间换时间的说法。从上一节我们可以知道,非对称加密运行起来通常比对称加密慢,那么这时就有一个问题了,对于密钥的存储情况也是这样吗?非对称加密对于密钥的存储会比对称加密的密钥存储少吗?答案是的确如此,在对称加密中,当信息量大的时候,要求密钥量也要足够大,需要每两个人之间都有一个密钥,也就是对于 n 个人来说,一共需要

个密钥才能确保两两之间对话不被其他人知道。而在非对称加密中,每个人都有公钥和私钥,对于 n 个人来说,一共要

个密钥,就能保证两两之间对话不被其他人知道。

什么?你问我这个公式怎么来的?数学归纳法了解一下?

这么看,非对称加密虽然效率低下,但是存储成本低且相对安全,这也就解释了为什么非对称加密应用如此广泛了。

HTTPS

既然无法做到既安全又快速的加解密,那我们在实际使用时只能尽量达到一个动态的平衡。因此我们在项目中通常会采用如下这种将两种加密算法结合在一起的使用方式:

1.首先随机生成单次请求加密密钥(clientAesKey,长度为 16 位,可以用 26 个字母和数字组成)2.RSA 负责加密一个字符串(clientAesKey)、3.AES 负责用这个字符串(clientAesKey)、明文加密为一个密文。4.解密时首先要用 RSA 获取这个字符串(clientAesKey)、然后再用 AES 解密密文。

之所以本节的标题是 HTTPS,是因为在 HTTPS 中就使用了上述这种加解密的方式。关于 HTTPS 的详解,可以参考我的好朋友寒食君的这篇《谈恋爱也要懂 HTTPS》[2]。现在如果有面试官问你,在 https 中采用了哪种加密方式,我想你应该知道答案了吧。

References

[1] Why is RSA decryption slow?: https://security.stackexchange.com/questions/57205/why-is-rsa-decryption-slow [2] 《谈恋爱也要懂 HTTPS》: https://juejin.im/post/5be66e345188254b0917ede9

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 01二进制 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
对称加密与非对称加密
对称加密算法中对于数据的加密与解密使用同一密钥,即使用相同的密码对内容进行加密解密。
WindRunnerMax
2020/08/27
1.6K0
软考高级:对称加密和非对称加密的区别优缺点以及常见的算法
加密和非对称加密是现代加密技术中最基础也是最重要的两种加密方式,它们在保证信息安全传输方面扮演着重要角色。下面我将分别介绍它们的概念、区别、优缺点以及一些常见的算法。
明明如月学长
2024/05/24
3170
都2022年了,还不会对称加密和非对称加密算法?
下单做一次支付,若还是使用HTTP协议,可能会被黑客盯上。 你发送个请求,买娃娃,但该网络包被截获,于是在服务器回复你之前,黑客先假装自己就是电商网站,然后给你回复一个假消息:“好呀,来把银行卡号、密码拿来。” 这时你真把银行卡密码发给它,就中招了。
JavaEdge
2022/01/19
5020
非对称加密算法
1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。这个算法启发了其他科学家。人们认识到,加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。
只喝牛奶的杀手
2019/09/03
1.6K0
非对称加密算法
对称加密与非对称加密
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
用户7353950
2022/05/10
1.1K0
对称加密与非对称加密
对称加密和非对称加密
对称加密指的就是加密和解密使用同一个秘钥,所以叫对称加密。 对称加密只有一个秘钥,作为私钥。
小吕
2022/09/26
2.9K0
网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
Java微观世界
2025/01/21
2020
网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
非对称加密与OpenSSL
随着个人隐私越来越受重视, HTTPS也渐渐的流行起来, 甚至有许多网站都做到了全站HTTPS, 然而这种加密和信任机制也不断遭遇挑战,比如戴尔根证书携带私钥,Xboxlive证书私钥泻露, 还有前一段时间的沃通错误颁发Github根域名SSL证书事件. 因此本文从非对称加密说起, 介绍了证书的签证流程, 并且通过openssl的命令行工具对这些过程都转化为相对具体的命令, 也算是一个温故知新的简要记录吧.
evilpan
2023/02/12
1K0
非对称加密与OpenSSL
面试题:什么是对称加密和非对称加密?
对称加密: 对称加密又称为共享密钥加密,指使用同一把密钥进行加密和解密。在对称加密过程中,发送者和接收者之间必须共享相同的密钥,这样发送者可以使用该密钥加密消息,而接收者则使用相同的密钥解密接收到的消息。对称加密算法包括 DES、3DES、AES 等,它们广泛应用于保证网络通信的安全性,如 HTTPS 协议就是一种基于对称密钥的加密机制。
GeekLiHua
2025/01/21
1190
RSA非对称加密
需要注意的一点,这个公钥和私钥必须是一对的,如果用公钥对数据进行加密,那么只有使用对应的私钥才能解密,所以只要私钥不泄露,那么我们的数据就是安全的。
会跳舞的机器人
2018/09/03
1.6K0
加密与安全_探索非对称加密算法_RSA算法
加密与安全_探索密钥交换算法(Diffie-Hellman算法) 中我们可以看到,公钥-私钥组成的密钥对是非常有用的加密方式,因为公钥是可以公开的,而私钥是完全保密的,由此奠定了非对称加密的基础。
小小工匠
2024/05/26
2120
非对称加密与椭圆曲线
加密一直是通信领域的重要话题,我们经常听说各类算法,什么对称加密,非对称加密等等这类名词,云山雾绕,不得所以,经过这段时间的了解,接下来让我用九浅一深的语言,解释这个听上去深不可测,其实更是一头雾水的概念。 要解释加密技术,首先就要了解一下什么是对称加密。 对称加密 维基百科的解释如下: 对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实
申龙斌
2018/03/06
1.8K0
非对称加密与椭圆曲线
非对称加密与安全证书看这一篇就懂了 转
前几日做支付对接时,被对方文档中的加密方式搞晕乎了一会。意识到证书加密方面的理解不够深入,事后查阅参考资料补习一波。本文是根据期间的学习,以及长期以来的实践做出的总结。
wuweixiang
2018/08/14
1.5K0
非对称加密与安全证书看这一篇就懂了
                                                                            转
信息加密
信息加密(Encryption)是将明文信息转换为密文信息,使之在缺少特殊信息时不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。
真正的飞鱼
2023/02/21
7010
信息加密
非对称加密之RSA是怎么加密的
前几天阿粉刚刚说了这个 MD5 加密的前世今生,因为 MD5 也确实用的人不是很多了,阿粉就不再继续的一一赘述了,今天阿粉想给大家分享的,是非对称加密中的一种,那就是 RSA 加密算法。
Java极客技术
2022/12/04
1.2K0
对称加密和非对称加密
1.什么是对称加密,非对称加密 对称加密是指加解密使用的是同样的密钥 非对称加密是指加解密使用的密钥不同。
yaphetsfang
2020/07/30
1.7K0
对称加密和非对称加密
每日一博 - 对称加密算法 vs 非对称加密算法
我们今天来梳理一下将分别介绍这两种加密算法的优缺点,并通过Java代码实现和测试结果来验证其效果。
小小工匠
2023/05/29
4870
对称加密算法与非对称加密算法的优缺点
对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。
MavenTalker
2019/07/19
3.1K0
非对称加密与安全证书看这一篇就懂了
前几日做支付对接时,被对方文档中的加密方式搞晕乎了一会。意识到证书加密方面的理解不够深入,事后查阅参考资料补习一波。本文是根据期间的学习,以及长期以来的实践做出的总结。
用户1263954
2018/07/30
1.8K0
非对称加密与安全证书看这一篇就懂了
三、对称加密、非对称加密、混合加密
  两边用同一个密钥来加解密。 A把明文通过某一算法加密之后得到密文,然后把密文发送给B,B接收到密文之后用相同的密钥执行相同的算法去解密。X没有密钥,即使窃取到密文也无法窃听。
砖业洋__
2023/05/06
1.8K0
三、对称加密、非对称加密、混合加密
相关推荐
对称加密与非对称加密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档