RSA趕上中國剩餘定理

1.Introduction

最近讀論文恰好用到了這個,以前只是有耳聞,沒有仔細研究過,這裏就好好捋一下,會逐步完善html

不過貌似CRT(中國剩餘定理)的實現更容易被攻擊算法

2. RSA: Overview

rsa算法描述以下:安全

  1. 選擇兩個大素數\(p、q\),計算\(N = p*q\)(最好保證N在2048bit以上,最新的研究工做已經能夠成功分解762bit的N)加密

  2. 計算\(\phi(N)=(p-1)*(q-1)\)spa

  3. 選擇一個\(e\)使得\(gcd(e, \phi(n)) == 1\),e因爲是做加密使用,故推薦使用小值,推薦使用三、65537(\(2^{16}+1\)),65537只有兩個1bit,因此在冪運算(參加個人另外一篇博客:快速指數算法)時只須要兩次額外的乘法運算;此外,不須要擔憂使用固定值會形成的安全問題,RSA的安全性不會受影響htm

  4. 計算\(ed = 1 (\mod\phi(n))\),獲得\(d\)值用於解密blog

  5. 公鑰:(N, e),私鑰:(N, d)ip

  6. 一次RSA加解密:get

    \[c = m^e \mod N\\ m = d^d \mod N\\ \]

  7. 解釋:博客

    \(m = (m^e)^d = m^{1\mod\phi(N)}=m^{h*\phi(N)+1}\mod N\)

    由歐拉定理\(a^{\phi(n)}=1 \mod n\),獲得前式等價於

    \(1^h*m^1 = m\)

3. Using CRT

3.1 中國剩餘定理

描述起來比較麻煩,見中國剩餘定理,能夠把大模數變小模數

3.2 在RSA中使用CRT

RSA中計算耗時最大的地方是解密的\(c^d\)操做,因爲d值每每較大,故計算難度較高,可使用中國剩餘定理適當下降計算量。

計算私鑰

下面幾部分會被預計算並存入私鑰:

  • \(p、q\)
  • \(dp = d \mod {p-1}\)
  • \(dq = d \mod {q-1}\)
  • \(q_{inv} = q^{-1} \mod p\)

這樣最後的私鑰就是\((p,q,d,dp,dq,q_{inv})\)

解密

  • \(m_1 = c^{dp} \mod p\)
  • \(m_2 = c^{dq} \mod q\)
  • \(h = q_{inv}(m_1-m_2)\mod p\)
    • \(m_1<m_2\)時,有些實現會這樣計算\(h = q_{inv}[(m_1+\lceil{\frac{q}{p}}\rceil p)-m_2]\mod p\)
  • \(m = m_2+hq \mod {p*q}\)

這樣作雖然要計算兩次模冪,但效率依然要比直接計算高得多。由於無論是指數仍是模數都要小得多

4. 列幾個常見的算法庫

5 Reference

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息