RSA公鑰祕鑰演算法
阿新 • • 發佈:2018-12-17
RSA公鑰金鑰演算法總結
RSA演算法既能用於資料加密也能用於數字簽名,它是素數的典型應用。
RSA是什麼?
計算機的加密技術分為對稱加密和非對稱加密兩類。在對稱加密中,資訊的加解密使用同一祕鑰key,其可簡化加解密的過程,較為簡單,但不足之處在於由於加解密使用同一個key,資訊傳送雙方都要接觸這個key,金鑰key更容易洩露。在公開金鑰加密即非對稱加密中,金鑰分為公鑰PK(傳送方通過PK對資料加密,然後傳送給接收方,PK可公開),私鑰SK(SK解密方儲存,接收方通過SK對密文解密,SK不公開)。RSA公鑰密碼體制是最具代表性的非對稱加密方式。
RSA演算法原理
RSA定理:若P和Q是兩個相異質數,另有正整數D和E,其中E的值與
(P-1)(Q-1)的值互質,並使得DE%(P-1)(Q-1)=1,有正整數M,且M<PQ,設:
C=ME %PQ,B=CD%PQ,則有M=B。
- 生成公鑰和金鑰
- 隨意選擇兩個大的素數P和Q,且P不等於Q
- 令N=PQ
- 令T=(P-1)(Q-1)
- 選擇一個整數E,作為一個金鑰,使E與T互質(即E與T的最大公約數為1),且E必須小於T
- 由公式DE%T=1,計算得到D的值,作為另一金鑰
- 將(N,E)作為公鑰,(N,D)作為私鑰,當然也可互換。
- 用公鑰加密資訊
傳送方收到公鑰(N,E)後,通過公鑰對資料進行加密,操作如下:- 明文:M
- 加密:ME%N=C
- 密文:C
- 用私鑰解密資訊
接收方收到密文C後,通過私鑰(N,D)進行解密,得到明文M,操作如下:- 密文:C
- 解密:CD%N=M
- 明文:M
RSA演算法模擬
為了計算方便,選取較小素數
- 生成公鑰和金鑰
- 取P=11,Q=13
- 令N=PQ=11*13=143
- 令T=(P-1)(Q-1)=10*12=120
- 取E=7
- 由公式DE%T=1,D*7%120=1得:D=103
- (143,103)作為公鑰,將(143,7)作為私鑰。
- 用公鑰加密資訊
- 明文:取M=2
- 加密:ME%N=C,2103%143=63
- 密文:C=63
- 用私鑰解密資訊
- 密文:C=63
- 解密:CD%N=M,637%143=2
- 明文:M=2
RSA的應用:數字簽名
數字簽名是實現安全的核心技術之一,它的實現基礎就是RSA加密技術,它是RSA的典型應用。
以往的書信或檔案是通過親筆簽名或印章證明其真實性的,但在計算機網路中,要解決報文的驗證問題,就要使用數字簽名,其必須保證以下幾點:
- 接受者能夠核實傳送者對報文的簽名
- 傳送者事後不能抵賴對報文的簽名
- 接受者不能偽造對報文的簽名
在現有的多種實現數字簽名的方法中,採用公開祕鑰演算法比常規演算法更容易實現。
採用RSA實現數字簽名的過程:
傳送者A用其私鑰SKA對報文M進行運算,將結果DSKA(M)傳送給接受者B。
接受者B用已知的A的公鑰得出EPKA(DSKA(M))=M。
因為除了A沒人有A的私鑰SKA,所以除了A沒有人能產生密文DSKA(M),這樣,報文M就被簽名了。用私鑰加密的報文發給對方,對方只能用持有的公鑰解密,這樣就實現了核實傳送者對報文的報文的簽名。
如果傳送者A要抵賴曾經發送過報文M給使用者B,則使用者B可將M和DSKA(M)出示給第三方監管機構,第三方很容易用公鑰PKA去證實A確實傳送報文M給使用者B。反之,若使用者B將M偽造為M’,則使用者B就不能在第三方面前出示DSKA(M’),這樣就證明了使用者B偽造了對報文M的簽名。由此,可看出,實現數字簽名的同時也實現了對報文來源的鑑別。
RSA演算法的缺點
再強的加密演算法,也有被破解的一天。RSA演算法是被研究得最廣泛的公鑰演算法,從提出到現在經歷了各種攻擊,被普遍認為是目前最優秀的公鑰方案之一。
RSA的缺點主要有兩點:
- 產生金鑰很麻煩,由於素數產生技術的限制,難以做到一次一密。
- 分組長度太大,為保證安全性,N至少要600bit二進位制位以上,運算代價高,速度慢。RSA演算法的安全性依賴於大數分解,對於一個大數N,沒有有效的方法能夠將其分解,從而在已知(N,D)的情況下,無法獲得E,同樣在已知(N,E)的情況下無法求得D。目前,SET協議中要求CA採用2048bit二進位制位長的金鑰,其他實體使用1024位元的金鑰。現在小於1024位元的N已被證明是不安全的,因此不應使用小於1024位元的RSA,最好使用2048位的N。