在資訊安全的原則中,其中非常重要的一環,即為不可否認性(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,都具備以下幾點特性:
- 要計算出一段訊息的 message digest 不需花太多時間,因此演算法的設計上必須考量到效率
- 針對相同訊息進行計算,都會產生出相同結果
- 只有 message digest,是無法還原成原訊息,因此演算法的設計上必須是不可逆
- 不同的訊息所計算出來的 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 的架構下,加入可信任第三方的認證,以下用一張圖來表示:
大概描述一下整個流程:
- 發送者(Signer)將所要傳遞的資訊透過 hash function 加密以產生 message digest
- 發送者使用自己的 private key 將 message digest 加密,結果即為 digital signature
- 此時發送者將原始資訊與 digital signature 一起傳送給接收者
- 接收者使用相同的 hash function,計算出原始資訊的 message digest
- 接收者使用發送者的 public key 將 digital signature 解密,取出 message digest
- 比對兩個 message digest,若是相同,則表示資訊來源的確為原始發送者,並沒有被修改過
由上述的說明可知,透過 Digital Signature 的機制,除了可以達到資訊安全中的不可否認性(non-repudiation)外,還可以達到資訊完整性(integrity)的目的。
參考資料
沒有留言:
張貼留言