前言
本文章是對(duì)《圖解密碼技術(shù)》一書第二部分的一個(gè)總結(jié)遇骑。
認(rèn)證
本文章將介紹如何確認(rèn)消息完整性(單向散列函數(shù))卖毁、進(jìn)行認(rèn)證(消息認(rèn)證碼)已經(jīng)防止否認(rèn)(數(shù)字簽名)。
單向散列函數(shù)
單向散列函數(shù)落萎,也稱消息摘要函數(shù)亥啦、哈希函數(shù)或者雜湊函數(shù),根據(jù)消息的內(nèi)容計(jì)算出消息的散列值练链,通過散列值可以用來檢查消息的完整性翔脱。
性質(zhì)
單向散列函數(shù)有如下性質(zhì):
- 根據(jù)任意長度的消息計(jì)算出固定長度的散列值
- 能夠快速計(jì)算出散列值
- 消息不同散列值也不同
- 具備單向性,即無法通過散列值反算出消息
應(yīng)用
單向散列函數(shù)有如下應(yīng)用:
- 檢查軟件是否被篡改
- 基于口令的加密
- 消息認(rèn)證碼
- 數(shù)字簽名
- 偽隨機(jī)數(shù)生成器
- 一次性口令
散列函數(shù)
常用的單向散列函數(shù)有:
- MD4兑宇、MD5碍侦,目前這個(gè)兩個(gè)算法的強(qiáng)抗碰撞性已經(jīng)被破解,已經(jīng)能夠產(chǎn)生具備相同散列值的兩條不同的消息隶糕。
- SHA-1瓷产、SHA-2(SHA-256、SHA-384枚驻、SHA-512等)濒旦, SHA的強(qiáng)抗碰撞性已經(jīng)被攻破,SHA-2還尚未被攻破再登。
- RIPEMD尔邓、RIPEMD-160, RIPEMD已經(jīng)被攻破晾剖,RIPEMD-160尚未被攻破,比特幣使用的是RIPEMD-160梯嗽。
- SHA-3齿尽,Keccak算法于2012年被選為SHA-3。
消息認(rèn)證碼
消息認(rèn)證碼(Message Authentication Code)是一種確認(rèn)完整性并進(jìn)行認(rèn)證的技術(shù)灯节,簡稱MAC循头。
使用
其使用步驟如下圖:
- 發(fā)送者Alice與接收者Bob事先共享密鑰;
- 發(fā)送者Alice根據(jù)匯款請(qǐng)求消息計(jì)算MAC值(使用共享密鑰)炎疆;
- 發(fā)送者Alice將匯款請(qǐng)求和MAC值兩者發(fā)送給接收者Bob卡骂;
- 接收者Bob根據(jù)接收到的匯款請(qǐng)求消息計(jì)算MAC值(使用共享密鑰);
- 接收者Bob將自己計(jì)算得MAC值和從Alice處收到的MAC值進(jìn)行對(duì)比形入;
- 如果兩個(gè)MAC值一致全跨,則接收者Bob就可以斷定匯款請(qǐng)求的確來找Alice(認(rèn)證成功),如果不一致亿遂,則可以斷定消息不是來找Alice(認(rèn)證失斉ㄈ簟)。
數(shù)字簽名
數(shù)字簽名就是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串崩掘,這段數(shù)字串同時(shí)也是對(duì)信息的發(fā)送者發(fā)送信息真實(shí)性的一個(gè)有效證明七嫌,可以用來識(shí)別篡改和偽裝,還可以防止否認(rèn)苞慢。數(shù)字簽名是非對(duì)稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用。
簽名生成和驗(yàn)證
數(shù)字簽名中英妓,包括生成消息簽名和驗(yàn)證消息簽名兩部分挽放。
消息發(fā)送者使用簽名密鑰來生成消息的簽名,而消息接收者或者驗(yàn)證者則使用驗(yàn)證密鑰來驗(yàn)證消息的簽名蔓纠。簽名密鑰只能由簽名的人持有辑畦,而驗(yàn)證密鑰的則是任意需要驗(yàn)證簽名的人都可以持有。
實(shí)際上腿倚,數(shù)字簽名跟公鑰密碼有非常緊密的聯(lián)系纯出,兩者非常相似。簡而言之敷燎,數(shù)字簽名就是通過將公鑰密碼“反過來用”而實(shí)現(xiàn)的暂筝。
數(shù)字簽名方法
有兩種生成數(shù)字簽的方法:
- 直接對(duì)消息簽名的方法
- 對(duì)消息的散列值簽名的方法
直接對(duì)消息簽名的方法
簽名和驗(yàn)證流程如下圖:
對(duì)消息的散列值簽名的方法
簽名和驗(yàn)證流程如下圖:
應(yīng)用
數(shù)字簽名有如下一些應(yīng)用:
- 安全信息公告
- 軟件下載
- 公鑰證書
- SSL/TLS
RSA實(shí)現(xiàn)數(shù)字簽名
RSA生成簽名:
簽名 = 消息^D mod N
RSA驗(yàn)證簽名:
由簽名求得的消息 = 簽名^E mod N
驗(yàn)證簽名時(shí),將“由簽名求得的消息”與“消息”進(jìn)行對(duì)比硬贯。
參考
- 《圖解密碼技術(shù)》[日] 結(jié)城浩 著