安全(一)— 完全理解RSA加密算法


RSA加密算法

RSA加密算法 是一种 非对称加密算法,在公开密钥加密和电子商业中被广泛使用。例如:

  • 在HTTPS协议的加密层(SSL/TLS)作为密钥交换的方法
  • 支付宝支付API作为签名算法
  • 银联支付API作为签名算法
  • Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议

非对称加密算法

公开密钥密码学 (英语:Public-key cryptography,也称 非对称式密码学 )是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密,另一个则用作解密。 使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密; 不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
在这里插入图片描述


工作原理

本质就是依赖于三个自然数: n , e , d n,e,d n,e,d n n n d d d 构成一个密钥, n n n e e e 构成另一个密钥。对于 ( n , d ) (n, d) n,d ( n , e ) (n, e) n,e这两个密钥,无论用哪个密钥加密出来的密文都可以用另一个密钥解开, 所以不必强调哪个用于加密,哪个用于解密,只要把一个公布出去(称为公钥),另一个自己藏着(称为私钥)就行了。

根据这种特性,通常,

  • 使用 公钥加密私钥解密 ,实现 加密
  • 使用 私钥加密公钥解密 ,实现 数字签名
  • 代替 密码散列函数+Token,比如MD5、SHA2,做 消息认证
    (关于加密、数字签名,消息认证可以期待下篇文章。)

关于

  1. 如何确定 n , e , d n,e,d n,e,d这三个自然数?
  2. 如何进行加密解密?
  3. 已知公钥如何破解私钥?

我们需要了解RSA加解密的数学原理,主要包括

  • 互质
  • 欧拉函数
  • 同余
  • 欧拉定理
  • 模反元素
  • 扩展欧几里得算法

数学原理

你可以快速浏览这些定理和性质,然后进入下一章节,笔者在下一章节回答上述三个问题的同时,尽可能地将所需定理和性质做出了明确标注,阅读过程中可以随时回过头来确认。

因子

一个整数被另一整数整除,后者即是前者的 因子,如1、2、4、8都为8的因子。

质数

大于1的自然数,除1和本身外没有其他正因子,称为 质数

互质

两个自然数,除1以外没有其他公因子,则称它们为 互质

互质性质

根据以上定理可以得出以下几个性质(并不止于以下性质)

  1. 任意两个不相等质数一定互质(因为质数的因子只有1和本身,如果不相等则公因子只有1)
  2. 1和任意自然数都互质(只有1是公因子)
  3. 一个数是质数,另一个数只要不是前者的倍数,则二者互质(质数的因子只有1和本身,如果后者的因子不包含这个前者,那么二者公因子只有1)
  4. 两个数,较大的数是质数,那么二者互质(可由 互质性质3 得到)
  5. 两个不等质数之 的因子有4个,即,1,两个不等质数以及积本身(由 质数定理组合 可以得到)

欧拉函数

我们把用来表示“ 小于或等于 n n n的正整数中与 n n n互质的数的数目 ”的函数,称为欧拉函数,计作 φ ( n ) \varphi(n) φ(n)

欧拉函数性质
  1. n n n是质数,那么
    φ ( n ) = n − 1 \varphi(n)=n-1 φ(n)=n1
    互质性质4 可得。

  2. n = p q n=pq n=pq,且 p p p q q q两个不相等的质数,那么
    φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1)
    证明:

    1. φ ( n ) \varphi(n) φ(n),即求:小于等于的 n n n的正整数,有多少数与 n n n互质
    2. 逆向思考,可以先求:小于等于的 n n n的正整数,有多少数与 n n n不互质
    3. 由于 p 、 q p、q pq n n n的质因子,所以,如果一个数不与 n n n互质,那么这个数一定是 p p p q q q的整数倍(由 互质性质5 得)
    4. 由于 n = p q n=pq n=pq,所以, ( n − 1 ) (n-1) (n1)中包含 1 q , 2 q , 3 q . . . ( p − 1 ) q 1q,2q,3q...(p-1)q 1q,2q,3q...(p1)q,一共 ( p − 1 ) (p-1) (p1) q q q的倍数;同时包含 1 p , 2 p , 3 p . . . ( q − 1 ) p 1p,2p,3p...(q-1)p 1p,2p,3p...(q1)p,一共 ( q − 1 ) (q-1) (q1) p p p的倍数
    5. 又因为 p 、 q p、q pq n n n的质因子,所以, n n n p 、 q p、q pq的最小公倍数,即,在小于等于 n n n的正整数中不存在 p 、 q p、q pq的其它公倍数
    6. 所以,小于等于的 n n n的正整数,有 ( p − 1 ) + ( q − 1 ) (p-1)+(q-1) (p1)+(q1)个数与 n n n不互质
    7. 所以,小于等于的 n n n的正整数,与 n n n互质的数有
      φ ( n ) = n − 1 − ( ( p − 1 ) + ( q − 1 ) ) φ ( n ) = p q − p − q + 1 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=n-1-((p-1)+(q-1))\\ \varphi(n)=pq-p-q+1\\ \varphi(n)=(p-1)(q-1) φ(n)=n1((p1)+(q1))φ(n)=pqpq+1φ(n)=(p1)(q1)

