程序中數字簽名的鑒別和使用方法

2016-08-23 1657 4 編輯:深色多郎 來源:程序書籍

書信或文件是根據親筆簽名或印章來證明其真實性。但在計算機網絡中傳送的文電又如何蓋章呢?這就要使用數字簽名。數字簽名必須保證能夠實現以下三點功能:

(1)接受者能夠核實發送者對報文的簽名。也就是說,接收者能夠確信該報文的確實發送者發送的。其他人無法偽造對報文的簽名。這就叫做報文鑒別。

(2)接收者確信所收到的數據和發送者發送的完全一樣而沒有被篡改過。這就叫做報文的完整性。

(3)發送者事后不能抵賴對報文的簽名。這就叫做不可否認。

現在已有多種實現數字簽名的方法。但采用公鑰算法要比采用對稱密鑰算法更容易實現。下面就來介紹這種數字簽名。

為了進行簽名,A用其私鑰SKA對報文X進行D運算。D運算本來叫做解密運算。還沒有加密怎么就進行解密呢?這并沒有關系。因為D運算只是得到了某種不可讀的密文。我們寫上的是“D運算”而不寫上“解密運算”就是為了避免產生這種誤解。A把經過D運算得到的密文傳送給B。B為了核實簽名,用A的公鑰進行E運算,還原出明文X。請注意,任何人用A的公鑰PK進行E運算后都可以得出A發送的明文。可見D運算和E運算都不是為了解密和加密,而是為了進行簽名和核實簽名。

下面討論一下數字簽名為什么具有上述的三點功能。

因為除A外沒有被人持有A的私鑰SKA,所以除A外沒有別人能產生密文DSKA(X)。這樣,B就相信報文X是A簽名發送的。這就是報文鑒別的功能。同理,其他人如果篡改過報文,但并無法得到A的私鑰SKA來對X進行加密。B對篡改過的報文進行解密后,將會得出不可讀的明文,就知道收到的報文被篡改過。這樣就保證報文完整性的功能。若A要抵賴曾發送報文給B,B可把X及DSKA(X)出示給進行公證的第三者。第三者很容易用PKA去證實A確實發送X給B。這就是不可否認的功能。這里的關鍵都是沒有其他人能夠持有A的私鑰SKA。

數字簽名

但上述過程僅對報文進行了簽名。對報文X本身卻未保密。因為截獲到密文DSKA(X)并知道發送者身份的任何人,通過查閱手冊即可獲得發送者的公鑰PKA,因而能知道報文的內容。若采用下圖所示方法,則可同時實現秘密通信和數字簽名。圖中SKA和SKB分別為A和B的私鑰,而PKA和PKB分別為A和B的公鑰。

本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
我們猜你喜歡
七星彩头尾