3.3 換位加密法 換位加密法並不是更換符號,而是改變符號的位置。 注意 換位加密法就是重新安排符號的順序。
3.3 換位加密法 (續) 本節討論主題: 無金鑰的換位加密法 有金鑰的換位加密法 兩種方法的結合
3.3.1 無金鑰的換位加密法 過去使用簡單的換位加密法是無金鑰的。
範例3.22 無金鑰加密法的一個很好的範例就是栅欄加密法。在此加密法中,明文是編排成兩排Z字形的圖樣(也就是一行一行的),而密文是一列一列的圖樣。例如,Alice傳送「Meet me at the park」的訊息給Bob。 她產生出密文「MEMATEAKETETHPR」。
範例3.23 Alice和Bob同意使用的行數並使用第二個方法。Alice在一個四行的表格中,以一列一列的方式寫入相同的明文。 她產生出密文「MMTAEEHREAEKTTP」。
範例3.24 範例3.23的加密法其實就是換位加密法,以下所示為明文中的每個字元調換成密文的位置排列。 明文中的第二個字元移動至密文的第五個位置;第三個字元移動至第九個位置,以此類推。字元雖被調換,但卻是依照某個調換模式:(01, 05, 09, 13), (02, 06, 10, 13), (03, 07, 11, 15)和(08, 12)。每個區塊中,兩個鄰近號碼的差為4。
3.3.2 有金鑰的換位加密法 無金鑰加密法調換字元是以一種方式寫入明文(如一列一列的),再以另一種方式讀取(如一行一行的),它是調換整個明文後才產生密文。另一個方法是將明文分組(稱為區塊),再利用一個金鑰分別更換每個區塊的字元。
範例3.25 經過排列產生 Alice需要傳送「Enemy attacks tonight」的訊息給Bob 用來加密和解密的金鑰是一把排列的金鑰,顯示出字元是如何調換的。 經過排列產生
圖3.21 範例3.27
金鑰 在範例3.27中,利用一個簡單的金鑰,以兩個方向做行數調換:加密是向下,解密是向上。此圖像顯示會慣例性地產生兩個金鑰:一個為加密用,另一個用於方向。
圖3.22 換位加密法的加密/解密金鑰
圖3.23 換位加密法的金鑰倒轉
使用矩陣 我們可利用矩陣陳列換位加密法的加密/解密過程。
範例3.27 圖3.24顯示一個加密過程。4 X 5的明文矩陣與5 X 5的加密金鑰相乘,得到4 X 5的密文矩陣。
圖3.24 換位加密法中金鑰矩陣的表示
圖3.25 雙重換位加密法
3.4 串流加密和區塊加密法 文獻資料將對稱式加密法分為兩大類:串流加密法和區塊加密法。 雖然這種分類法被應用於現代加密法中,但這種分類法其實也可以應用於傳統加密法。
3.4 串流加密法和區塊加密法 (續) 本節討論主題: 串流加密法 區塊加密法 組合
3.4.1 串流加密法 明文串流為P,密文串流為C,而金鑰串流為K。
圖3.26 串流加密法
範例3.30 加法加密法可視為串流加密法的一種,因為其金鑰串流是金鑰重複的值。換句話說,金鑰串流是一個已決定好的金鑰串流或K = (k, k, …., k)。無論如何,此加密法中,每個密文字元都依賴明文的對應字元,因為其金鑰流是獨立產生的。
範例3.31 本章曾討論的單字母取代加密法也屬於串流加密法。然而,每個金鑰串流的值都是明文字元在對應表的對應密文字元。
範例3.32 根據定義,Vigenere加密法也是串流加密法的一種。金鑰串流為重複的m值,其中m是關鍵字的大小。
範例3.33 我們能建立一個按照金鑰串流來劃分串流加密法的標準。若 ki 值並非根據明文串流中明文字元的位置而定,則此串流加密法就是單字母加密法,否則就是多字母加密法。
範例3.33 (續) 因加法加密法的金鑰串流ki 是固定的,且並非根據明文字元的位置而定,所以加法加密法定義為單字母加密法。 因Vigenere加密法的ki 根據明文字元的位置而定,所以屬於多字母加密法。然而,其相依性是循環的,意即兩個相隔距離為 m 的字元其加密金鑰是相同的。
3.4.2 區塊加密法 在區塊加密法中,一組大小為m (m > 1)的明文符號會一起被加密成一組相同大小的密文。依據區塊加密法的定義,即使金鑰由多個值組成,我們只使用單一的金鑰來加密整個區塊,圖3.27列出區塊加密法的概念。
圖3.27 區塊加密法
範例3.34 Playfair加密法就是區塊加密法,其區塊大小為m = 2,兩個字元一起被加密。
範例3.35 Hill加密法也是區塊加密法,使用單一金鑰(矩陣)一起加密一個大小為 2 或更多的明文區塊。在此加密法中,密文每個字元的值根據所有明文字元的值而定。雖然其金鑰由m × m個值所組成,但還是被視為一把單一金鑰。
範例3.36 由區塊加密法的定義可明顯看出,每個區塊加密法都是多字母加密法,因為密文區塊的每個字元都根據所有明文區塊的字元而定。
3.4.3 組合 實際上,明文區塊是獨立加密的,但它是利用一個金鑰串流以區塊和區塊的方式加密整個訊息。換句話說,以獨立區塊來看,此加密法為區塊加密法;但就整個訊息而言,若將一個區塊視為一個單位,則此加密法就是串流加密法。每個區塊使用不同的金鑰,其金鑰就有可能於加密過程前或加密過程進行時產生。