數字簽名是一種用於驗證數字數據的真實性和完整性的加密機制。我們可以將其視爲普通手寫簽名的數字版本,但具有更高級別的複雜性和安全性。

爲了簡化,我們可以將數字簽名描述爲附加到消息或文檔的代碼。生成後,該代碼可作爲消息在發送者和接收者之間未被以任何方式篡改的證據。

儘管使用加密技術保護通信的概念可以追溯到人類歷史上很長一段時間,但由於公鑰加密技術 (PKC) 的發展,數字簽名系統在 20 世紀 70 年代成爲現實。要了解數字簽名的工作原理,我們首先需要了解哈希函數和公鑰密碼學的基礎知識。


哈希函數

哈希構成數字簽名系統的主要元素之一。哈希過程涉及將任何大小的數據轉換爲具有預定大小的輸出。這是通過一種稱爲哈希函數的特殊算法來實現的。哈希函數生成的輸出稱爲哈希值或指紋。

與加密技術結合使用時,加密哈希函數可用於生成充當唯一數字指紋的哈希值(指紋)。這意味着輸入數據(消息)的任何更改都會導致完全不同的輸出(哈希值)。這就是加密哈希函數被廣泛用於驗證數字數據真實性的原因。


公鑰密碼學 (PKC)

公鑰密碼術(PKC)是指使用一對密鑰的密碼系統:公鑰和私鑰。這兩個密鑰在數學上是相關的,可用於數據加密和數字簽名。

作爲一種加密工具,PKC 比更基本的對稱加密方法更安全。雖然舊系統依賴相同的密鑰來加密和解密信息,但 PKC 允許使用公鑰加密數據並使用相應的私鑰解密數據。

除此之外,PKC方案還可以應用於數字簽名的生成。本質上,該過程涉及使用簽名者的私鑰對消息(或數字數據)進行哈希處理。然後,消息的接收者可以使用簽名者提供的公鑰來檢查簽名是否有效。

在某些情況下,數字簽名可能包括加密,但情況並非總是如此。例如,比特幣區塊鏈使用 PKC 和數字簽名,但與許多人傾向於相信的相反,該過程中沒有加密。從技術上講,比特幣部署了橢圓曲線數字簽名算法(ECDSA)來驗證交易。


數字簽名如何工作

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

數據散列

第一步是對消息或數字數據進行哈希處理。後者是通過對數據進行哈希算法來生成哈希值(即消息摘要)來實現的。如前所述,消息的大小可能有很大差異,但是當它們被散列時,它們的所有散列值都是相同的大小。這是哈希函數最基本的屬性。

然而,散列數據並不是產生數字簽名的強制條件,因爲私鑰可以用於在沒有散列的情況下對消息進行簽名。對於加密貨幣,數據被系統地散列,因爲操縱大小固定且不變的指紋有助於這一過程。

簽名

對信息進行哈希處理後,消息的發送者必須對其進行簽名。這就是公鑰加密發揮作用的地方。數字簽名算法有多種類型,每種都有自己的機制。但一般來說,散列後的消息將使用私鑰進行簽名,然後消息的接收者可以使用相應的公鑰(由簽名者提供)來驗證其有效性。

也就是說,如果生成簽名時不包含私鑰,則消息的接收者將無法使用相應的公鑰來驗證其有效性。公鑰和私鑰由消息的發送者生成,但只有公鑰與接收者共享。

值得注意的是,數字簽名直接鏈接到每條消息的內容。因此,與手寫簽名不同的是,無論附加的消息如何,手寫簽名在系統上都是相同的,而每條數字簽名的消息都將具有不同的數字簽名。

確認

讓我們舉一個例子來說明直到最終驗證步驟的整個過程。想象一下,愛麗絲向鮑勃寫入一條消息,對其進行哈希處理,然後將哈希值與她的私鑰結合起來生成數字簽名。簽名將充當該特定消息的唯一數字指紋。

當Bob收到消息時,他可以使用Alice提供的公鑰來驗證數字簽名的有效性。這樣,鮑勃就可以確定簽名是由愛麗絲創建的,因爲她是唯一擁有與該公鑰匹配的私鑰的人(至少這是鮑勃所期望的)。

因此,Alice 的私鑰保密至關重要。如果其他人獲得了 Alice 的私鑰,那麼該人將能夠創建數字簽名並冒充 Alice。在比特幣的背景下,這意味着有人可以使用愛麗絲的私鑰在未經她許可的情況下移動或花費她的比特幣。


爲什麼數字簽名很重要?

數字簽名通常用於其屬性所實現的三個目的:數據完整性、身份驗證和不可否認性。

  • 數據的完整性。 Bob 可以驗證 Alice 的消息在發送和接收之間沒有被修改。對消息的任何更改都會產生完全不同的簽名。

  • 真實性。只要愛麗絲的私鑰保密,鮑勃就可以使用他的公鑰來確認數字簽名是由愛麗絲而不是其他人創建的。

  • 不可否認性。一旦生成簽名,Alice 將無法否認將來應用過它,除非她的私鑰以某種方式被泄露。


用例

數字簽名可以應用於各種類型的數字文檔和證書。因此,它們有多種應用。一些最常見的用例包括:

  • 信息技術,提高互聯網通信系統的安全性。

  • 金融。數字簽名可用於審計、費用報告、貸款協議等。

  • 法律。所有類型的企業對企業合同和法律協議的數字簽署。政府文件也是如此。

  • 社會保障。數字簽名可以預防處方和醫療記錄欺詐。

  • 區塊鏈。數字簽名確保只有資金的合法所有者才能簽署交易(只要他們的私鑰不被泄露)。


限制

數字簽名系統面臨的主要挑戰至少取決於三個要求:

  • 算法。數字簽名方案中使用的算法的質量非常重要。這包括選擇可靠的哈希函數和加密系統。

  • 執行。如果算法很好,但實現不好,那麼數字簽名系統很可能存在缺陷。

  • 私鑰。如果私鑰以任何方式泄露或泄露,真實性和不可否認性將失效。對於加密貨幣用戶來說,丟失私鑰可能會導致重大的財務損失。


電子簽名與數字簽名

簡而言之,數字簽名是一種特殊類型的電子簽名,指的是簽署文檔或消息的任何電子方法。因此,所有數字簽名都是電子簽名,但反之則不然。

它們之間的主要區別在於身份驗證方法。數字簽名部署加密系統,例如哈希函數、公鑰加密以及加密技術。


總結一下

哈希函數和公鑰加密是數字簽名系統的核心,現已應用於廣泛的用例。如果正確實施,數字簽名可以提高安全性、確保完整性並促進所有類型數字數據的身份驗證。

在區塊鏈中,數字簽名用於簽署和授權加密貨幣交易。它們對於比特幣尤其重要,因爲簽名確保硬幣只能由擁有相應私鑰的個人使用。

儘管它們已經使用多年,但數字和電子簽名領域仍有很大進步。當今的官僚機構很大一部分仍然依賴於紙張的使用,但隨着我們邁向更加數字化的社會,我們很可能會看到數字簽名的廣泛採用。