第二十一個知識點:CRT算法如何提高RSA的性能?


第二十一個知識點:CRT算法如何提高RSA的性能?

中國剩余定理(The Chinese Remainder Theorem,CRT)表明,如果我們有兩個等式\(x = a \mod N\)\(x = b \mod M\),那么\(x\)存在一個唯一一個\(\mod MN\)的解,當且僅當\(gcd(M,N)=1\).

在RSA中,我們可能會執行一個模冪在一個幾千個位的數字上[1].一般來說,公鑰加密要比對稱加密要慢.這種特性可能導致web服務器網絡變慢,而在實現過程中提高效率(軟件算法)對於避免性能問題起着至關重要的作用.

我們表示RSA方案中主要的加密操作就是模冪算法\(M= C^d \mod N\).模冪能夠用h-1次乘法和t-1次平方運算.(t是指數的長度,h是漢明系數).平均來說需要的次數一共是\(t + t/2 -1\).

更多的性能提升需要二進制指數算法或者窗口方法.對於后者我們依次處理\(w\)位.對於這個方案我們仍然需要t次平方運算,但是乘法次數減少到\(t/w\).更多的性能提升能通過滑動窗口法得到進一步改進.

為了讓RSA指數算法更快,我們能夠執行一些額外的小技巧,當我們加密或者解密RSA的時候.CRT被用於這種情況.因此我們首先考慮一個私鑰操作,這意味着我們能夠獲得私鑰,因此獲得了\(N\)的分解數\(N = pq\).如果我們假設我們解密一個消息,那么我們的目標就是計算\(M = C^d \mod N\).

首先我們要計算\(M \mod p\)\(M \mod q\):

\[M_p = C^d \mod p = C^{d \mod {p-1}} \mod q \]

\[M_q = C^d \mod q = C^{d \mod p-1} \mod q \]

這個計算需要兩個512模,512冪的運算,因為p, q都是512bit的.這會比1024,1024的快的多.

使用找CRT我們能恢復\(M\),通過使用\(M_p,M_q\).

計算\(T = p^{-1} \mod q\),然后保存下來.

M能夠通過\(M_p\)\(M_q\)用下面的辦法恢復.

\(U = (M_q-M_p)*T \mod q\)

\(M = M_p + u*p\)

[1] http://www.cs.bris.ac.uk/~nigel/Crypto_Book/book.ps (Chapter 15)

good for write down

下面是說的比較好的CRT方法:

https://www.di-mgt.com.au/crt_rsa.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM