數位簽章是用來驗證數位和資料真實性和完整性的加密機制。我們可以將其視為傳統手寫簽名方式的數位化版本,並且相比於簽字具有更高的複雜性和安全性。
簡而言之,我們可以將數位簽章理解為附加到訊息或文件中的程式碼。在產生數位簽章之後,其可以作為證明訊息從發送方到接收方的傳輸過程中沒有被竄改的證據。
雖然使用密碼學保護通訊機密性的概念可以追溯到古代,但隨著公鑰密碼學(PKC)的發展,數位簽章方案在20世紀70年代才成為現實。因此,要了解數位簽章的工作原理,我們首先需要了解散列函數和公鑰加密的基礎知識。
雜湊是數位簽章中的核心要素之一。哈希值的運算過程是指將任意長度的資料轉換為固定長度。這是透過稱為雜湊函數的特殊運算來實現的。經過雜湊函數運算而產生的值稱為雜湊值或訊息摘要。
當雜湊值與加密演算法結合,即使用加密雜湊函數的方法來產生雜湊值(摘要),該值可作為唯一的數位指紋。這意味著對於輸入資料(訊息)的任何變更都會導致有完全不同的輸出值(雜湊值)。這就是為什麼加密雜湊函數被廣泛用於驗證數字和資料真實性的原因。
公鑰加密或PKC是指使用一對金鑰的加密系統:公鑰和私鑰。這兩個密鑰在數學上是相關的,可用於資料加密和數位簽章。
作為一種加密工具,PKC相比於對稱加密具有更高的安全性。對稱加密系統依賴相同的金鑰進行加密和解密訊息,但PKC則使用公鑰進行資料加密,並使用相應的私鑰進行資料解密。
除此之外,PKC還可以應用於產生數位簽章。本質上,該過程發送者使用自己的私鑰對訊息(資料)的雜湊值進行加密。接下來,訊息的接收者可以使用簽署者提供的公鑰來檢查該數位簽章是否有效。
在某些情況下,數位簽章本身可能包含了加密的過程,但並非總是如此。例如,比特幣區塊鏈使用PKC和數位簽名,而不像大多數人所認為的,這個過程中並沒有進行加密。從技術上講,比特幣又部署了所謂的橢圓曲線數位簽章演算法(ECDSA)來驗證交易。
在加密貨幣的背景下,數位簽章系統通常包含三個基本流程:雜湊、簽章和驗證。
第一步是對訊息或資料進行散列。透過雜湊演算法對資料進行運算,產生哈希值(即訊息摘要)來完成的。如上所述,訊息的長度可能會有很大差異,但是當訊息被散列後,它們的雜湊值都具有相同的長度。這是散列函數的最基本屬性。
但是,僅僅將訊息進行雜湊並不是產生數位簽章的必要條件,因為也可以使用私鑰對沒有進行過散列的訊息進行加密。但對於加密貨幣,訊息是需要經過雜湊函數處理的,因為處理固定長度的雜湊值有助於加密貨幣的程式運作。
對訊息進行散列處理後,訊息的寄件者需要對其訊息進行簽名。這裡就用到了公鑰密碼學。有幾種類型的數位簽章演算法,每種演算法都有自己獨特的運作機制。本質上,都是使用私鑰對經過散列的訊息(哈希值)進行簽名,然後訊息的接收者可以使用相應的公鑰(由簽名者提供)來檢查其有效性。
換句話說,如果在產生簽章時不使用私鑰,則訊息的接收者將不能使用對應的公鑰來驗證其有效性。公鑰和私鑰都是由訊息的發送者產生的,但僅將公鑰共享給接收者。
需要注意的是,數位簽章與每個訊息的內容相關聯。因此,與手寫簽名所不同,每個訊息的數位簽名都是不同的。
讓我們舉一個例子說明下整個過程,包括從開始直到最後一步的驗證。我們假設Alice向Bob發送一則訊息、並將該訊息進行雜湊得到雜湊值,然後將雜湊值與她的私鑰結合產生數位簽章。數位簽名將作為該訊息的唯一數位指紋。
當Bob收到訊息時,他可以使用Alice提供的公鑰來檢查數位簽章的有效性。這樣,Bob可以確定簽名是由Alice創建的,因為只有她擁有與該公鑰對應的私鑰(至少這與我們假設的一致)。
因此,Alice需要保管好私鑰至關重要。如果另一個人拿到了Alice的私鑰,他們就同樣可以創建數位簽章並偽裝成Alice。在比特幣的背景下,這意味著有人可以使用Alice的私鑰,並可在未經她知曉的情況下轉移或使用她的比特幣。
數位簽章通常用於實現以下三個面向目標:資料完整性、驗證和不可否認性。
數位簽章可以應用於各種數位文檔和證書。因此,他們有幾個應用程式。一些最常見的案例包括:
數位簽章方案面臨的主要挑戰主要侷限於以下三方面因素:
簡而言之,數位簽名可以理解為是一種特定類型的電子簽名,特別是使用電子化的方式簽署文件和訊息。因此,所有數位簽名都可認為是電子簽名,但反之並非如此。
它們之間的主要區別在於身份驗證方式。數位簽章需要部署加密系統,例如雜湊函數、公鑰加密和加密技術。
雜湊函數和公鑰加密是數位簽章系統的核心,現已在各種案例中使用。若實施得當,數位簽章可以提高安全性,確保完整性,以便對各類資料進行身份驗證。
在區塊鏈領域,數位簽章用於簽署和授權加密貨幣交易。它們對比特幣尤其重要,因為數位簽名能夠確保代幣只能由擁有相應私鑰的人使用。
雖然我們多年來一直使用電子和數位簽名,但仍有很大的發展空間。如今大部分的公文仍然還是基於紙本材料,但隨著更多的系統遷移到數位化中,我們也會看到更多的數位簽章方案。