[IT-Security-1] 完整性 Integrity

Integrity


Notes from RWTH Aachen University course 
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela


Hash定義

  • compression: output都是固定長度 
  • ease of computation: 給定 h 及input xh(x) 容易求得 
  • h(x) 可以被稱作: hash value, message digest, fingerprint 
  • Hash 不可能是 injective (輸出的個數比輸入多) 

鴿籠定理 

一般化:若有 n 個籠子,有 kn+1 隻鴿子,則至少有一個籠子有多於 k 隻鴿子 

Preimage resistant: 

給定 y,很難找到 x 使得 h(x)=y 

Second preimage resistant:

給定 x,h(x),很難找到 xx 使得 h(x)=y 

Collision resistant: 

很難找到任兩個 x,x使得 h(x)=h(x) 

有 Preimage resistant 及 Collision resistant (implies Second preimage resistant) 性質即稱為 cryptographic hash function 
  • Proof: 
    • Collision resistant 2nd pre-image resistant
      • 矛盾證明 
        • 假設滿足Collision但不滿足2nd pre-image resistant 
        • 給定x,表示有一個x使得h(x)=h(x)
          (by def of 2nd pre-image resistatnt) 
        • 則跟 collision resistant 的假設矛盾 
    • Collision resistance pre-image resistance
      • 假設 g 是 Collision resistant 的 n-bit hash 函數 
      • 定義 h(x)={1||0kx if the bitlength of x isn with k=nlog2(x) 0s0||g(x)if the bitlength of x is>n
        • 1串連在 x 長度小於 n 的時候的前面
          0串連在 x 長度大於 n 的時候的前面
        • 範例:
          n=10
          x=101011,則 h(x)=1000101011
          x=11101011001,則h(x)=0xxxxxxxxx
          xxxxxxxxx是collision resistant
      • 則此 h(x) 是Collision resistant但不是pre-image resistance 
        • 若長度小於 n 時可以推測出 h(x) 為何
        • 但長度小於 n 時,若 x 不同 h(x) 值不同;且在長度大於 n 時,0開頭的 h(x) 是collistion resistant

Birthday Problem 

最少需要幾個同學 k ,才能在機率 P 之下解下列問題 (天數: N=365

1st problem

固定生日 y,找到一個同學的生日是 y 
  • 證明: 
    • 找一個同學生日不在 y 的機率:11N
    • k 個同學生日不在 y 的機率:(11N)k 
    • k 個同學中至少一個生日為 y 的機率:1(11N)k 
    • 估計值 1xex for x1
    • P1ekN 
    • kln(11P)N 
    • k253 

2nd problem

  • 找到一個同學 x 生日為 y,找到另一個同學生日為 y 
  • P1ek1N 
  • kln(11P)N+1 
  • k254 

3rd problem

  • 找到任兩個同學生日同天
  • P1ek(k1)2N
  • k1+14ln(1P)2N2
  • k23 
根據1st birthday problem,我們知道暴力破解 pre-image resistant 需要 0.69×2n 的時間,其 n 為 image 的 bitlength 
🔎 O(2n) 的時間複雜度找到 preimage 的機率為 12 

2nd preimage resistant 的破解亦相似,時間複雜度為 O(2n) 
Collistion resistant的破解時間複雜度為 O(2n2)


MD5 

  • 雜湊函數
  • 2011年MD5已經不能再被使用,因為collision resistant需要被滿足(被破解,很容易找到collision) 

SHA-1 

  • 雜湊函數
  • 2017年,SHA-1的collision被找到,不能再被使用 
  • 找到Collision有什麼壞處?
    Digital signatures、message authentication codes、modification detection codes、Key derivation functions (Integrity) 有影響 

SHA-2 

尚未被完全破解,建議使用SHA-3 - Bitlength: 224, 256, 384 and 512 

SHA-3 

  • 2015年 Keccak 被選為 SHA-3 
  • 較少的 round,因此比SHA-2更有效率 
  • input 可以無限長( SHA-2, SHA-1, MD5 不行) 

Modification Detection Code 

  • 訊息直接傳輸 M1 與透過 Hash Hs(M1)之後傳輸 
  • 檢查訊息經接收方Hash Hr(M1) 之後是否與 Hs(M1) 相同 

Message Authentication Codes (MAC) 

  • 通訊雙方用key去Hash訊息 
  • 若Hash完結果一樣則視為是認定的傳送方送的訊息 
  • function: MACk(x) 
  • 優點: 
    • 容易計算 
    • 壓縮 
    • computation resistant: 如果沒有 k 則難以找到pair (x,MACk(x))
為何用MD5的MAC h(k||M) 不安全? 
    • 給定pair M,h(k||M)
    • 我們可以很容易找到pair M,h(k||M) 
    • 因為MD5會 pad M,每個 block 會依序餵進 compression function 裡,更新 internal state,最後 output final state 
    • 只要用初始狀態為 h(k||M) 就可以建構任何message M的MAC 

HMAC 

  • 優點: 
    • 可建構MAC 
    • Hash在軟體中比encrypt快 
    • library多 
    • 可以替換其他Hash function 
  • HMACK(M)=h(Kopadh(KipadM))
    攻擊者無法控制 input
    opad,ipad 是常數,使得他們 Hamming distance 最大

CMAC 

  • 用block cipher Ek 
  • 訊息被切成 n 份每份 b bits 
  • Mn 未滿 b bits 則 padding 10k 
  • 運用 CBC mode 
  • 除了最後一個block用sub-key k1 mask 如果 Mn 沒有被 padding,反之用 sub-key k2 Masking
為何需要masking?
  • M,P 為兩個one block訊息則 
    • MAC(M)=Ek(M)
    • MAC(P)=Ek(P) 
    • MAC(M(PMAC(M)))=EK(EK(M0b)PMAC(M))=EK(PMAC(M)MAC(M))=EK(P)
  • 有辦法從短的已知的message偽造出長的message 

Replay problem 

MAC有可能會被重複使用 
需要timestamp或Nonce 
  • 使用Counter 
    • 只有在counter較之前大的時候接收 
    • 問題:需要同步counter,若package無法依序抵達 
  • 使用Nonce 
    • Number used once 
    • counter就是一種nonce(但不是random nonce) 
    • Alice可先傳nonce,再傳有nonce的MAC 

保障integrity及encryption 

1. Encrypt, then MAC
  • k1 對明文Encrypt,再用 k2 對密文MAC,密文跟MAC接在一起 
2. Encrypt and MAC
  • k1 對明文Encrypt,用 k2 對明文MAC,兩著接在一起 
  • 會被攻擊 
3. MAC, then Encrypt 
  • k2 對明文MAC,用 k1 加密 plaintext||MAC
  • 會被攻擊 
4. 用有integrity protection的加密方式 
  • Galoise Counter Mode (GCM) 
  • CountermodewithCBCMAC (CCM) 

GCM 

  • CBC-MAC, CMAC不能平行化,GCM可以 
  • IV可以是任意長度 
  • 有效率

Basic Reading
  • Forouzan, Introduction to cryptography and network security, Chapter 11
Details on the mentioned algorithms
Security Considerations for SHA-1 and MD5

留言

這個網誌中的熱門文章