RSA算法

一些數論的定理

徹底剩餘系(n個不一樣的剩餘類)

  • 剩餘系引理2: 若a , b, c爲任意3個整數,m爲正整數,且(m, c ) = 1, 則當ac ≡ bc (mod m) 時,有a ≡ b (mod m)
    • 簡單的證實:ac ≡ bc (mod m) 可得 ac – bc ≡ 0 (mod m) 可得 (a - b)c ≡ 0 (mod m) 由於m, c互質,c能夠約去,a – b ≡ 0 (mod m) 可得 a ≡ b(mod m)
  • 剩餘系引理7: m是一個整數,且m > 1,b是一個整數且(m, b) = 1。若是a1, a2, a3, a4, … am是模m的一個徹底剩餘系,則ba1, ba2, ba3, ba4, … bam也構成模m的一個徹底剩餘系
    • 簡單的證實:若是不是徹底剩餘系,則存在bai ≡ baj (mod m),因爲b和m互質 能夠得出ai ≡ aj (mod m) 矛盾

歐拉公式(小於等於n的正整數之中,與n構成互質關係的數量(包括1))

  • p爲質數 \varphi(p)=p-1
  • p爲質數\varphi(p^k)=p^k - p^{k-1}
  • p, q互質\varphi(pq)=\varphi(p)*\varphi(q)
    • 證實:
    • 由於GCD(km+r,m)=GCD(r, m) (gcd(a,b) = gcd(b,a mod b)),因此有\varphi(m)列是和m互質的
    • 根據剩餘系定理7得出每列有\varphi(n)和n是互質的
    • 得證

歐拉定律

消去律的證實 同 剩餘系引理2

模反元素

  • 若是兩個正整數a和n互質,那麼必定能夠找到整數b,使得 ab-1 被n整除,或者說ab被n除的餘數是1
  • a的 φ(n)-1 次方,就是a的模反元素

RSA

RSA公鑰加密體制

  • KeyGen(密鑰生成算法)
    • 選擇大素數p,q N=pq 計算歐拉函數 \varphi(N)=(p-1)(q-1)
    • 取e (1<e<N),計算e的模反元素d
    • 公鑰爲PK=(N, e),私鑰爲SK=(N, d)
  • Encrypt(加密算法)
    • CT=M^e \bmod N
  • Decrypt(解密算法)
    • M=CT^d \bmod N (CT^d=M^{ed}=M \bmod N)

例子:算法

  • 生成密鑰
    • p=61,q=53,n=p*q=3233,φ(n) = (p-1)(q-1)=3120
    • e選擇17,通常e會選擇65537
    • 計算e對於φ(n)的模反元素d:求解 ed - 1 = kφ(n) --> 17d + 3120y = 1
    • 根據擴展歐幾里得算法得出 (d,y)=(2753,-15)
    • n=3233,e=17,d=2753,因此公鑰就是 (3233,17),私鑰就是(3233, 2753)
  • 加密
    • 假設信息m=65
    • CT=65^{17} ≡ 2790 (mod 3233)
  • 解密
    • m=2790^{2753} ≡ 65 (mod 3233)

擴展歐幾里得算法計算d

破解私鑰

  (1)ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。函數

  (2)φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。加密

  (3)n=pq。只有將n因數分解,才能算出p和q。.net

私鑰解密的證實

證實: c^d ≡ m(mod\ n)3d

  • m^e = c(mod\ n)
  • c = m^e - kn
  • 證實等同於 (m^e - kn)^d ≡ m (mod\ n)
  • 證實等同於m^{ed} ≡ m (mod\ n)
  • 證實等同於m^{k*\varphi(n)+1} ≡ m (mod\ n)
  • m和n互質的話直接根據歐拉定律獲得,不互質時:
    • 因爲n等於質數p和q的乘積,因此m必然等於kp或kq,假設m = kp
    • (kp)^{q-1} ≡ 1 (mod\ q)
    • [(kp)^{q-1}]^{h(p-1)} × kp ≡ kp (mod\ q)
    • (kp)^{ed} ≡ kp (mod\ q)
    • (kp)^{ed} = tq + kp
    • t爲p的整數倍
    • (kp)^{ed} = t'pq + kp
    • (kp)^{ed} = t'n + kp
    • m^{ed} = m (mod\ n)

RSA簽名體制

  • KeyGen(密鑰生成算法)
    • 同加密體制可是生成的祕鑰通常不同
  • Sign(簽名算法)
    • \sigma = M^d \bmod N
  • Verify(驗證算法)
    • M'=\sigma^e \bmod N 比較M和M'一致則驗證成功
相關文章
相關標籤/搜索