RSA加密算法應用現(xiàn)狀及其在文件加密中的應用

RSA加密算法從提出到現(xiàn)在已三十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰加密方案之一。那么,我現(xiàn)在就給大家介紹一下RSA加密算法應用現(xiàn)狀及其在文件加密中的應用。

一、RSA加密算法介紹與應用現(xiàn)狀

1、RSA加密算法算法原理

假設明文分組為M,密文分組為C,RSA加密算法主要參數(shù)如下:

p,q為兩個素數(shù)(保密);令n?Tq;由歐拉定理可得φ(n)=(p—1)(q—1);選取c,使得gcd(φ(n),e)=1,1<e<φ(n):由dc=1modφ(n),計算d;這樣,(c,n)作為公鑰,(d,n)作為私鑰。使用公鑰對信息文件加密,使用私鑰解密。

加密算法:C=Memodn

解密算法:Cdmod n=(Mem0d nymod n- M_nod n-M)

RSA加密算法的安全性依賴于大數(shù)分解,但是否等同于大數(shù)分解一直未能得到理論上的證明,因為沒有證明破解RSA加密算法就一定需要作大數(shù)分解。運算中最費時的運算是模冪乘運算。

目前,RSA加密算法的一些變種算法已被證明等價于大數(shù)分解。不管怎樣,分解n是最顯然的攻擊方法,現(xiàn)在,人們已能分解多個十進制位的大素數(shù)。因此,模數(shù)n必須選大一些,因具體適用情況而定。由于進行的都是大數(shù)計算,使得RSA加密算法最快的情況也比DES慢,無論是軟件還是硬件實現(xiàn)。速度一直是RSA加密算法的缺陷,所以一般來說只用于少量數(shù)據(jù)文件加密。

2、RSA加密算法的缺點

1)產生密鑰很麻煩,受到素數(shù)產生技術的限制,因而難以做到一次一密。

2) RSA加密算法的安全性依賴于大數(shù)的因子分解,無法從理論上把握它的保密性能如何偽,并沒有從理論上證明破譯RSA加密算法的難度與大數(shù)分解難度等價。

3)速度太慢,由于RSA加密算法的分組長度太大,為保證安全性,n至少也要600 bits以上,使運算代價很高,尤其是速度較慢,較對稱加密算法慢幾個數(shù)量級:且隨著大數(shù)分解技術的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標準化。目前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048比特長的密鑰,其它實體使用1024比特的密鑰。

為了速度問題,目前人們廣泛使用私、公鑰密碼結合使用的方法。

優(yōu)缺點互補:私鑰密碼加密速度快,人們用它來加密較長的文件,然后用RSA加密算法來給文件密鑰加密,極好地解決了私鑰密碼的密鑰分發(fā)問題。

3、下面介紹RSA加密算法優(yōu)勢

1)解決大規(guī)模網(wǎng)絡應用中密鑰的分發(fā)和管理問題

采用分組密碼、序列密碼等對稱加密體制時,加解密雙方所用的密鑰都是秘密的,而且需要定期更換,新的密鑰總是要通過某種秘密渠道分配給使用方,在傳遞的過程中,稍有不慎,就容易泄露。

2)實現(xiàn)網(wǎng)絡中的數(shù)字簽名機制

對稱密鑰技術由于其自身的局限性,無法提供網(wǎng)絡中的數(shù)字簽名。這是因為數(shù)字簽名是網(wǎng)絡中表征人或機構的真實性的重要手段,數(shù)字簽名的數(shù)據(jù)需要有惟一性、私有性,而對稱密鑰技術中的密鑰至少需要在交互雙方之間共享,因此,不滿足惟一性、私有性,無法用做網(wǎng)絡中的數(shù)字簽名。

相比之下,公鑰加密技術由于存在一對公鑰和私鑰,私鑰可以表征惟一性和私有性,而且經私鑰加密的數(shù)據(jù)只能用與之對應的公鑰來驗證,其他人無法仿冒,所以,可以用作網(wǎng)絡中的數(shù)字簽名服務。

二、RSA加密算法在文件加密中的應用

1、文件加密使用RSA加密算法的可行性

通過前面的論述,不難看出RSA當今的應用多在于數(shù)字簽名和證書等方面。之所以只應用于這些短小數(shù)據(jù)的加密解密,是因為RSA加密算法加密極慢,速度是DES對稱密鑰加密速度的千分之一左右,正是因為這樣,把RSA應用于普通文件加密的想法一直被忽略,通常文件枝想象成大數(shù)據(jù)塊,但是實際上在日常應用中,有些極其重要的文本資科是并不太大的,比如因擔心遺忘而用普通文本記錄的銀行帳號和密碼、不應被陌生人知道的重要電話號碼、幾千字節(jié)大的重要小圖片等。

雖然RSA加密運算的速度十分慢,但是在PC性能越來越好的今天,對于幾千字節(jié)的數(shù)據(jù)進行一次幾百位密鑰的RSA加密,所消耗的時間應該是可以接受的。有專家建議,普通公司使用1024位的密鑰就可以保證資料的安全性,對于極其重要的信息,可以使用2048位的密鑰。對于日常臨時性的應用,768位的密鑰就可以滿足要求m。例如,在一臺配置為AMD Atbron2800+,外頻333MHZ,物理內存512MB的PC上測試實現(xiàn)的系統(tǒng),以560bit的n逐字節(jié)加密一個IKB大小的文件需要55秒。通常記錄如銀行帳號密碼等重要數(shù)據(jù)的文本文件大小不足百字節(jié),加密只需要數(shù)秒鐘。所以對于小型文件,進行較長密鑰的RSA加密是完全可行的。

