RSA 數學原理

TauRen發表於2019-03-04

提起RSA大家一定不陌生,在開發中經常使用,也經常聽同事說道。

前奏

對稱加密

話說很久以前,人們就懂的了加密這個技術。在戰爭時期,間諜就會拿著 密文密匙 來對資訊就行傳遞。
這種簡單的 密文 + 密匙(key) 就是 對稱加密

加密: 明文 + 密匙

解密: 密文 + 密匙

非對稱加密

由於這種加密方式過於簡單,所以後來引入了數學演算法。
RSA 就是由特殊的數學演算法構成的,也是非對稱加密演算法。非對稱加密需要兩個金鑰:公鑰(public key) + 私鑰(private key)

用公鑰加密,私鑰解密

私鑰加密,公鑰解密

相關數學原理

尤拉定理

如果兩個正整數m和n互質,那麼m的φ(n)次方減去1,可以被n整除。

RSA 數學原理

一下是幾種情況

  • 定理0 算術函式f如果滿足對於任意兩個互質的正整數m和n,均有f(mn)=f(m)f(n),就稱f為積性函式(或乘性函式)。
    如果對於任意兩個正整數m和n,均有f(mn)=f(m)f(n),就稱為完全積性函式。

  • 定理1 對於素數p,ϕ(p)=p−1。

  • 定理2 ϕ(pn)=pn−pn−1,因為素數冪pn不互質的只有p的倍數,一共有pn/p=pn−1個。

  • 定理3 若m、n互質,ϕ(mn)=ϕ(m)ϕ(n),所以尤拉函式是積性函式。
    因為mn互質NN,和m互質的數乘上和n互質的數就會和mn互質。

  • 定理4 設n=p1a1p2a2…pkak為正整數n的素數冪分解,那麼ϕ(n)=n(1−1/p1)(1−1/p2)…(1−1/pk)。
    由定理2,ϕ(pn)=pn−pn−1=pn (1-1/p),又由定理3,ϕ(n)=p1a1p2a2…pkak(1−1/p1)(1−1/p2)…(1−1/pk)=n(1−1/p1)(1−1/p2)…(1−1/pk)

例如: 
ϕ(8) = ϕ(2^3) = 2^3 - 2^(2-1) = 8 - 4 = 4
ϕ(15) = ϕ(3) * ϕ(5) = 2 * 4 = 8
複製程式碼

費馬小定律

尤拉定理的特殊情況:如果兩個正整數m和n互質,而且n為質數!那麼φ(n)結果就是n-1。

RSA 數學原理

模反元素

如果兩個正整數e和x互質,那麼一定可以找到整數d,使得 ed-1 被x整除。
那麼d就是e對於x的“模反元素”

RSA 數學原理

迪菲赫爾曼密匙交換原理

RSA 數學原理

那麼,通過一系列的數學轉換,最終得出了RSA演算法

RSA 數學原理
公鑰:e 和 n
私鑰:d 和 n
明文:m
密文:c
複製程式碼

說明:

  • n會非常大,長度一般為1024個二進位制位。(目前人類已經分解的最大整數,232個十進位制位,768個二進位制位)
  • 由於需要求出φ(n),所以根據歐函式特點,最簡單的方式n 由兩個質數相乘得到: 質數:p1、p2
    Φ(n) = (p1 -1) * (p2 – 1)
  • 最終由φ(n)得到e 和 d 。

總共生成6個數字:p1、p2、n、φ(n)、e、d

關於RSA的安全:

除了公鑰用到了n和e 其餘的4個數字是不公開的。
目前破解RSA得到d的方式如下:

  • 要想求出私鑰 d 。由於e*d = φ(n)*k + 1。要知道e和φ(n);
  • e是知道的,但是要得到 φ(n),必須知道p1 和 p2。
  • 由於 n=p1*p2。只有將n因數分解才能算出。

那麼RSA有優點和弊端是什麼了?

優點

  • 相對安全

缺點

  • 速度慢,耗時(因為,起內部原理是一系列的數學計算)
  • 加密資料量小

相關文章