數字簽名是一種用於驗證數字數據的真實性和完整性的加密機制。我們可以將其視爲普通手寫簽名的數字版本,但具有更高級別的複雜性和安全性。
簡而言之,我們可以將數字簽名描述爲附加到消息或文檔的代碼。生成後,該代碼可作爲消息在從發送者到接收者的整個過程中未被篡改的證據。
儘管使用密碼學保護通信安全的概念可以追溯到遠古時代,但由於公鑰密碼學 (PKC) 的發展,數字簽名方案在 20 世紀 70 年代成爲可能的現實。因此,要了解數字簽名的工作原理,我們需要首先了解哈希函數和公鑰密碼學的基礎知識。
哈希函數
哈希是數字簽名系統的核心要素之一。散列過程涉及將任意大小的數據轉換爲固定大小的輸出。這是通過一種稱爲哈希函數的特殊算法來完成的。哈希函數生成的輸出稱爲哈希值或消息摘要。
當與密碼學結合時,所謂的密碼哈希函數可用於生成充當唯一數字指紋的哈希值(摘要)。這意味着輸入數據(消息)的任何更改都會導致完全不同的輸出(哈希值)。這就是加密哈希函數被廣泛用於驗證數字數據真實性的原因。
公鑰加密 (PKC)
公鑰密碼術(PKC)是指使用一對密鑰的密碼系統:一個公鑰和一個私鑰。這兩個密鑰在數學上相關,可用於數據加密和數字簽名。
作爲一種加密工具,PKC 比更基本的對稱加密方法更安全。雖然舊系統依靠相同的密鑰來加密和解密信息,但 PKC 允許使用公鑰進行數據加密,並使用相應的私鑰進行數據解密。
除此之外,PKC方案還可以應用於數字簽名的生成。本質上,該過程包括對消息(或數字數據)以及簽名者的私鑰進行哈希處理。接下來,消息的接收者可以使用簽名者提供的公鑰來檢查簽名是否有效。
在某些情況下,數字簽名可能涉及加密,但情況並非總是如此。例如,比特幣區塊鏈使用 PKC 和數字簽名,但與許多人傾向於認爲的不同,該過程中沒有加密。從技術上講,比特幣部署所謂的橢圓曲線數字簽名算法(ECDSA)來驗證交易。
數字簽名如何工作
在加密貨幣的背景下,數字簽名系統通常包含三個基本步驟:散列、簽名和驗證。
對數據進行哈希處理
第一步是對消息或數字數據進行哈希處理。這是通過哈希算法提交數據從而生成哈希值(即消息摘要)來完成的。如前所述,消息的大小可能有很大差異,但是當它們被散列時,它們的所有散列值都具有相同的長度。這是哈希函數最基本的屬性。
然而,對數據進行哈希處理並不是生成數字簽名的必要條件,因爲可以使用私鑰對根本沒有進行哈希處理的消息進行簽名。但對於加密貨幣來說,數據總是經過哈希處理,因爲處理固定長度的摘要有利於整個過程。
簽約
信息經過哈希處理後,消息的發送者需要對其進行簽名。這就是公鑰密碼學發揮作用的時刻。數字簽名算法有多種類型,每種都有其特定的機制。但本質上,散列消息將使用私鑰進行簽名,然後消息的接收者可以使用相應的公鑰(由簽名者提供)檢查其有效性。
換句話說,如果生成簽名時不包含私鑰,則消息的接收者將無法使用相應的公鑰來驗證其有效性。公鑰和私鑰均由消息的發送者生成,但只有公鑰與接收者共享。
值得注意的是,數字簽名與每條消息的內容直接相關。因此,與手寫簽名不同的是,無論消息如何,手寫簽名往往都是相同的,每條數字簽名的消息都將具有不同的數字簽名。
正在驗證
我們舉個例子來說明一下直到最後一步驗證的整個過程。想象一下,愛麗絲向鮑勃寫入一條消息,對其進行哈希處理,然後將哈希值與她的私鑰結合起來生成數字簽名。簽名將作爲該特定消息的唯一數字指紋。
當Bob收到消息時,他可以使用Alice提供的公鑰來檢查數字簽名的有效性。這樣,鮑勃就可以確定簽名是由愛麗絲創建的,因爲只有她擁有與該公鑰相對應的私鑰(至少這是我們所期望的)。
因此,對於 Alice 來說,保密她的私鑰至關重要。如果另一個人獲得了 Alice 的私鑰,他們就可以創建數字簽名並冒充 Alice。在比特幣的背景下,這意味着有人可以使用愛麗絲的私鑰在未經她許可的情況下移動或花費她的比特幣。
爲什麼數字簽名很重要?
數字簽名通常用於實現三個結果:數據完整性、身份驗證和不可否認性。
數據的完整性。 Bob 可以驗證 Alice 的消息在傳輸過程中沒有發生改變。消息中的任何修改都會產生完全不同的簽名。
真實性。只要 Alice 的私鑰保密,Bob 就可以使用她的公鑰來確認數字簽名是由 Alice 創建的,而不是其他人創建的。
不可否認性。一旦生成簽名,愛麗絲將無法否認在未來簽署了它,除非她的私鑰以某種方式受到損害。
用例
數字簽名可以應用於各種數字文檔和證書。因此,它們有多種應用。一些最常見的用例包括:
信息技術。增強互聯網通信系統的安全性。
金融。數字簽名可以應用於審計、費用報告、貸款協議等。
合法的。各種商業合同和法律協議(包括政府文件)的數字簽名。
衛生保健。數字簽名可以防止處方和醫療記錄欺詐。
區塊鏈。數字簽名方案確保只有加密貨幣的合法所有者才能簽署交易以轉移資金(只要他們的私鑰不被泄露)。
侷限性
數字簽名方案面臨的主要挑戰至少依賴於三個要求:
算法。數字簽名方案中使用的算法的質量非常重要。這包括選擇可靠的哈希函數和加密系統。
執行。如果算法很好,但實現不好,那麼數字簽名系統可能會存在缺陷。
私鑰。如果私鑰被泄露或以某種方式受到損害,真實性和不可否認性將失效。對於加密貨幣用戶來說,丟失私鑰可能會導致重大的財務損失。
電子簽名與數字簽名
簡而言之,數字簽名涉及一種特定類型的電子簽名 - 指簽署文檔和消息的任何電子方法。因此,所有數字簽名都是電子簽名,但反之亦然。
它們之間的主要區別在於身份驗證方法。數字簽名部署密碼系統,例如散列函數、公鑰密碼學和加密技術。
結束語
哈希函數和公鑰加密是數字簽名系統的核心,現已應用於廣泛的用例。如果實施得當,數字簽名可以提高安全性、確保完整性並促進各種數字數據的身份驗證。
在區塊鏈領域,數字簽名用於簽署和授權加密貨幣交易。它們對於比特幣尤其重要,因爲簽名確保硬幣只能由擁有相應私鑰的個人使用。
儘管我們多年來一直使用電子簽名和數字簽名,但仍有很大的增長空間。當今的官僚機構很大一部分仍然基於文書工作,但隨着我們遷移到更加數字化的系統,我們可能會看到更多地採用數字簽名方案。