同余

两个整数 a a a b b b,若它们除以正整数 m m m所得的余数相等,则称 a a a b b b对于模 m m m同余,记作
a % m = b % m    ⟹    a ≡ b (   m o d   m ) a\%m=b\%m\implies a\equiv b(\bmod m) a%m=b%mab(modm)

同余性质
  1. b < m b<m b<m时, b = a % m b=a\%m b=a%m
  2. 整除性 a ≡ b (   m o d   m ) ⇒ a − b = c ∗ m , c ∈ Z a\equiv b{(\bmod {m})}\Rightarrow a-b=c*m,c\in \mathbb {Z} ab(modm)ab=cm,cZ ,(即是说 a 和 b 之差是 m 的整数倍)
  3. 保持基本运算 a ≡ b (   m o d   m ) c ≡ d (   m o d   m ) } ⇒ { a ± c ≡ b ± d (   m o d   m ) a c ≡ b d (   m o d   m ) \left.{\begin{matrix}a\equiv b{(\bmod {m})}\\c\equiv d{(\bmod {m})}\end{matrix}}\right\}\Rightarrow \left\{{\begin{matrix}a\pm c\equiv b\pm d{(\bmod {m})}\\ac\equiv bd{(\bmod {m})}\end{matrix}}\right. ab(modm)cd(modm)}{a±cb±d(modm)acbd(modm)
    这性质更可进一步引申成为这样:
    a ≡ b (   m o d   m ) ⇒ { a n ≡ b n (   m o d   m ) , ∀ n ∈ Z a n ≡ b n (   m o d   m ) , ∀ n ∈ N 0 {\displaystyle a\equiv b{(\bmod {m})}\Rightarrow {\begin{cases}an\equiv bn{(\bmod {m})},\forall n\in \mathbb {Z} \\a^{n}\equiv b^{n}{(\bmod {m})},\forall n\in \mathbb {N} ^{0}\end{cases}}} ab(modm){anbn(modm),nZanbn(modm),nN0
  4. 放大缩小底数 ,k为整数,n为正整数, ( k m ± a ) n ≡ ( ± a ) n (   m o d   m ) {\displaystyle (km\pm a)^{n}\equiv (\pm a)^{n}{(\bmod {m})}} (km±a)n(±a)n(modm)

同余性质3、4 可以根据 同余性质2 整除性来证明。

例如,证明: a ≡ b (   m o d   m ) ⇒ a n ≡ b n (   m o d   m ) a\equiv b{(\bmod {m})}\Rightarrow an\equiv bn{(\bmod {m})} ab(modm)anbn(modm)
a = c ∗ m + b , c ∈ Z a ∗ n = ( c ∗ m + b ) ∗ n a n = c n ∗ m + b n a n ≡ b n (   m o d   m ) a=c*m+b,c\in \mathbb {Z}\\ a*n=(c*m+b)*n\\ an=cn*m+bn\\ an\equiv bn(\bmod m) a=cm+b,cZan=(cm+b)nan=cnm+bnanbn(modm)

其它可同理证明。

同余性质 是证明RSA加解密的关键。


欧拉定理

对任何两个互质的正整数 a a a n n n n ≥ 2 n\geq2 n2,有
a ϕ ( n ) ≡ 1 (   m o d   n ) a^{\phi(n)} \equiv 1(\bmod n) aϕ(n)1(modn)

费马小定理

如果n是质数p,那么
a p − 1 ≡ 1 (   m o d   p ) a^{p-1} \equiv 1(\bmod p) ap11(modp)
欧拉函数性质1 可得


模反元素

如果两个正整数 a a a n n n互质,那么一定可以找到整数 b b b,使得 a b − 1 ab-1 ab1 n n n整除
a b ≡ 1 (   m o d   n ) ab \equiv 1(\bmod n) ab1(modn)
此时 b b b就是 a a a关于 n n n模反元素。由 欧拉定理 可证, b b b一定存在。
a ϕ ( n ) = a × a ϕ ( n ) − 1 ≡ 1 (   m o d   n ) a^{\phi(n)}=a \times a^{\phi(n)-1} \equiv 1(\bmod n) aϕ(n)=a×aϕ(n)11(modn)
a ϕ ( n ) − 1 a^{\phi(n)-1} aϕ(n)1就是 a a a关于 n n n模反元素 b b b 。模反元素可以通过 扩展欧几里得算法 求得。


欧几里得算法
定义

又称 辗转相除法 ,是求最大公约数(最大公因子)的算法。两个整数 a , b a, b a,b的最大公约数,记作 gcd ⁡ ( a , b ) \gcd(a,b) gcd(a,b)

计算过程

前两次余数分别作为被除数除数,得到新的余数
r i + 1 = r i − 1 − q i r i , ( r 0 = a , r 1 = b ) r_{i+1}=r_{i-1}-q_{i} r_{i},(r_{0}= a,r_{1}=b) ri+1=ri1qiri,(r0=a,r1=b)
递归计算,直到 r i + 1 = 0 r_{i+1}=0 ri+1=0,那么此时 最大公约数 gcd ⁡ ( a , b ) = r i \gcd(a,b)=r_{i} gcd(a,b)=ri

证明

证明, r i + 1 = 0 r_{i+1}=0 ri+1=0时, r i r_{i} ri a , b a,b a,b最大公因子 g = gcd ⁡ ( a , b ) g=\gcd(a,b) g=gcd(a,b)

  1. 因为 a = m g , b = n g a=mg,b=ng a=mg,b=ng,所以 r 2 = r 0 − r 1 = a − q 1 b = m g − q 1 n g r_{2}=r_{0}-r_{1}=a-q_{1}b=mg-q_{1}ng r2=r0r1=aq1b=mgq1ng,所以 r 0 , r 1 , r 2 r_{0},r_{1},r_{2} r0,r1,r2可以被 g g g整除,同理(递降归纳)可求所有余数 r 0 , r 1 . . . r i − 1 , r i r_{0},r_{1}...r_{i-1},r_{i} r0,r1...ri1,ri都可以被 g g g整除,所以 g ≤ r i g\leq r_{i} gri
  2. r i + 1 = 0 r_{i+1}=0 ri+1=0,有 0 = r i − 1 − q i r i 0=r_{i-1}-q_{i} r_{i} 0=ri1qiri,即 r i r_{i} ri整除 r i − 1 r_{i-1} ri1
  3. 又当 r i = r i − 2 − q i − 1 r i − 1 , ( r 0 = a , r 1 = b ) r_{i}=r_{i-2}-q_{i-1} r_{i-1},(r_{0}= a,r_{1}=b) ri=ri2qi1ri1,(r0=a,r1=b),又因为 r i r_{i} ri整除 r i − 1 r_{i-1} ri1,那么 r i r_{i} ri可以整除 r i − 2 r_{i-2} ri2,同理(递降归纳), r i r_{i} ri可以整除所有余数 r 0 , r 1 . . . r i − 2 , r i − 1 r_{0},r_{1}...r_{i-2},r_{i-1} r0,r1...ri2,ri1
  4. 又因为 r 0 = a , r 1 = b r_{0}= a,r_{1}=b r0=a,r1=b,所以,此时 r i ≤ g r_{i}\leq g rig
  5. 结论,由于 g ≤ r i g\leq r_{i} gri,当 r i + 1 = 0 r_{i+1}=0 ri+1=0时, r i ≤ g r_{i}\leq g rig,所以当 r i + 1 = 0 r_{i+1}=0 ri+1=0时, r i = g r_{i}= g ri=g

扩展欧几里得算法
定义

顾名思义是 欧几里得算法 的扩展。已知整数 a 、 b a、b ab扩展欧几里得算法 可以在求得 a 、 b a、b ab的最大公约数的同时,能找到整数 x 、 y x、y xy(其中一个很可能是负数),使它们满足 贝祖等式
a x + b y = gcd ⁡ ( a , b ) ax + by = \gcd(a, b) ax+by=gcd(a,b)
在欧几里得算法中,我们仅仅利用了每步带余除法所得的余数。扩展欧几里得算法还利用了带余除法所得的商,在辗转相除的同时也能得到 贝祖等式

计算过程

扩展欧几里得算法欧几里得算法 的基础上增加了两个递归等式的计算
r i + 1 = r i − 1 − q i r i , ( r 0 = a , r 1 = b ) s i + 1 = s i − 1 − q i s i , ( s 0 = 1 , s 1 = 0 ) t i + 1 = t i − 1 − q i t i , ( t 0 = 0 , t 1 = 1 ) r_{i+1}=r_{i-1}-q_{i} r_{i},(r_{0}= a,r_{1}=b)\\ s_{i+1}=s_{i-1}-q_{i} s_{i},(s_{0}= 1,s_{1}=0)\\ t_{i+1}=t_{i-1}-q_{i} t_{i},(t_{0}= 0,t_{1}=1) ri+1=ri1qiri,(r0=a,r1=b)si+1=si1qisi,(s0=1,s1=0)ti+1=ti1qiti,(t0=0,t1=1)

递归计算,直到 r i + 1 = 0 r_{i+1}=0 ri+1=0,那么此时
gcd ⁡ ( a , b ) = r i = a s i + b t i \gcd(a,b)=r_{i}=as_{i}+bt_{i} gcd(a,b)=ri=asi+bti

证明

证明, r i = a s i + b t i , i ∈ N r_{i}=as_{i}+bt_{i},i\in\N ri=asi+btiiN(已知条件为上述三等式),使用 完整归纳法

  1. i = 0 i=0 i=0 r 0 = a s 0 + b t 0 = a ∗ 1 + b ∗ 0 = a r_{0}=as_{0}+bt_{0}=a*1+b*0=a r0=as0+bt0=a1+b0=a
  2. i = 1 i=1 i=1 r 1 = a s 1 + b t 1 = a ∗ 0 + b ∗ 1 = b r_{1}=as_{1}+bt_{1}=a*0+b*1=b r1=as1+bt1=a0+b1=b
  3. 假设 r i = a s i + b t i , r i − 1 = a s i − 1 + b t i − 1 r_{i}=as_{i}+bt_{i},r_{i-1}=as_{i-1}+bt_{i-1} ri=asi+btiri1=asi1+bti1成立,那么
    r i + 1 = r i − 1 − q i r i = ( a s i − 1 + b t i − 1 ) − q i ( a s i + b t i ) = a ∗ ( s i − 1 − q i s i ) + b ∗ ( t i − 1 − q i t i ) = a s i + 1 + b t i + 1 r_{i+1}=r_{i-1}-q_{i} r_{i}\\ =(as_{i-1}+bt_{i-1})-q_{i}(as_{i}+bt_{i})\\ =a*(s_{i-1}-q_{i}s_{i})+b*(t_{i-1}-q_{i}t_{i})\\ =as_{i+1}+bt_{i+1} ri+1=ri1qiri=(asi1+bti1)qi(asi+bti)=a(si1qisi)+b(ti1qiti)=asi+1+bti+1

所以 r i = a s i + b t i , i ∈ N 成 立 r_{i}=as_{i}+bt_{i},i\in\N成立 ri=asi+btiiN s i , t i s_{i},t_{i} si,ti满足 贝祖等式

Python实现
 #python3.7
 def ext_euclid(a, b):
    r0, r1 = a, b
    s0, s1 = 1, 0
    t0, t1 = 0, 1

    if a * b == 0:
        raise Exception("a,b must be nonzero!")
    while r1 != 0:
        q = r0 // r1
        r0, r1 = r1, r0 - q * r1
        s0, s1 = s1, s0 - q * s1
        t0, t1 = t1, t0 - q * t1
    return r0, s0, t0
Java实现
  public BigInteger[] extEuclid(String a, String  b) {
        BigInteger r0 = new BigInteger(a), r1 = new BigInteger(b),
                s0 = BigInteger.ONE, s1 = BigInteger.ZERO,
                t0 = BigInteger.ZERO, t1 = BigInteger.ONE;
        if(r0.multiply(r1).equals(BigInteger.ZERO))
            throw new IllegalArgumentException("a,b must be nonzero!");

        BigInteger q;
        BigInteger intermediate;
        while (!r1.equals(BigInteger.ZERO)){
            BigInteger[] quotientAndRemainder = r0.divideAndRemainder(r1);
            q = quotientAndRemainder[0];
            r0 = r1;r1 =quotientAndRemainder[1];
            intermediate = s0 ;s0 = s1;s1=intermediate.subtract(s1.multiply(q));
            intermediate = t0 ;t0 = t1;t1=intermediate.subtract(t1.multiply(q));
        }
        return new BigInteger[]{r0,s0,t0};
    }

确定 n , e , d n,e,d n,e,d

  1. 选择两个 不等质数 p , q p,q p,q,让 n = p q n=pq n=pq。假设 p = 17 , q = 23 p=17,q=23 p=17,q=23,那么 n = 17 ∗ 23 = 391 n=17*23=391 n=1723=391
  2. 由上述 欧拉函数性质2 得, φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p1)(q1)。我们随机选择一个数 e e e,保证 1 < e < φ ( n ) 1<e<\varphi(n) 1<e<φ(n),同时保证, e e e φ ( n ) \varphi(n) φ(n)互质。那么 φ ( n ) = ( 17 − 1 ) ∗ ( 23 − 1 ) = 352 \varphi(n)=(17-1)*(23-1)=352 φ(n)=(171)(231)=352,随机选择 e = 57 e=57 e=57
  3. e e e关于 φ ( n ) \varphi(n) φ(n)模反元素 d d d ,即, e d ≡ 1 (   m o d   φ ( n ) ) ⇒ e d − k ∗ φ ( n ) = 1 , k , d ∈ Z ed\equiv1(\bmod\varphi(n))\Rightarrow ed-k*\varphi(n)=1,k,d\in\Z ed1(modφ(n))edkφ(n)=1k,dZ
    57 d + 352 k 1 = 1 57d + 352k_{1}=1 57d+352k1=1
    根据 扩展欧几里得算法 可求, ( d , k 1 ) = ( 105 , − 17 ) , d = 105 (d,k_{1})=(105,-17),d=105 (d,k1)=(105,17),d=105

加密解密

计算过程

明文 m m m密文 c c c,如果用 ( n , e ) (n,e) (n,e)加密, ( n , d ) (n,d) (n,d)解密,过程如下:

  1. 加密公式 m e ≡ c (   m o d   n ) , m < n ⇒ c < n c = m e % n m^e\equiv c(\bmod n),m<n \xRightarrow{c<n} c=m^e\%n mec(modn),m<nc<n c=me%n

  2. 解密公式 c d ≡ m (   m o d   n ) , m < n ⇒ m = c d % n c^d\equiv m(\bmod n),m<n \Rightarrow m=c^d\%n cdm(modn),m<nm=cd%n

  3. 已知 明文 m = 38 m=38 m=38,用 ( n , e ) = ( 391 , 57 ) (n,e)=(391,57) (n,e)=(391,57)加密 c = m e % n = 3 8 57 % 391 = 327 c=m^e\%n=38^{57}\%391=327 c=me%n=3857%391=327

  4. 已知 密文 c = 327 c=327 c=327,用 ( n , d ) = ( 391 , 105 ) (n,d)=(391,105) (n,d)=(391,105)解密 m = c d % n = 32 7 105 % 391 = 38 m=c^d\%n=327^{105}\%391=38 m=cd%n=327105%391=38

Python实现
#python3.7 注意,pow()当包含第三个参数时,指数不可为负值
print(pow(38, 57, 391))
print(pow(327, 105, 391))
Java实现
System.out.println(BigInteger.valueOf(38).modPow(BigInteger.valueOf(57), BigInteger.valueOf(391)));
System.out.println(BigInteger.valueOf(327).modPow(BigInteger.valueOf(105), BigInteger.valueOf(391)));
证明

证明,已知加密公式 m e ≡ c (   m o d   n ) , m < n m^e\equiv c(\bmod n),m<n mec(modn),m<n,证明解密公式 c d ≡ m (   m o d   n ) , m < n c^d\equiv m(\bmod n),m<n cdm(modn),m<n成立。

  1. 根据已知条件,得出公式
    m e ≡ c (   m o d   n ) , m < n ⇒ 同 余 性 质 3 , 保 持 基 本 运 算 m e d ≡ c d (   m o d   n )    ⟹    c d ≡ m e d (   m o d   n ) ⇒ e d ≡ 1 (   m o d   φ ( n ) ) c d ≡ m 1 + k φ ( n ) (   m o d   n )    ⟹    c d ≡ m ∗ m k φ ( n ) (   m o d   n ) m^e\equiv c(\bmod n),m<n\xRightarrow{同余性质3,保持基本运算}m^{ed}\equiv c^d(\bmod n)\\ \implies c^d\equiv m^{ed}(\bmod n)\\ \xRightarrow{ed\equiv1(\bmod\varphi(n))}c^d\equiv m^{1+k\varphi(n)}(\bmod n)\\ \implies c^d\equiv m*m^{k\varphi(n)}(\bmod n) mec(modn),m<n3 medcd(modn)cdmed(modn)ed1(modφ(n)) cdm1+kφ(n)(modn)cdmmkφ(n)(modn)

  2. m 与 n m与n mn互质, m φ ( n ) ≡ 1 (   m o d   n ) m^{\varphi(n)}\equiv 1{(\bmod {n})} mφ(n)1(modn)(根据 欧拉定理
    1 ≡ m φ ( n ) (   m o d   n ) c d ≡ m ∗ m k φ ( n ) (   m o d   n ) } ⇒ 同 余 性 质 3 , 保 持 基 本 运 算 c d ≡ m (   m o d   n ) \left.{\begin{matrix}1 \equiv m^{\varphi(n)}{(\bmod {n})}\\c^d\equiv m*m^{k\varphi(n)}(\bmod n) \end{matrix}}\right\}\xRightarrow{同余性质3,保持基本运算}c^d\equiv m(\bmod n) 1mφ(n)(modn)cdmmkφ(n)(modn)}3 cdm(modn)

  3. m 与 n m与n mn不互质

    1. 因为 m 与 n m与n mn不互质,所以 m 与 n m与n mn,除1外有额外公共因子(根据 互质 定理)
    2. 因为 n = p q n=pq n=pq,所以 n n n有四个因子, 1 、 n 、 p 、 q 1、n、p、q 1npq(根据 互质性质5
    3. 又因为 m < n m<n m<n,所以 m = h p , h < q , h ∈ N ∗ m=hp,h<q,h\in\N^* m=hph<q,hN m = h q , h < p , h ∈ N ∗ m=hq,h<p,h\in\N^* m=hqh<p,hN
    4. 假设 m = h p , h < q , h ∈ N ∗ m=hp,h<q,h\in\N^* m=hph<q,hN,此时 h 与 q h与q hq互质(根据 互质性质4 ),同时因为 p 与 q p与q pq互质,所以 m 与 q m与q mq互质。
    5. c d ≡ m ∗ m k φ ( n ) (   m o d   n ) ⇒ 欧 拉 函 数 性 质 2 m ∗ m k ( p − 1 ) ( q − 1 ) (   m o d   n )    ⟹    m ∗ ( m q − 1 ) k ( p − 1 ) ( m o d n ) c^d\equiv m*m^{k\varphi(n)}(\bmod n)\\ \xRightarrow{欧拉函数性质2}m*m^{k(p-1)(q-1)}(\bmod n)\\ \implies m*(m^{q-1})^{k(p-1)}(mod n) cdmmkφ(n)(modn)2 mmk(p1)(q1)(modn)m(mq1)k(p1)(modn)
    6. m 与 q 互 质 ⇒ 欧 拉 定 理 m φ ( q ) ≡ 1 (   m o d   q ) ⇒ 欧 拉 函 数 性 质 1 m q − 1 ≡ 1 (   m o d   q ) ⇒ 同 余 性 质 3 ( m q − 1 ) k ( p − 1 ) ≡ 1 k ( p − 1 ) (   m o d   q ) ⇒ 同 余 性 质 2 , 整 除 性 ( m q − 1 ) k ( p − 1 ) = 1 + t q , t ∈ N m与q互质\xRightarrow{欧拉定理} m^{\varphi(q)}\equiv 1(\bmod q)\\ \xRightarrow{欧拉函数性质1}m^{q-1}\equiv1(\bmod q)\\ \xRightarrow{同余性质3}(m^{q-1})^{k(p-1)}\equiv 1^{k(p-1)}(\bmod q)\\ \xRightarrow{同余性质2,整除性} (m^{q-1})^{k(p-1)}=1+tq,t\in\N mq mφ(q)1(modq)1 mq11(modq)3 (mq1)k(p1)1k(p1)(modq)2 (mq1)k(p1)=1+tq,tN
    7. 由4,5,6可得
      c d ≡ m ∗ ( m q − 1 ) k ( p − 1 ) ( m o d n ) ( m q − 1 ) k ( p − 1 ) = 1 + t q , t ∈ N m = h p , h ∈ N ∗ }    ⟹    c d ≡ [ h p ∗ ( 1 + t q ) ] (   m o d   n )    ⟹    c d ≡ ( h p + t h ∗ p q ) (   m o d   n ) , t h ∈ N    ⟹    c d ≡ ( h p + t h ∗ n ) (   m o d   n ) , t h ∈ N ⇒ 同 余 性 质 4 , 放 大 缩 小 底 数 c d ≡ h p (   m o d   n )    ⟹    c d ≡ m (   m o d   n ) \left.{\begin{matrix}c^d\equiv m*(m^{q-1})^{k(p-1)}(mod n)\\ (m^{q-1})^{k(p-1)}=1+tq,t\in\N \\ m=hp,h\in\N^*\end{matrix}}\right\}\implies c^d\equiv [hp*(1+tq)](\bmod n)\\ \implies c^d\equiv (hp+th*pq)(\bmod n),th\in\N\\ \implies c^d\equiv (hp+th*n)(\bmod n),th\in\N\\ \xRightarrow{同余性质4,放大缩小底数 }c^d\equiv hp(\bmod n)\\ \implies c^d\equiv m(\bmod n) cdm(mq1)k(p1)(modn)(mq1)k(p1)=1+tq,tNm=hp,hNcd[hp(1+tq)](modn)cd(hp+thpq)(modn),thNcd(hp+thn)(modn),thN4, cdhp(modn)cdm(modn)

破解私钥

假如我们已知公钥 ( n , e ) (n,e) (n,e),所谓破解私钥 ( n , d ) (n,d) (n,d),就是通过 n , e n,e n,e,求出 d d d
已知 e d ≡ 1 (   m o d   φ ( n ) ) ed\equiv 1(\bmod \varphi(n)) ed1(modφ(n)),所以要求 d d d,先求 φ ( n ) \varphi(n) φ(n)
加密时我们通过 p , q p,q p,q计算出 φ ( n ) \varphi(n) φ(n),而破解时我们根本不知道 p , q p,q p,q,需要通过对 n n n进行 因数分解 求出 φ ( n ) \varphi(n) φ(n)
所以,要破解私钥,就要对 n n n进行 因数分解 n n n越大破解越困难。
目前已破解748-bit的密钥,如果你觉得1024-bit还不够安全,你可以使用2048-bit的密钥,如果未来它们也被破解了,你只需要增加到更大。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值