定義算法
是一個將任意長度的消息映射成固定長度輸出的函數安全
Hash函數是一個具備壓縮功能的函數網絡
安全性函數
對Hash函數的攻擊實際就是 尋找一對碰撞 的過程工具
若是Hash函數 H 設計得「好」,對給定x,要想求得相應的散列值,必須經過計算H(x)才行。若是想繞過 H,而採用其餘方法計算出散列值是很是困難的。即便在已知若干散列值H(x1),H(x2),…的狀況下,還是困難的,所以有H(x1)+H(x2)≠H(x1+x2) ,H(x1)H(x2)≠H(x1x2)學習
生日攻擊告訴咱們:爲了能達到n-bit的安全性,你所選擇的Hash函數的散列值長度應該是2n。若是你想讓攻擊者成功破譯的可能性低於1/280,那麼應該使用散列值長度是160-bit的Hash函數加密
著名的Hash函數MD5,SHA-0,SHA-1,SHA-2,SHA-3設計
消息認證code
消息認證,又稱數據源認證,它的重要目標blog
主要技術
基於MAC的認證 (續)
若是Bob計算獲得的MAC與接收到的MAC一致,則說明:
Alice發送的消息未被篡改
* 由於攻擊者不知道密鑰,沒法在篡改消息後產生相應的MAC
Alice不是冒充的
* 由於除收發雙方外,沒人知道密鑰,攻擊者沒法冒充Alice發送合法的MAC
提供機密性的消息認證(方案一)明文M先被加密,再與MAC一塊兒發送
提供機密性的消息認證(方案二)明文M與MAC被一塊兒加密
一般,咱們但願直接對明文進行認證,所以 方案2 的使用方式更爲經常使用