數位簽章

方法

數位簽章(英語:Digital Signature,又稱公鑰數位簽章)是一種功能類似寫在上的普通簽章、但是使用了公鑰加密領域的技術,以用於鑑別數位訊息的方法。一套數位簽章通常會定義兩種互補的運算,一個用於簽章,另一個用於驗證。法律用語中的電子簽章與數位簽章代表之意義並不相同。電子簽章指的是依附於電子檔案並與其相關連,用以辨識及確認電子檔案簽署人身分、資格及電子檔案真偽者;數位簽章則是以數學演算法或其他方式運算對其加密而形成的電子簽章。意即並非所有的電子簽章都是數位簽章。

數位簽章不是指將簽章掃描成數位影像,或者用觸控板取得的簽章,更不是落款

數位簽章了的檔案的完整性是很容易驗證的(不需要騎縫章騎縫簽章,也不需要筆跡鑑定),而且數位簽章具有不可抵賴性(即不可否認性),不需要筆跡專家來驗證。

簡單的數位簽章原理

歷史

1976年,Whitfield Diffie和Martin Hellman首次描述了數位簽章體系,他們根據陷門單向排列的功能推測了這種體系的存在。[1][2]不久之後,Ronald Rivest, Adi Shamir和Len Adleman發明了RSA演算法,該演算法可以用來生成原始的數位簽章(因「普通」的RSA簽章並不安全[3],這僅僅為概念驗證)。1989年,使用了RSA演算法的Lotus Notes 1.0是第一個被廣泛推廣的提供數位簽章的軟體套件。[4]

在RSA演算法之後,其他數位簽章方案被很快開發出來——最早的三個分別為Lamport簽章[5]、Merkle簽章(也被稱為「Merkle trees」或「Hash trees」)[6]、和Rabin簽章[7]

1988年,Shafi Goldwasser、Silvio Micali和Ronald Rivest成為第一個嚴格定義數位簽章安全要求的人。[8]他們描述了簽章的攻擊模型的階層,還提出了GMR簽章方案——第一種被證明可防止偽造選定訊息的數位簽章,與現今能被接受的數位簽章安全定義一致。[8]

使用

使用者可以對其發出的每一封電子郵件進行數位簽章。這不是指落款或簽名檔英語Signature block(普遍把落款訛誤成簽章)。

中國大陸,數位簽章是具法律效力的,正在被普遍使用。2000年,中華人民共和國的新《合同法》首次確認了電子合同、電子簽章的法律效力。2005年4月1日起,中華人民共和國首部《電子簽章法》正式實施。

在台灣,2001年公佈實施《電子簽章法》做為數位簽章的法源依據及規範,並且製發中華民國自然人憑證及工商憑證。

每個人都有一對「鑰匙」(數位身分),其中一個只有本人知道(私鑰),另一個公開的(公鑰)。簽章的時候用私鑰,驗證簽章的時候用公鑰。又因為任何人都可以落款申稱他就是使用者本人,因此公鑰必須向接受者信任的人(身分認證機構)來註冊。註冊後身分認證機構給使用者發一數位憑證。對檔案簽章後,使用者把此數位憑證連同檔案及簽章一起發給接受者,接受者向身分認證機構求證是否真地是用使用者的金鑰簽發的檔案。

訊息發布者可以使用數位簽章:訊息發布的目的是讓人們知道訊息,雖然沒必要對訊息進行加密,但是必須排除有人偽裝訊息發布者發布假訊息的風險,這時訊息發布者就可以使用數位簽章。而對明文訊息施加的簽章,稱為明文簽章(clearsign)。[9]

軟體的作者可以加上數位簽章,以便使用者下載後對簽章進行驗證。[10]

認證機構(CA)也可以為使用者的公鑰加上數位簽章生成憑證,以便人們確認使用者公鑰的合法性。[11]

SSL/TLS使用伺服器憑證(加上了數位簽章的伺服器公鑰)認證伺服器身分是否合法。[11]

原理

通常會使用公鑰加密,用私鑰解密。而在數位簽章中,會使用私鑰加密(相當於生成簽章),公鑰解密(相當於驗證簽章)。[12]

可以直接對訊息進行簽章(即使用私鑰加密,此時加密的目的是為了簽章,而不是保密),驗證者用公鑰正確解密訊息,如果和原訊息一致,則驗證簽章成功。但通常會對訊息的雜湊值簽章,因為通常雜湊值的長度遠小於訊息原文,使得簽章(非對稱加密)的效率大大提高。注意,計算訊息的雜湊值不是數位簽章的必要步驟。[13]

