密碼學Hash函數、消息認證碼、數字簽名和用戶認證

在這裏插入圖片描述
在安全應用中使用的Hash函數稱爲密碼學Hash函數
密碼學Hash函數要求兩種情況在計算上不可行(即沒有攻擊方法比窮舉更有效):

  • 對預先指定的Hash值找到對應的數據塊(單向性)
  • 找到兩個不同的數據塊對應相同的Hash值(抗碰撞性)
    Hash函數被用於判斷數據是否被篡改過(數據完整性)

Hash函數的操作過程:
輸入數據的長度首先被填充爲某固定長度(如1024位)分組的整數倍,填充的內容包括原始消息的位長度信息。填充長度信息能夠提高攻擊者修改信息而保持Hash值不變的難度。
在這裏插入圖片描述

一、密碼學Hash函數的應用

1.消息認證(Message Authentication)
是用來驗證消息完整性的一種機制和服務

  • 消息認證確保收到的數據確實和發送時的一樣(即沒有修改、插入、刪除或重放)
  • 還要求消息認證機制確保發送方聲稱的身份是真實有效的
    當Hash函數用於提供消息認證功能時,Hash函數值通常稱爲消息摘要
    消息認證中使用Hash函數的本質如下:
  • 發送者根據待發送的消息使用該函數計算一組Hash值,然後將Hash值和消息一起發送過去
  • 接收者收到後對消息執行同樣的Hash計算,並將結果與收到的Hash值進行對比
  • 如果不匹配則接收者推斷出消息(也可能是Hash值)遭到了篡改
    Hash函數 的運行結果必須通過安全的方式進行傳輸。
    在這裏插入圖片描述
    在這裏插入圖片描述
    Hash碼能夠通過以下方法用於提供消息認證:
    在這裏插入圖片描述
  • 使用對稱密碼算法加密消息和Hash碼
  • 使用對稱密碼算法只對Hash碼進行加密
  • 不使用加密算法,僅使用Hash函數也能實現消息認證
  • 對整個消息和Hash值加密

b所需計算少,a、d需要加密整個消息,如果不要求提供保密性,b比a、d更有優勢。

更一般地,消息認證是通過使用消息認證碼(MAC)實現的,即帶密鑰的Hash函數
通常情況下,通信雙方基於共享的同一密鑰來認證彼此之間交互的信息時,就會使用MAC。
MAC函數將密鑰和數據塊作爲輸入產生Hash值作爲MAC碼,然後將MAC碼和受保護的消息一起傳遞或存儲。
檢查消息完整性的時候,使用MAC函數對消息重新計算,並將計算結果與存儲的MAC碼對比。
攻擊者能對消息進行篡改,但是在不知道密鑰的情況下不能夠計算出與篡改後的消息相匹配的MAC值。
MAC是Hash函數和加密函數操作的結合,即對於函數E(K,H(M)),長度可變的消息M和密鑰K是函數的輸入,輸出是固定長度的值。MAC提供安全保護,用於抵抗不知道密鑰的攻擊者的攻擊,

2.數字簽名
在數字簽名時,使用發送方的私鑰加密消息的Hash值,其他任何知道該發送方公鑰的人都能通過數字簽名來驗證消息的完整性。
攻擊者想要篡改消息,需要知道用戶的私鑰。
數字簽名的應用比消息認證更廣泛。
在這裏插入圖片描述
3.其他應用

  • 用於產生單向口令文件(操作系統存儲口令的Hash值而不是口令本身)
  • 用於入侵檢測和病毒檢測
  • 用於構建隨機函數(PRF)或用作僞隨機數發生器(PRNG),基於Hash函數的PRF課用於對稱密碼中的密鑰產生

二、密碼學Hash函數的安全需求

在這裏插入圖片描述
在這裏插入圖片描述

三、對Hash函數的攻擊

  • 窮舉攻擊:不依賴任何算法的細節,僅與算法所產生的Hash值的長度有關。
  • 密碼分析:依賴於具體算法的設計缺點

安全Hash碼的一般結構:
在這裏插入圖片描述

四、安全Hash函數(SHA)

SHA算法建立在MD4算法之上,其基本框架也與MD4類似。
SHA-1產生160位Hash值
SHA-2的Hash值長度分別爲256,384,512,分別稱爲SHA-256,SHA-384,SHA-512。
在這裏插入圖片描述
SHA-3:基本迭代結構爲海綿結構,海綿結構與其他迭代Hash函數的結構相似。
在海綿函數中,輸入消息被分塊爲固定長度的分組。
每個分組逐次作爲每輪迭代的輸入,同時上輪迭代的輸出也反饋至下輪的迭代中,最終產生一組輸出塊。
在這裏插入圖片描述
海綿函數的輸入、輸出:
在這裏插入圖片描述
海綿函數的迭代結構:
在這裏插入圖片描述
SHA-3參數:
在這裏插入圖片描述


