270 likes | 426 Views
秘密金鑰密碼系統之分析. 報告人 : 吳憲政. 塊狀密碼器. 塊狀密碼器 (Block Cipher) 是對一定大小的明文或密文來做加密或解密的動作 由一層層的弱加密器 (Weaker Cipher) 配合子金鑰產生器 (Key Scheduling Algorithm) 相互疊加、串接而成 DES 加密系統為一對稱型區塊加密系統. 塊狀密碼器加解密結構圖. 塊狀密碼器之安全準則特性. 混淆性 (confusion) 一個密碼器的明文及其相對應的密文與加解密所用的金鑰之間的關係十分複雜 ex. 回合函數中的 S-BOX
E N D
秘密金鑰密碼系統之分析 報告人:吳憲政
塊狀密碼器 • 塊狀密碼器(Block Cipher)是對一定大小的明文或密文來做加密或解密的動作 • 由一層層的弱加密器(Weaker Cipher)配合子金鑰產生器(Key Scheduling Algorithm)相互疊加、串接而成 • DES加密系統為一對稱型區塊加密系統
塊狀密碼器之安全準則特性 • 混淆性(confusion)一個密碼器的明文及其相對應的密文與加解密所用的金鑰之間的關係十分複雜ex.回合函數中的S-BOX • 散佈性(diffusion)不管明文或者是金鑰的任何一個位元被改變,都有可能影響到密文的每一個位元的值ex.回合函數中所包含的排列函數來完成
秘密金鑰加密模式 • ECB模式(Electronic Code Book Mode)-每一個區塊依序獨立加密,產生相互獨立的密文區塊,亦即每一個區塊的加密結果均不受其他區塊內容影響。 • 利用平行處理來提高加解密作業速度 • 適用於短訊息,ex.金鑰
秘密金鑰加密模式 • CBC模式(Cipher Block Chaining Mode)-每一個區塊加密之前,必須與前一個區塊的密文做一次XOR運算,之後再進行加密 • 資訊中可能出現多次相同的明文,都會因為受到前文的影響而產生不同的密文 • 設定一個初值(Iniaialization Vector,IV)加密第一個區塊
秘密金鑰加密模式 • CFB模式(Cipher Feedback Mode)-每一個明文區塊與之前區塊加密後的密文作XOR運算之後的內容,成為此區塊的密文
秘密金鑰加密模式 • OFB模式-每一個明文區塊與之前區塊加密後的密文作XOR後,成為 此區塊的密文 • 前面一區塊加密後的密文為獨立產生,每一個區塊的加密結果將不會受到之前所有區塊內容的影響
DES演算法1 • 對一個固定64位元的區塊作加密的動作,在加密時使用者必須預先輸入64位元的金鑰,但是真正的金鑰長度只有56位元,其中8位元拿來做錯誤更正用。 • DES先將64位元的明文初始排列,經過16回合的運算加密後,通過終結排列,輸出64位元的密文,因此不會有資料擴充問題
DES演算法2 • 將排列後的結果分為左半部(L0)與右半部(R0)各32位元,然後右半部32位元經過F函數的運算後的結果與L0做XOR運算,得到的結果成為R1,即下一個回合函數的輸入的右半部(R1),而下一個回合函數的輸入的左半部(L1)即是R0
DES加密系統中的f函數 • 三個組成方塊:擴增排列E(E expansion)換位排列P(P permutation)替換盒(S-BOX) • 將Ri(i=0~14)(32位元)經過擴增排列E後得到一個48位元的值,將這48位元的值與子金鑰Ki+1做XOR運算後得到另一個48位元的值,成為S-BOX的輸入值
S-BOX • 6位元輸入,4位元輸出的函數 • S-BOX求輸出值的方法就是:將輸入6位元的頭尾兩個位元組合的二進位數字(0~3)當作列數,中間4個位元組合的二進位數(0~15)當作行數,找出S-BOX中該位置的數字即為輸出。舉例如下(其中數字XY代表的意義是:以Y為基底的數字X):將010010輸入S-BOX 1 取出頭尾兩個位元:002 = 010 取出中間四個位元:10012= 910 S-BOX 1中第0列,第9行的數字是1010,而1010 =10102 因此輸出為1010
金鑰的產生 • 子金鑰產生方式 在金鑰排列之後,DES加密系統的金鑰產生過程也分為在16回合,每一回合的運算動作皆相同 系統將經過金鑰排列 PC-1 後的 56位元金鑰分為(KeyL0, KeyR0)兩部份,假想目前要進行第i回合的的運算,系統先將此回合的56位元輸入(KeyLi-1,KeyRi-1)兩部份,分別經過左旋(Left Cyclic Shift),輸出(KeyLi,KeyRi)。此輸出(KeyLi,KeyRi)即為下一回合運算之輸入。
DES解密系統 • 將密文反向輸入DES加密系統,並依序輸入子金鑰16到子金鑰1以供f函數使用,就可以將密文解密成為明文。
三重加密DES • 就目前計算機的運算速度與破解技術而言,56位元長度的DES金鑰稍嫌不足 • 三重加密就是對明文使用兩個以上不同的金鑰,利用相同的加解密演算法,分別加密處理三次。以DES演算法為例,其做法有許多的方式 [Karn95]: DES-EEE3:是以三把不同的金鑰,以加密-加密-加密的方式依序處理。 DES-EDE3:是以三把不同的金鑰,以加密-解密-加密的方式依序處理。 DES-EEE2:是以兩把不同的金鑰,以加密-加密-加密的方式依序處理,但第三次加密所 使用的金鑰與第一把金鑰相同。 DES-EDE2:是以兩把不同的金鑰,以加密-解密-加密的方式依序處理,但第三次加密所 使用的金鑰與第一把金鑰相同。
DESX • 以DES作三重加密時,因執行了三次DES 加密,所以其執行效率只有原來DES的1/3。為了改善這個缺失,RSA公司的Ron Rivest提出了另一套加密方式 DESX,為DES的擴充版本,希望以更少的效率損失,增加金鑰的長度,也能夠增加窮舉式攻擊法的難度。 • DESX的結構如下(其中M代表明文或者欲加密的資訊): DESX k, k1, k2(M)= k2♁DESk(k1♁M) • DESX的金鑰長度為三把金鑰的長度總和,56 + 64 + 64 = 184位元
差分攻擊法簡介 • 選擇明文攻擊法(Chosen-plaintext attack) • 利用回合函數輸出的差分呈現不均勻的特性,設法得到較高機率的特徵值,進而推算出加密過程中某些位置的差分值,再利用統計的方法求出金鑰 • 必須蒐集到 個明文及其相對應的密文,因此計算複雜度與暴力搜尋法相較之下由 降到 • 通常使用的差分運算是XOR
線性攻擊法簡介 • 已知明文攻擊法(Known-plaintext attack) • 需要先搜集到 對已知明文密文對 • 設法得到S-BOX輸入與輸出的某基個位元之間的線性關係式,並推出其成立的機率,然後串聯各回合的線性關係式,以統計的方法找出最可能的子金鑰 • 明文密文數取決於線性關係是成立的機率p與 的偏離量,當|p-|愈大,,所需的明文密文數愈小
結論與心得 • DES的演算法利用S-BOX與許多排列函數,加上16回合的運算,來達到密碼學理論中散佈與混淆原理,使明文被加密為破解相當困難的密文 • 雖然已經被破解,但仍為學習密碼學的理論基礎
資料來源 • 線性攻擊的研究與模擬-鄧俊泓 • 第四章 秘密金鑰密碼系統 • 線性攻擊法報告-陳弘軒 • http://www.lslnet.com/linux/f/docs1/i21/big5197579.htm-藍森林