現代密碼學中的訊息認證碼與通訊學的訊息檢錯碼有密切的聯絡,並由其演變而來,但其根源和目的是不同的,採用的技術手段有本質的差別。
訊息認證的基礎是生成認證碼,用來檢查訊息是否被惡意修改。
區別:
檢錯碼是檢測由於通訊的缺陷而導致訊息發生錯誤的方法。(客觀環境造成的)
認證碼是用來檢查由於惡意或有目的等方式修改訊息的技術。(人為原因造成的)
雜湊函式在資料完整性和數字簽名等領域有廣泛的應用。
hash函式簡介
也稱雜湊函式、雜湊函式等,是一種單向密碼體制,即它是乙個從明文到密文的不可逆對映,即只有「加密」過程,不存在「解密」過程。同時,hash函式可以將「任意」長度的輸入經過變換以後得到固定長度的輸出。hash函式的這種單向特徵和輸出資料長度固定的特徵使得它可以生成訊息或資料塊的「資料指紋」(也稱訊息摘要、雜湊值或雜湊值)
hash函式的表示
對不同長度的輸入訊息,產生固定長度的輸出。這個固定長度的輸出稱為原輸入訊息的「雜湊值」或「訊息摘要」(message digest)。
公式表示形式: h=h(m)
m:任意長度的訊息
h:雜湊(hash)函式或雜湊函式或雜湊函式
h:固定長度的雜湊值
hash函式的特點:
1.單向性:對於給定的雜湊值h,要找到m使得h(m)=h在計算上是不可行的。(逆向不可行)
2.抗弱碰撞性:對於給定的訊息m1,要發現另乙個訊息m2,滿足h(m1)=h(m2)在計算上是不可行的。
3.抗強碰撞性:找任意一對不同的訊息m1,m2 ,使h(m1)=h(m2 )在計算上是不可行的。
4.隨機性:當乙個輸入位發生變化時,輸出位將發生很大變化。(雪崩效應)
hash函式的技術核心:
設計無碰撞的hash函式f,而攻擊者對演算法的攻擊重點是hash函式f 的內部結構,由於hash函式f 和分組密碼一樣是由若干輪處理過程組成,所以對hash函式f 的攻擊需通過對各輪之間位模式的分析來進行,分析過程常常需要先找出hash函式f 的碰撞。由於hash函式f是壓縮函式,其碰撞是不可避免的。
因此,在設計hash函式f時就應保證找出其碰撞在計算上是不可行的。
常用的雜湊函式:
md5sha系列:
sha系列包括多個雜湊演算法標準,其中,sha-1是數字簽名標準中要求使用的演算法。
sha-1簡介:
sha-1接受任何有限長度的輸入訊息,並產生長度為160位元的hash值(md5僅僅生成128位的摘要),因此抗窮舉攻擊的能力更強。sha-1 設計時基於和md4相同原理,它有5個參與運算的32位暫存器字,訊息分組和填充方式與md5相同,主迴圈也同樣是4輪,但每輪進行20次操作,非線性運算、移位和加法運算也與md5類似,但非線性函式、加法常數和迴圈左移操作的設計有一些區別。
hash函式的攻擊:
攻擊者的主要目標不是恢復原始的明文,而是尋找與合法訊息雜湊值相同的非法訊息,然後用非法訊息替代合法訊息進行偽造和欺騙,所以,對雜湊函式的攻擊也是尋找碰撞的過程。
生日攻擊和中途相遇攻擊
生日問題:
問題:假定每個人的生日是等概率的,每年有365天(不考慮閏年)。在k個人中至少有兩個人的生日相同的概率大於0.5,問k的最小值是多少?
把每個人的生日看作在[1,365]中的隨機變數。由組合數學基本知識得知k個人的生日不重複的概率為
目前安全的雜湊值位數是多少?
假設雜湊值位數為k,其資訊集合大小為2的k次方,那麼,這集合中多少個訊息時使得出現碰撞的概率大於50%。
結論:
sha系列相關引數總結:
hash函式的攻擊
網路系統安全一般要考慮兩個方面:一方面,加密保護傳送的資訊,使其可以抵抗被動攻擊;另一方面,就是要能防止對手對系統進行主動攻擊,如偽造、篡改資訊等。認證是對抗主動攻擊的主要手段,它對於開放的網路中的各種資訊系統的安全性有重要作用。
認證分為身份認證和訊息認證。
訊息認證的目的:
hash函式的分類:
改動檢測碼mdc(manipulation detection code)
• 不帶金鑰的雜湊函式
• 主要用於訊息完整性
訊息認證碼mac(message authentication code)
• 帶金鑰的雜湊函式
• 主要用於訊息源認證和訊息完整性。
訊息認證碼(mac,messages authentication codes),是與金鑰相關的的單向雜湊函式,也稱為訊息鑑別碼或是訊息校驗和。此時需要通訊雙方a和b共享一金鑰k。
hmac簡介:
hmac的結構:
訊息驗證碼的功能:
1.接收方相信傳送方發來的訊息未被篡改。這是因為攻擊者不知道金鑰,所以不能夠在篡改訊息後相應地篡改mac,而如果僅篡改訊息,則接收方計算的新mac將與收到的mac一定是不同的。
2.接收方相信傳送方不是冒充的。這是因為除收發雙方外再無其他人知道金鑰,因此其他人不可能對傳送方傳送的訊息計算出正確的mac。
雜湊密碼演算法應用:
1.訊息完整性檢測
2.基於口令的身份認證
3.口令認證(例如:採用hash函式,銀行工作者無法獲取使用者的密碼)
雜湊函式的好處:
Hash函式和Hash衝突
2.rehash 3.鍊錶法 4.建立公共溢位區 一 簡介 將任意長度的數值以某個對映規則對映為固定長度的數值,這個過程稱為hash,而這個對映規則被稱為hash函式,而對這個key value進行儲存的資料結構被稱為hash表。由於通過key的hash對映直接得到了記憶體位址,所以hash查詢的時...
訊息摘要 雜湊(hash) 加鹽
hashlib 演算法介紹 python的hashlib提供了常見的摘要演算法,如md5,sha1等等。什麼是摘要演算法呢?摘要演算法又稱雜湊演算法 雜湊演算法。它通過乙個函式,把任意長度的資料轉換為乙個長度固定的資料串 通常用16進製制的字串表示 摘要演算法就是通過摘要函式f 對任意長度的資料da...
訊息認證碼 hmac
hmac hash message authentication code 是用來確認訊息的完整性及認證訊息的傳送者的技術 完整性,是通過判斷hash值來確定的 認證,是通過對稱密碼的金鑰來完成的 因為是對稱密碼,所以傳送發和接收方事先需要共享金鑰 公式 hmac hash msg,key 傳送方傳...