280 likes | 581 Views
雜湊與 MAC 演算法 Hash and MAC Algorithms. 報告者: G962102 曾郁茹. 內容大綱. Secure Hash Algorithm (SHA ,安全雜湊演算法 ) Whirlpool HMAC CMAC. MD5 簡介. MD5 ( Message-Digest algorithm 5) 雜湊演算法,是過去 (90 年代 ) 最常用的一種加密演算法
E N D
雜湊與MAC演算法Hash and MAC Algorithms 報告者:G962102 曾郁茹
內容大綱 • Secure Hash Algorithm(SHA,安全雜湊演算法) • Whirlpool • HMAC • CMAC
MD5簡介 • MD5 ( Message-Digest algorithm 5)雜湊演算法,是過去(90年代)最常用的一種加密演算法 • MD5雜湊演算法可以將任意長度的資料經由運算之後,得到一組固定長度為128 位元(32 個十六進制數字)的結果,使用這個結果當作檢查碼(Checksum),只需要比對檢查碼是否一致,便可得知經過傳遞之後的檔案是否與原檔案完全相同
MD5簡介 • 採用該方法以作為確認碼運算法則之原因: • 雖然不同的資料經由MD5雜湊演算法計算所得到的結果有可能相同,但是根據統計顯示,重覆的機率低於百萬分之一 • MD5為一個單向雜湊演算法,即不易以逆向運算得到原始資料。例如:要計算字串vote123的MD5結果很簡單,但是要將MD5計算後的結果逆向運算得到vote123卻相當困難 【EX.】 計算 X = MD5("vote1234") = 8339e38c61175dbd07846ad70dc226b2 非常簡單 知道 X 逆向運算得到 vote1234卻非常困難
MD5簡介 • 但就密碼破解的角度來說,現在的MD5算是不安全的 • 就暴力破解法的觀點來說,MD5在生日破解法之下只需要花費264的成本就可以破解了 • 因此,需要具備較長的雜湊碼的替代方案
安全雜湊演算法(SHA) • 安全雜湊演算法(SHA)是由 NIST及NSA於1993年所發展 • 在1995年公佈修訂版本 SHA-1
安全雜湊演算法(SHA) • SHA是以MD4雜湊函數為基礎 • 而其設計方式與MD4、MD5非常類似 • SHA-1會產生160位元的雜湊值 • 因為輸出長度比MD5長,所以比較不會被暴力法破解
安全雜湊演算法(SHA) • NIST在2002年又對此標準修訂並公佈了FIPS 180-2,這定義了SHA的三個新版本: • SHA-256 • SHA-384 • SHA-512 • 這些新版的架構都相同,也使用如同SHA-1的模數算術和二進位邏輯運算 • NIST在2005年表示將逐步淘汰SHA-1,並且將在2010年之前以其他的SHA作為正式標準
SHA-512處理步驟 • 步驟一:加上附加位元(padding bits)。使其位元長度在取1024的同餘之後會等於896(訊息長度≡896 (mod 1024)) • 附加方式:先加一個1,然後再用0補到所需長度(100…0) • 步驟二:加上長度。在訊息末端加上一段128位元的資料
SHA-512處理步驟 • 步驟三:設定暫存區的初值。使用一個512位元的暫存區來儲存這個雜湊函數的中間值,及最後的結果 • 使用8個64位元的暫存器(a, b, c, d, e, f, g, h)來表示這個暫存區,初始值設定如下:a = 6A09E667F3BCC908b = BB67AE8584CAA73Bc = 3C6EF372FE94F82Bd = A54FF53A5F1D36F1e = 510E527FADE682D1f = 9B05688C2B3E6C1Fg = 1F83D9ABFB41BD6Bh = 5BE0CDI9137E2179
SHA-512處理步驟 • 步驟四:處理訊息中所有1024位元(128個字元)區段。 • 演算法的核心是由80個回合所組成 • 每個回合的輸入是512位元的暫存區 • 每個回合t會利用源自目前1024位元區塊所要處理的64位元的Wt • 第8回合的輸出會加到第1回合(Hi-1)的輸入而產生Hi • 步驟五:輸出。
Whirlpool • Rijndael是Whirlpool的設計者之一,也是AES的共同創造者 • 採用AES之後能強健的區塊加密發展安全的雜湊函數 • 不僅重新引起大家的興趣,也呈現出優秀的執行效能 • Whirlpool具備以下的特點: • 雜湊碼的長度是512位元,等同於SHA最長的雜湊碼 • 整個結構已被證實能抵抗區塊加密雜湊碼的一般攻擊 • 以AES為基礎,能同時以軟體和硬體實作,兼具體積小、效率高的優點
Whirlpool區塊加密法W • Whirlpool使用了專為雜湊函數所設計的區塊加密法,這種區塊加密法不太可能單獨當作加密函數 • 因為設計者希望利用到AES區塊加密的安全性和效率,以及相當於SHA-512雜湊長度所提供的安全性 • 這個想法的結果就是區塊加密法W • 結構和AES類似 • 基本功能和AES相同 • 使用的區塊長度和金鑰長度則是512位元 • 雖然W類似AES,但W並非AES的擴充
執行Whirlpool • Rijndael所定的規格必須能於軟體及硬體展現優異效能,也必須能適用受限較多的硬體環境,這對Rijndael所選的AES相當重要 • 因為Whirlpool使用了與AES的相同基礎功能及結構,因此Whirlpool也將擁有類似的效能和特性 • SHA-512和Whirlpool雖然需要較多的硬體資源,但能獲得更好的執行效能
HMAC • 利用雜湊碼建構MAC,也成為近年來的新趨勢: • 因為雜湊函數通常較快 • 密碼雜湊函數的程式庫函式相當普遍 • SHA之類的雜湊函數並非為MAC設計,且因這類的雜湊函數不依靠金鑰,因此不能直接用在MAC • 目前已經提出很多將金鑰加入雜湊函數的方法,其中廣為普遍的是HMAC: KeyedHash = Hash(Key|Message)
HMAC • HMAC已經被納入多項國際標準的規格 • RFC 2104的內容就是HMAC • IP Security規格要求需以HMAC實作MAC • SSL等網際網路協定也採用HMAC • HMAC也已經是NIST標準(FIPS 198)
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
HMAC的安全性 • 任何以雜湊函數為基礎的MAC函數安全性,是由所採用的雜湊函數強度決定 • MAC函數的安全性通常會這麼定義: • 偽造者在給定的時間內成功偽造訊息的機率 • 利用相同金鑰產生訊息-MAC組的數量 • 合法使用者產生的訊息若被攻擊者得知,而攻擊者破解HMAC的機率,就等於以下任一種情況雜湊函數被破解的機率: • IV是隨機選取、秘密等不為攻擊者所知的情況下,攻擊者仍可計算出壓縮函數的輸出 • IV是隨機選取、秘密等情況下,攻擊者仍可找出雜湊函數的碰撞
CMAC • 定義在FIPS PUB 113的資料認證演算法(DAA),也稱為CBC MAC(加密區塊串鍊訊息認證碼) • 以加密法為基礎的MAC廣為政府及業界採用 • 但只能處理固定長度的訊息 • 這項限制可藉由使用三把金鑰而克服: • 在加密區塊串鍊的每個步驟使用一把長度k的金鑰,及兩把長度為n的金鑰 • k是金鑰長度,n是加密區塊長度
CMAC • 這項提案的架構後由Iwata和Kurosawa加以精進,以便兩把n位元金鑰得以源自加密金鑰 • 這項改進也獲得NIST採納而成為CMAC運算模式,可與AES和3DES使用(也就是NIST Special Publication 800-38B)
總結 • 目前常見的雜湊演算法: • SHA-512 • Whirlpool • 使用雜湊函數的HMAC認證 • 使用區塊加密的CMAC認證