雜湊與 mac 演算法 hash and mac algorithms

28
1 雜雜雜 MAC 雜雜雜 Hash and MAC Algorithms 雜雜雜G962102 雜雜雜

Upload: aristotle-farley

Post on 14-Mar-2016

178 views

Category:

Documents


0 download

DESCRIPTION

雜湊與 MAC 演算法 Hash and MAC Algorithms. 報告者: G962102  曾郁茹. 內容大綱. Secure Hash Algorithm (SHA ,安全雜湊演算法 ) Whirlpool HMAC CMAC. MD5 簡介. MD5 ( Message-Digest algorithm 5) 雜湊演算法,是過去 (90 年代 ) 最常用的一種加密演算法 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 雜湊與 MAC 演算法 Hash and MAC Algorithms

1

雜湊與 MAC 演算法Hash and MAC Algorithms

報告者: G962102  曾郁茹

Page 2: 雜湊與 MAC 演算法 Hash and MAC Algorithms

2

內容大綱 Secure Hash Algorithm (SHA ,安全雜湊演算法 ) Whirlpool HMAC CMAC

Page 3: 雜湊與 MAC 演算法 Hash and MAC Algorithms

3

MD5 簡介 MD5 ( Message-Digest algorithm 5) 雜湊演算法,是過去

(90 年代 ) 最常用的一種加密演算法 MD5 雜湊演算法可以將任意長度的資料經由運算之後,得到一組固定長度為 128 位元( 32 個十六進制數字)的結果,使用這個結果當作檢查碼( Checksum ),只需要比對檢查碼是否一致,便可得知經過傳遞之後的檔案是否與原檔案完全相同

Page 4: 雜湊與 MAC 演算法 Hash and MAC Algorithms

4

MD5 簡介 採用該方法以作為確認碼運算法則之原因:

雖然不同的資料經由 MD5 雜湊演算法計算所得到的結果有可能相同,但是根據統計顯示,重覆的機率低於百萬分之一 MD5 為一個單向雜湊演算法,即不易以逆向運算得到原始資料。例如:要計算字串 vote123 的 MD5 結果很簡單,但是要將 MD5計算後的結果逆向運算得到 vote123 卻相當困難【 EX. 】計算 X = MD5("vote1234") = 8339e38c61175dbd07846ad70dc226b2

非常簡單 知道 X 逆向運算得到 vote1234 卻非常困難

Page 5: 雜湊與 MAC 演算法 Hash and MAC Algorithms

5

MD5 簡介 但就密碼破解的角度來說,現在的 MD5 算是不安全的 就暴力破解法的觀點來說, MD5 在生日破解法之下只需要花費 264的成本就可以破解了 因此,需要具備較長的雜湊碼的替代方案

Page 6: 雜湊與 MAC 演算法 Hash and MAC Algorithms

6

安全雜湊演算法( SHA ) 安全雜湊演算法( SHA )是由 NIST 及 NSA 於

1993 年所發展 在 1995 年公佈修訂版本 SHA-1

Page 7: 雜湊與 MAC 演算法 Hash and MAC Algorithms

7

安全雜湊演算法( SHA ) SHA 是以 MD4 雜湊函數為基礎

而其設計方式與 MD4 、 MD5 非常類似 SHA-1 會產生 160 位元的雜湊值 因為輸出長度比 MD5 長,所以比較不會被暴力法破解

Page 8: 雜湊與 MAC 演算法 Hash and MAC Algorithms

8

安全雜湊演算法( SHA ) NIST 在 2002 年又對此標準修訂並公佈了 FIPS 1

80-2 ,這定義了 SHA 的三個新版本: SHA-256 SHA-384 SHA-512

這些新版的架構都相同,也使用如同 SHA-1 的模數算術和二進位邏輯運算 NIST 在 2005 年表示將逐步淘汰 SHA-1 ,並且將在 2010 年之前以其他的 SHA 作為正式標準

Page 9: 雜湊與 MAC 演算法 Hash and MAC Algorithms

9

