Cryptography and Network Security

38
Cryptography and Network Security Third Edition by William Stallings Lecture slides by Lawrie Brown

description

Cryptography and Network Security. Third Edition by William Stallings Lecture slides by Lawrie Brown. 第二章 – 古典加密技術. 現今很多人都將自己的名字視為很重要的一部份,並且會花很大的功夫來隱藏自己的姓名,唯恐心術不正之輩用它來傷害自己。 — The Golden Bough, Sir James George Frazer. 對稱式加密. 或 傳統 / 私密鑰匙 / 單一鑰匙 傳送者與接收者共享一把鑰匙 所有的傳統加密演算法都是私密鑰匙加密法 - PowerPoint PPT Presentation

Transcript of Cryptography and Network Security

Page 1: Cryptography and Network Security

Cryptography and Network Security

Third Edition

by William Stallings

Lecture slides by Lawrie Brown

Page 2: Cryptography and Network Security

第二章 –古典加密技術

現今很多人都將自己的名字視為很重要的一部份,並且會花很大的功夫來隱藏自己的姓名,唯恐心術不正之輩用它來傷害自己。—The Golden Bough, Sir James George Frazer

Page 3: Cryptography and Network Security

對稱式加密• 或 傳統 / 私密鑰匙 / 單一鑰匙• 傳送者與接收者共享一把鑰匙• 所有的傳統加密演算法都是私密鑰匙加密

法• 在 1970 年代的公開鑰匙加密法發明之前,

這是唯一的加密方式

Page 4: Cryptography and Network Security

基本專有名詞• 明文 plaintext – 原始訊息 • 密文 ciphertext – 編碼過的訊息 • 加密 cipher – 將明文轉換為密文的演算法 • 鑰匙 key – 只有傳送者與接受者才知道的加密用資訊• 加密 encipher (encrypt) – 將明文轉為密文 • 解密 decipher (decrypt) – 將密文解開成明文• 密碼學 cryptography – 研究加密的原理與方法• 密碼破解 cryptanalysis (codebreaking) – 在不知道鑰

匙的情況下,研究破解密文的原理與方法• 密碼技術 cryptology – 整合密碼學與密碼破解這兩個領

Page 5: Cryptography and Network Security

對稱式加密模型

Page 6: Cryptography and Network Security

必要條件• 使用對稱式加密的兩個必要條件 :

– 一個強固的加密演算法– 只有傳送者與接收者才知道的一把秘密鑰匙

Y = EK(X)

X = DK(Y)

• 假設加密演算法是已知的• 意味著,需要一個分送鑰匙的安全管道

Page 7: Cryptography and Network Security

密碼學• 可依下列觀點來分類:

– 加密的方法• 取代 / 置換 / 前兩者混用

– 鑰匙個數• 單一鑰匙或私密鑰匙 / 雙鑰匙或公開鑰匙

– 明文的處理方式• 區段 / 資料流

Page 8: Cryptography and Network Security

密碼破解的方式• 只知道密文

– 只知道演算法與密文,利用統計方法來求出明文• 已知明文

– 藉由已知或推測的明文 - 密文組合來破解• 自選明文

– 藉由自選的明文與對應的密文來破解• 自選密文

– 藉由自選的密文與對應明文的來破解• 自選文字

– 藉由加密自選的明文或解開自選的密文來破解

Page 9: Cryptography and Network Security

暴力搜尋法• 理論上可以嘗試所有的鑰匙 • 最基本的破解法,所需成本與鑰匙大小成正比• 前提是,可以看懂或辨識明文

Page 10: Cryptography and Network Security

更多的定義• 絕對安全

– 不論具備多少計算能力都無法破解,因為密文本身提供的資訊不足以唯一決定其密文

• 計算上的安全 – 在計算能力有限的情況下(例如,計算所需的

時間比宇宙生成的時間還久),無法破解此密文

Page 11: Cryptography and Network Security

