資訊與網路安全技術 第 七章 數位簽章與數位憑證  上一頁      下一頁

 

7-3 DSS 數位簽章

內容:

『數位簽章標準』(Digital Signature Standard, DSS是美國 NISTNational Institute Standard and Technique)於1994 年所制定的數位簽章標準,此標準制定了『數位簽章演算法』(Digital Signature Algorithm, DSA,並於 2000 年修改成 FIPS PUB 186-2,除了可以選用 RSA 演算法,還增加『橢圓曲線數位簽章演算法』(Elliptic Curve Digital Signature Algorithm, ECDSA)。本書限於篇幅,僅介紹 DSA 演算法;至於 ECDSA 演算法請參考其它文獻 [79, 89, 98]。在 DSS 標準上,也可分別選用不同的雜湊演算法,一般都建議使用 SHA-1 演算法(請參考 5-6 節介紹)。

7-3-1 DSA 演算法

『數位簽章演算法』(DSA僅供數位簽章使用,無法應用於其他地方,這一點與 RSA 演算法迥然不同,雖然 DSA 演算法不能使用於資料加密或交換鑰匙方面,但亦屬公開鑰匙演算法之一。圖 7-2 DSA 的運作流程;傳送端將訊息經過雜湊演算法(如 SHA-1)計算後得到一個雜湊碼,作為 DSA 函數的輸入值;除了輸入雜湊碼與發送者的私有鑰匙(KR)之外,還需要一個數值 k 與一個公開的公共鑰匙 KG;數值 k 供簽章用所產生的亂數,每次簽署的 k 值都不相同;公共鑰匙 KG 是一組通訊法則,由一些公開的參數所構成(容後介紹),並且是通訊雙方事先擁有。經過簽署函數計算後,得到一個由數值 s r 所構成的簽署碼(Sig(M)),並將它附加在訊息後面一起傳送給接收端;接收端收到訊息之後,以同樣的雜湊函數計算出雜湊值(H’),同時將簽署碼(Sig(M) = {s, r})、公共鑰匙(KG)、以及發送者的公開鑰匙(KU),使用驗證函數計算出發送端的雜湊值(M);比較兩個雜湊值(H H’)是否相同,相同表示確認成功(簽章與訊息相符);否則可能訊息遭竄改或簽章鑰匙不對(訊息來源有問題)。

7-2 DSA 演算法的運作流程

上述不難發現 DSA 的製作方式與 RSA 確有所不同。DSA 必須公佈一個運算規則 KG(或稱公共鑰匙),它是由一組參數所構成,簽署與驗證時都必須使用到它;另外,簽署時還使用一個隨機亂數 k,它是被隱藏於簽署碼(Sig(M) = {s, r})之內,以增加演算法的複雜度。

7-3-2 DSA 安全性考量

DSA 演算法是 ElGamal [59] 編碼系統的修正版,因為 ElGamal 是採用極複雜之離散對數的計算方法,倘若想藉由數學推導來破解它,時至今日尚未發現較有效的方法,因此唯有仰賴老方法:暴力攻擊法與生日攻擊法。如同 RSA 演算法一樣,應付這兩種攻擊法,即是增加鑰匙的長度或增加簽署碼的長度。一般情況,使用期間較短的簽署,大多使用 1024 個位元長度即可;但對於使用期間較長的簽署,可需要 2048 位元以上才算安全。另一種對策,便是減少簽署文件,或使用多把鑰匙分別簽署不同的文件,如此所產生訊息與簽署配對的數目就會減少,破解者不易從既有的訊息來破解;這種概念與傳統的『印章』非常類似,如常使用某一印章來發送文件,則被仿造的機會就會越大。

主講人:粘添壽博士

 

資訊與網路安全技術