SHA 屬性的比較 SHA-1 SHA-256 SHA-384 SHA-512

訊息摘要長度 160 256 384 512

訊息長度 <264 <264 <2128 <2128

區段長度 512 512 1024 1024

字元長度 32 32 64 64

步驟個數 80 64 80 80

安全性 80 128 192 256

附註 : 1. 所有長度的單位都是位元。2. 安全性指的是:使用生日攻擊法來破解長度為 n 的訊息摘要,必須耗費大約 2n/2 的成本才 能產生一次碰撞。

Page 10: 雜湊與 MAC 演算法 Hash and MAC Algorithms

10

SHA-512 處理過程

Page 11: 雜湊與 MAC 演算法 Hash and MAC Algorithms

11

SHA-512 處理步驟 步驟一:加上附加位元 (padding bits) 。使其位元長度在取 1024 的同餘之後會等於 896(訊息長度≡ 896 (mod 1024) )

附加方式:先加一個 1 ,然後再用 0 補到所需長度( 100…0 ) 步驟二:加上長度。在訊息末端加上一段 128 位元的資料

Page 12: 雜湊與 MAC 演算法 Hash and MAC Algorithms

12

SHA-512 處理步驟 步驟三:設定暫存區的初值。使用一個 512 位元的暫存區來儲存這個雜湊函數的中間值,及最後的結果

使用 8 個 64 位元的暫存器 (a, b, c, d, e, f, g, h) 來表示這個暫存區,初始值設定如下:a = 6A09E667F3BCC908b = BB67AE8584CAA73Bc = 3C6EF372FE94F82Bd = A54FF53A5F1D36F1e = 510E527FADE682D1f = 9B05688C2B3E6C1Fg = 1F83D9ABFB41BD6Bh = 5BE0CDI9137E2179

Page 13: 雜湊與 MAC 演算法 Hash and MAC Algorithms

13

SHA-512 處理步驟 步驟四:處理訊息中所有 1024位元 (128個字元 )區段。

演算法的核心是由 80 個回合所組成每個回合的輸入是 512 位元的暫存區每個回合 t會利用源自目前 1024 位元區塊所要處理的 64位元的Wt

第 8回合的輸出會加到第 1回合( Hi-1)的輸入而產生 Hi

步驟五:輸出。

Page 14: 雜湊與 MAC 演算法 Hash and MAC Algorithms

14

SHA-512 處理步驟

Page 15: 雜湊與 MAC 演算法 Hash and MAC Algorithms

15

Whirlpool Rijndael 是 Whirlpool 的設計者之一,也是 AES的共同創造者 採用 AES 之後能強健的區塊加密發展安全的雜湊函數

不僅重新引起大家的興趣,也呈現出優秀的執行效能 Whirlpool 具備以下的特點:

雜湊碼的長度是 512 位元,等同於 SHA 最長的雜湊碼整個結構已被證實能抵抗區塊加密雜湊碼的一般攻擊 以 AES 為基礎,能同時以軟體和硬體實作,兼具體積小、效率高的優點

Page 16: 雜湊與 MAC 演算法 Hash and MAC Algorithms

16

Whirlpool 原理

Page 17: 雜湊與 MAC 演算法 Hash and MAC Algorithms

17

Whirlpool 區塊加密法 W Whirlpool 使用了專為雜湊函數所設計的區塊加密法,這種區塊加密法不太可能單獨當作加密函數

因為設計者希望利用到 AES 區塊加密的安全性和效率,以及相當於 SHA-512 雜湊長度所提供的安全性 這個想法的結果就是區塊加密法W

結構和 AES 類似 基本功能和 AES 相同 使用的區塊長度和金鑰長度則是 512 位元

雖然 W 類似 AES ,但 W 並非 AES 的擴充

Page 18: 雜湊與 MAC 演算法 Hash and MAC Algorithms

18

Whirlpool 區塊加密法 W

Page 19: 雜湊與 MAC 演算法 Hash and MAC Algorithms

19

