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