RSA 算法基础之-概念篇

一、RSA算法

在加解密信息的过程中,使用的加密密钥(公钥)与解密密钥(私钥)不同,即:

  1. 甲要传密信给乙,乙先根据某种算法得出本次与甲通信的公钥与私钥;
  2. 乙将公钥传给甲(公钥可以让任何人知道,即使泄露也没有任何关系);
  3. 甲使用乙给的公钥加密要发送的原文m,将密文c发送给乙;
  4. 乙使用自己的私钥解密密文c,得到原文m。

这种加密模式被称为“非对称加密算法”。从始至终,私钥一直都在信息接收方乙处,只要乙自己不泄露出去,私钥就没有泄露的可能。

二、质数与互质数

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为质数(素数);否则称为合数

例如,15=3×5,所以15不是质数;13=13×1,以外不能为其它任何两个整数的乘积,所以13是一个质数;1不是质数,也不是合数。

公约数只有1的两个数,叫做互质数。判断或选取互质数的方法/定理有很多,如下所示:

  1. 任意两个质数一定构成互质数(如3与11、53与61);
  2. 大数是质数的两个数一定是互质数(如97与88);
  3. 一个质数如果不能整除另一个合数,这两个数为互质数;即一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系(如3与10、5与26);
  4. 1和任何一个自然数在一起都是互质数;
  5. 相邻的两个自然数是互质数(如15与16);
  6. 相邻的两个奇数是互质数(如49与51)

在RSA算法中,我们通常使用以上第1条与第2条,即选取两个本身都是质数的数作为互质数,而以上第2条定理对于计算欧拉函数值有着积极作用。

三、模运算

模运算的定义如下:让m去被n整除,用所得的余数作为结果,就叫做模运算

10 mod 3 = 1
26 mod 6 = 2
28 mod 2 = 0

四、同余

“≡”是数论中表示同余的符号,同余的定义如下:

给定一个正整数m,如果两个整数a和b满足a-b能被m整除,即(a-b) mod m = 0,那么就称整数a与b对模m同余,记作 a≡b(mod m),同时可成立a mod m=b

同余与模运算是不同的:a≡b(mod m) 仅可推出 b=a mod m

五、欧拉函数

欧拉函数本身需要一系列复杂推导,本文仅介绍对认识RSA算法有帮助的部分:任意给定正整数n,计算在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以φ(n)表示

例如,在1到8之中,与8形成互质关系的是1、3、5、7,所以φ(n)=4 。

在RSA算法中,需要明白欧拉函数对以下定理成立:

  1. 如果n可以分解成两个互质的整数之积,即n=p×q,则有:φ(n)=φ(pq)=φ(p)φ(q)
  2. 根据“大数是质数的两个数一定是互质数”可以知道:一个数如果是质数,则小于它的所有正整数与它都是互质数;所以如果一个数p是质数,则有:φ(p)=p-1

所以,如果我们知道一个数n可以分解为两个质数p和q的乘积,则有:

φ(n)=(p-1)(q-1)

六、欧拉定理与模反元素

欧拉函数的用处,在于欧拉定理。“欧拉定理”指的是:如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:

aφ(n) ≡ 1(mod n)

也就是说,a的φ(n)次方被n除的余数为1,模反元素的推导过程如下:

RSA 算法基础之-概念篇_第1张图片

即,如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,或者说ab被n除的余数是1

你可能感兴趣的:(算法安全rsa)