其實從一個簡單的角度來說,既然RSA用于數(shù)字簽名可行,那就完全可以用于同樣大小的普通文件,對于較大的文件,如果分成與數(shù)字簽名同樣大小的段(這里假設數(shù)字簽名較短,不分段一次計算加密完成),分開的各段逐一進行加密運算,那所需要的時間也只是按文件大小線性的增長.通常數(shù)字簽名為幾十字節(jié),加密運算并不需要很長的等待,這就說明對于幾百字節(jié)或一兩K字節(jié)大小的文件來說,如果
進行RSA加密,并不會是非常漫長的工作.當然,如果文件更大,加密就顯得十分漫長了。比如按前面敘述的45毫秒大數(shù)運算程序推理,加密IM字節(jié)大小的文件需要約1天的時間。所以,要在普通PC用幾百位以上的長密鑰RSA加密算法加密文件,文件不能過大,一般可以接受的上限是幾KB,如果要在較短時間內加密大文件,需要縮短密鑰長度以減小運算,這將帶來安全性隱患。

2、文件加密使用RSA加密算法的意義

RSA加密算法表達方式簡單、保密性強、沒有密鑰管理的麻煩,并且具有數(shù)字簽名、認證和鑒別等功能,特別適合于現(xiàn)代保密通信的需要嗍。如前節(jié)所述,小型文件加密可以使用RSA加密算法。比如,因擔心遺忘而用普通文本記錄的銀行帳號和密碼、不應被陌生人知道的重要電話號碼、幾千字節(jié)大的重要小圖片等??尚械姆椒ㄎ幢厥潜匾?,下面我們將討論何種文件適合用非對稱密鑰加密,即RSA加密算法加密文件的意義所在。

對于前面敘述的帶有重要信息的小型文本和二進制數(shù)據(jù)的維護,①如果不加密,將無法放心的保存在計算機上,尤其是連同的或機房里的公共計算機,②如果借助功能強大的大型多用戶數(shù)據(jù)保護程序維護幾個小型文件,顯得十分煩瑣,好比殺雞用牛刀.@如果采用對稱密鑰加密,即加密解密的密鑰相同,只適合部分情況。在某些情況下,使用對稱密鑰加密文件,交流使用不夠方便。比如,張三由于某種原因,需要將自己的某個文件在公共計算機上留給李四,而不希望別人看到內容。如果采用對稱密鑰加密,張三和李四提前約好一個密碼就可以。但是如果張三想要在同一臺公共計算機上再留一個秘密文件給王五,而不希望別人看到,就要和王五另外約定一個密碼。如果需要在這臺公共計算機上留十個文件給不同的人,自己就要記和十個人約定好的密碼,這樣以來交流起來不夠方便,因為對于張三,要自己維護太多的密鑰,非對稱密鑰(公開密鑰方式)恰好解決這樣的問題。只要大家都在這臺計算機或這臺計算機可以訪問到的地方,留下自己的公開密鑰,一切就變的容易解決了。張三要留給李四的文件,就用李四的公開密鑰加密,要留給王五的文件,就用王五的公開密鑰加密。李四和王五只要把留給自己的文件用自己的私有密鑰解密,就可以得到留給自己的文件了,顯然,非對稱密鑰體制更適合多用戶交流,而將這種加密方式直接應用于文件加密,使我們在公開場合的交流更加靈活方便。

一種更實際的情況是,我們想通過Internet上的公眾論壇或郵件發(fā)送重要保密信息給某人。例如發(fā)送一個銀行帳號和密碼給某人.這種情況要保證安全,在當今互聯(lián)網(wǎng)絡上是比較棘手的。①如果用公眾論壇直接留言給指定用戶,論壇管理員和服務器管理員通常有方法看到數(shù)據(jù)。②如果發(fā)送郵件,雖然傳送過程是加密的,但是密碼畢竟是由郵件服務器維護,所以系統(tǒng)管理員通常也有辦法看到內容.問題的關鍵在于我們所有的數(shù)據(jù)包括密鑰保存在服務器之上。在這種情況下,我們需要使用公開密鑰方式,并自己維護私有密鑰。RSA加密算法文件加密可以靈活地解決這些問題。例如,我們可以將任意一個文件用某人的公開密鑰加密變換成一段可以復制粘貼的文本,然后粘貼在公眾互聯(lián)網(wǎng)上,對方只需把需要解密的文本復制保存成一個文本文件,在本地機用自己的私有密鑰解密即可.我們可以將自己的私有密鑰通過DES加密算法加密后保存在自己的移動磁盤上,使用的時候只要將其解密讀取即可,用完后立即從當前操作環(huán)境清除,這樣,我們自己維護自己的私有密鑰,利用簡單并且公開的方式,可以安全傳送任意小型數(shù)據(jù),包括一切二進制文件。

小知識之RSA公鑰加密算法

RSA公鑰加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發(fā)的。RSA取名來自開發(fā)他們三者的名字。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標準。RSA算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。