对称加密

对称加密相较于非对称加密更加快速,但是安全性不如非对称加密

百度简介

对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要

简单解释一下

假如 张三要给李四发送一个数字1,两者约定一个公钥1

那么张三给李四发送的就是 数字2(1+1=2)

李四拿到的是数字2,李四可以通过公钥处理信息(-1)最终拿到数字1

当然正常情况肯定会比较复杂

整个对称加密的关键就在于双方约定的公钥(算法可以很复杂,但是一旦被监听就存在破解的可能)

例子:AES加密

非对称加密

对称加密算法加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

也是简单解释一下

张三想要给李四发送信息m

张三和李四约定了一个公钥e(可公开加密),同时李四自己手里有一个私钥d(不公开)。

那么张三给李四发送的信息就是经过公钥e加密后的密文c

李四拿到密文c,就可以用自己的私钥d进行解密,最终拿到信息m

由于私钥只有李四拥有,所以密文是不怕被监听的

当然公钥和私钥的设置都有规律

我们通过学习最经典的RSA来了解一下

贴上百度百科的RSA计算过程

RSA算法的具体描述如下:

(1)任意选取两个不同的大素数p和q计算乘积

(2)任意选取一个大整数e,满足

(即e和φ(n)互质0)整数e用做加密钥(注意:e的选取是很容易的,例如,所有大于p和q的素数都可用)

(3)确定的解密钥d,满足

是一个任意的整数;所以,若知道e和φ(n),则很容易计算出d

(4)公开整数n和e,秘密保存d

(5)将明文m(m<n是一个整数)加密成密文c,加密算法为

(6)将密文c解密为明文m,解密算法为

然而只根据n和e(注意:不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密

上边很详细的把算法过程列了出来,但是我们要理解原理

来简单理解一下

为什么最后解密时,密钥不同但却可以得到原文?

稍做变换

其中的巧妙在于如何取得ed的值

数学真是奇妙,这里涉及一个欧拉定理,即

表示为:任何一个与n互质的正整数m,提取它的φ(n)次方并除以n取余数,则结果永远等于1,其中φ(n)为欧拉函数表示为小于等于n的正整数中,有多少个与n互质的数,举一个简单的例子

我们可以将欧拉定理魔改一下

是不是有头绪了,这样看来我们就可以得出e和d的规律了

有头绪了我们顺下来

最开始我们不是选择了两个不同的素数p,q吗?

求出n=pq,φ(n)=(p-1)(q-1)

之后我们就可以确定公钥e了

随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质

确定密钥e那么我们根据魔改的欧拉定理理所当然的求出来d,至此,我们的密钥完全生成

来讲一讲为什么RSA很难被破解

我们在加密过程中出现的数字

p
q
n
φ(n)
e
d

其中公开的只有n和e

假设有人想破解私钥d,那么他必须知道φ(n),φ(n)由p,q组成,p和q又组成了n,我们看似可以通过n来确定p和q,其实不然

整个加密过程大部分都是质数的取余运算,原因就在于,取余时一种不可逆的过程,只能通过因式分解来推导,但是因式分解是一件非常困难的事情,当大φ(n)足够大的时候,想要找出p,q现在来说是不可能的事情(未来量子计算机除外)。

维基百科这样说

“对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。
假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA密钥才可能被暴力破解。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。
只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。”

贴一些自己查的知识

https://zhuanlan.zhihu.com/p/48249182

https://www.bilibili.com/video/BV14y4y1272w?spm_id_from=333.337.search-card.all.click&vd_source=e42e1436c8d8cadb2a9e3893ea3d576f

密码学很奇妙的(思考量很大),这只是密码学的冰山一角,后续会做一些Crypto的题目