1. 程式人生 > >密碼學學習整理三

密碼學學習整理三

iso 兩個 安全性 無法識別 hash函數 bubuko 不同 sha-1 網絡

密碼學學習整理三

一. Hash函數與消息認證碼

  1. Hash函數
  2. 定義

    是一個將任意長度的消息映射成固定長度輸出的函數

    Hash函數是一個具有壓縮功能的函數

    • 設X是消息的集合,Y是散列值的集合
    • 我們總是假設|X|≥|Y|,並且經常假設更強的條件|X|≥2|Y|
    • 根據鴿巢原理:兩個甚至多個消息會映射為同一個散列值
  3. 安全性

    • 原像穩固:給定散列值y,要找到一個x,使得H(x)=y是計算上不可行的
    • 第二原像穩固:給定消息x,找到另一個x’,使得H(x’)=H(x)是計算上不可行的
    • 碰撞穩固:找到兩個不同的消息 x和x’ ,使得H(x)=H(x’)是計算上不可行的
  4. 對Hash函數的攻擊實際就是 尋找一對碰撞 的過程

  5. 如果Hash函數 H 設計得“好”,對給定x,要想求得相應的散列值,必須通過計算H(x)才行。如果想繞過 H,而采用其他方法計算出散列值是非常困難的。即使在已知若幹散列值H(x1),H(x2),…的情況下,仍是困難的,因此有H(x1)+H(x2)≠H(x1+x2) ,H(x1)H(x2)≠H(x1x2)

  6. 生日攻擊告訴我們:為了能達到n-bit的安全性,你所選擇的Hash函數的散列值長度應該是2n。如果你想讓攻擊者成功破譯的可能性低於1/280,那麽應該使用散列值長度是160-bit的Hash函數

  7. 著名的Hash函數MD5,SHA-0,SHA-1,SHA-2,SHA-3

    1. MD5
      1. 輸入:將信息分為512bit一組處理
      2. 輸出:散列值長度為128bit
      3. 速度快,不依賴任何密碼模塊和假設條件,特別適合32位計算機軟件實現
    2. SHA系列
      1. 輸入:SHA-1將消息分為512bit一組,整個消息長度小於2^64
      2. 輸出:SHA-1散列值長度為160bit
      3. 速度比MD5慢
  8. 消息認證碼
  9. 消息在傳輸過程中是否發生改變或被惡意篡改,我們怎麽能知道?
    • 使用“數據完整性技術”當消息發生改變時,我們可以檢查出來
  10. Hash函數能否保證數據的完整性 ?
    • 不能,舉例:某公司經網絡發送一張訂單m,為防範遭惡意篡改,先用Hash函數計算訂單散列值H(m),再將之與訂單一起發送 [m,H(m)]。接收方計算收到訂單m’的散列值H(m’),若與收到的散列值相同,則確信訂單未被篡改。問此方法是否行得通?為什麽?不行,攻擊者可先篡改訂單,再計算假訂單的散列值 (接收方無法識別)。關鍵問題:Hash函數沒有密鑰 (給定消息,任何人都可以計算)。
  11. 可以看得出,如果設計一個帶有密鑰的算法,便可以解決這一問題,也就可以防範攻擊者進行偽造 。消息認證碼(MAC)算法便是這種帶密鑰的算法,它是實現數據完整性的重要工具 ,其產生的輸出也相應地被稱作MAC 。
  12. 安全性要求-抗偽造
    1. 在不知道密鑰的情況下,給定任何消息,產生相應的MAC是計算上不可行的
    2. 即使已知很多消息及對應的MAC,對新消息產生MAC仍是計算上不可行的
  13. MAC構造-基於CBC模式構造
    1. 該方法對於定長消息是安全的
    2. 如果消息長度可變,即使密鑰K沒泄露,同樣不安全
    3. CBC-MAC只有用於定長消息才能抗偽造
    4. ISO標準的CBC-MAC
  14. 消息認證

  15. 消息認證,又稱數據源認證,它的重要目標

    1. 保證傳輸消息的完整性(檢查消息是否被改動過)
    2. 保證消息是由指定發送者發來的
  16. 主要技術

    1. 基於 Hash函數和加密 的認證

    技術分享圖片

    1. 基於 MAC 的認證

    技術分享圖片

    1. 基於MAC的認證 (續)

      1. 如果Bob計算得到的MAC與接收到的MAC一致,則說明:

        1. Alice發送的消息未被篡改

          • 因為攻擊者不知道密鑰,無法在篡改消息後產生相應的MAC
        2. Alice不是冒充的

          • 因為除收發雙方外,沒人知道密鑰,攻擊者無法冒充Alice發送合法的MAC
      2. 提供機密性的消息認證(方案一)明文M先被加密,再與MAC一起發送

        技術分享圖片

      3. 提供機密性的消息認證(方案二)明文M與MAC被一起加密

        技術分享圖片

      4. 通常,我們希望直接對明文進行認證,因此 方案2 的使用方式更為常用

密碼學學習整理三