天天看點

密碼學與網絡安全筆記整理-資料完整性技術

1. 資料完整性

類似于通信中的校驗碼功能,在密碼學領域資料完整性用于驗證收到資訊的正确性,校驗收到的資訊是否經過篡改,校驗收到的資訊是真實的發送者發送而非僞造。發送者通過編碼為消息增加一些“備援”,生成一個校驗值,并将該校驗值附在消息之後。接收者根據協商好的規則,利用附加的校驗值來檢測接收到消息的正确性。

密碼學與網絡安全筆記整理-資料完整性技術

2. 對稱技術

  • 有效的變換f和g是對稱算法,意味着f = g,并且Ke = Kv;
  • MAC(消息認證碼):由對稱密碼技術生成的MDC;
  • MAC的生成驗證可以使用:keyed hash函數,分組加密等;

3. Keyed hash函數與HMAC

  • 一個确定的函數,可以将任意長的比特串映射為一個固定長的比特串,該函數需要key作為參數;
  • 設h表示一個Keyed hash函數,其固定輸出長度為|h|;
  • h應當是混合變換的;
  • h應當可以抵抗沖突攻擊;
  • h應當可以抵抗原像攻擊;
  • h應當具有實用有效性;

    使用keyed hash函數構造生成的MAC被稱為HMAC,與發送者共享key的接收者收到M,并重新計算HMAC,檢驗與收到的HMAC是否一緻,HMAC = h(key || M || key),用密鑰包含資訊的兩端是阻止攻擊者直接修改資訊字首或者消息字尾。

4. 基于分組加密算法的MAC

使用分組加密構造keyed hash函數,選擇CBC模式,密鑰為k,每一塊加密函數為Ek(m):

  • 對資訊M分組,分成若幹長度相同(分組加密算法每一塊的長度)的塊M = m(1)m(2)……m(t),如果最後一塊長度不夠,則需要随機填充padding;
  • H(0) = IV,随機初始向量;
  • H(i) = Ek(m(i) ⊕ H(i-1)),i = 1, 2……t;
  • 将(IV, H(t))作為MAC;
    密碼學與網絡安全筆記整理-資料完整性技術
    說明:
  • CBC-MAC是一個單向變換,不可求其逆資料:因為MAC裡面包含的隻是分組加密得到的最後一塊H(t)與IV,根據CBC的加密解密流程:無論是接收者還是中間的攻擊者都無法根據最後一塊H(t)和IV反推出全部的MAC值,是以這是一個單向變換;
  • MAC在MAC空間中分布均勻;
  • 發送者與接收者共享密鑰k,發送者發送消息M與CBC-MAC,接收者收到M與MAC(IV, H(t)),進行再一次計算,驗證是否相同;

5.生日攻擊

生日攻擊又稱平方根攻擊,攻擊者利用生日現象,找到沖突的哈希函數值,僞造封包,進而進行攻擊。為了實施攻擊,攻擊者通過計算若幹message-hash數值對,直到找到沖突。

【例】

M = (price, description, R), h = h(price, description, R)
M1 = (price1, description, R1), h1 = h(price1, description, R1)
M ≠ M1, h = h1, use (M1 || h1) to forge(M || h)
           

生日攻擊:攻擊者計算 2|h|/2 的規模即可以一個非常大的機率得到沖突的哈希數值對。

【證明】

假設計算K次,能夠找到沖突的哈希數值對的機率為P。

在證明生日攻擊這個問題之前,我們回想這樣一個簡單的問題:一個黑色的盒子裡裝了N個顔色各不相同的小球,每一次我們摸一個球記錄一下它的顔色,再放回去,那麼我們摸了K次,都沒有摸到重複顔色的球的機率為1-P。

那麼K次都是獨立的事件:

1−p=(1−12|h|)∗(1−22|h|)∗(1−K−12|h|)

第一次肯定是100%不會相同,第二次隻要和第一次顔色不同即可,是以分子是1,第三次要和前兩次顔色不同,是以分子是2……以此類推。

回到我們的問題,兩者是等同的,在我們的問題中,1-P代表了攻擊者計算了K次,仍然還沒有找到沖突的哈希數值對的機率(即不同的輸入得到了相同的哈希值的情況)。是以,我們繼續化簡:

密碼學與網絡安全筆記整理-資料完整性技術

5. 非對稱技術

密碼學與網絡安全筆記整理-資料完整性技術

5.1. RSA

密碼學與網絡安全筆記整理-資料完整性技術

密鑰建立:

p,q:兩個長度差不多的大素數,公鑰(N, e),N=pq,e滿足gcd(e, Φ(N))=1,私鑰d,滿足ed≡1 (mod Φ(N));

簽名生成:

對于消息m∈Z, Alice生成簽名s=Sign_d (m)←m^d (mod N);

驗證:

公鑰(N,e),消息m,簽名對(m,s),Bob驗證Verify_((N,e) ) (m,s)=true ⇔m≡s^e (mod N);

5.2. Rabin

密鑰建立:

p,q:兩個不同的奇素數(p=q=3 mod 4),公鑰 N,N=pq,私鑰(p, q);

簽名生成:

對于消息m∈Z, Alice生成簽名s=m^(1/2) (mod N);

驗證:

公鑰N,消息m,簽名對(m, s),Bob驗證Verify_((N,e) ) (m,s)=true ⇔m≡s^2 (mod N);

5.3. Elgamal

密碼學與網絡安全筆記整理-資料完整性技術

【例】

密碼學與網絡安全筆記整理-資料完整性技術

繼續閱讀