Download presentation
Presentation is loading. Please wait.
1
雜湊與MAC演算法 Hash and MAC Algorithms
2
內容大綱 Secure Hash Algorithm (SHA,安全雜湊演算法) Whirlpool HMAC CMAC
3
MD5簡介 MD5 ( Message-Digest algorithm 5)雜湊演算法,是過去(90年代)最常用的一種加密演算法
MD5雜湊演算法可以將任意長度的資料經由運算之後,得到一組固定長度為128 位元(32 個十六進制數字)的結果,使用這個結果當作檢查碼(Checksum),只需要比對檢查碼是否一致,便可得知經過傳遞之後的檔案是否與原檔案完全相同
4
MD5簡介 採用該方法以作為確認碼運算法則之原因:
MD5為一個單向雜湊演算法,即不易以逆向運算得到原始資料。例如:要計算字串vote123的MD5結果很簡單,但是要將MD5計算後的結果逆向運算得到vote123卻相當困難 【EX.】 計算 X = MD5("vote1234") = 8339e38c61175dbd07846ad70dc226b2 非常簡單 知道 X 逆向運算得到 vote1234卻非常困難
5
MD5簡介 但就密碼破解的角度來說,現在的MD5算是不安全的
因此,需要具備較長的雜湊碼的替代方案
6
安全雜湊演算法(SHA) 安全雜湊演算法(SHA)是由 NIST及NSA於1993年所發展 在1995年公佈修訂版本 SHA-1
7
安全雜湊演算法(SHA) SHA是以MD4雜湊函數為基礎 SHA-1會產生160位元的雜湊值
而其設計方式與MD4、MD5非常類似 SHA-1會產生160位元的雜湊值 因為輸出長度比MD5長,所以比較不會被暴力法破解
8
安全雜湊演算法(SHA) NIST在2002年又對此標準修訂並公佈了FIPS 180-2,這定義了SHA的三個新版本:
NIST在2005年表示將逐步淘汰SHA-1,並且將在2010年之前以其他的SHA作為正式標準 聯邦資訊處理標準 (Federal Information Processing Standards,簡稱 FIPS)
9
SHA屬性的比較 SHA-1 SHA-256 SHA-384 SHA-512 訊息摘要長度 160 256 384 512 訊息長度
<264 <2128 區段長度 1024 字元長度 32 64 步驟個數 80 安全性 128 192 附註: 1. 所有長度的單位都是位元。 2. 安全性指的是:使用生日攻擊法來破解長度為n的訊息摘要,必須耗費大約 2n/2的成本才 能產生一次碰撞。 Message digest size: 輸出雜湊值長度 (bits) Message size Block size: 資料區塊長度 (bits) Word size: 一個Word長度 (bits) Number of steps: 迴圈次數
10
SHA-512處理過程
11
SHA-512處理步驟 步驟一: 加上附加位元(padding bits)。 使其位元長度在取1024的同餘之後會等於896(訊息長度≡896 (mod 1024)) 附加方式:先加一個1,然後再用0補到所需長度 (100…0) 步驟二: 加上長度。 在訊息末端加上一段128位元的資料
12
SHA-512處理步驟 步驟三: 設定暫存區的初值。 使用一個512位元的暫存區來儲存這個雜湊函數的中間值,及最後的結果
使用8個64位元的暫存器(a, b, c, d, e, f, g, h)來表示這個暫存區,初始值設定如下: a = 6A09E667F3BCC908 b = BB67AE8584CAA73B c = 3C6EF372FE94F82B d = A54FF53A5F1D36F1 e = 510E527FADE682D1 f = 9B05688C2B3E6C1F g = 1F83D9ABFB41BD6B h = 5BE0CDI9137E2179
13
SHA-512處理步驟 步驟四: 處理訊息中所有1024位元(128個字元)區段。 步驟五: 輸出。 演算法的核心是由80個回合所組成
每個回合的輸入是512位元的暫存區 每個回合t會利用源自目前1024位元區塊所要處理的64位元的Wt 第8回合的輸出會加到第1回合(Hi-1)的輸入而產生Hi 步驟五: 輸出。
14
SHA-512處理步驟
15
Whirlpool Rijndael是Whirlpool的設計者之一,也是AES的共同創造者
不僅重新引起大家的興趣,也呈現出優秀的執行效能 Whirlpool具備以下的特點: 雜湊碼的長度是512位元,等同於SHA最長的雜湊碼 整個結構已被證實能抵抗區塊加密雜湊碼的一般攻擊 以AES為基礎,能同時以軟體和硬體實作,兼具體積小、效率高的優點 “[rain] doll” AES:高級加密標準
16
Whirlpool原理
17
Whirlpool區塊加密法W Whirlpool使用了專為雜湊函數所設計的區塊加密法,這種區塊加密法不太可能單獨當作加密函數
因為設計者希望利用到AES區塊加密的安全性和效率,以及相當於SHA-512雜湊長度所提供的安全性 這個想法的結果就是區塊加密法W 結構和AES類似 基本功能和AES相同 使用的區塊長度和金鑰長度則是512位元 雖然W類似AES,但W並非AES的擴充
18
Whirlpool區塊加密法W
19
執行Whirlpool Rijndael所定的規格必須能於軟體及硬體展現優異效能,也必須能適用受限較多的硬體環境,這對Rijndael所選的AES相當重要 因為Whirlpool使用了與AES的相同基礎功能及結構,因此Whirlpool也將擁有類似的效能和特性 SHA-512和Whirlpool雖然需要較多的硬體資源,但能獲得更好的執行效能
20
HMAC 利用雜湊碼建構MAC,也成為近年來的新趨勢:
因為雜湊函數通常較快 密碼雜湊函數的程式庫函式相當普遍 SHA之類的雜湊函數並非為MAC設計,且因這類的雜湊函數不依靠金鑰,因此不能直接用在MAC 目前已經提出很多將金鑰加入雜湊函數的方法,其中廣為普遍的是HMAC: KeyedHash = Hash(Key|Message)
21
HMAC HMAC已經被納入多項國際標準的規格 RFC 2104的內容就是HMAC IP Security規格要求需以HMAC實作MAC
SSL等網際網路協定也採用HMAC HMAC也已經是NIST標準(FIPS 198)
22
HMAC HMAC可以如下表示: 可以使用任何雜湊函數,例如: HMACK = Hash[(K+ XOR opad) ||
Hash[(K+ XOR ipad)||M)]] K+ = 在K的左邊附加0,使其長度為b位元 ipad = 將 (也就是16進位的36)重複b / 8次 opad = 將 (也就是16進位法的5C)重複b / 8次 可以使用任何雜湊函數,例如: MD5、SHA-1、RIPEMD-160、Whirlpool
23
HMAC架構
24
HMAC的安全性 任何以雜湊函數為基礎的MAC函數安全性,是由所採用的雜湊函數強度決定 MAC函數的安全性通常會這麼定義:
偽造者在給定的時間內成功偽造訊息的機率 利用相同金鑰產生訊息-MAC組的數量 合法使用者產生的訊息若被攻擊者得知,而攻擊者破解HMAC的機率,就等於以下任一種情況雜湊函數被破解的機率: IV是隨機選取、秘密等不為攻擊者所知的情況下,攻擊者仍可計算出壓縮函數的輸出 IV是隨機選取、秘密等情況下,攻擊者仍可找出雜湊函數的碰撞
25
CMAC 定義在FIPS PUB 113的資料認證演算法(DAA), 也稱為CBC MAC(加密區塊串鍊訊息認證碼)
但只能處理固定長度的訊息 這項限制可藉由使用三把金鑰而克服: 在加密區塊串鍊的每個步驟使用一把長度k的金鑰,及兩把長度為n的金鑰 k是金鑰長度,n是加密區塊長度
26
CMAC 這項提案的架構後由Iwata和Kurosawa加以精進,以便兩把n位元金鑰得以源自加密金鑰
這項改進也獲得NIST採納而成為CMAC運算模式,可與AES和3DES使用(也就是NIST Special Publication B)
27
CMAC架構
28
總結 目前常見的雜湊演算法: 使用雜湊函數的HMAC認證 使用區塊加密的CMAC認證 SHA-512 Whirlpool
Chapter 12 summary.
Similar presentations