密碼學學習整理三
阿新 • • 發佈:2018-06-22
iso 兩個 安全性 無法識別 hash函數 bubuko 不同 sha-1 網絡
密碼學學習整理三
一. Hash函數與消息認證碼
Hash函數
定義
是一個將任意長度的消息映射成固定長度輸出的函數
Hash函數是一個具有壓縮功能的函數
- 設X是消息的集合,Y是散列值的集合
- 我們總是假設|X|≥|Y|,並且經常假設更強的條件|X|≥2|Y|
- 根據鴿巢原理:兩個甚至多個消息會映射為同一個散列值
安全性
- 原像穩固:給定散列值y,要找到一個x,使得H(x)=y是計算上不可行的
- 第二原像穩固:給定消息x,找到另一個x’,使得H(x’)=H(x)是計算上不可行的
- 碰撞穩固:找到兩個不同的消息 x和x’ ,使得H(x)=H(x’)是計算上不可行的
對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
- MD5
- 輸入:將信息分為512bit一組處理
- 輸出:散列值長度為128bit
- 速度快,不依賴任何密碼模塊和假設條件,特別適合32位計算機軟件實現
- SHA系列
- 輸入:SHA-1將消息分為512bit一組,整個消息長度小於2^64
- 輸出:SHA-1散列值長度為160bit
- 速度比MD5慢
- MD5
消息認證碼
- 消息在傳輸過程中是否發生改變或被惡意篡改,我們怎麽能知道?
- 使用“數據完整性技術”當消息發生改變時,我們可以檢查出來
- Hash函數能否保證數據的完整性 ?
- 不能,舉例:某公司經網絡發送一張訂單m,為防範遭惡意篡改,先用Hash函數計算訂單散列值H(m),再將之與訂單一起發送 [m,H(m)]。接收方計算收到訂單m’的散列值H(m’),若與收到的散列值相同,則確信訂單未被篡改。問此方法是否行得通?為什麽?不行,攻擊者可先篡改訂單,再計算假訂單的散列值 (接收方無法識別)。關鍵問題:Hash函數沒有密鑰 (給定消息,任何人都可以計算)。
- 可以看得出,如果設計一個帶有密鑰的算法,便可以解決這一問題,也就可以防範攻擊者進行偽造 。消息認證碼(MAC)算法便是這種帶密鑰的算法,它是實現數據完整性的重要工具 ,其產生的輸出也相應地被稱作MAC 。
- 安全性要求-抗偽造
- 在不知道密鑰的情況下,給定任何消息,產生相應的MAC是計算上不可行的
- 即使已知很多消息及對應的MAC,對新消息產生MAC仍是計算上不可行的
- MAC構造-基於CBC模式構造
- 該方法對於定長消息是安全的
- 如果消息長度可變,即使密鑰K沒泄露,同樣不安全
- CBC-MAC只有用於定長消息才能抗偽造
- ISO標準的CBC-MAC
消息認證
消息認證,又稱數據源認證,它的重要目標
- 保證傳輸消息的完整性(檢查消息是否被改動過)
- 保證消息是由指定發送者發來的
主要技術
- 基於 Hash函數和加密 的認證
- 基於 MAC 的認證
基於MAC的認證 (續)
如果Bob計算得到的MAC與接收到的MAC一致,則說明:
Alice發送的消息未被篡改
- 因為攻擊者不知道密鑰,無法在篡改消息後產生相應的MAC
Alice不是冒充的
- 因為除收發雙方外,沒人知道密鑰,攻擊者無法冒充Alice發送合法的MAC
提供機密性的消息認證(方案一)明文M先被加密,再與MAC一起發送
提供機密性的消息認證(方案二)明文M與MAC被一起加密
通常,我們希望直接對明文進行認證,因此 方案2 的使用方式更為常用
密碼學學習整理三