认证篇——数字签名
目錄
數(shù)字簽名
1.簽名的生成和驗證
2.公鑰密碼與數(shù)字簽名
1)公鑰密碼
2)數(shù)字簽名
數(shù)字簽名的方法
1)直接對消息簽名的方法
2)對消息的散列值簽名的方法
注意:
數(shù)字簽名的應用:
1)安全信息公告
2)軟件下載
3)公鑰證書
4)SSL/TSL
數(shù)字簽名的算法
對數(shù)字簽名的攻擊:
消息認證碼與數(shù)字簽名對比
數(shù)字簽名無法解決的問題:
之前提到過由于消息認證碼無法防止否認。之所以無法否認,是因為收發(fā)雙方共享一個密鑰;由于密鑰共享,所以能計算出正確MAC值的不只有發(fā)送者,接收者也可以計算出,對于第三方而言,無法判斷出消息的出處。因此需要使用數(shù)字簽名
?
數(shù)字簽名
數(shù)字簽名(又稱公鑰數(shù)字簽名、電子簽章等)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)實現(xiàn),用于鑒別數(shù)字信息的方法。
1.簽名的生成和驗證
1)生成消息簽名:該行為由發(fā)送者來完成,生成簽名就是根據(jù)消息內(nèi)容計算數(shù)字簽名的值,隱含”簽名人認可消息內(nèi)容“
2)生成數(shù)字簽名:該行為由接收者來完成,也可能由驗證的第三方來完成,驗證簽名就是檢查消息是否真的來自發(fā)送方
一套數(shù)字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證;發(fā)送方使用簽名密鑰來生成消息的簽名;接收方(第三方)使用驗證密鑰來驗證消息的簽名
注:簽名密鑰只能簽名人持有,而驗證密鑰是需要驗證的人都可以持有
2.公鑰密碼與數(shù)字簽名
1)公鑰密碼
公鑰密碼包括有公鑰和私鑰組成的密碼對,公鑰用于加密,私鑰用于解密
2)數(shù)字簽名
同公鑰密碼一樣,數(shù)字簽名也使用公鑰和私鑰組成的密鑰對,但其用法與公鑰密碼相反;私鑰加密相當于生成簽名,公鑰解密相當于驗證簽名
所以說,在公鑰密碼中,人人都可以使用公鑰進行加密;在數(shù)字簽名中,人人都可以使用驗證密鑰來驗證簽名
?
數(shù)字簽名的方法
1)直接對消息簽名的方法
1.發(fā)送者使用自己的密鑰對消息進行加密(只有發(fā)送者才能持有,除發(fā)送者外,其他人是無法生成相同簽名的)
2.將簽名和消息發(fā)送給接收方
3.接收方使用公鑰對簽名進行解密
4.發(fā)送方將解密的消息與發(fā)送方發(fā)送的消息進行比對
?
2)對消息的散列值簽名的方法
1.發(fā)送方使用單向散列函數(shù)計算消息散列值
2.發(fā)送方使用私鑰對散列值進行加密
3.將消息和簽名發(fā)送給接收方
4.接收方使用公鑰對簽名進行解密
5.接收方將解密后的散列值與發(fā)送方發(fā)過來的散列值進行對比
?
注意:
1)數(shù)字簽名使用私鑰進行加密來產(chǎn)生認證符號
2)數(shù)字簽名并不用于保證機密性
3)簽名所代表的是簽名人對該消息進行的簽名,復制簽名不會改變簽名者和消息的內(nèi)容
4)在簽名之后對消息進行修改是毫無意義的,數(shù)字簽名的作用為識別修改
5)數(shù)字簽名會根據(jù)消息內(nèi)容的改變而改變,所以簽名是不會重復使用的
6)想要使一份數(shù)字簽名作廢,需要再創(chuàng)建一份聲明該簽名已作廢并附上數(shù)字簽名的文書
7)在數(shù)字簽名中,能生成簽名的只有發(fā)送者,能驗證簽名的只有接收者;因此可以防止否認
?
數(shù)字簽名的應用:
1)安全信息公告
此類消息是為了讓更多人知道,因此沒有加密的必要,只用在消息中加上數(shù)字簽名(對明文施加的簽名稱為明文簽名)
2)軟件下載
用于檢測所下載的軟件是否被篡改
3)公鑰證書
將公鑰當作信息,對其加上數(shù)字簽名
4)SSL/TSL
在認證服務器身份是與否合法時所使用的服務器證書(加上簽名的服務器公鑰)
?
數(shù)字簽名的算法
1)RSA
2)EIGamel
3)DSA
4)Rabin
?
對數(shù)字簽名的攻擊:
1)中間人攻擊
2)對單向散列函數(shù)進行攻擊
3)利用數(shù)字簽名攻擊公鑰密碼
4)其他攻擊
?
消息認證碼與數(shù)字簽名對比
?
數(shù)字簽名無法解決的問題:
驗證簽名的公鑰必須屬于真正的發(fā)送者,為了確認自己得到的公鑰是否合法,我們需要證書(將公鑰當成一條消息,由可信任的第三方對其簽名后得到的公鑰)
?
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)