460 likes | 736 Views
Cryptography( 密碼學 ). 安全性 錯誤偵測 修正錯誤 身份辨識. 安全性. 訊息傳遞時,就算被他人擷取,也無法得知內容。. 對稱式加密模型. 錯誤偵測. 電腦在傳送資料時,是以二進位法傳送資訊。 例如其中一種表示系統為 ASCII 碼將一些字母、符號及數字以 8 個二進位數字表示。 如 B,A,T,C 分別以 01000010, 01100010, 00110111 , 及 01000011 表示。 若在傳送 B 這字元時,有一錯誤發生在第八個數字,收到的訊息為 0100001 1 在 此時將被解讀成 C 。 我們如何偵測這種錯誤呢?.
E N D
Cryptography(密碼學) 安全性 錯誤偵測 修正錯誤 身份辨識
安全性 • 訊息傳遞時,就算被他人擷取,也無法得知內容。 對稱式加密模型
錯誤偵測 • 電腦在傳送資料時,是以二進位法傳送資訊。 • 例如其中一種表示系統為ASCII碼將一些字母、符號及數字以8個二進位數字表示。 • 如B,A,T,C分別以 01000010, 01100010, 00110111,及01000011表示。 • 若在傳送B這字元時,有一錯誤發生在第八個數字,收到的訊息為01000011在 • 此時將被解讀成C。 • 我們如何偵測這種錯誤呢?
修正錯誤 • 如B,A,T,C分別以 01000010, 01100010, 00110111,及01000011表示。 • 若在傳送B這字元時,有一錯誤發生在第八個數字,收到的訊息為01000011在 • 此時將被解讀成C。 • 我們如何修正這種錯誤呢?
身份辨識 • 當Alice分收到Bob的電子文件,他如何確認這是是Bob寄送的的文件? • 而Alice也不能否認這是他所發的文件?
密碼系統 • 對稱鑰密碼系統:加密鑰匙=解密鑰匙。 • 非對稱鑰密碼系統 • 公開鑰密碼系統:加密鑰匙公開(稱為公鑰),解密鑰匙不公開(稱為私鑰) • 私鑰密碼系統:Pohlig-Hellman密碼,… 明文 密文 明文 加密鑰匙 解密鑰匙
古典密碼 • 凱撒挪移碼(Caesar Shift Cipher) • 仿射密碼(Affine Cipher) • 單套字母替代法(Monoalphabetic cipher) • Vigenere密碼 • Hill密碼 • 單次密碼簿(One-time Pad)
凱撒挪移碼 • 是一種簡易的單套字母替代法,為將明文字母改成為其後面固定的後n為字母。 • Example: n=3 Plaintext(明文): Ciphertext(密文): QXPEHU WLHRUB NUMBER THEORY
凱撒挪移碼 A B C D E F G H I J K L M 00 01 02 03 04 05 06 07 08 09 10 11 12 • 將明文字母往後挪動n步。則加密的密鑰E是”n”,而解密的密鑰D是”-n” • 若P為明文字母的數字代碼且C為密文字母的數字代碼,則C P+n (mod 26). N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25
Example • Alice欲將明文cryptography傳給Bob.兩人協商好以n=4為密鑰傳送。 • 明文先化為數字代碼(02,17,24,15,19,14,06,17,00,15,07,24)。 • 使用加密函數C P+4 (mod 26)加密後得(06,21,02,19,23,18,10,21,04,19,11,02) • Alice將之轉回字元得密文gvctxskvetlc並傳送給Bob。 • Bob收到密文後轉換成數字代碼後以解密函數P C - 4 (mod 26)加解密後得(02,17,24,15,19,14,06,17,00,15,07,24) • 還原成明文即為cryptography。
對凱撒加密做暴力破解法(Brute-force Cryptanalysis) • 25種的可能,逐一測試 • 測試出來是明文,一看便知 凱撒加密的破解 – 暴力破解法
仿射密碼 • 也是一種簡易的單套字母替代法,以26個英文字母為例,作法為將字母化為數字代碼m後以加密函數E(m) am+b (mod 26)加密。其中a需與26互質(即gcd(a,26)=1)。 • 若a需與26不互質,以E(m) 2m+1 (mod 26)為例,字母b與q的數字代碼分別為1,14,加密後的數字代碼皆為3,無法辨別。
仿射密碼 • 也是一種簡易的單套字母替代法,以26個英文字母為例,作法為將字母化為數字代碼m後以加密函數E(m) am+b (mod 26)加密。其中a需與26互質(即gcd(a,26)=1)。 • 如何解密?解密函數? • 解 E(m) – b am (mod 26) • 若能找到一整數x使得ax 1 (mod 26) • 則m axm x(E(m) -b) (mod 26)。
Theorem • 若a,b為皆為非零的整數,則 a與b互質 1= ax + by有整數解 ax 1 (mod b)有解 • 我們通常把這樣x的表示成a-1.
仿射密碼 • 也是一種簡易的單套字母替代法,以26個英文字母為例,作法為將字母化為數字代碼m後以加密函數E(m) am+b (mod 26)加密。其中a需與26互質(即gcd(a,26)=1)。 • 解密函數為m a-1(E(m) -b) (mod 26)。
仿射密碼的破解 – 暴力破解法 • 加密函數E(m) am+b (mod 26)。其中a需與26互質(即gcd(a,26)=1)。 • 解密函數為m a-1(E(m) -b) (mod 26)。 • a共有12種可能 • 對仿射密碼做暴力破解法 • 26*12=312種的可能,逐一測試
Example • Alice欲將明文affine傳給Bob.兩人協商好密鑰為(a,b)=(3,8)。 • 明文先化為數字代碼(00,05,05,08,13,04)。 • 使用加密函數E(m) 3m+8 (mod 26)加密後得(08,23,23,06,21,20) • Alice將之轉回字元得密文ixxgvu並傳送給Bob。 • Bob收到密文後轉換成數字代碼後以解密函數 m 3-1(E(m) - 8) (mod 26)解密 • 解 3x 1 (mod 26) 解 1= 3x + 26y 之整數解
解 1= 3x + 26y 之整數解 26 = 38 + 2 1= 3 + (-1) 2 = 3 + (-1) (26+(-8) 3) 3 = 21 + 1 = 3 9 + 26 (-1) 3-1 = x = 9 (mod 26)
Example • Alice欲將明文affine傳給Bob.兩人協商好密鑰為(a,b)=(3,8)。 • 明文先化為數字代碼(00,05,05,08,13,04)。 • 使用加密函數E(m) 3m+8 (mod 26)加密後得(08,23,23,06,21,20) • Alice將之轉回字元得密文ixxgvu並傳送給Bob。 • Bob收到密文後轉換成數字代碼後以解密函數 m 3-1(E(m) - 8) 9(E(m) - 8) (mod 26)解密後得(00,05,05,08,13,04) • 還原成明文即為affine 。
單套字母替代法 • 以26個英文字母為例,將每一字母各自對應到相異的字母做加密動作。 Plaintext : 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 Ciphertext: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M NUMBER THEORY FXDWTK ZITGKN
單套字母替代法 • 以26個英文字母為例,將每一字母各自對應到相異的字母做加密動作。 • 這可看成定義在字母集合{a,b,…,z}上的一個置換(permutation). • 凱薩挪移碼與仿射密碼為具有一定規律的置換. Plaintext : 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 Ciphertext: Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
d d a a a a n n z z b b k k z z b b z z y y c v v c y y c c g g x x q d q d x x d d f f e e e e f f i i f f u u c c m t m t 明文:meet me after the toga party 密文:cffu cf diufv ujf uhbd tdyuz Example 隨機決定一種字母的置換做為key abcdefghijklmnopqrstuvwxyzdkvqfibjwpescxhtmyauolrgzn m m e e e e … … t t c f f … u
單套字母替代法的安全性 • 以Key的所有排列組合的可能性有 26! = 4 x 1026 • 有那麼多把鑰匙,該應該算是安全了吧? 但是這樣想是錯的!!! • 問題出在語言本身的特性~ 字元的使用頻率並不均等 • 在英文中,e 的使用次數最高、其次是 t,r,n,i,o,a,s、而z,j,k,q,x很少使用 • 另外,單字元、雙字元及三字元的出現頻率都已經有現成的統計表格
p(13.33%) → e, z(11.67%) → t. {s,u(8.3%),o(7.5%)} →{r,i,a,n,o,s} zw → th, zwsz → that. Bingo! 單套字母替代法的破解 –頻率分析 uzqsovuohxmopvgpozpevsgzwszopfpesxudbmetsxaiz vuephzhmdzshzowsfpappdtsvpquzwymxuzuhsx epyepopdzszufpombzwp t e e te t t e e t e t t t e ee e t t e e e t t e t e i a i a a a i a i a a a i i i a a i h h h w sd sclos dy s rd y s v r l nform lbu d r c con c sh v b nm d w pol c l r pr s n v sof
Vigenère 密碼 • 這是一種多套字母替代法( polyalphabetic ) • 也可說是多重caesar加密法 • 作法為選多個字元作為一個密鑰。然後重複這這些字元來加密。 • 例如,使用deceptive為密鑰 鑰匙: deceptivedeceptivedeceptive 明文: wearediscoveredsaveyourself 密文: ZICVTWQNGRZGVTWAVZHCQYGLMGJ
a a a a z z b b z z b b y y c c y y c c d d d d e e e e v v r w r w 明文:wearediscoveredsaveyourself 密文:zicvtwqngrzgvtwavzhcqyglmgj Vigenère 密碼 挑選一個單字做為key d e c e p t i v e3 4 2 4 15 19 8 21 4 w w e e a a e e r r z i c t v t i t i
Example • Alice欲將明文cryptography傳給Bob.兩人協商好以vecto為密鑰傳送,則密文為何? • 明文先化為數字代碼(02,17,24,15,19,14,06,17,00,15,07,24)。 • 密鑰的數字代碼為(21,04,02,19,14,21,04,02,19,14,21,04) • 加密後得(23,21,00,08,07,09,10,19,19,03,02,02) • Alice將之轉回字元得密文為xvaihjkttdcc
Vigenère 密碼的安全性 • 每個明文字元可以對應到好幾個密文字元 • 因此單一字元頻率就被不明顯 • 但重複的密文透露了週期的訊息 • 因此,找出距離間隔一樣的相同明文 • 當然其產生的密文也相同 • 當然,這可能是運氣好剛好一樣 • 例如,前面範例中的 “VTW” • 告訴我們關鍵字長度可能為 3 或 9 • 密文: ZICVTWQNGRZGVTWAVZHCQYGLMGJ
Example KQOWE FVJPU JUUNU KGLME KJINM WUXFQ MKJBG WRLFN FGHUD WUUMB SVLPS NCMUE KQCTE SWREEKOYSS IWCTU AXYOT APXPL WPNTC GOJBG FQHTD WXIZA YGFFN SXCSE YNCTS SPNTU JNYTG GWZGR WUUNE JUUQE APYME KQHUI DUXFP GUYTS MTFFS HNUOCZGMRU WEYTR GKMEE DCTVR ECFBD JQCUS WVBPN LGOYL SKMTE FVJJT WWMFM WPNME MTMHR SPXFS SKFFS TNUOCZGMDO EOYEEKCPJR GPMUR SKHFR SEIUE VGOYC WXIZA YGOSA ANYDOEOYJL WUNHA MEBFE LXYVL WNOJN SIOFR WUCCE SWKVI DGMUC GOCRU WGNMA AFFVN SIUDE KQHCE UCPFC MPVSU DGAVE MNYMA MVLFM AOYFN TQCUA FVFJN XKLNE IWCWO DCCUL WRIFT WGMUS WOVMA TNYBU HTCOC WFYTN MGYTQ MKBBN LGFBT WOJFT WGNTE JKNEE DCLDH WTVBU VGFBI JG KQOWE FVJPU JUUNU KGLME KJINM WUXFQ MKJBG WRLFN FGHUD WUUMB SVLPS NCMUE KQCTE SWREE KOYSS IWCTU AXYOT APXPL WPNTC GOJBG FQHTD WXIZA YGFFN SXCSE YNCTS SPNTU JNYTG GWZGR WUUNE JUUQE APYME KQHUI DUXFP GUYTS MTFFS HNUOC ZGMRU WEYTR GKMEE DCTVR ECFBD JQCUS WVBPN LGOYL SKMTE FVJJT WWMFM WPNME MTMHR SPXFS SKFFS TNUOC ZGMDO EOYEE KCPJR GPMUR SKHFR SEIUE VGOYC WXIZA YGOSA ANYDO EOYJL WUNHA MEBFE LXYVL WNOJN SIOFR WUCCE SWKVI DGMUC GOCRU WGNMA AFFVN SIUDE KQHCE UCPFC MPVSU DGAVE MNYMA MVLFM AOYFN TQCUA FVFJN XKLNE IWCWO DCCUL WRIFT WGMUS WOVMA TNYBU HTCOC WFYTN MGYTQ MKBBN LGFBT WOJFT WGNTE JKNEE DCLDH WTVBU VGFBI JG 依據上述分析,Key的長度極可能5 猜出Key的長度後,將密文以Key的長度間隔來統計字母出現頻率。 邊試邊統計而逐漸猜出明文。
Autokey 加密法 • 為Vigenère的改良版。希望鑰匙跟訊息一樣長。 • 方法為將關鍵字接在訊息前端,藉此形成鑰匙。 • 例如,給定鑰匙deceptive 明文: wearediscoveredsaveyourself 鑰匙: deceptivewearediscoveredsav 密文: ZICVTWQNGKZEIIGASXSTSLVVWLA
Autokey 加密法 • 為Vigenère的改良版。希望鑰匙跟訊息一樣長。 • 方法為將關鍵字接在訊息前端,藉此形成鑰匙。 • 例如,給定鑰匙deceptive 明文: wearediscoveredsaveyourself 鑰匙: deceptivewearediscoveredsav 密文: ZICVTWQNGKZEIIGASXSTSLVVWLA • 但是仍舊殘存可供破解的頻率資訊。
單次密碼簿(One-Time Pad) • 如果隨機鑰匙的長度真的跟訊息一樣,那麼這個加密法就是安全的。 • 此法稱為 One-Time pad • 無法破解的原因是:密文與明文間沒有統計上的關係 • 因為對任意的明文 與 任意的密文之間, 都存在一把對應彼此的鑰匙 • 一把鑰匙只能使用一次 • 但是如何安全地分送鑰匙,就是一個大問題
Hill密碼 • 是由數學家Lester Hill在1929提出的。 • 密鑰為一nn可逆矩陣A。 • 方法將明文轉換成一段段的n維行向量C,然後計算AC與可得密文P。計算A-1P可得明文C。 • Example: • 明文: paymoremoney • 密鑰:
Example • 甲國艦隊要將目前位置傳送給友軍,但未避免被敵方監聽得知,所以傳送時需先將位置資訊[x,y]T轉換。而收到的單位也必須將收到資訊逆轉回原來的資訊。 • 若我們利用可逆矩陣 • 此時會將位置[1,2]T轉換為[7,12]T傳送出去。 • 而收到的單位可利用A的反矩陣 將[7,12]T逆轉回原來的位置[1,2]T。
Example • 甲國艦隊要將目前位置傳送給友軍,但未避免被敵方監聽得知,所以傳送時需先將位置資訊[x,y]T轉換。而收到的單位也必須將收到資訊逆轉回原來的資訊。 • 若我們利用不可逆矩陣 • 此時會將位置[1,2]T轉換為[5,15]T傳送出去。 • 但收到的單位卻無法由[5,15]T逆轉回原來的位置[1,2]T。
Playfair 加密法 • 此法是 Charles Wheatstone 在 1854 年所提出,但是以其朋友 Baron Playfair 的名字來命名。 • 密鑰為由一個關鍵字來產生一個 5X5 階的字元矩陣。
m o n a r c h y b d e f g i/j k l p q s t u v w x z 明文:killersarerunningaway 密文:eksuulatrmkmwmagyqnxnb Playfair加密法 5.解密規則: 1.挑選一個單字做為key 3.將明文分成兩兩字元一組(但若同組同字母則中間插入一個“x”) 4.加密規則: 2.依接下來的方式將字母一一填入5×5的矩陣 若兩字元在同一行,則各以上方字元取代。 若兩字元在同一行,則各以下方字元取代。 key key monarchy monarchy 若兩字元在同一列,則各以左邊字元取代。 若兩字元在同一列,則各以右邊字元取代。 其他情況,則換成此二字元對角的兩字元。 其他情況,則換成此二字元對角的兩字元。 n a o r m ki ki lx lx le le … … rs rs c y h b d ek e g su i/j k ul f … at p q s t l u x v w z c m a b defg ijkl pq stuvwx z h n y o r
雙字元有 26×26=676 組的可能,也就是說至少要有這麼多字元的密文才足以分析。 • 較Monoalphabetic加密更為安全,第一次世界大戰中被採用。 • 不過密文中仍存在明文的結構,只要蒐集到字元數超過可分析的密文,仍有可能以統計方法進行分析,進而破解密文。 密文的字母頻率越一致,越難以統計分析破解。 Playfair加密法的安全性 100 90 80 70 60 50 40 30 20 10 0 Plaintext Playfair Cipher Reletive Frequency of Occurrence of Letters Vigenère Cipher Random Polyalphabetic Cipher 2468101214161820222426 Frequency Ranked Letters
混合式加密法 • 因為語言特性的關係,採用取代或置換加密法並不安全 • 因此,我們可以採用一連串的加密法讓破解更困難,但是: • 取代兩次比取代一次複雜 • 置換兩次比置換一次複雜 • 但是取代之後再置換會更加複雜 • 這就是古典與當代加密法的橋樑
旋轉機 • 在當代加密法出現之前,旋轉機是最常用的混合式加密法 • 旋轉機在第二次世界大戰時被廣泛地使用 • German Enigma, Allied Hagelin, Japanese Purple • 是一個非常複雜,變化多端的取代加密法 • 使用一系列的轉軸,每個轉軸就是一個取代加密法。每個字元加密後,這個轉軸都會旋轉一個刻度來改變 • 三個轉軸的旋轉機就提供了 263=17576 個取代法
這三個滾輪等同3-stage monoalphabetic cipher且必須有所“互動”,才不致於變成固定的相對字母取代。 • 每次按鍵都會讓滾輪的對應shift一格(1/26圈),而按26次鍵後,右滾輪會轉一圈而帶動中滾輪轉一格,而中滾輪若轉一圈則會帶動左滾輪轉一格。 旋轉機(Rotor Machine) ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe z abcdefgh ijkl mnopqrstuvwxy abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo abcdefgh ijkl mnopqrstuvwxyz abcdefgh ijkl mnopqrstuvwxyz
這三個滾輪等同3-stage monoalphabetic cipher且必須有所“互動”,才不致於變成固定的相對字母取代。 • 每次按鍵都會讓滾輪的對應shift一格(1/26圈),而按26次鍵後,右滾輪會轉一圈而帶動中滾輪轉一格,而中滾輪若轉一圈則會帶動左滾輪轉一格。 旋轉機(Rotor Machine) zabcdefgh ijkl mnopqrstuvwxy ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo abcdefgh ijkl mnopqrstuvwxyz 1 “n” “k” “d” “a” 1
這三個滾輪等同3-stage monoalphabetic cipher且必須有所“互動”,才不致於變成固定的相對字母取代。 • 每次按鍵都會讓滾輪的對應shift一格(1/26圈),而按26次鍵後,右滾輪會轉一圈而帶動中滾輪轉一格,而中滾輪若轉一圈則會帶動左滾輪轉一格。 旋轉機(Rotor Machine) ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo zabcdefgh ijkl mnopqrstuvwxy y zabcdefgh ijkl mnopqrstuvwx 2 “n” “k” “d” “a” 1 “v” “i” “f” “a” 2
ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo abcdefgh ijkl mnopqrstuvwxyz • 第四滾輪叫做Reflector是比較特別的,接線的方式是兩兩字母對應。 • 這會使得旋轉機的加密與解密操作程序相同。 旋轉機(Rotor Machine) u an bk cy df ee fx gv hz io jc kt lp mb nj om ps qw rq sl ta uh vr wg xd yi z
ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo abcdefgh ijkl mnopqrstuvwxyz • 第四滾輪叫做Reflector是比較特別的,接線的方式是兩兩字母對應。 • 這會使得旋轉機的加密與解密操作程序相同。 旋轉機(Rotor Machine) u an bk cy df ee fx gv hz io jc kt lp mb nj om ps qw rq sl ta uh vr wg xd yi z
旋轉機(Rotor Machine) zabcdefgh ijkl mnopqrstuvwxy u an bk cy df ee fx gv hz io jc kt lp mb nj om ps qw rq sl ta uh vr wg xd yi z ekmflgdq vznt owyhxuspaibrcj abcdefgh ijkl mnopqrstuvwxyz ajdksiru xblh wtmcqgznpyfvoe abcdefgh ijkl mnopqrstuvwxyz bdfhjlcp rtxv znyeiwgakmusqo abcdefgh ijkl mnopqrstuvwxyz “n” “k” “d” “a” I nput “b” “w” “m” “u” Output