2008年1月18日 星期五

Digital Signature (數位簽章)

簡介

在資訊安全的原則中,其中非常重要的一環,即為不可否認性(non-repudiation),假設在正常情況下,A 傳訊息給 B,之後就不能否認曾經傳過訊息,此即為不可否認性。

但這應該如何做到呢? 答案就是 Digital Signature(數位簽章)

Digital Signature 的使用情境大概如下:

假設 A 要傳訊息給 B,但是 B 要如何確認訊息真的是由 A 發送的呢?

此時只要 A 在發送前利用自己的 private key 將訊息加密,再傳給 B,B 再利用 A 的 public key 進行解密。

如果訊息可以正確解密,就可以確定訊息是由 A 所發出;即使訊息在傳送過程中被 C 所攔截,再使用 A 的 public key 還原成原本的訊息,還是沒辦法偽裝成 A 所發送的訊息(因為這需要 A 的 private key)。

因此,Digital Signature 的主要作用即是在確定不否可定性(non-repudiation);而 Digital Signature 在實際應用上是很有意義的,因為這項技術代表了授權機制可以很容易建立起來。


Message Digest (訊息摘要)

在深入瞭解 Digital Signature 之前,必須先知道 Message Digest 為何。

顧名思義,Message Digest 即是一段訊息的摘要,類似於 fingerprint(指紋) 的概念;理論上,不同的訊息所產生出來的 message digest 都不會是相同的,因此可以用來驗證訊息在傳輸的過程中是否有被竄改過。

而 message digest 是如何產生的呢? 在目前的作法中,是以複雜的 hash function (雜湊函數) 所計算出來,以下來介紹 hash function ....


Hash Function (雜湊函數)

Hash Function(雜湊函數),在許多地方都可以見到其蹤影,目前常用的 hash function 有 MD5(Message-Digest algorithm 5)SHA(Secure Hash Algorithm)MAC(Message Authentication Code)HMAC(Hash-based Message Authentication Code) .... 等等。

不論是何種 hash function,都具備以下幾點特性:
  1. 要計算出一段訊息的 message digest 不需花太多時間,因此演算法的設計上必須考量到效率
  2. 針對相同訊息進行計算,都會產生出相同結果
  3. 只有 message digest,是無法還原成原訊息,因此演算法的設計上必須是不可逆
  4. 不同的訊息所計算出來的 message digest 必須是不同的

一般來說,上面的四種演算法都具備了上述幾種特性。但還是有一些是必須注意的....

MD5 所計算出來的 message digest 長度為 128 bits,因此表示不同的訊息還是有 1/(2^128) 的可能性發生重複。

SHA 所計算出來的 message digest 長度為 160 bits,強度更甚 MD5,但不同的訊息還是有 1/(2^160) 的可能性發生重複。

上述兩種演算法的發生重複性的機率已經算是極低,到了幾乎可以忽略的地步了,因此實際應用上常常都會遇見;此外,這兩種演算法計算 message digest,所需要的只需原訊息即可,不需要額外的資訊。

與 MD5 和 SHA 不同的是,MAC 與 HMAC 兩個則是需要多一支加密用的金鑰,因此其演算法的設計還是必須以密碼學的演算法為基礎,只是差別在於演算法的設計上不需考慮是否可逆(因為原本就是希望是不可逆的!)。

但使用 MAC 與 HMAC 的一個大問題還是出在金鑰(key),因為這兩種演算法都必須要有一支金鑰,因此永遠都會存在通訊雙方金鑰交換的問題。


Digital Signature 的實際應用

在實際應用上,為了確保 digital signature 的安全與可靠,一般會加上 RSA 非對稱式加密的機制,嚴謹一點就會在 PKI 的架構下,加入可信任第三方的認證,以下用一張圖來表示:
大概描述一下整個流程:
  1. 發送者(Signer)將所要傳遞的資訊透過 hash function 加密以產生 message digest
  2. 發送者使用自己的 private key 將 message digest 加密,結果即為 digital signature
  3. 此時發送者將原始資訊與 digital signature 一起傳送給接收者
  4. 接收者使用相同的 hash function,計算出原始資訊的 message digest
  5. 接收者使用發送者的 public key 將 digital signature 解密,取出 message digest
  6. 比對兩個 message digest,若是相同,則表示資訊來源的確為原始發送者,並沒有被修改過

由上述的說明可知,透過 Digital Signature 的機制,除了可以達到資訊安全中的不可否認性(non-repudiation)外,還可以達到資訊完整性(integrity)的目的。


參考資料
  1. Message Digest
  2. What is a message digest?
  3. TWCA 台灣網路認證 - 訊息摘要(Message Digest)
  4. Digital Signature
  5. 數位簽章是什麼?
  6. 資料加密
  7. 網路認證機制相關說明Q&A

沒有留言:

張貼留言