以下内容摘自筆者編著的《網管員必讀——網絡安全》(第2版)。
9.5.3 數字簽名原理
數字簽名是一種確定資料完整性和原始性的方法。數字簽名可以提供有力的證據,表明自從資料被簽名以來資料尚未發生更改,并且它可以确認對資料簽名的人或實體的身份。數字簽名實作了“完整性”和“認可性”這兩項重要的安全功能,而這是實施安全電子商務的基本要求。
當資料以明文或未加密形式分發時,通常使用數字簽名。在這種情況下,由于消息本身的敏感性無法保證加密,是以必須確定資料仍然保持其原來的格式,并且不是由冒名者發送的。因為在分布式計算環境中,網絡上具有适當通路權的任何人,無論是否被授權都可以很容易讀取或改變明文文本。
數字簽名主要是為了證明發件人身份,就像我們來看到的某檔案簽名一樣。但現在要說的簽名是采取電子數字簽名的方式。這種簽名還可以防止别人仿簽,因為經過加密過的簽名會變得面目全非,别人根本不可能看到真正的簽名樣子。在第9.5.2節介紹了在檔案傳輸和郵件發送中利用檔案加密方式來阻止非法使用者打開的原理,其實僅用了檔案加密方式還不足以保證郵件傳輸的真正安全,因為郵件内容還可能被非法使用者替換,盡管這些非法使用者不能檢視原郵件中的真正内容。這就涉及到如何確定自己收到的郵件就是自己希望的使用者發來的問題了,此時就需要用到數字簽名技術。但是在郵件傳輸中,通常又不是單獨使用檔案加密或者數字簽名,而是一起結合起來使用,它們兩者一起作用就可取到非常好的安全保護了。下面仍以第9.5.2節執行個體為例進行介紹,不同的隻是在此封郵件發送中同時采用了檔案加密和數字簽名,實施雙重保護。具體步驟如下。
n Alice與Bob互換公鑰。
n Alice用自己的私鑰對TXT檔案進行數字簽名。
n Alice用Bob的公鑰對TXT檔案進行加密。
n Alice把經過數字簽名和加密的檔案TXT,通過郵件或其他傳輸途徑,如QQ、MSN等)傳給Bob。
n Bob在收到簽名并加密的郵件後首先用Bob自己的私鑰進行檔案加密的解密,然後再用Alice的公鑰進行數字簽名解密。
同樣,在這個過程中Cinda也可以擷取Bob、Alice的公鑰和簽名并加密的标書檔案TXT。同時因無Bob的私鑰而無法打開郵件。同時由于Alice在發送檔案前已用自己的私鑰進行了數字簽名,是以當Bob在收到郵件後完全可以證明自己收到的就是Alice發來的郵件,而不可能是其他使用者的。試想如果Cinda非法使用者想要改變郵件,冒充Alice向Bob發送郵件,因Cinda沒有Alice的私鑰,是以在用其他使用者的私鑰進行數字簽名時就不可能再以Alice的公鑰來解密數字簽名了。
在這裡要注意檔案加密和數字簽名的先後順序,一定是先簽名再加密,這樣加密技術就可以同時保證郵件中的數字簽名了。如果先加密,而後簽名,非法使用者在得到郵件後就可通過擷取的公鑰破解數字簽名了,因為公鑰是可以公開的,很容易被一些别有用心的人得到。數字簽名破解後很可能簽名被替換。當然郵件中的内容在沒有收件人私鑰的情況下還是無法打開的。 |
以上介紹的是利用公鑰和私鑰進行檔案加密和數字簽名的原理,其實在實際應用中,這些公鑰和私鑰使用者是不用具體關心它們的組成,而是由證書頒發機構或者軟體自己生成。就拿公鑰來說吧,那麼長的代碼,看起來都怕,而且随着密鑰位置的增加,代碼長度也随之增加,當然破解難度也将增加,也就越安全。但在一定程度上對使用有一些影響。