密碼學 數字簽名



數字簽名是訊息認證的公鑰基本原理。在現實世界中,在手寫或列印的訊息上使用手寫簽名很常見。它們用於將簽名者繫結到訊息。

類似地,數字簽名是一種將個人/實體繫結到數字資料的方法。這種繫結可以由接收方以及任何第三方獨立驗證。

數字簽名是從資料和僅簽名者知道的金鑰計算出的加密值。

在現實世界中,訊息接收者需要確保訊息屬於傳送者,並且傳送者不應該能夠否認該訊息的來源。此要求在業務應用程式中非常關鍵,因為交換資料發生爭議的可能性非常高。

數字簽名模型

如前所述,數字簽名方案基於公鑰密碼學。數字簽名方案的模型如下圖所示:

Model Digital Signature

以下幾點詳細解釋了整個過程:

  • 每個採用此方案的人都有一個公鑰-私鑰對。

  • 通常,用於加密/解密和簽名/驗證的金鑰對是不同的。用於簽名的私鑰稱為簽名金鑰,公鑰稱為驗證金鑰。

  • 簽名者將資料饋送到雜湊函式並生成資料的雜湊值。

  • 然後將雜湊值和簽名金鑰饋送到簽名演算法,該演算法生成給定雜湊值的數字簽名。簽名附加到資料,然後兩者都發送到驗證者。

  • 驗證者將數字簽名和驗證金鑰輸入到驗證演算法中。驗證演算法輸出一些值。

  • 驗證者還對接收到的資料執行相同的雜湊函式以生成雜湊值。

  • 為了驗證,將此雜湊值與驗證演算法的輸出進行比較。根據比較結果,驗證者確定數字簽名是否有效。

  • 由於數字簽名是由簽名者的“私鑰”建立的,並且任何人都無法擁有此金鑰;簽名者將來無法否認簽署資料。

需要注意的是,簽名演算法通常不是直接對資料進行簽名,而是建立資料的雜湊值。由於資料雜湊是資料的唯一表示,因此對雜湊值進行簽名足以代替對資料進行簽名。使用雜湊而不是直接對資料進行簽名的最重要的原因是方案的效率。

假設 RSA 用作簽名演算法。如公鑰加密章節所述,使用 RSA 的加密/簽名過程涉及模冪運算。

透過模冪運算對大型資料進行簽名在計算上代價高昂且耗時。資料的雜湊值是資料的相對較小的摘要,因此對雜湊值進行簽名比對整個資料進行簽名更有效

數字簽名的重要性

在所有加密基本原理中,使用公鑰密碼學的數字簽名被認為是實現資訊安全非常重要和有用的工具。

除了能夠提供訊息不可否認性之外,數字簽名還提供訊息認證和資料完整性。讓我們簡要了解一下數字簽名是如何實現這一點的:

  • 訊息認證 - 當驗證者使用傳送者的公鑰驗證數字簽名時,他確信簽名僅由擁有相應私鑰的傳送者建立,而不是其他人。

  • 資料完整性 - 如果攻擊者可以訪問資料並對其進行修改,則接收端處的數字簽名驗證將失敗。修改後的資料的雜湊值和驗證演算法提供的輸出將不匹配。因此,接收者可以安全地拒絕該訊息,假設資料完整性已被破壞。

  • 不可否認性 - 由於假設只有簽名者知道簽名金鑰,因此他只能在給定資料上建立唯一的簽名。因此,如果將來發生任何爭議,接收者可以向第三方出示資料和數字簽名作為證據。

透過將公鑰加密新增到數字簽名方案中,我們可以建立一個可以提供安全性的四個基本要素的密碼系統,即:隱私、身份驗證、完整性和不可否認性。

帶數字簽名的加密

在許多數字通訊中,希望交換加密訊息而不是明文以實現機密性。在公鑰加密方案中,傳送者的公鑰(加密金鑰)在開放域中可用,因此任何人都可以偽造其身份並將任何加密訊息傳送到接收者。

這使得使用 PKC 進行加密的使用者必須尋求數字簽名以及加密資料,以確保訊息認證和不可否認性。

這可以透過將數字簽名與加密方案相結合來實現。讓我們簡要討論一下如何實現此要求。有兩種可能性,先簽名後加密先加密後簽名

但是,基於先簽名後加密的密碼系統可能會被接收者利用來偽造傳送者的身份並將該資料傳送到第三方。因此,此方法不受歡迎。先加密後簽名的方法更可靠且被廣泛採用。這在下圖中進行了說明:

Encryption With Digital Signature

接收者在收到加密資料和簽名後,首先使用傳送者的公鑰驗證簽名。在確保簽名的有效性後,他然後使用自己的私鑰透過解密檢索資料。

廣告

© . All rights reserved.