古典取代加密法• 將明文中的字元用其他的字元、數字或符

號來取代• 如果我們將明文視為一連串的字元,那麼

取代就是將明文的字元樣式代換成密文的字元樣式。

Page 12: Cryptography and Network Security

Caesar 加密法• 我們所知道最早的取代加密法• 由 Julius Caesar 所發展出來的 • 最早用在軍事單位• 將每個字母用其後的第三個字母來取代• 範例 :

meet me after the toga party

PHHW PH DIWHU WKH WRJD SDUWB

Page 13: Cryptography and Network Security

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 zD 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 m0 1 2 3 4 5 6 7 8 9 10 11 12n o p q r s t u v w x y Z13 14 15 16 17 18 19 20 21 22 23 24 25

• 則可將 Caesar 加密法定義如下 :C = E(p) = (p + k) mod (26)p = D(C) = (C – k) mod (26)

Page 14: Cryptography and Network Security

Caesar 加密法的破解方式 • 只有 26 種可能的加密方式

– A 對應到 A,B,..Z

• 可以逐一地測試 • 採用 暴力搜尋法 • 給定密文之後,只需測試所有可能的移位

距離• 當明文出現時,必須可以辨識出來• 例如,請破解密文 “ GCUA VQ DTGCM”

Page 15: Cryptography and Network Security

Monoalphabetic 加密法• 不只是單純對字元移位• 可以任意地弄亂字元• 每個明文字元都會隨機地對應到另一個密文字元• 因此,鑰匙的長度就是 26 個字元

明文 : abcdefghijklmnopqrstuvwxyz

密文 : DKVQFIBJWPESCXHTMYAUOLRGZN

明文 : ifwewishtoreplaceletters

密文 : WIRFRWAJUHYFTSDVFSFUUFYA

Page 16: Cryptography and Network Security

Monoalphabetic 加密法的安全性

• 現在共有 26! = 4 x 1026 把鑰匙• 有那麼多把鑰匙,該應該算是安全了• 但是這樣想是 !!! 錯的 !!!

• 問題出在語言本身的特性

Page 17: Cryptography and Network Security

語言的贅詞與密碼破解的關係• 人類的語言是充滿贅詞的• 例如 “ th lrd s m shphrd shll nt wnt” • 字元的使用頻率並不均等• 在英文中, e 的使用次數最高• 其次是 T,R,N,I,O,A,S • 其他字元其實很少用到• 例如 Z,J,K,Q,X • 單字元、雙字元以及三字元的出現頻率都已經有

現成的統計表格

Page 18: Cryptography and Network Security

英文字元的出現頻率

Page 19: Cryptography and Network Security

應用在密碼破解上• 關鍵概念 - monoalphabetic 取代加密法並不會改變字元間的相對出現頻率

• 阿拉伯科學家在九世紀時就已經發現這個破解法• 計算密文的字元出現頻率• 將結果與已知的頻率數值互相比對• 如果針對 Caesar 加密法的統計圖形來找尋波峰

與波谷– 波峰出現在 A-E-I 三字元 , NO 雙字元 , RST 三字元– 波谷出現在 : JK, X-Z

• 如果是針對 monoalphabetic 加密法,就必須逐一辨識每個字元– 常用的雙字元與三字元統計表格可以幫助我們來破解

Page 20: Cryptography and Network Security

破解範例• 給定密文 :

UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ

• 計算字元相對頻率 ( 請見書中內文 )• 猜測 P 與 Z 就是 e 與 t• 猜測 ZW 就是 th ,而 ZWP 就是 the• 邊試邊改的情況下,最後可得 :

it was disclosed yesterday that several informal butdirect contacts have been made with politicalrepresentatives of the vietcong in moscow

Page 21: Cryptography and Network Security

Playfair 加密法• 即使像 monoalphabetic 加密法中那麼多

的鑰匙,也無法確保安全性• 提升安全性的一個方法是:一次加密多個

