前言: 传统的对称加密非常容易破解,但目前对称加密还是非常安全的,主流是AES。非对称加密的主流是RSA。
RSA
虽稍后于MH背包公钥系统,但它是到目前为止应用最广的一
种公钥密码。RSA的理论基础是数论的欧拉定理,它的安全
性依赖于大整数的素因子分解的困难性。
RSA可用于加密,签名等。
但近代提出的量子计算机可能会打破这一稳定的格局~
本文重点阐述 非对称算法RSA的实现~
DES:Data Encrytion Standard(数据加密标准),对应算法是DEA
- 对称加密
- 同一个SK
AES:Advanced Encrytion Standard(高级加密标准)
- 对称加密
- 一个SK扩展成多个子SK,轮加密
RSA:RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用:
-
非对称加密,即:PK与SK不是同一个
-
PK用于加密,SK用于解密
-
PK决定SK,但是PK很难算出SK(数学原理:两个大质数相乘,积很难因式分解)
-
速度慢,只对少量数据加密
公匙密码算法思想
常用算法
RSA公钥密码的简介
数论核心:
欧拉函数
大整数素因子分解
提前了解~
在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)
欧拉函数计算通式:
个人理解:其实并不是很难理解,我们可以用概率论来讨论,给定一个数字x,我们给它拆成了几个质数p1,p2,p3…,pn相乘,每个质数的倍数,当然不是质数,每个质数的倍数出来的概率就是1/pi,1-1/pi就得到了满足该个pi的概率,连乘后就得到了同时满足所有这种情况的概率,因此得到欧拉数了~
原始的欧拉函数公式也可以用我这个思想去推导,例如把24拆开拆成2^3*3,然后分别乘于概率就可以推导原公式了,千万不要死记硬背。
欧拉定理:
在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,则:
举个例子:
首先看一个基本的例子。令a = 3,n = 5,这两个数是互素的。比5小的正整数中与5互素的数有1、2、3和4,所以φ(5)=4。计算:a^{φ(n)} = 3^4 =81,而81= 80 + 1 Ξ 1 (mod 5)。与定理结果相符。
这个定理可以用来简化幂的模运算。比如计算7^ 222 的个位数,实际是求7^ 222被10除的余数。7和10[[互素]],且φ(10)=4。由欧拉定理知7^ 4Ξ1(mod 10)。所以7^ 222=(7^ 4)^ 55*(7^ 2)Ξ1^ 55*7^2Ξ49Ξ9 (mod 10)。
RSA的密钥对 生成算法
对于重点进行解释
第三和第四点
这里取e非常有讲究,e得和n的欧拉数互质,不然如果e>=n的欧拉数,在加密中,mod后就为1了,如果e<n的欧拉数,则第四点不能成功找到满足条件的d了。
加解密过程
画个简单的例子:
推导过程:
还有在大数的n次方求解问题中,很容易出现溢出情况,可以采用指数快速幂的方法。
加密时首先将明文比特串分组,使得每个分组对应的十进制数小于n,即分组长度小于log2n。
推导当m与n互素的情况
推导当m与n不互素的情况
实战应用
:
同态性普及
1.RSA 算法对于乘法操作是同态的。
2.Paillier 算法则是对加法同态的。
3.Gentry算法则是全同态的。
同态性可用于机器学习的隐私保护,则不用知道原始数据,通过处理后的数据就可以得到我们想要的结果,实现两个同态中的一个已经非常难得了,全同态是超级厉害的。
全同态加密属于密码学领域。由于全同态加密支持无需解密,就能够对密文进行任意计算,因此可以立竿见影的解决数据隐私安全问题,有很大的应用需求。