第二章、 文獻探討
2.5 應用橢圓曲線於數位簽章與 Diffie-Hellman 金鑰交換機制
2.5.4 橢圓曲線數位簽章演算法(ECDSA)
訊息摘要主要是用以擷取一數位資訊之特徵,目前是採用密碼學中單向雜湊 演算法 (One-way hash algorithm),如MD5 與SHA-1 等演算法,來產生安全訊息 摘要,用以產生資料之“數位指紋(Digital fingerprints)”,常常配合數位簽章使用,
以達成資料之完整性。
數位簽章(digital signature)是指使用數學演算法(或稱雜湊函數)將電子文件 轉化為固定長度之數位資料(訊息摘要),並用簽署者之私鑰對其加密形成一簽
體,使任何可藉未轉化前之原始資料訊息、簽體及私鑰相關連之公鑰,驗證該簽 體是否使用與簽章公鑰相對應之製作,以及簽製作後,原始資料訊息是遭受竄 改。數位簽章是指以「非對稱型」密碼技術製作的電子簽章。生常生活中,契約、
支票等書面資料必須以簽名蓋章,重要之數位資訊也有數位簽章的需求,而數位 簽章是伴隨著數位文件連帶產生的。當數位文件嵌入某人的簽名時,這份文件的 真實性和其簽名的真實性是要能夠被驗證出來的。數位簽章的法定效力將等於一 般的手簽名,使用數位簽署系統更得靠單向赫序函數才能抵抗各類演算法的攻 擊。
數位簽章是將訊息以單向雜湊演算法取得訊息摘要後再將此訊息摘要透過 使用者個人專屬之密鑰 (private key) 來加以作簽章處理,再發送給相關之接收 方,此處理後之資訊具有以下三項特性:
一、 第三者能以該使用者公鑰(Public key)驗證使用者之身份。
二、 接收方無法偽造或修改該簽章之相關資訊內容。
三、 簽章者不能於事後否認對該資訊之簽章。
下面描述橢圓曲線數位簽章演算法 (Elliptic Curve Digital Signature
Algorithm,ECDSA),在ECDSA[8][19][23][24] 相關標準ANSI X9.62(ANSI, 1998) 與FIPS 186-2(NIST, 2001)中提及對於訊息m 的數位簽章(r, s)產生步驟如下:
假設G是橢圓曲線系統基點且其級數為n,正整數d為簽署者的私密金鑰,而
Q = d․G則為簽署者的對應公開金鑰,h(m)為訊息m的雜湊函數值。在ECDSA標
準中,對應於訊息m的簽章(r, s)產生步驟如下:
1. 挑選一亂數 k, n – 1 ≧ k ≧ 1 2. 計算 k
․
G = (x1, y1) 且 r = x1mod n.如果 r = 0
,
則回到步驟1 3. 計算s = k-l{h(m) + dr} mod n 4. 如果s = 0,
則回到步驟1。
ECDSA 簽章檢驗的步驟如下:
1. 計算w = s-1mod n
2. 計算u1= h(m) w mod n 與 u2= r w mod n.
3. 計算u1
․
G + u2․
Q = (x0, y0) 與 v = x0 mod n.若且唯若v = r,則簽章正確。
ECDSA 簽章產生時至少須進行一次點乘法以及一些模算術,簽章檢驗時則 進行兩次點乘法以及一些模算術。表二為 RSA 與ECDSA 用於數位簽章的比 較,從表二可見相同安全性時,兩種演算法所產生出來的簽章長度差異甚大,這 將影響簽章傳遞的時間與儲存的空間。
表 5、
RSA 與 ECDSA 比較表演算法 RSA ECDSA
簽章長度 安全性2128:384 Bytes 安全性2192:960 Bytes 安全性2256:1920 Bytes
安全性2128:64 Bytes(質數體) 安全性2192:96 Bytes(質數體) 安全性2256:132 Bytes(質數體)
安全基礎 大數分解 橢圓曲線離散對數
優點 歷史悠久,容易說明亦可同 時用以加解密
計算速度快,簽章長度小,傳輸快 速
區點 數度慢,簽章長度較大 理論不易理解,實現技術較複雜