古詩詞大全網 - 個性簽名 - 數字簽名

數字簽名

0、引言

隨著信息時代的到來,人們希望能通過網絡信息傳輸對文

件、契約、合同、信件和賬單等進行數字簽名來代替以往的手寫

簽名。數字簽名的目的是提供壹種手段,使得壹個實體把他的身

份與某個信息捆綁在壹起。壹個消息的數字簽名實際上是壹個

數,它僅僅依賴於簽名者知道的某個秘密,也依賴於被簽名信息

本身。所以,將數字簽名看成是壹種證明簽名者身份和所簽署內

容真實性的壹段信息。

1、RSA算法描述

RSA算法是Rivest,Shamir和Adleman於1977年提出的比

較完善的公鑰密碼系統。RSA算法是壹個既能用於加密又能用

於數字簽名的公開密鑰算法。RSA算法是基於這樣壹個數論事

實:將兩個大素數相乘十分容易,但是想分解它們的乘積卻是困

難的。

RSA公鑰加密的整個算法可以通過以下步驟來描述。

1)生成兩個大的素數p和q,p≠q;

2)計算n=p×q,!(n)(p-1)(q-1);

3)隨機選擇壹個整數(公開的加密密鑰),0<e<!(n),使得

gcd(e,!(n))=1;

4)計算滿足下列條件(保密的解密密鑰),ed=1mod!(n);

5)對明文的加密運算是:c=E(m)=memodn;

6)對密文的解密運算是:m=D(c)=cdmodn。

此時公開(e,n)作為加密密鑰E,自己保密(d,n)作為解密密鑰

D。隱藏p和q。

2、RSA的保密性

假設用戶A獲得了壹對密鑰變換(EA、DA),其中EA是可以

公布於眾的加密密鑰,DA是由用戶A自行秘密保管的解密密

鑰。當用戶B要向用戶A發送消息M時,B只需要找到EA,用它

對消息M進行加密,C=EA(M),然後把密文C在公***信道上傳

送給A。當A收到密文C後,就用A秘密保管的解密密鑰DA解

密,DA(C)=DA(EA(M))=M,恢復出明文M。利用上述加密解密

過程可使用戶A和B之間達到保密傳輸。因為即使有竊聽者獲

得了密文C,但是他沒有解密密鑰DA,所以不能恢復出明文M

例如:

如果用戶A取p=7,q=71則n=pq=3337,!(n)(p-1)(q-1)=46×

70=3220隨機選取加密密鑰e=79,則d=79-1。公開e和n,將d保

密,隱藏p和q。設用戶B要發給A的信息為m=688,用戶B對m

進行如下加密:c=68879mod3337=1570然後將密文c發給用戶A

用戶A則利用保密的解密密鑰進行如下解密:15701019mod3337=

688=m。

雖然這解決了用戶A和B之間的保密傳輸,但是並沒有解

決可靠性,當A收到密文C時,並不能確定密文C就是用戶B

發來得。因為主動攻擊的擾亂者也是知道用戶A的加密密鑰的

因此擾亂者可以冒充B發壹條假消息給A,這時A是無法判斷

該消息是否B發來的。這個問題可以利用數字簽名來解決。

3、RSA數字簽名方案

3.1公鑰加密體制的數字簽名原理

其原理是:用戶B用妳的私鑰來"加密"壹組信息,用戶A用公鑰來解密,如果"解密"成功,說明這組信息就是用戶B加密

的,用戶B無法否認這個事實,這就是數字簽名。

假設用戶B獲得了壹對密鑰變換(EB、DB),其中EB是可以公

布於眾的加密密鑰,DB是由用戶B自行秘密保管的解密密鑰。

當用戶B要向用戶A發送消息M時,如果用戶B首先用自己保

管的解密密鑰DB作變換,C'=DB(M),然後把C'傳送給A,當A

收到密文C'後,可以用B的公開密鑰EB作逆變換,EB(C')=EB

(DB(M))=M,恢復出原始信息M。這樣A就可以判斷該消息壹

定是B發來的,因為只有B才知道秘密密鑰DB,除B外,任何

人都不能仿造信息C',因此C'可以作為用戶B的數字簽名,A可

以通過EB來驗證B的合法性,B對消息C'的確定性也是無法否

認的。這樣的應用只解決了消息的可靠性,可以防止第三者插

入、偽造和篡改消息,但是並不能解決消息M的保密性,因為除

了A以外,其他人也能收到,並恢復消息M。

3.2保密性和可靠性的解決方案

為了同時解決信息的保密性和可靠性這兩個問題,我們可

以對消息作如下處理:

用戶A和B分別獲得了各自的密鑰對(EA、DA)和(EB、DB),

如果B要向A發送壹條消息M,則可以先把消息M用B的秘

密密鑰DB處理,再用A的公開密鑰EA加密,即C=EA(DB(M)),

然後把C發送給A,A收到信息C後,先用自己的秘密密鑰DA

解C,再用B的公開密鑰EB恢復,即

EB(DA(C))=EB(DA(EA(DB(M))))=EB(DB(M))=M。

把這兩種方法如此地結合起來,用於加密信息,這樣就可以

到達人們預期的目的。使公***信道上傳輸的信息,即具有保密

性,有具有可靠性,即可以防止第三者的被動竊取,又可以防止

第三者的主動破壞,同時還具有認可和公證的能力。

4、RSA安全性分析

RSA的安全性依賴於大數分解的難度,目前因子分解速度

最快的算法,其時間復雜性為exp(sqrt(n)1n1n(n))。若和為100位

的十進制數,這樣為200位十進制數,按每秒107次運算的超高

速計算機,也要108年才能破解。因此,在壹定有效期內,RSA數字

簽名是安全可靠的。2002年成功分解了158位的十進制數,故

選取的素數p和q應該是長度為100的十進制數(相當於332

位二進制數)。為了達到長期安全應該至少使用1024位。

RSA的安全性受到的最大威脅就是整數素因子分解技術的

發展,如果因素分解技術有了突破性發展,那麽RSA的破解將會

變得非常簡單,可以直接計算出私鑰。

5、結束語

數字簽名有很多實現方法,目前廣泛應用的主要有Hash簽

名,DSS簽名,RSA簽名,ElGamal簽名。其中RSA簽名是最流行

的壹種數字簽名算法,盡管數字簽名技術還不夠完善,如簽名後

的文件可能被接收者重復使用,公開密鑰加密算法的效率相當

低,不易用於長文件的加密等。我們可以把RSA算法與其他算

法(如DES算法)結合起來使用,既提高了他它的運行速度,又保

證了壹定的安全性。隨著Internet的快速發展及其算法的不斷改

進和完善,其應用領域會日益廣泛,有著廣闊的發展前景。