一、质数(RSA基因)
定义:指在大于1的自然数中,除了1和它本身之外不再有其他因数的自然数,也可说除了1和它本身之外,不能被其他自然数整除的数。
互质定义:公因数只有1的两个非零自然数。
二、欧拉函数(RSA建立基础)
定义:任意给定的正整数n,请问在小于等于n的正整数中,有多少个数(假设x个)与n构成互质关系?计算这个值(x)的函数叫做欧拉函数,以£(n)表示。(这里边的函数符号只是本文写的,不具参考意义。)
三、欧拉定理(RSA建立基本雏形)
如果两个正整数m和n互质,那么m的£(n)次方减去1可以被n整除。
m^£(n) mod n = 1
根据费马小定理,如果两个正整数m和n互质,且n为质数,则£(n)等于n-1,所以:
m^n-1 mod = 1
四、模反元素(RSA最后的翅膀)
定义:如果两个正整数e和x互质,那么一定可以找到一个整数d,使得ed-1可以被x整除,也可以说ed对x取余为1,那么d就是e相对于x的模反元素。
ed mod x = 1
五、最后做一次等式变化(RSA)
对欧拉定理变化,两边做k次幂得到m^(k£(n)) mod n = 1,两边再乘m得到m^(k£(n)+1) mod n = m。
看到这里就发现是不是有个地方和模反元素很相似,替换m的次幂得到:
m^(ed) mod n = m ——最后的等式雏形
可以看出,ed = k£(n)+1,所以,必要的条件是e和£(n)是互质的,一定有一个d是e相对于£(n)的模反元素。
这个等式被证实,不需要m和n互质,只需要m小于n等式依然成立!!
至此,似乎对m的加密和解密可以用最后的等式雏形来描述,但是有个问题,就是加密结果较大,明文比较小,悬殊较大。
六、迪菲赫尔曼密钥交换(公私钥的诞生)
非对称出现之前,人们用对称加密,密钥的保密性要求很高,迪菲赫尔曼密钥交换解决了这个密钥传递过程中保密问题。
举例子:
A私钥为13 B私钥为15
算法为:
3^13 mod 17 = 12(A公钥)
3^15 mod 17 = 6(B公钥)
然后 A 和 B互相把自己的公钥传给对方,再用自己的算法得到要保护的密钥。
6^13 mod 17 = 10 12^15 mod 17 = 10
10就是要保护的密钥。
问题:为什么上边两个算法用不同的公钥正好就能得到一样的数据呢? 因为迪菲赫尔曼密钥交换把变形的欧拉定理拆开了!形成了这个规律。
拆开后的公式为:
m^e mod n = C
C^d mod n = m^(e*d) mod n = m。
RSA诞生
m^e mod n = C ——加密
C^d mod n = m ——解密
需要找到d是e相对于£(n)的模反元素,等式即可成立。
现在来看看这个难度:
加密时候需要知道k£(n)+1,£(n)可以通过两个互质的数的积得到。n = ab, a b 互质,则£(n)=£(a)*£(b)
别人想破解,也需要知道£(n),那么就需要对n进行因式分解,所以我们选用n较大时候,破解的难度就更大了,现在1024bit的密钥可以很安全了,除了量子计算机外!!
参考文献:
https://blog.youkuaiyun.com/wjiabin/article/details/85228078?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param