[IT-Security-1] 對稱式密碼學 Symmetric Encryption
Symmetric Encryption
Notes from RWTH Aachen University course
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela
Kerckhoff’s Principle
除了key之外,即使整個系統是公開的,這個密碼系統仍是安全的
相反的如果隱藏密碼系統的設計則是「security through obscurity」
Perfect Secrecy
\(\mathcal{K}\): Key space
- 隱含\(|\mathcal{K}|\geq|\mathcal{C}|\geq|\mathcal{P}|\)
- 相等的關係式
- \(Pr(C|P)=Pr(C)\)
- \(Pr(C|P_1)=Pr(C|P_2)\)
Shannon’s Theorem
假設 \(|\mathcal{K}|=|\mathcal{C}|=|\mathcal{P}|\),且\(Pr(P)\geq 0\)
此加密系統提供Perfect secrecy \(\Leftrightarrow\) 所有\(K\)出現機率相等且存在唯一一個\(K\)使得\(E_K(P)=C\)
- \((\Rightarrow):\) 假設存在一個\(C\),使得沒有\(K\)符合\(E_K(P)=C\),則\(P(P|C)=0\)
和Perfect secrecy定義矛盾: \(Pr(P|C)=Pr(P)>0\)
因為 \(K\) 和 \(C\) 一樣多,若 \(K\) 不是uniformly選擇,則給定 \(C\) 會有某些 \(P\) 出現機率較高,跟Perfect secrecy矛盾 - \((\Leftarrow):\) 若滿足\(K\)出現機率相等且存在唯一一個\(K\)使得\(E_K(P)=C\)
則對所有\(P\)而言\(Pr(C|P)=1/|\mathcal{K}|\)
則\(Pr(C|P_1)=Pr(C|P_2)=1/|\mathcal{K}|\),是perfect secrecy的定義
Vernam’s One-Time Pad
滿足perfect secrecy的例子
Encryption: \(E_k(P)=P\oplus K\)
Decryption: \(D_k(C)=C\oplus K\)
Confusion 混淆
使每個 bit 的密文和 key 之間的關係變得複雜
Diffusion 擴散
改變一個 bit 的明文,密文也會盡可能的混亂
對稱式加密 Symmetric Encryption
DES
- 1977年被發表被NIST定為標準
- 64-bit key (其中8個bits為parity,實際用56個bits) 和 64-bit block
- 1999 年只用 22 小時就破解
- 缺點是 Key length 太短
2DES
- 用兩個不同的 key \(k_1,k_2\) 執行兩次 DES
- 問題:Key size 非兩倍
- Meet-in-the-middle-attack:
- 假設明文和密文對為:\(DES_{k_2}(DES_{k_1}(P))=C\)
- 則用 \(2^{56}\) 的 DES 時間破解 \(DES_{k_1}(P)=Z\)
- 再用 \(2^{56}\) 的 DES 時間破解\(DES_{k_2}(Z)=C\)
- 總共 DES 的操作為 \(2^{57}\)
- known-plaintext attack
3DES
- 兩個不同的變形:3-key 3DES 和 2-key 3DES
- 第一次用 \(k_1\) 加密,第二次用\(k_2\) 解密,第三次用 \(k_3\) 加密
- 3-key 3DES: \(k_1,k_2,k_3\) 都不同,有效 key size 112-bit
- 2-key 3DES: \(k_1=k_3\) ,有效 key size 80-bit
AES
- 目標:比 3DES 安全及有效率
- key size: 128, 192, 256 bit
- block size: 128 bit
- operations:
- Byte substitution (BS): 用S-BOX取代byte
- Key addition (KA): 用128-bit round key做XOR運算
- Shift row (SR): 平移row,每個row平移的數量不一
- Mix column (MC): 乘法在\(GF(2^8)\),module \(x^8+x^4+x^3+x+1\)
ECB mode (Electronic Code Book)
- 有了 block cipher 機制後,若明文長度多於 block 長度,該如何處理?
- EBC 是將明文切成區塊大小,最每個block獨立加密
- Encryption: \(C_i=E_k(P_i)\)
- Decryption: \(P_i=D_k(C_i)\)
- 缺點: 相同明文會有相同的密文
- 密文的重組和刪除無法被偵測到
- 需要 padding
CBC mode (Cipher Block Chaining)
- 將明文切成區塊大小,根據前面計算的密文再 XOR 下個區塊的明文
- 用一新的 IV,所以即使明文相同,密文仍不同
- IV=\(C_0\)
- Encryption: \(C_i=E_k(P_i\oplus C_{i−1})\)
- Decryption: \(P_i=D_k(C_i)\oplus C_{i−1}\)
- 優點: 密文的刪除和重組可以被偵測
- 若傳輸 C2 有誤,只會影響 P2 和 P3,其他還是可以正常解密
- 需要padding
CFB mode (Cipher Feedback Mode)
- 根據密文生成key stream
- IV public, IV=\(C_0\)
- Encryption: \(C_i=E_k(C_{i−1})\oplus P_i\)
- Decryption: \(P_i=E_k(C_{i−1})\oplus C_i\)
OFB mode (Output Feedback Mode)
- key stream不受明文影響
- key stream可以被pre-compute,如果已知IV的話
- IV public
- Encryption: \(Ci=E^i_k(IV)\oplus P_i\)
\(E^i_k(IV)=IV\) 加密 \(i\) 次 - Decryption: \(Pi=E^i_k(IV)\oplus C_i\)
- 不需要 complete block 就可以加解密 \(\Rightarrow\) 適合平行
- 把 block cipher 轉成 stream cipher
CTR mode (Counter Mode)
- 沒有feedback,可以平行執行
- IV public
- Encryption: \(C_i=E_k(IV+i)\oplus P_i\)
- Decryption: \(P_i=E_k(IV+i)\oplus C_i\)
- 不需要 complete block
- 把 block cipher 轉成 stream cipher
Stream cipher
- 對每個 bit 做跟 key 的 XOR 運算
- 目標:用 pseudo-random number generator (PRNG)
\(E_k(P)=P\oplus PRNG(IV,k)\) - 優點:
- 計算快速
- 沒有 perfect secrecy,若運用恰當可以跟 block cipher 一樣安全
- PRNG 理論上是不可預測的 (不給定seed的話)
- 缺點:
- 沒有完整性 Integrity (XOR運算有結合率和交換率)
如果一個 key 用兩次會有危險 (因為 XOR 同個字串兩次會是0)
\((P_1\oplus PRNG(IV,K))\oplus (P_2\oplus PRNG(IV,K))=P_1\oplus P_2\)
若知道\(P_1\)有可能破解\(P_2\) - IV 通常和密文同時傳遞,只有接收人和傳送人有 key
- \(PRNG(IV,K)\)產生的 bit stream 被稱為 key stream
RC4
- 簡單、快速、被廣泛使用
- key scheduler phase:
K 為input,生成256 bit的陣列 - key Stream Generator phase:
產生key stream - 不夠random
- RC4不該被使用了
Cryptographically Secure PRNG
- secure \(\Rightarrow\) pass the next bit text
- 給定所有 \(k\) 個 output,預測下一個 output 的機率不能大於 \(1/2\)
- Buchmann: Einführung in die Kryptographie (7. Auflage), Springer Verlag, 2016
- Stallings: Cryptograhy and Network Security, Part 2 on Symmetric Encryption, 7th edition, Pearson Global Edition, 2017
Further Reading:
- Random Numbers: RFC 1750
完全不用解釋這邊要背各種 block cipher mode 有多困難,就先記得他們都是 Symmetric Encryption 吧!
留言
張貼留言