數字簽名一般利用公鑰密碼技術來實現,其中私鑰用來簽名,公鑰用來驗證簽名。ElGamal公鑰密碼演算法是在密碼協議中有著重要應用的一類公鑰密碼演算法,其安全性是基於有限域上離散對數學問題的難解性。它至今仍是一個安全性良好的公鑰密碼演算法。它既可用於加密又可用於數字簽名的公鑰密碼體制。
簽名演算法:
驗證簽名過程:
成立則確認為有效簽名,否則認為簽名是偽造的
在1996年的歐洲密碼學會(Proceedings of EUROCRYPT 96)上,David Pointcheval和Jacques Stern給出一個ElGamal簽名的變體,並基於所謂分叉技術證明了在隨機預言模型下所給方案是安全的(在自適應選擇訊息攻擊下能抗擊存在性偽造)。
Schnorr演算法
Schnorr簽名方案是一個短簽名方案,它是ElGamal簽名方案的變形,其安全性是基於離散對數困難性和雜湊函式的單向性的。
Schnorr簽名與ElGamal簽名的不同點:
DSA演算法
1991年,美國政府頒佈了數字簽名標準(Digital Signature Standard, DSS),也稱為數字簽名演算法(Digital Signature Algorithm, DSA) 。
和DES一樣,DSS也引起了激烈的爭論,反對者認為:金鑰太短、效率不如RSA高、不能實現資料加密並懷疑NIST在DSS中留有後門。
隨後,美國政府對其做了一些改進,目前DSS的應用已經十分廣泛,並被一些國際標準化組織採納為國際標準。2000年,美國政府將RSA和橢圓曲線密碼引入到數字簽名標準中,進一步豐富了DSA演算法。
DSA的主要引數:
全域性公開金鑰分量,可以為使用者公用
DSA簽名過程:
DSA驗證過程:
今天的課程就到這裡啦,下一堂課我們將學習基於橢圓曲線的數字簽名演算法,帶大家繼續瞭解數字簽名,敬請期待!