數字簽名

買賣虛擬貨幣

公開金鑰加密技術有兩大應用,之前已經聊了一個,就是加密通訊,本文來聊另外一個:數字簽名。數字簽名的基本作用跟現實世界的紙筆形式的簽名有什麼相同點和不同點,數字簽名的基本原理和流程又是什麼呢?

基本原理

先說數字簽名的基本原理。數字簽名過程跟加密通訊有著一定的對稱性,這種對稱有著一種邏輯上的美。

加密通訊是用公鑰進行加密,而用私鑰進行解密。而數字簽名剛好相反,是採用私鑰加密,公鑰解密。對於加密通訊,公鑰加密過程就是透過加密演算法把資訊加密成密文,私鑰解密過程就是透過解密演算法解密密文。而對於數字簽名,私鑰加密過程是透過簽名演算法來生成數字簽名的過程,而公鑰解密過程是透過驗證演算法來確定數字簽名是不是有私鑰持有者簽署的。可以看到,加密演算法,解密演算法,簽名演算法,驗證演算法,對稱性是很明顯的。

數字簽名的主要的作用是認證簽署人身份,說得具體點,就是讓所有人能夠確認這個數字簽名是不是由私鑰的持有人建立的。數字簽名是由簽名演算法去生成的,簽名演算法的輸入有兩個,一個是私鑰,另一個是被簽署的資訊,輸出的一個字串就是數字簽名了。簽名到底是不是由私鑰持有人簽署的,要透過驗證演算法判斷。驗證演算法有三個輸入,一個是資訊本身,另外一個是數字簽名,第三個是公鑰,輸出的結果就是驗證成功或者驗證失敗。數字簽名過程中,私鑰是“簽名 key”,公鑰是“驗證 key”。

所以說數字簽名的原理是非常清晰的,因為數字簽名本身跟加密通訊形成一個對稱關係,而數字簽名自己的簽名過程跟驗證過程,也是個對稱關係。把握這種對稱性,就比較容易記住基本原理了。

基本流程

靜態的基本原理懂了,咱們再來從時間維度看看數字簽名動態流程。

Alice 要簽署一個檔案,於是她就拿出自己的私鑰,執行簽名演算法,得到數字簽名。那麼其他人如何去驗證這個數字簽名的確出自 Alice 呢?首先,Alice 要把自己的公鑰放到一個大家都可以訪問到的伺服器上,這樣其他人都可以獲得 Alice 的公鑰,大家把檔案,數字簽名以及公鑰下載到自己的計算機上,呼叫驗證演算法,就可以判斷這個檔案是不是 Alice 簽署的了。不管是簽名演算法還是驗證演算法都是全球公開的,每個人都可以在自己的計算機上安裝軟體來執行這兩個演算法。

這就是一個 Alice 簽署檔案,其他人驗證簽名的完整過程了。這個過程中有一點要注意,就是簽名本身是不會加密檔案本身的。在底層,簽名過程其實是加密了檔案的雜湊值,總之簽名的目的不在於加密檔案資訊,而在於生成數字簽名。

實際作用

最後來聊聊數字簽名的作用。數字簽名有三大作用,第一個是認證,第二個是防止抵賴,第三個是保證檔案完整性,也就是沒有被篡改過。

先看第一個認證,意思就是確認簽署人身份,這個跟紙筆簽名的作用是一致的。再看第二個防止抵賴,同樣是紙筆簽名也擁有的特性,一份合同簽署了,就要承擔責任,白紙黑字,不能耍賴。第三個作用是保證檔案沒有被篡改過,這個作用紙筆簽名很難保證,比如簽名只簽署了最後一頁,那麼如果有人想悄悄換掉了前幾頁的內容,簽名本身是阻止不了的。但是數字簽名就可以,因為數字簽名是由兩個輸入運算得出的,一個是私鑰,另一個就是檔案,所以如果在驗證過程中,發現檔案有改動,驗證會失敗。這個很類似於現實世界籤合同的時候,有時候需要故意用簽名或者圖章覆蓋有文字的區域,或者在寫信的時候,給信封加上蠟封,這些措施也都是為了防篡改。

這就是數字簽名的三大作用,主要用在各種防偽造場合,在世界上很多國家,數字簽名都是有法律效力的。另外要注意,數字簽名屬於電子簽名的一種,但並不是所有的電子簽名都是數字簽名,這兩個概念要區分一下。

總結

關於數字簽名,本節就聊這麼多。數字簽名是公鑰加密技術的兩大應用之一。主要採用了私鑰加密,公鑰解密的方式,檔案簽署者用私鑰簽署檔案,就表示他認可了這個檔案的內容。要驗證數字簽名,只需要簽名人公佈自己的公鑰即可,其他人透過驗證數字簽名即可驗證檔案是私鑰簽署的。簽署人不需要暴露自己的私鑰,就可以間接證明自己擁有私鑰。除了認證簽署人身份,數字簽名還有兩個作用,分別是防止抵賴和保證檔案完整性。

參考:

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;