【摘 要】RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,算法原理容易理解和對明文進行操作也比較方便。作為公開密鑰密碼體制的RSA算法,從提出到現(xiàn)在已近二十年,是被研究得最廣泛的公鑰算法,經(jīng)歷各種的考驗,被認為是目前最優(yōu)秀的公鑰方案之一。該算法的加密密鑰和加密算法分開,使得密鑰分配更為方便。RSA算法解決了大量網(wǎng)絡(luò)用戶密鑰管理的難題,能更好適應(yīng)計算機網(wǎng)絡(luò)環(huán)境,這是公鑰密碼系統(tǒng)相對于對稱密碼系統(tǒng)最突出的優(yōu)點。
【關(guān)鍵詞】RSA算法;加密算法;解密算法;公鑰密碼
一、密碼系統(tǒng)原理
密碼系統(tǒng)的工作過程是,發(fā)送方使用加密密鑰Ke和加密算法E對明文M進行加密,得到密文C=E(Ke,M),然后進行傳送密文C,接收方使用解密密鑰Kd(與加密密鑰Ke成對)和解密算法D對密文進行解密,得到原來的明文M=D(Kd,C)。對于不知道Kd的第三方,由密文C破解出明文M(解密),在實際操作上市很難的。公開密鑰密碼體制的加密密鑰Ke與解密密鑰Kd是不同的,只有解密密鑰是保密的,我們可以稱之為私人密鑰,而加密密鑰是完全公開的,我們可以稱之為公共密鑰,這樣的密碼系統(tǒng)就是我們要講道德非對稱密碼體制。由于我們只對私人密鑰保密,所以對于從加密密鑰破解出密鑰的過程必須設(shè)計足夠復(fù)雜,難以實現(xiàn)破解,這樣才可以保證我們的密碼體制是安全。使用RSA加密系統(tǒng),可以解決通用密鑰系統(tǒng)密鑰管理的問題,即對應(yīng)于各個使用者的加密密鑰(公共密鑰)是公開的,可以像我們使用的電話薄一樣,把它記錄在文件里面,文件保存在密鑰中心。各使用者只需要保存一個只有自己使用的解密密鑰(私人密鑰),這樣就很方便的解決了密鑰管理的問題,通過計算機網(wǎng)絡(luò),與其他用戶對象進行通信時,為了保密,就可以顯示出公開密鑰密碼體制的優(yōu)越性。例如:與A秘密通信時,可以使用A的公共密鑰Kea進行生成密文C=E(Kea,M),傳輸給A,A收到密文C以后,使用只有自己知道的私人密鑰Kda,通過RSA解密算法,計算出明文M=(Kda,C)。通過使用這樣的方式,可以與任何對象進行秘密通信。RSA算法作為最早公開密鑰密碼的代表是如何實現(xiàn)的?RSA算法的密碼體制安全是怎么體現(xiàn)的?我來看RSA算法的加密和解密原理。
二、RSA算法加密和解密原理
RSA算法是利用質(zhì)因數(shù)分解的困難性實現(xiàn)加密的一種的算法.在RSA算法中,分別使用兩個正整數(shù)作為加密密鑰和解密密鑰。
現(xiàn)在假設(shè)加密密鑰為e和n;解密密鑰為d和n,其中,e和n的值是公開的,而d的值是保密的。加密實現(xiàn):對文件進行加密時,首先將明文轉(zhuǎn)換成0到(n-1)之間的整數(shù)M,若明文比較長,可以進行適當?shù)姆指?,把分割的每個塊再進行轉(zhuǎn)換。從明文到密文的加密過程和從密文到明文的解密過程。RSA算法是使用下面的公式完成:加密:C=E(M)=Me mod n;解密:M=D?=Cd mod n;加密和解密公式的含義就是,求M的e次冪被n除得到余數(shù)和C的d次冪被n除得到余數(shù)。
1.加密密鑰和解密密鑰生成:
選定兩個充分大的素數(shù)p與q,其乘機為n,此處的素數(shù)p與q必須保密,獲取n的值:n=p*q;
2.解密密鑰d,可以通過公式gcd
(d,(p-1)*(q-1))=1獲取,d的選取是很容易的,例如,所有大于p和q的質(zhì)數(shù)都可用。即求出S=(p-1)*(q-1)的乘機,在找出與S互為質(zhì)數(shù)的數(shù)值,此值為解密密鑰(d,n)。
3.加密密鑰e,可以通過公式e*d=1mod
(p-1)*(q-1),即e與d的乘積以(p-1)*(q-1)作除數(shù)整除,余數(shù)等于1.這樣就可以得到加密密鑰(e,n)。
4.RSA加密原理實例演示:選定兩個的素數(shù)值,假設(shè)p=47,q=59,n=p*q=47×59=2773;
S=(p-1)*(q-1)=46×58=2668,任取一個與S互為質(zhì)數(shù)的整數(shù)157,獲得解密密鑰為(157,2773)求出滿足公式e×157=1(mod2668)的整數(shù),求得e=17,加密密鑰為(17,2773)從而可以得出:加密密鑰(公共密鑰):e=17,n=2773
解密密鑰(公共密鑰):e=17,n=277
三、明文加密演示
為了實現(xiàn)對明文進行加密,我還需要對字符進行編碼,可以按英文字母排列順序進行編碼,現(xiàn)在我們假設(shè)編碼分別為:空格鍵=00,A=01,B=02,C=03,…,Z=26?,F(xiàn)在有下列明文:ITS ALL GREEK TO ME,使用上述編碼方案寫出明文代碼,并按2個字符(4位數(shù)值)進行分組,結(jié)果為:0920 1900 0112 1200 0718 0505 1100 2015 0013 0500,按照上述給出的加密密鑰進行加密,對每一個4位數(shù)進行加密,按照上述的加密原理,對上述明文進行加密,獲取第一個4位數(shù)加密的密文:C=E(M)=Me mod n=(0920)17=0948mod 2773,即得到0920的密文是0948,使用同樣的方法依次對上面明文進行加密,得出的密文如下:0948 2342 1084 1444 2663 2390 0778 0774 0219 1655。密文傳送完成后,接收方如何進行解密呢?我們上述解密原理,根據(jù)上述給出的解密密鑰,可以按照公式M=D?=Cd mod n,然后再對每一個4位數(shù)進行解密,得到第一個4位數(shù)密文的明文:M=D?=Cd mod n=(0948)157=0920mod 2773,按照此法依次解密就可以得到原來的明文,從而可以完成明文加密和解密的過程。完成數(shù)據(jù)信息通過網(wǎng)絡(luò)傳輸,對數(shù)據(jù)信息提供安全保障,保護了電子商務(wù)安全交易安全。
四、RSA優(yōu)點和缺點
在RSA算法中,作為加密密鑰一部分的n是公開的,對n進行質(zhì)因數(shù)分解,就可以獲取p與q的值,從而破解出解密密鑰d,但是,當n的數(shù)值大到一定程度,從n分解質(zhì)因數(shù)獲取p與q的值,計算量很大。以至于不可以實現(xiàn)。實際操作時,對n的數(shù)值進行質(zhì)因數(shù)分解,我沒使用目前知道比較快速的算法(步數(shù)=exp{ln(n)*ln[ln(n)]}0.5)進行分解,所需要時間也很龐大,現(xiàn)在假設(shè)計算一步所需要時間為1μs,質(zhì)因數(shù)分解所需要的時間,見下表:
通過上面的表格可以看出,考慮到現(xiàn)在計算機速度快的因素,當n的數(shù)值達到200位時,依靠質(zhì)因數(shù)分解進行破解出p與q的值,是不可能的了,我們可以看出使用RSA密碼體制是非常安全的。RSA除了非常安全的優(yōu)點外,另外RSA算法進行操作十分簡單,可以將加密密鑰用電話簿的方式印出,如果某用戶想與另一用戶進行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發(fā)出即可。
在RSA算法的使用中也有一定的缺點,其表現(xiàn)為:
1.產(chǎn)生密鑰很麻煩,受質(zhì)數(shù)產(chǎn)生技術(shù)的限制,很難做到一次一密的效果。
2.速度太慢,由于RSA的分組長度太大,為保證安全性,n至少也要600bits以上,使運算代價很高,尤其是速度較慢,況且隨著大數(shù)分解技術(shù)的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標準化,因此,使用RSA只能加密少量數(shù)據(jù)。目前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048比特長的密鑰,其他實體使用1024比特的密鑰。
五、概述
公鑰加密算法中使用最廣的是RSA。RSA算法研制的最初理念與目標是努力使互聯(lián)網(wǎng)安全可靠,旨在解決DES算法秘密密鑰的利用公開信道傳輸分發(fā)的難題。而實際結(jié)果不但很好地解決了這個難題;還可利用RSA來完成對電文的數(shù)字簽名以抗對電文的否認與抵賴;同時還可以利用數(shù)字簽名較容易地發(fā)現(xiàn)攻擊者對電文的非法篡改,以保護數(shù)據(jù)信息的完整性。目前為止,很多種加密技術(shù)采用了RSA算法,該算法也已經(jīng)在互聯(lián)網(wǎng)的許多方面得以廣泛應(yīng)用,包括在安全接口層(SSL)標準,方面的應(yīng)用。此外,RSA加密系統(tǒng)還可應(yīng)用于智能IC卡和網(wǎng)絡(luò)安全產(chǎn)品。
參考文獻:
[1]曹衍龍,王杰.UML2.0基礎(chǔ)與RSA建模實例教程[M].人民郵電出版社,2011.
[2]段剛.加密與解密[M].電子工業(yè)出版社,2008(3).