在實際使用中,我們既想加密訊息,又想簽章,所以要對加密和簽章組合使用,比如TLS就組合了加密和簽名。[14]

數位簽章應用了公鑰密碼領域使用的單向函式原理。單向函式指的是正向操作非常簡單,而逆向操作非常困難的函式,比如大整數乘法。這種函式往往提供一種難解或懷疑難解的數學問題。目前,公鑰密碼領域具備實用性的三個懷疑難解問題為:質數分解離散對數橢圓曲線問題。

操作

數位簽章就是將公鑰密碼反過來使用。簽章者將訊息用私鑰加密(這是一種反用,因為通常公鑰密碼中私鑰用於解密),然後公布公鑰;驗證者使用公鑰將加密訊息解密並比對訊息(一般簽章對象為訊息的雜湊值。本節為了講解方便,假設數位簽章直接將訊息而非雜湊值簽章)。

因此,可靠的公鑰密碼演算法均能構建出可靠的數位簽章。下面講解為何反用公鑰密碼演算法能夠構建出安全的數位簽章。

Alice是簽名者,假設她要對訊息A進行簽名。現在, Alice生成了其公私鑰密碼對,公佈該公鑰,然後將訊息用私鑰加密後發布。

現在,希望Alice的簽名演算法具有如下特性:

  1. 完整性:確認訊息在傳輸過程中沒有丟位,沒被篡改
  2. 認證:確認訊息的傳送者是發布公鑰的Alice
  3. 不可否認性:確認Alice的確發布過該訊息

實現

數位簽章演算法是依靠公鑰加密技術來實現的。在公鑰加密技術里,每一個使用者有一對金鑰:一把公鑰和一把私鑰。公鑰可以自由發布,但私鑰則秘密儲存;還有一個要求就是要讓通過公鑰推算出私鑰的做法不可能實現。

普通的數位簽章演算法包括三種演算法:

  • 一種密碼生成演算法
  • 標記演算法
  • 驗證演算法

RSAECDSA等演算法可以實現數位簽章。[15]常用的密碼雜湊函式SHA家族

參考文獻

  1. ^ Diffie, W.; Hellman, M. New directions in cryptography. IEEE Transactions on Information Theory. 1976-11, 22 (6) [2022-09-08]. ISSN 0018-9448. doi:10.1109/tit.1976.1055638. (原始內容存檔於2008-10-07). 
  2. ^ Lysyanskaya, Anna. Signature schemes and applications to cryptographic protocol design. 2002 [2022-09-08]. (原始內容存檔於2022-09-08). 
  3. ^ For example any integer, r, "signs" m=re and the product, s1s2, of any two valid signatures, s1, s2 of m1, m2 is a valid signature of the product, m1m2.
  4. ^ The History of Notes and Domino. developerWorks. 2005-12-20. 
  5. ^ Lamport, Leslie. Constructing digital signatures from a one way function. 1979. 
  6. ^ Merkle, Ralph C. A certified digital signature. Conference on the Theory and Application of Cryptology (New York: Springer). 1989: 218-238. 
  7. ^ Rivest, Ronald L. Cryptography and machine learning. International Conference on the Theory and Application of Cryptology (Springer). 1991: 427-439. 
  8. ^ 8.0 8.1 Goldwasser, Shafi; Micali, Silvio; Rivest, Ronald L. A Digital Signature Scheme Secure Against Adaptive Chosen-Message Attacks. SIAM Journal on Computing. 1988-04, 17 (2). ISSN 0097-5397. doi:10.1137/0217017. 
  9. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 218頁. ISBN 978-7-115-42491-4. 
  10. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 219頁. ISBN 978-7-115-42491-4. 
  11. ^ 11.0 11.1 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 220頁. ISBN 978-7-115-42491-4. 
  12. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 207頁. ISBN 978-7-115-42491-4. 
  13. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 209–211頁. ISBN 978-7-115-42491-4. 
  14. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 214–215頁. ISBN 978-7-115-42491-4. 
  15. ^ 結城浩. 图解密码技术(第3版). 人民郵電出版社. 2016: 222–223頁. ISBN 978-7-115-42491-4. 

外部連結