消息認證碼

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
消息認證函數:
在這裏插入圖片描述
1.消息加密
消息加密本身提供了一種認證手段。對稱密碼和公鑰密碼體制中,對消息加密的分析是不同的。

  • 對稱加密在這裏插入圖片描述
    在這裏插入圖片描述
  • 公鑰加密
    直接使用接收方公鑰加密可提供保密性,但不能提供認證
    發送方私鑰加密消息(數字簽名),接收方用發送方的公鑰對消息進行解密(驗證簽名),提供了認證。
    既要保密又要認證:發送方私鑰加密(數字簽名),發送方用接收方的公鑰對上述結果進行加密(保密性)。 缺點:一次通信中要執行4次而不是兩次複雜的公鑰算法

2.消息認證碼
又稱密碼校驗和或MAC,也是一種認證技術。它利用密鑰來生成一個固定長度的短數據塊,並將該數據塊附加在消息之後。
在這裏插入圖片描述
MAC算法不要求可逆性,加密算法必須可逆
在這裏插入圖片描述
對MAC的攻擊:

  • 窮舉攻擊:攻擊密鑰空間和MAC值
  • 密碼分析

基於Hash函數的MAC(HMAC)
基於分組密碼的MAC(數據認證算法DAA、基於密碼的消息認證碼CMAC)
認證加密(分組密碼鏈——消息認證碼CCM、Galoid/計數器模式GCM)
基於Hash函數、基於MAC的PRNG


數字簽名

一、數字簽名簡介

數字簽名過程的一般模型:
在這裏插入圖片描述
在這裏插入圖片描述
在收發雙方不能完全信任的情況下,需要除認證之外的其他方法來解決他人僞造或當事人否認的問題。
數字簽名是解決這個問題最好的方法。

數字簽名必須具有的特徵:

  • 驗證簽名者、簽名日期和時間(消息來源
  • 認證被籤的消息內容(數據完整性
  • 簽名由第三方仲裁以解決爭執

數字簽名具有認證功能。

攻擊:
在這裏插入圖片描述
僞造:
在這裏插入圖片描述
在這裏插入圖片描述
數字簽名應滿足的條件:
在這裏插入圖片描述
直接數字簽名:
只涉及通信雙方(發收雙方)的數字簽名方案
假定接收方已知發送方的公鑰,用共享的密鑰(對稱密碼)對整個消息和簽名加密,則可以獲得保密性
先進行簽名,再執行外層的加密,在發生爭執時,第三方可以查看消息及簽名。
該方法的有效性依賴於發送方私鑰的安全性。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

二、數字簽名算法(DSA)

使用安全Hash算法(SHA),最新版本還包括基於RSA和橢圓曲線密碼的數字簽名算法。
兩種數字簽名的方法:
在這裏插入圖片描述
DSA使用的是隻提供數字簽名功能的算法,與RSA不同,DSA雖然是一種公鑰密碼方案,但不能用於加密或密鑰交換。
在RSA方法中,Hash函數的輸入是要簽名的消息,輸出是定長的Hash碼,用發送方的私鑰將該Hash碼加密成簽名,然後發送消息及其簽名。接收方收到消息,計算Hash碼。接收方用發送方的公鑰對簽名解密,如果計算出的Hash碼與解密出的結果相同,則認爲簽名是有效的。因爲只有發送方擁有私鑰,所以只有發送方能夠產生有效的簽名。
DSA方法也使用Hash函數,它產生的Hash碼和爲此次簽名而產生的隨機數k作爲簽名函數的輸入,簽名函數依賴於發送方的私鑰和一組參數,這些參數爲一組通信夥伴所共有,我們可以認爲這組參數構成全局公鑰。簽名由兩部分組成,標記爲s和r。
在這裏插入圖片描述
DSA是建立在求離散對數之困難性以及ElGamal和Schnorr最初提出的方法之上。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

三、橢圓曲線數字簽名算法(ECDSA)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


用戶認證

一、雙向認證(Mutual Authentication)

使通信雙方互相認證彼此身份並交換會話密鑰。
已認證的密鑰交換主要關注兩個問題:保密性和實效性

重放攻擊的例子:
在這裏插入圖片描述
防止重放攻擊的方法:

  • 爲每一個用於認證交互的消息附上一個序列號,新的消息只有其序列號滿足適當的順序時纔會被接收。
    這種方法的難點是要求每一方都跟蹤與其交互的通信方最新的序列號。
    考慮到開銷問題,序列號基本上不會用於認證和密鑰交換。
  • 爲每個消息附上時間戳,要求不同參與者之間的時鐘是同步的
  • 挑戰/應答

二、單向認證(One-Way Authentication)

應用領域:電子郵件服務
郵件消息需要加密,並且郵件處理系統不擁有解密密鑰
認證的作用是接收者需要確保消息確實來自於所謂的發送者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章