什麼是數位簽章?

什麼是數位簽章

數位簽章是用於驗證數位和資料真實性和完整性的加密機制。我們可以將其視為傳統手寫簽名方式的數位化版本,並且相比於簽字具有更高的複雜性和安全性。

簡而言之,我們可以將數位簽章理解為附加到消息或文檔中的代碼。在生成數位簽章之後,其可以作為證明消息從發送方到接收方的傳輸過程中沒有被篡改的證據。

雖然使用密碼學保護通信機密性的概念可以追溯到古代,但隨著公開金鑰密碼學(PKC)的發展,數位簽章方案在20世紀70年代才成為現實。因此,要瞭解數位簽章的工作原理,我們首先需要了解散列函數和公開金鑰加密的基礎知識。

散列函數

雜湊是數位簽章中的核心要素之一。雜湊值的運算過程是指將任意長度的資料轉換為固定長度。這是通過稱為散列函數的特殊運算實現的。經過散列函數運算而生成的值稱為雜湊值或消息摘要。

當雜湊值與加密演算法相結合,即使用加密散列函數的方法來生成散列值(摘要),該值可作為唯一的數位指紋。這意味著對於輸入資料(消息)的任何更改都會導致有完全不同的輸出值(散列值)。這就是加密散列函數被廣泛用於驗證數位和資料真實性的原因。

公開金鑰加密(PKC

公開金鑰加密或PKC是指使用一對金鑰的加密系統:公開金鑰和私密金鑰。這兩個金鑰在數學上是相關的,可用於資料加密和數位簽章。

作為一種加密工具,PKC相比於對稱加密具有更高的安全性。對稱加密系統依賴於相同的金鑰進行加密和解密資訊,但PKC則使用公開金鑰進行資料加密,並使用相應的私密金鑰進行資料解密。

除此之外,PKC還可以應用于生成數位簽章。本質上,該過程發送方使用自己的私密金鑰對消息(資料)的雜湊值進行加密。接下來,消息的接收者可以使用簽名者提供的公開金鑰來檢查該數位簽章是否有效。

在某些情況下,數位簽章本身可能包括了加密的過程,但並非總是這樣。例如,比特幣區塊鏈使用PKC和數位簽章,而並不像大多數人所認為的,這個過程中並沒有進行加密。從技術上講,比特幣又部署了所謂的橢圓曲線數位簽章演算法(ECDSA)來驗證交易。

數位簽章的工作原理

在加密貨幣的背景下,數位簽章系統通常包含三個基本流程:散列、簽名和驗證。

對資料進行散列

第一步是對消息或資料進行散列。通過散列演算法對資料進行運算,生成雜湊值(即消息摘要)來完成的。如上所述,消息的長度可能會有很大差異,但是當消息被散列後,它們的雜湊值都具有相同的長度。這是散列函數的最基本屬性。

但是,僅僅將消息進行散列並不是生成數位簽章的必要條件,因為也可以使用私密金鑰對沒有進行過散列的消息進行加密。但對於加密貨幣,消息是需要經過散列函數處理的,因為處理固定長度的雜湊值有助於加密貨幣的程式運行。

簽名

對資訊進行散列處理後,消息的寄件者需要對其消息進行簽名。這裡就用到了公開金鑰密碼學。有幾種類型的數位簽章演算法,每種演算法都有自己獨特的運行機制。本質上,都是使用私密金鑰對經過散列的消息(雜湊值)進行簽名,然後消息的接收者可以使用相應的公開金鑰(由簽名者提供)來檢查其有效性。

換句話說,如果在生成簽名時不使用私密金鑰,則消息的接收者將不能使用相應的公開金鑰來驗證其有效性。公開金鑰和私密金鑰都是由消息的發送者生成的,但僅將公開金鑰共用給接收者。

需要注意的是,數位簽章與每條消息的內容相關聯。因此,與手寫簽名所不同,每條消息的數位簽章都是不同的。

驗證

讓我們舉一個例子說明下整個過程,包括從開始直到最後一步的驗證。我們假設Alice向Bob發送一條消息、並將該消息進行散列得到雜湊值,然後將雜湊值與她的私密金鑰結合起來生成數位簽章。數位簽章將作為該消息的唯一數位指紋。

當Bob收到消息時,他可以使用Alice提供的公開金鑰來檢查數位簽章的有效性。這樣,Bob可以確定簽名是由Alice創建的,因為只有她擁有與該公開金鑰所對應的私密金鑰(至少這與我們所假設的一致)。

因此,Alice需要保管好私密金鑰至關重要。如果另一個人拿到了Alice的私密金鑰,他們就同樣可以創建數位簽章並偽裝成Alice。在比特幣的背景下,這意味著有人可以使用Alice的私密金鑰,並可在未經她知曉的情況下轉移或使用她的比特幣。

為什麼數位簽章很重要?

數位簽章通常用於實現以下三方面目標:資料完整性、身份驗證和不可否認性。

  • 資料完整性。Bob可以驗證Alice的消息是否發生了篡改。消息中的任何變動都會產生完全不同的數位簽章。
  • 真實性。只要Alice將其私密金鑰保管好,Bob就可以使用她的公開金鑰來確認數位簽章是由Alice本人所創建的,而非其他人所為。
  • 不可否認性。生成簽名後,Alice將來無法否認簽名該簽名,除非她的私密金鑰以某種方式洩露出去。

案例

數位簽章可以應用于各種數位文檔和證書。因此,他們有幾個應用程式。一些最常見的案例包括:

  • 資訊技術。增強互聯網通信系統的安全性。
  • 金融。數位簽章可以應用於審計、財務報告、貸款協定等等。
  • 法律。數位簽章可以應用于各種商業合同和法律協議,包括政府檔。
  • 衛生保健。數位簽章可以防止處方和醫療記錄的欺詐。
  • Blockchain。數位簽章方案確保只有加密貨幣的合法所有者才能簽署交易,並移動資金(只要他們的私密金鑰不受侵害)。

局限性

數位簽章方案面臨的主要挑戰主要局限於以下三方面因素:

  • 演算法。數位簽章方案中使用的演算法對品質要求很高。其中包括可靠的散列函數和加密系統的選擇。
  • 實施。如果演算法很完備,但卻沒有一個良好的實施方案,數位簽章系統也可能會出現隱患。
  • 私密金鑰。如果私密金鑰丟失或以某種方式洩露,則真實性和不可否認性將得不到保證。對於加密貨幣用戶而言,丟失私密金鑰可能會導致重大的財產損失。

電子簽名與數位簽章

簡而言之,數位簽章可以理解為是一種特定類型的電子簽名,特指使用電子化的方式簽署文檔和消息。因此,所有數位簽章都可認為是電子簽名,但反之並非如此。

它們之間的主要區別在於身份驗證方式。數位簽章需要部署加密系統,例如散列函數、公開金鑰加密和加密技術。

總結

散列函數和公開金鑰加密是數位簽章系統的核心,現已在各種案例中使用。如果實施得當,數位簽章可以提高安全性,確保完整性,便於對各類資料進行身份驗證。

在區塊鏈領域,數位簽章用於簽署和授權加密貨幣交易。它們對比特幣尤為重要,因為數位簽章能夠確保代幣只能由擁有相應私密金鑰的人使用。

雖然我們多年來一直使用電子和數位簽章,但仍有很大的發展空間。如今大部分的公文仍然還是基於紙質材料,但隨著更多的系統遷移到數位化中,我們還會看到更多的數位簽章方案。