字元• Playfair 加密法 就是一個例子• 此法是 Charles Wheatstone 在 1854 年

所提出,但是以其朋友 Baron Playfair 的名字來命名

Page 22: Cryptography and Network Security

Playfair 鑰匙矩陣• 根據一個關鍵字來產生一個 5X5 階的字元矩陣• 將關鍵字的字元填入矩陣中 (刪除重複字元 ) • 將剩餘字原填入矩陣中• 例如,使用關鍵字 MONARCHY

MONAR

CHYBD

EFGIK

LPQST

UVWXZ

Page 23: Cryptography and Network Security

加密與解密• 每次加密明文中的兩個字元 :

1. 如果這兩個字元一樣,則在其間插入一個 ‘ X’ ,例如 “ balloon” 變成 “ ba lx lo on”

2. 如果這兩個字元落在矩陣中的同一列,則用它們右邊的字元來取代它們 ( 把第一個字元當成是最後一個字元的右邊字元 ) 。例如 “ ar” 變成 “ RM”

3. 如果這兩個字元落在矩陣中的同一行,則用它們下方的字元來取代它們 ( 把第一個字元當成是最後一個字元的下方字元 ) 。例如 “mu” 變成 “ CM”

4. 在其他的情況下,每個字元都換成與它自己同一列,但是與另一個字元同一行的那個字元。例如, “ hs” 變成 “ BP” ,“ ea” 變成 “ IM” 或是 “ JM” ( 由加密者自行決定 ) 。

Page 24: Cryptography and Network Security

Playfair 加密法的安全性• 比 monoalphabetic 安全許多• 因為有 26 x 26 = 676 那麼多雙字元 • 表格中需要 676 個項目才足以分析

(monoalphabetic 的表格只需要 26 個項目 ) • 相對地產生更多的密文• 已經廣泛地使用許多年 ( 例如,第一次世界大戰

時,美軍與英軍都採用此法 ) • 在給定幾百個字元的密文的情況下,此法仍可破

解• 因為其中仍存有不少明文的結構

Page 25: Cryptography and Network Security

Polyalphabetic 加密法• 另一個提升安全性的方法就是採用多重取

代法則• 稱為 polyalphabetic 取代加密法 • 在具備多重取代法則與較一致的頻率分佈

的情況下,讓破解者更難得逞• 藉由一把鑰匙來決定:每個明文字元在轉

換時,該選用那個取代法則• 依序使用不同的取代法則 • 當遇到鑰匙結尾時,再重頭開始

Page 26: Cryptography and Network Security

Vigenère 加密法• 最簡單的 polyalphabetic 取代加密法就是

Vigenère 加密法 • 其實就是多重 caesar 加密法 • key 具備多個字元 K = k1 k2 ... kd • 第 i 個字元決定第 i 次所使用的取代法則• 逐一使用每個取代法則 • 在第 d 個字元之後,又從頭開始• 以相反方式運算就可以解密

Page 27: Cryptography and Network Security

範例• 寫下明文 • 在明文之上重複地寫下鑰匙• 將每個鑰匙字元當成 caesar 加密法的鑰匙 • 加密相對應的明文字元• 例如,使用關鍵字 deceptive

鑰匙 : deceptivedeceptivedeceptive

明文 : wearediscoveredsaveyourself

密文 : ZICVTWQNGRZGVTWAVZHCQYGLMGJ

Page 28: Cryptography and Network Security

Vigenère 加密法的安全性• 每個明文字元可以對應到好幾個密文字元• 因此字元頻率就被弭平了• 但並未完全消除• 從字元頻率著手

–察看是否為 monoalphabetic 的頻率分佈• 如果不是的話,就必須找出取代法的個數,

這樣就可以逐一求出

Page 29: Cryptography and Network Security

