[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 x,h(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),很難找到 x′≠x 使得 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 is≤n with k=n−log2(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 的機率:1−1N
- k 個同學生日不在 y 的機率:(1−1N)k
- k 個同學中至少一個生日為 y 的機率:1−(1−1N)k
- 估計值 1−x≈e−x for x≪1
- P≈1−e−kN
- k≈ln(11−P)N
- k≈253
2nd problem
- 找到一個同學 x 生日為 y,找到另一個同學生日為 y
- P≈1−e−k−1N
- k≈ln(11−P)N+1
- k≈254
3rd problem
- 找到任兩個同學生日同天
- P≈1−e−k(k−1)2N
- k≈1+√1−4ln(1−P)2N2
- k≈23
根據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(K⊕opad∥h(K⊕ipad∥M))
攻擊者無法控制 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∥(P⊕MAC(M)))=EK(EK(M⊕0b)⊕P⨁MAC(M))=EK(P⊕MAC(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
- MD5: specified in RFC 1321
- SHA-1: specified in FIPS Pub 198-1
- CMAC: NIST Special Publication 800-38B
- HMAC: specified in FIPS Pub 198-1
Security Considerations for SHA-1 and MD5
留言
張貼留言