【上課筆記】資訊安全導論 - Ch11
Ch11
Hash Fucntions :
- 接受可變長度之block : $M$,並產生固定長度之Hash Value : $h=H(M)$
- $P$ : Padding、$L$ : Length Field(可以增加安全性)
- 目標 : Data Integrity($M$的任何更改都會導致Hash Value的更改)
- 應用 :
- Message Authentication Code (MAC) :
- MAC = $E(K, H(M))$
- 結合Hash和Encryption
- 使用到可變長度訊息$M$與金鑰$K$
- 產生固定長度之輸出
- MAC = $E(K, H(M))$
- Digital Signature :
- 建立於MAC基礎上
- $E(PR_a , H(M))$ :
- 使用A的私鑰加密
- 提供++認證性++與++數位簽章++
- $E(K,[M||E(PR_a , H(M))])$ :
- 使用A的私鑰加密
- 之後$h$加上$M$,跟金鑰$K$做加密
- 提供++認證性++、++數位簽章++與++安全性++
- 單向密碼檔案 : 將輸入密碼的Hash Value與儲存之Hash Value進行比較,以驗證用戶身分
- 檢測病毒或入侵 :
- 儲存每個文件的H(F)並保護所有Hash Value
- 可以利用重新計算H(F),來確定文件是否已被修改
- 入侵者需要同時更改F,但不能更改H(F)
- 建構PRF或PRNG :
- Hash-based PRF常用於生成對稱金鑰
- Message Authentication Code (MAC) :
- Function比較 :
- Simple XOR :
- 流程 :
- 將輸入切為n bits的Block
- 反覆將一個Block進行一次處理以產生n bits的Hahs Value
- 每個Block進行XOR : $$C_i=B_{i1}\oplus B_{i2}\oplus…\oplus b_{im}$$
- 對於每個bit位置產生簡單的奇偶性,也就是縱向冗餘校驗(LRC)
- 優點 : 檢查隨機資料的Data Integrity非常有效
- 缺點 :
- 資料錯誤但Hash Value沒變的機率為$2^{-n}$
- 如果資料格式能夠預測,XOR的效果會更差
- 流程 :
- RXOR :
- 流程 :
- 將n bits的Hash Value設為0
- 連續處理每個n bits的Block:
- 將當前Hash Value右移一位
- 將Block與Hash Value進行XOR
- 優點 :
- 將輸入更完全地「隨機化」
- 克服輸入中出現任何的規律
- 流程 :
- Simple XOR using CBC :

- 由於每項可以按任何順序進行XOR,因此如果對Block 順序進行置換,則Hash Value不會更改
- Simple XOR :
- Requirements and Security :
- 問題 :
- Preimage(原像) :
- $h=H(x)$函式為多對一
- 對於任何給定的$h$,通常會有多個原像(preimages)
- Collision(碰撞) :
- 當$x≠y$但$H(x)= H(y)$,碰撞即發生
- 因為使用$H$來確保Data Integrity,所以碰撞顯然是不可發生的
- 假設輸入資料長度為$b$,Hash Value長度為$n$,則每個Hash Value平均會產生$2^{b-n}$個原像
- Preimage(原像) :
- 要求 :

- Weak hash function : 滿足前五項
- Strong hash function :
- 滿足前六項
- 防止A產生訊息給B簽章的攻擊
- 防止Birthday Paradox
- Preimage Resistant(one-way property) : 給定$h$無法找到$y$,即$H(y)= h$
- Second Preimage Resistant(weak collision resistant) : 給定$x$,無法通過$H(y)= H(x)$來找到$y≠x$
- Collision Resistantstrong collision resistant) : 無法找到$H(y)= H(x)$的任何對$(x,y)$
- 攻擊手法 :
- 假設Hash Value長度為$m$,則所需工作量為 :
Preimage Second Preimage Collision $2^m$ $2^m$ $2^{m/2}$ - Brute-Force Attacks :
- Preimage & Second Preimage :
- 攻擊者平均必須嘗試$2^{m-1}$個$y$值
- Collision :
- 攻擊者平均必須嘗試$2^{m}$個$y$值
- Birthday Paradox :
- 如果從$0$到$N-1$範圍內的均勻分佈中選擇隨機變量,則在做出$\sqrt{N}$個選擇後遇到重複元素的機率超過$0.5$
- Preimage & Second Preimage :
- Cryptanalysis :
- 測量Hash演算法對密碼分析的抵抗力
- Iterated Hash Function Structure :

- 結構 :
- 將輸入資料$M$拆解為$L$個固定$b$ bits的Block($Y_0,Y_1,…,Y_{L-1}$)
- $F$ : 壓縮函式
- 最後的Block包含輸入資料的總長度
- 攻擊涉及分析回合之間的變化模式
- 如果$F$具有Collision Resistant,則迭代Hash函式也有
- 減少設計安全Hash函式的問題
- Hash Functions Using DES & CBC :

- 產生Hash值太小(64 bits)之原因
- Direct Birthday Attack
- Meet-in-the-middle Attack
- 假設Hash Value長度為$m$,則所需工作量為 :
- 問題 :
- 接受可變長度之block : $M$,並產生固定長度之Hash Value : $h=H(M)$
Secure Hash Algorithm (SHA) :
- 基於Hash函式MD4產生160 bits Hash Value(SHA-0)
- SHA-512 :
- 輸入 : 1024 bit的Blocks
- 輸出 : 一個512 bits的Hash Value
- 流程 :
- Padding$P$ : 10*
- Length$L$
- 初始化Hash Buffer : 512 bits的Buffer可以表示為8個64 bits的暫存器(abcdefgh)
- 將訊息$M$加上$P$與$L$,切成1024 bit的Block
- 經過流程後輸出
- 公式 :

- $IV$ : abcdefgh Buffer中的初始值
- $abcdefgh_i$ : abcdefgh Buffer目前的值,也就是上一回合產生的$H_i$
- $N$ : Blocks的數量
- $SUM_{64}$ : word-by-word addition modulo 2^64^
- $MD$ : 最終的Hash Value
- $F$ :
- 將1024 bits的Block切成80個Word,並經過80回合的加密

- SHA-3 :
- Sponge Construction :
- 允許可變長度的輸入或輸出,可用於 :
- Hash函式(固定長度輸出)
- PRNG(固定長度輸入)
- 其他密碼分析功能
- Input :

- 將$n$ bits的Input切為$k$個長度為$r$ bits的Block
- 用Padding填充缺少的空格 :
- Simple padding : 1 0*
- Multirate padding : 1 0* 1
- Output :

- 所需的輸出bit數,決定生成輸出的Blcok數
- 如果期望的輸出是$\ell$個bits,則要產生$j$個Block,使得$(j-1)r\lt\ell\le jr$
- 流程 :
- 初始化 :

- 準備$b$ bits的0($b=r+c$)
- Absorbing phase(吸收階段) :
- Padding : 將輸入Block填充$c$ bits的0
- 做XOR
- 經過iteration function $f$,產生$s$
- $s$為下一回合XOR的值
- Squeezing phase(釋放階段) :
- 假設$\ell\le b$,則保留$s$的前$\ell$ bits作為$Z_0$
- 重複執行$f$來更新$s$
- 繼續進行$(j-1)$次迭代,直到$(j-1)r\lt\ell\le jr$
- 初始化 :
- 允許可變長度的輸入或輸出,可用於 :
- Iteration Function $f$ :
- 函式$f$將Input的1600 bits分為5x5的矩陣(每格為64 bits)
- 經過24 rounds的處理
- 每個round都有5 steps
- Sponge Construction :
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!