Kasiski 破解法• 此法是由 Babbage / Kasiski 所發展出來的 • 重複的密文透露了週期的訊息• 因此,找出距離間隔一樣的相同明文• 當然其產生的密文也相同• 當然,這可能是運氣好剛好一樣• 例如,前一個範例中的 “ VTW”• 告訴我們關鍵字長度可能為 3 或 9• 接下來,用先前提到的技巧來逐一破解

monoalphabetic 加密法

Page 30: Cryptography and Network Security

Autokey 加密法• 理論上,希望鑰匙跟訊息一樣長• Vigenère 提出了 autokey 加密法 • 將關鍵字接在訊息前端,藉此形成鑰匙• 如果知道關鍵字的話,就可以解開前幾個字元• 根據這些解開的字元,就可以解開後續的所有字

元• 但是仍舊殘存可供破解的頻率資訊• 例如,給定鑰匙 deceptive

鑰匙 : deceptivewearediscoveredsav明文 : wearediscoveredsaveyourself密文 : ZICVTWQNGKZEIIGASXSTSLVVWLA

Page 31: Cryptography and Network Security

One-Time Pad

• 如果隨機鑰匙的長度真的跟訊息一樣,那麼這個加密法就是安全的

• 此法稱為 One-Time pad• 無法破解的原因是:密文與明文間沒有任何統計

上的關係• 因為對 任意的明文 與 任意的密文之間, 都存在

一把對應彼此的鑰匙• 一把鑰匙只能使用一次• 但是如何安全地分送鑰匙,就是一個大問題

Page 32: Cryptography and Network Security

置換加密法• 現在我們來看古典的置換與重排加密法• 藉由重新安排字元的順序來隱藏訊息• 並未換掉實際使用的字元• 因為頻率分佈與原始文字一樣,所以仍可

破解

Page 33: Cryptography and Network Security

柵欄加密法• 將明文寫成一連串的對角形式 • 然後一列一列地讀出• 例如,將訊息寫成 :

m e m a t r h t g p r y

e t e f e t e o a a t

• 得到密文MEMATRHTGPRYETEFETEOAAT

Page 34: Cryptography and Network Security

列置換加密法• 一個較為複雜的機制• 在行數固定的情況下,將訊息一列一列地寫下• 然後在一列一列讀出之前,根據某把鑰匙來重排行的順序

鑰匙 : 3 4 2 1 5 6 7

明文 : 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

Page 35: Cryptography and Network Security

混合式加密法• 因為語言特性的關係,採用取代或置換加

密法並不安全• 因此,我們可以採用一連串的加密法讓破

解更困難,但是 : – 取代兩次比取代一次複雜– 置換兩次比置換一次複雜–但是取代之後再置換會更加複雜

• 這就是古典與當代加密法的橋樑

Page 36: Cryptography and Network Security

旋轉機• 在當代加密法出現之前,旋轉機是最常用的混合式

加密法• 旋轉機在第二次世界大戰時被廣泛地使用

– German Enigma, Allied Hagelin, Japanese Purple

• 是一個非常複雜,變化多端的取代加密法• 使用一系列的轉軸,每個轉軸就是一個取代加密法。

每個字元加密後,這個轉軸都會旋轉一個刻度來改變

• 三個轉軸的旋轉機就提供了 263=17576 個取代法

Page 37: Cryptography and Network Security

資訊隱藏• 加密的另一種選擇• 將「訊息存在」這件事隱藏起來

– 利用某種方式將一個訊息中的部分字元標示起來

– 利用不可視的墨水– 利用影像或音效檔中的最低位元來隱藏訊息

• 缺點– 用極高的成本來隱藏極少量的資訊位元

Page 38: Cryptography and Network Security

總結• 我們已知道 :

– 古典加密技巧與專有名詞– monoalphabetic 取代加密法– 利用字元頻率來破解密碼– Playfair 加密法– polyalphabetic 加密法– 置換加密法– 混合式加密法與旋轉機– 資訊隱藏