數(shù)字簽名相當(dāng)于現(xiàn)實世界中的蓋章、簽字的功能,數(shù)字簽名可以識別篡改、偽裝、防止否認。
1、從消息認證碼到數(shù)字簽名
消息認證碼:因為密鑰是共享的,兩方都可以知道。對于第三方來說,你無法確定是誰的
數(shù)字簽名:
●生成消息簽名的行為
發(fā)送者對消息進行簽名(簽名密鑰)
●驗證消息簽名的行為
接收者驗證簽名(驗證密鑰)
以上兩個行為,需要各自專用的密鑰來完成。
驗證密鑰無法生成簽名
●簽名密鑰只有簽名的人才可持有。
驗證密鑰則可以任何驗證的人都可持有。
●(這不是和第五章講的公鑰密碼嗎?。?/p>
簡而言之,數(shù)字簽名就是通過將公鑰密碼“反過來用”而實現(xiàn)的。
(這不是和第五章講的公鑰密碼嗎?。?/p>
簡而言之,數(shù)字簽名就是通過將公鑰密碼“反過來用”而實現(xiàn)的。
2、公鑰密碼與數(shù)字簽名
反過來:兩者是反過來的。數(shù)字簽名:私鑰加密(生成簽名),公鑰解密(驗證簽名)
●公鑰密碼中,任何人都可以加密
●數(shù)字簽名中,任何人都可以驗證
3、數(shù)字簽名的方法
1、直接對消息簽名的方法(一般不會用)
2、對消息的散列值簽名的方法(一般都使用這種方法)
第一種需要對整個消息進行加密,非常耗時
(想到了單向散列函數(shù))我們直接把消息轉(zhuǎn)換成散列值,再加密
一些問題:
●數(shù)字簽名的作用本來就不是保證機密性的。如果需要也可以直接加密后發(fā)送。關(guān)于密碼和簽名的組合方法,第十三章會講到
●簽名能不能被復(fù)制不重要,重要的是特定的簽名者與特定的消息綁定在一起了這一事實
●如果拿著私鑰的人說我的私鑰被竊取了怎么辦?第十章會進行討論
4、數(shù)字簽名的應(yīng)用實例
●安全信息公告
●軟件下載
●公鑰證書
●SSL/TLS
5、對數(shù)字簽名的攻擊
1、中間人攻擊
對公鑰密碼的攻擊方式
對發(fā)送者偽裝成接收者,對接收者偽裝成發(fā)送者
防止:對公鑰的認證。一般情況下是先計算出散列值,然后電話溝通。也可用后面要講的“證書”
2、對單向散列函數(shù)的攻擊
使用散列值的話,必須要有抗碰撞性
3、利用數(shù)字簽名攻擊公鑰密碼
(簽名的操作實際上是對消息的解密)絕對不要對意思不清楚的消息進行簽名
解決方式:
對散列值進行簽名比較安全
公鑰密碼和數(shù)字簽名最好使用不同的密鑰對
4、潛在偽造
對一個無意思的消息,沒有私鑰的情況下,能生成合法的數(shù)字簽名
RSA-PASS
5、其他攻擊
暴力破解、對RSA的N進行質(zhì)因數(shù)分解等
6、各種密碼技術(shù)的對比
7、數(shù)字簽名無法解決的問題
●可以識別出篡改、偽裝、防止否認
●前提:公鑰必須屬于真正的發(fā)送者
●我們需要使用“證書”。公鑰基礎(chǔ)設(shè)施(PKI)
原標(biāo)題:密碼筆記 | 數(shù)字簽名