一瓦侮、單向散列函數(shù) one way hash function
- 什么是單向散列函數(shù)?
- 單向散列函數(shù)夏跷,又被稱為消息摘要函數(shù)(message digest function)闷旧,哈希函數(shù)
- 輸出的散列值,也被稱為消息摘要(message digest)城舞、指紋(fingerprint)
- 嚴格來講:它不是加密算法
- 常見的幾種單向散列函數(shù)
- MD4轩触、MD5:產生 128bit 的散列值,MD 就是 Message Digest 的縮寫家夺,目前已經不安全
- SHA-1:產生 160bit 的散列值脱柱,目前已經不安全
- SHA-2:SHA-256拉馋、SHA-384榨为、SHA-512惨好,散列值長度分別是 256bit、384bit随闺、512bit
- 單向散列函數(shù)的特點
- 根據(jù)任意長度的消息日川,計算出固定長度的散列值
- 計算速度快,能快速計算出散列值
- 消息不同矩乐,散列值也不同
- 具備單向性
-
單向散列函數(shù)的核心思想 →
**防篡改龄句,摘要,單向性**
常見場景一: 網站發(fā)布軟件散罕,通常用戶會根據(jù)自己的喜歡和網絡情況從各個不同渠道下載軟件分歇。那如何保證軟件沒有被篡改過呢?通常官網軟件旁邊會附上一個
散列值
欧漱,用戶在各個地方獲取軟件之后职抡,可以自己通過摘要算法計算一下散列值,如果和官網的相同误甚,就表明軟件沒有被篡改繁调。這主要體現(xiàn)摘要和防篡改
常見場景二:幾乎所有的服務器都不保存用戶的真實密碼,通常保證的就是用戶密碼的
摘要值
靶草。萬一有一天服務器遭到攻擊,用戶信息泄露了奕翔,黑客拿到了用戶密碼,也無法還原出用戶當初輸出的真實密碼派继,這樣服務端就比較安全宾袜。這也是為什么一般我們忘記某個密碼之后,服務端都不支持找回密碼的原因驾窟,因為服務端也不知道扒烀ā!這主要提現(xiàn)了單一性
二绅络、數(shù)字簽名
- 什么是數(shù)字簽名月培?
- 生成簽名:由消息的發(fā)送者完成,通過
簽名密鑰
也就是私鑰
完成 - 驗證簽名:有消息的接收者完成恩急,通過
驗證密鑰
也就是公鑰
完成
2.數(shù)字簽名和公鑰加密的對比
對比表格
- 數(shù)字簽名杉畜,其實就是將公鑰密碼反過來用
- 數(shù)字簽名的作用不是為了保證機密性,僅僅是為了能夠識別內容有沒有被篡改衷恭,也就是證明是私鑰本人發(fā)送的數(shù)據(jù)
- 數(shù)字簽名流程 → 核心思想 證明是私鑰持有者發(fā)送的信息
情景的背景描述:Bob 收到暗戀著 Alice 的
約會信息
此叠,可是 Bob 如何確定消息沒被篡改?如何確定沒有人冒充Alice發(fā)送消息随珠?
Alice 想約會 Bob
- Alice 生成一對
私鑰
和公鑰
灭袁,把自己的公鑰
公布出去 - 再吧將要發(fā)送的
約會信息
猬错,使用摘要算法
生成一個摘要值
- Alice 將
摘要值
使用私鑰
進行簽名
,然后把簽名值
茸歧、約會消息
一并發(fā)給 Bob
Bob 收到 Alice 的約會消息
- Bob 拿到 Alice 公布的
公鑰
(暫時假定 Bob 拿到的公鑰是正確的) - Bob 用
Alice的公鑰
驗證簽名值
兔魂,獲得摘要值
。 - Bob 將
約會消息
進行單向散列算法獲得新摘要值
举娩。 - Bob 對比
摘要值
和新摘要值
一致析校,那么就可以確定消息來自 Alice,并且未經過篡改铜涉。
三智玻、數(shù)字簽名無法解決的問題 → 中間人攻擊
仔細思考我們前面的內容吊奢,無論是公鑰加密的示例中页滚,還是數(shù)字簽名的示例中裹驰,我們都只能
假設對方拿到的公鑰是正確的
幻林,基于這個大前提沪饺,Bob 和 Alice 的信息交流才是安全可靠的整葡,如果遭受到中間人攻擊呢遭居?
中間人劫持流程圖
四魏滚、證書
密碼學中的證書,全稱叫做公鑰證書(Public-key Certificate芋齿,PKC),跟身份證觅捆、駕駛證類似。里面有姓名掂摔、郵箱等個人信息乙漓,以及此人的公鑰叭披。并由認證機構(Certificate Authority 涩蜘,CA)施加數(shù)字簽名
證書生成和使用流程圖
五、總結
- 對稱密碼
- 加密和解密用的同一種密鑰
- 加密速度快
- 無法解決傳輸中密鑰泄露的問題
- 公鑰密碼
- 公鑰加密樟澜,私鑰解密往扔;私鑰加密,公鑰解密
- 加密速度慢
- 可以解決密鑰傳輸泄露的問題
- 單向散列函數(shù)
- 可以對所有信息進行
摘要算法
萍膛,生成長度相同的摘要值
- 具有不可逆性蝗罗、單一性
- 主要用于防篡改
- 數(shù)字簽名
- 使用私鑰加密消息的散列值串塑,生成簽名
- 使用公鑰驗證簽名
- 主要用于
保證消息來源的可靠性
- 證書
- 由 CA 證書機構桩匪,使用私鑰對其他人的公鑰生成數(shù)字簽名
- 主要是避免中間人攻擊