執行Whirlpool Rijndael 所定的規格必須能於軟體及硬體展現優異效能,也必須能適用受限較多的硬體環境,這對 Rijndael 所選的 AES 相當重要 因為 Whirlpool 使用了與 AES 的相同基礎功能及結構,因此 Whirlpool 也將擁有類似的效能和特性 SHA-512 和 Whirlpool 雖然需要較多的硬體資源,但能獲得更好的執行效能

Page 20: 雜湊與 MAC 演算法 Hash and MAC Algorithms

20

HMAC 利用雜湊碼建構 MAC ,也成為近年來的新趨勢:

因為雜湊函數通常較快 密碼雜湊函數的程式庫函式相當普遍

SHA 之類的雜湊函數並非為 MAC 設計,且因這類的雜湊函數不依靠金鑰,因此不能直接用在 MAC

目前已經提出很多將金鑰加入雜湊函數的方法,其中廣為普遍的是 HMAC :KeyedHash = Hash(Key|Message)

Page 21: 雜湊與 MAC 演算法 Hash and MAC Algorithms

21

HMAC HMAC已經被納入多項國際標準的規格

RFC 2104 的內容就是 HMAC

IP Security規格要求需以 HMAC實作 MAC

SSL 等網際網路協定也採用 HMAC

HMAC 也已經是 NIST 標準( FIPS 198 )

Page 22: 雜湊與 MAC 演算法 Hash and MAC Algorithms

22

HMAC HMAC 可以如下表示:

HMACK = Hash[(K+ XOR opad) || Hash[(K+ XOR ipad)||M)]]

K+ = 在 K的左邊附加 0 ,使其長度為 b位元 ipad = 將 00110110 (也就是 16 進位的 36 )重複 b / 8 次 opad = 將 01011100 (也就是 16 進位法的 5C )重複 b / 8 次

可以使用任何雜湊函數,例如: MD5 、 SHA-1 、 RIPEMD-160 、 Whirlpool

Page 23: 雜湊與 MAC 演算法 Hash and MAC Algorithms

23

HMAC 架構

Page 24: 雜湊與 MAC 演算法 Hash and MAC Algorithms

24

HMAC 的安全性 任何以雜湊函數為基礎的 MAC 函數安全性,是由所採用的雜湊函數強度決定 MAC 函數的安全性通常會這麼定義:

偽造者在給定的時間內成功偽造訊息的機率 利用相同金鑰產生訊息 -MAC 組的數量

合法使用者產生的訊息若被攻擊者得知,而攻擊者破解HMAC 的機率,就等於以下任一種情況雜湊函數被破解的機率:1. IV 是隨機選取、秘密等不為攻擊者所知的情況下,攻擊者仍可計算出壓縮函數的輸出2. IV 是隨機選取、秘密等情況下,攻擊者仍可找出雜湊函數的碰撞

Page 25: 雜湊與 MAC 演算法 Hash and MAC Algorithms

25

CMAC 定義在 FIPS PUB 113 的資料認證演算法( DAA ),也稱為 CBC MAC (加密區塊串鍊訊息認證碼) 以加密法為基礎的 MAC廣為政府及業界採用 但只能處理固定長度的訊息 這項限制可藉由使用三把金鑰而克服:

在加密區塊串鍊的每個步驟使用一把長度 k的金鑰,及兩把長度為 n的金鑰 k是金鑰長度, n是加密區塊長度

Page 26: 雜湊與 MAC 演算法 Hash and MAC Algorithms

26

CMAC

這項提案的架構後由 Iwata 和 Kurosawa 加以精進,以便兩把 n位元金鑰得以源自加密金鑰 這項改進也獲得 NIST 採納而成為 CMAC 運算模式,可與

AES 和 3DES 使用(也就是 NIST Special Publication 800-38B )

Page 27: 雜湊與 MAC 演算法 Hash and MAC Algorithms

27

CMAC 架構

Page 28: 雜湊與 MAC 演算法 Hash and MAC Algorithms

28

總結目前常見的雜湊演算法:

SHA-512Whirlpool

使用雜湊函數的 HMAC認證 使用區塊加密的 CMAC認證