--- tags: 資安 --- # ch2 加密法 ## Symmetric Encryption 對稱加密法 也稱為conventional encryption或single-key encryption,在公鑰加密之前被廣泛使用 **Simplified Model of Symmetric Encryption**  Cryptography 密碼學 Cryptographic system/ cipher 密碼系統/密碼 Cryptanalysis 密碼分析,用來解密的手法 Cryptology = Cryptography+Cryptanalysis ### Secure Use of Conventional Encryption 要達到「安全的加密法」必須有夠強大的演算法,必須有兩種考量: 1. 讓想破解的人,即使能拿到明文、密文也推不出你的算法,即使他知道了你用甚麼演算法,也無法算出你的Key 2. 由於Key必須是傳送方和接收方都要有,因此傳送key的副本的方法也必須是安全的 →你不需要隱藏演算法,只要好好保護你的key  ### Cryptographic Systems 分為三個類型: 1. 將明文轉為密文的操作: * Substitution 替換 * Transposition 換位 2. 用到的鑰匙數量 * Symmetric, conventional encryption * Asymmetric, public-key encryption 3. 明文的處理方式 * Block cipher * Stream cipher ### 攻擊常規加密方案的類型 1. Cryptanalysis 利用演算法的性質與明文的特徵來推出Key e.g.:字母出現頻率 2. Brute-force attack 暴力法 將所有key的可能都用一次在密文上,推出可能的key e.g.: Caesar cipher:Try all 25 possible keys 最難攻擊的是→只有密文 但一般來說演算法要能防禦明文被知道的狀況下的攻擊 所以我們會假設攻擊者是知道演算法的模式下進行加密 ### 加密方式的安全性 1. Unconditionally secure 無條件安全 只要攻擊者拿不到必要的訊息,不管攻擊者有多少時間都無法破解 >只有 one-time pad能達到無條件安全,但不實際 2. Computationally secure 計算安全 能達到讓解密時間的價值大於內容的價值 或 讓解密時間長到內容已經過期 ### Caesar Cipher 原理:將字母位移 假設每個字母往後位移3個,演算法可以表示成: $C = E(3, p) = (p + 3) mod (26)$ Ciphertext for C and Plainte4xt for P 所以解密的演算法就是 $p = D(k , C ) = (C - k ) mod 26$ ### Monoalphabetic Cipher單表加密 將特定字母替換成另一個字母 Ex: E換成Z,F換成J 問題:容易用頻率分析破解,因字母出現頻率跟明文一樣 #### Playfair Cipher 建立一個5x5的表格裡面必須放一個自己選擇的keyword,剩下照順序填 Ex. Keyword:MONARCHY  規則: 1. 將單字拆成每兩個字母一組,而如果有相同字母出現在同組,則將第二個字母用一個事先指定的字母替換 Ex: balloon → ba lx lo on 2. 如果同組的字母在同列或同行,則兩個字母都向後位移 Ex: ar→RM mu→CM 3. 如果不同行也不同列,則以字母位置畫十字,兩個十字相交的部分就是替換的字母 Ex: hs→BP * 總共有$26*26=676$種可能 雖然比單表加密複雜,但一樣容易被破解 #### Hill Cipher 將明文的字母編碼後,產出一個Key矩陣,相乘後再mod26得到密文 這個矩陣K必須要有反矩陣  如果攻擊者只拿到密文會很難攻擊,但如果攻擊者拿到明文,則可以很輕易破解 $C = PK mod26$ $P = CK^-1 mod26$ $K = P^-1C mod26$  ### Vigenère Cipher * Best known polyalphabetic substitution ciphers 1.給定一明文字串P,如:TAKE THAT HILL 2.給定一金鑰K,如:YANG 3.當明文與金鑰字母長度不同時,重複金鑰字母使其與明文長度相同,如: YANG YANG YANG 4.將明文字母與對應位置的金鑰字母相加得到密文C,Ci=Pi+Ki (mod26) 5.或者用相對位移方式來計算,如位置1明文為T,金鑰是Y,而Y是A移動24個位置的結果,則T也需相對移動24個位置,得到密文字母R,以此類推 **注意** 字母A-Z ⇒ 數字0-25  #### Vigenère Autokey System Example: key: <font color=red>deceptive</font>wearediscoveredsav plaintext: wearediscoveredsaveyourself ciphertext: ZICVTWQNGKZEIIGASXSTSLVVWLA 由於每次的金鑰不同,因此更難找到字母的頻率,但金鑰跟明文還是有著相同頻率 所以只要金鑰能跟明文一樣長 且 金鑰跟明文完全沒關係 就能防止分析攻擊 ### Vernam Cipher 直接上圖片!  原理是用一個迴圈一直生產金鑰,但因為是用迴圈所以金鑰終究會重複,只要有夠多的密文一樣可以推敲出Key ### One-Time Pad 原理: 用隨機的金鑰且金鑰長度必須跟明文一樣長,每個金鑰都只用在一個訊息上,用完不能再用 由於金鑰的隨機性,因此密文頻率不會跟明文有任何關連,無法破解 但是需要大量產生金鑰→不方便 只有在需要超高隱密性的頻道用 ## Transposition Techniques Substitution:替換字母 Transposition:改變排列=permutation ### Rail Fence Cipher 以下列方式將字母重新排列 like a train ### Row Transposition Cipher 把明文寫成一個方形,然後隨便給每一行編號,按照編號排序形成密文 ### Multiple Transposition 單純打亂排列的密文內容跟明文一樣,很容易就能分析出來明文,所以如果是排很多次呢? 答案是:多做幾遍確實能增加分析的困難度,無論是排列加密還是替換加密都會,因此有了Rotor Machines ### Rotor Machines 在二戰時使用的加密機器,由打入的每個字母都會使轉盤轉一格,總共使用三個轉盤,每個轉速可能不一樣,因此至少得$26*26*26=17576$個字母後才會回到原本的編碼  ### Steganography 就是取文章每個單字的第一字,或是取每個t後面字之類的,也就是藏頭 嚴格來講不算加密法 [CH3 Block cipher and DES](https://hackmd.io/@Ired/ISch3N0t3)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up