Cryptography and Network Security Third Edition by William Stallings Lecture slides by Lawrie Brown
第二章 – 古典加密技術 現今很多人都將自己的名字視為很重要的 一部份,並且會花很大的功夫來隱藏自己 的姓名,唯恐心術不正之輩用它來傷害自 己。 —The Golden Bough, Sir James George Frazer
對稱式加密 或 傳統 / 私密鑰匙 / 單一鑰匙 傳送者與接收者共享一把鑰匙 所有的傳統加密演算法都是私密鑰匙加密 法 在 1970 年代的公開鑰匙加密法發明之前, 這是唯一的加密方式
基本專有名詞 明文 plaintext – 原始訊息 密文 ciphertext – 編碼過的訊息 加密 cipher – 將明文轉換為密文的演算法 鑰匙 key – 只有傳送者與接受者才知道的加密用資訊 加密 encipher (encrypt) – 將明文轉為密文 解密 decipher (decrypt) – 將密文解開成明文 密碼學 cryptography – 研究加密的原理與方法 密碼破解 cryptanalysis (codebreaking) – 在不知道鑰匙 的情況下,研究破解密文的原理與方法 密碼技術 cryptology – 整合密碼學與密碼破解這兩個領 域
對稱式加密模型
必要條件 使用對稱式加密的兩個必要條件 : – 一個強固的加密演算法 – 只有傳送者與接收者才知道的一把秘密鑰匙 Y = E K (X) X = D K (Y) 假設加密演算法是已知的 意味著,需要一個分送鑰匙的安全管道
密碼學 可依下列觀點來分類: – 加密的方法 取代 / 置換 / 前兩者混用 – 鑰匙個數 單一鑰匙或私密鑰匙 / 雙鑰匙或公開鑰匙 – 明文的處理方式 區段 / 資料流
密碼破解的方式 只知道密文 – 只知道演算法與密文,利用統計方法來求出明文 已知明文 – 藉由已知或推測的明文 - 密文組合來破解 自選明文 – 藉由自選的明文與對應的密文來破解 自選密文 – 藉由自選的密文與對應明文的來破解 自選文字 – 藉由加密自選的明文或解開自選的密文來破解
暴力搜尋法 理論上可以嘗試所有的鑰匙 最基本的破解法,所需成本與鑰匙大小成正比 前提是,可以看懂或辨識明文
更多的定義 絕對安全 – 不論具備多少計算能力都無法破解,因為密文 本身提供的資訊不足以唯一決定其密文 計算上的安全 – 在計算能力有限的情況下(例如,計算所需的 時間比宇宙生成的時間還久),無法破解此密 文
古典取代加密法 將明文中的字元用其他的字元、數字或符 號來取代 如果我們將明文視為一連串的字元,那麼 取代就是將明文的字元樣式代換成密文的 字元樣式。
Caesar 加密法 我們所知道最早的取代加密法 由 Julius Caesar 所發展出來的 最早用在軍事單位 將每個字母用其後的第三個字母來取代 範例 : meet me after the toga party PHHW PH DIWHU WKH WRJD SDUWB
Caesar 加密法 可將轉換方式定義如下 : a b c d e f g h i j k l m n o p q r s t u v w x y z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 指定一個數字給每個字元 a b c d e f g h i j k l m n o p q r s t u v w x y Z 則可將 Caesar 加密法定義如下 : C = E(p) = (p + k) mod (26) p = D(C) = (C – k) mod (26)
Caesar 加密法的破解方式 只有 26 種可能的加密方式 –A 對應到 A,B,..Z 可以逐一地測試 採用 暴力搜尋法 給定密文之後,只需測試所有可能的移位 距離 當明文出現時,必須可以辨識出來 例如,請破解密文 “GCUA VQ DTGCM”
Monoalphabetic 加密法 不只是單純對字元移位 可以任意地弄亂字元 每個明文字元都會隨機地對應到另一個密文字元 因此,鑰匙的長度就是 26 個字元 明文 : abcdefghijklmnopqrstuvwxyz 密文 : DKVQFIBJWPESCXHTMYAUOLRGZN 明文 : ifwewishtoreplaceletters 密文 : WIRFRWAJUHYFTSDVFSFUUFYA
Monoalphabetic 加密法的安全性 現在共有 26! = 4 x 1026 把鑰匙 有那麼多把鑰匙,該應該算是安全了 但是這樣想是 !!! 錯的 !!! 問題出在語言本身的特性
語言的贅詞與密碼破解的關係 人類的語言是充滿贅詞的 例如 “th lrd s m shphrd shll nt wnt” 字元的使用頻率並不均等 在英文中, e 的使用次數最高 其次是 T,R,N,I,O,A,S 其他字元其實很少用到 例如 Z,J,K,Q,X 單字元、雙字元以及三字元的出現頻率都已經有 現成的統計表格
英文字元的出現頻率
應用在密碼破解上 關鍵概念 - monoalphabetic 取代加密法並不會改 變字元間的相對出現頻率 阿拉伯科學家在九世紀時就已經發現這個破解法 計算密文的字元出現頻率 將結果與已知的頻率數值互相比對 如果針對 Caesar 加密法的統計圖形來找尋波峰 與波谷 – 波峰出現在 A-E-I 三字元, NO 雙字元, RST 三字元 – 波谷出現在 : JK, X-Z 如果是針對 monoalphabetic 加密法,就必須逐一 辨識每個字元 – 常用的雙字元與三字元統計表格可以幫助我們來破解
破解範例 給定密文 : UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSX EPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ 計算字元相對頻率 ( 請見書中內文 ) 猜測 P 與 Z 就是 e 與 t 猜測 ZW 就是 th ,而 ZWP 就是 the 邊試邊改的情況下,最後可得 : it was disclosed yesterday that several informal but direct contacts have been made with political representatives of the vietcong in moscow
Playfair 加密法 即使像 monoalphabetic 加密法中那麼多的 鑰匙,也無法確保安全性 提升安全性的一個方法是:一次加密多個 字元 Playfair 加密法 就是一個例子 此法是 Charles Wheatstone 在 1854 年所 提出,但是以其朋友 Baron Playfair 的名字 來命名
Playfair 鑰匙矩陣 根據一個關鍵字來產生一個 5X5 階的字元矩陣 將關鍵字的字元填入矩陣中 ( 刪除重複字元 ) 將剩餘字原填入矩陣中 例如,使用關鍵字 MONARCHY MONAR CHYBD EFGIK LPQST UVWXZ
加密與解密 每次加密明文中的兩個字元 : 1. 如果這兩個字元一樣,則在其間插入一個 ‘X’ ,例如 “balloon” 變成 “ba lx lo on” 2. 如果這兩個字元落在矩陣中的同一列,則用它們右邊 的字元來取代它們 ( 把第一個字元當成是最後一個字 元的右邊字元 ) 。例如 “ar” 變成 “RM” 3. 如果這兩個字元落在矩陣中的同一行,則用它們下方 的字元來取代它們 ( 把第一個字元當成是最後一個字 元的下方字元 ) 。例如 “mu” 變成 “CM” 4. 在其他的情況下,每個字元都換成與它自己同一列, 但是與另一個字元同一行的那個字元。例如, “hs” 變成 “BP” , “ea” 變成 “IM” 或是 “JM” ( 由加密者自行 決定 ) 。
Playfair 加密法的安全性 比 monoalphabetic 安全許多 因為有 26 x 26 = 676 那麼多雙字元 表格中需要 676 個項目才足以分析 (monoalphabetic 的表格只需要 26 個項目 ) 相對地產生更多的密文 已經廣泛地使用許多年 ( 例如,第一次世界大戰時, 美軍與英軍都採用此法 ) 在給定幾百個字元的密文的情況下,此法仍可破 解 因為其中仍存有不少明文的結構
Polyalphabetic 加密法 另一個提升安全性的方法就是採用多重取 代法則 稱為 polyalphabetic 取代加密法 在具備多重取代法則與較一致的頻率分佈 的情況下,讓破解者更難得逞 藉由一把鑰匙來決定:每個明文字元在轉 換時,該選用那個取代法則 依序使用不同的取代法則 當遇到鑰匙結尾時,再重頭開始
Vigenère 加密法 最簡單的 polyalphabetic 取代加密法就是 Vigenère 加密法 其實就是多重 caesar 加密法 key 具備多個字元 K = k1 k2... kd 第 i 個字元決定第 i 次所使用的取代法則 逐一使用每個取代法則 在第 d 個字元之後,又從頭開始 以相反方式運算就可以解密
範例 寫下明文 在明文之上重複地寫下鑰匙 將每個鑰匙字元當成 caesar 加密法的鑰匙 加密相對應的明文字元 例如,使用關鍵字 deceptive 鑰匙 : deceptivedeceptivedeceptive 明文 : wearediscoveredsaveyourself 密文 : ZICVTWQNGRZGVTWAVZHCQYGLMGJ
Vigenère 加密法的安全性 每個明文字元可以對應到好幾個密文字元 因此字元頻率就被弭平了 但並未完全消除 從字元頻率著手 – 察看是否為 monoalphabetic 的頻率分佈 如果不是的話,就必須找出取代法的個數, 這樣就可以逐一求出
Kasiski 破解法 此法是由 Babbage / Kasiski 所發展出來的 重複的密文透露了週期的訊息 因此,找出距離間隔一樣的相同明文 當然其產生的密文也相同 當然,這可能是運氣好剛好一樣 例如,前一個範例中的 “VTW” 告訴我們關鍵字長度可能為 3 或 9 接下來,用先前提到的技巧來逐一破解 monoalphabetic 加密法
Autokey 加密法 理論上,希望鑰匙跟訊息一樣長 Vigenère 提出了 autokey 加密法 將關鍵字接在訊息前端,藉此形成鑰匙 如果知道關鍵字的話,就可以解開前幾個字元 根據這些解開的字元,就可以解開後續的所有字 元 但是仍舊殘存可供破解的頻率資訊 例如,給定鑰匙 deceptive 鑰匙 : deceptivewearediscoveredsav 明文 : wearediscoveredsaveyourself 密文 : ZICVTWQNGKZEIIGASXSTSLVVWLA
One-Time Pad 如果隨機鑰匙的長度真的跟訊息一樣,那麼這個 加密法就是安全的 此法稱為 One-Time pad 無法破解的原因是:密文與明文間沒有任何統計 上的關係 因為對 任意的明文 與 任意的密文之間, 都存在 一把對應彼此的鑰匙 一把鑰匙只能使用一次 但是如何安全地分送鑰匙,就是一個大問題
置換加密法 現在我們來看古典的置換與重排加密法 藉由重新安排字元的順序來隱藏訊息 並未換掉實際使用的字元 因為頻率分佈與原始文字一樣,所以仍可 破解
柵欄加密法 將明文寫成一連串的對角形式 然後一列一列地讀出 例如,將訊息寫成 : m e m a t r h t g p r y e t e f e t e o a a t 得到密文 MEMATRHTGPRYETEFETEOAAT
列置換加密法 一個較為複雜的機制 在行數固定的情況下,將訊息一列一列地寫下 然後在一列一列讀出之前,根據某把鑰匙來重排 行的順序 鑰匙 : 明文 : a t t a c k p o s t p o n e d u n t i l t w o a m x y z 密文 : TTNAAPTMTSUOAODWCOIXKNLYPETZ
混合式加密法 因為語言特性的關係,採用取代或置換加 密法並不安全 因此,我們可以採用一連串的加密法讓破 解更困難,但是 : – 取代兩次比取代一次複雜 – 置換兩次比置換一次複雜 – 但是取代之後再置換會更加複雜 這就是古典與當代加密法的橋樑
旋轉機 在當代加密法出現之前,旋轉機是最常用的混合 式加密法 旋轉機在第二次世界大戰時被廣泛地使用 –German Enigma, Allied Hagelin, Japanese Purple 是一個非常複雜,變化多端的取代加密法 使用一系列的轉軸,每個轉軸就是一個取代加密 法。每個字元加密後,這個轉軸都會旋轉一個刻 度來改變 三個轉軸的旋轉機就提供了 26 3 =17576 個取代法
資訊隱藏 加密的另一種選擇 將「訊息存在」這件事隱藏起來 – 利用某種方式將一個訊息中的部分字元標示起 來 – 利用不可視的墨水 – 利用影像或音效檔中的最低位元來隱藏訊息 缺點 – 用極高的成本來隱藏極少量的資訊位元
總結 我們已知道 : – 古典加密技巧與專有名詞 –monoalphabetic 取代加密法 – 利用字元頻率來破解密碼 –Playfair 加密法 –polyalphabetic 加密法 – 置換加密法 – 混合式加密法與旋轉機 – 資訊隱藏