PromleeBlog
sitemap
aboutMe

posting thumbnail
일반적인 암호화 기법
Classical Encryption

📅

🚀

표기법 정리 (Notation) 🔗

Zm=0,1,...,m1gmodp:gp로나눈나머지10mod3=1729mod31=16(729=2331+16)7mod26=19(7=26(1)+19)평문공간=암호문공간=알파벳문자들=Z26Z_m = {0, 1, ..., m - 1}\\ g mod p: g를 p로 나눈 나머지\\ 10 mod 3 = 1\\ 729 mod 31 = 16 (729 = 23 * 31 + 16)\\ -7 mod 26 = 19 (-7 = 26 * (-1) + 19)\\ 평문 공간 = 암호문 공간 = 알파벳 문자들 = \mathbb{Z}_{26}

🚀

시프트 암호 (Shift Cipher) 🔗

평문의 각 문자를 고정된 수만큼 이동시키는 암호화 방식
0<=k<=25Enc(K,x)=(x+K)mod  26      (cf.K=3:시저암호)Dec(K,y)=(yK)mod  260 <= k <= 25\\ Enc(K, x) = (x + K) mod \;26 \;\;\;(cf. K = 3: 시저 암호)\\ Dec(K, y) = (y - K) mod \;26\\
예시: K = 9
암호화
shift (18 7 8 5 19) → +9 mod 26 → (1 16 17 14 2) BQROC
복호화
BQROC (1 16 17 14 2) → -9 mod 26 → (18 7 8 5 19) shift
공격
무차별 대입 공격: 비밀키에 대한 후보가 26개뿐이다.
알려진 평문 공격: 예시의 (shift, BQROC)의 경우, K = B - s = (1 - 18) mod 26 = 9

🚀

아핀 암호 (Affine Cipher) 🔗

선형 대수학과 모듈러 연산을 이용한 암호화 방식
ForK=(α,β)whereα,βZ26andgcd(α,26)=1Enc(K,x)=(αx+β)mod  26Dec(K,y)=α1(yβ)mod  26For K = (\alpha ,\beta ) where \alpha, \beta \in \mathbb{Z}_{26} and gcd(\alpha, 26) = 1\\ Enc(K, x) = (\alpha x + \beta) mod \;26\\ Dec(K, y) = \alpha^{-1} (y - \beta) mod \;26\\

암호화 🔗

image

복호화 🔗

image
공격 방식

🚀

치환 암호 (Substitution Cipher) 🔗

평문의 각 문자를 다른 문자로 대체하는 암호화 방식
Enc(K,x)=π(x)Dec(K,y)=π1(y)Enc(K, x) = \pi(x)\\ Dec(K, y) = \pi^{-1}(y)\\
예시
π={A(0)2,B(1)7,C(2)9,...,Z(25)19}Enc(π,C)=π(C)=9=JDec(π,J)=π1(J)=C\pi = \{A(0) \rightarrow 2, B(1) \rightarrow 7, C(2) \rightarrow 9, ..., Z(25) \rightarrow 19\}\\ Enc(\pi, C) = \pi(C) = 9 = J Dec(\pi, J) = \pi^{-1}(J) = C
공격 방식

🚀

비제네 암호 (Vigenère Cipher) 🔗

K=K1K2...KnwhereKmZ26Enc(K,x1x2...xm)=(x1+K1)mod  26,(x2+K2)mod  26,...,(xn+Km)mod  26Dec(K,y1y2...ym)=(y1K1)mod  26,(y2K2)mod  26,...,(ynKm)mod  26K = K_1 K_2 ... K_n where K_m \in \mathbb{Z}_{26}\\ Enc(K, x_1 x_2 ... x_m) = (x_1 + K_1) mod \;26, (x_2 + K_2) mod \;26, ..., (x_n + K_m) mod \;26\\ Dec(K, y_1 y_2 ... y_m) = (y_1 - K_1) mod \;26, (y_2 - K_2) mod \;26, ..., (y_n - K_m) mod \;26\\
관련 공격

🚀

순열 암호 (Permutation Cipher) 🔗

K=π  1,...,m의순열Enc(K,x1x2...xm)=(xπ(1)xπ(2)...xπ(m))Dec(K,Y1Y2...Ym)=(Yπ1(1)Yπ1(2)...Yπ1(m))키 K=\pi\;는 {1,...,m} 의 순열\\ Enc(K, x_1 x_2 ... x_m) =( x_{\pi(1)} x_{\pi(2)} ... x_{\pi(m)})\\ Dec(K, Y_1 Y_2 ... Y_m) =( Y_{\pi^{-1}(1)} Y_{\pi^{-1}(2)} ... Y_{\pi^{-1}(m)})\\
위의 암호화 알고리즘을 해석하면
(x1,...,xm)P=(Y1,...,Ym)(x_1, ...,x_m)P=(Y_1, ... ,Y_m)
PP가 역행렬 일 경우 이것은 Hill 암호화 방식이 된다.
관련 공격

🚀

선형 피드백 시프트 레지스터 (Linear Feedback Shift Register, LFSR) 🔗

이전 상태의 선형 함수인 입력 비트를 가진 시프트 레지스터
예시 1) xm+3=xm+1+xmx_{m+3}=x_{m+1}+x_m을 만족하는 시프트 레지스터(선형 관계)
예시 2) 초기 값 x1=0,x2=1,x3=0,x4=0x_1 = 0, x_2 = 1, x_3 = 0, x_4 = 0 그리고 x5=0x_5 = 0을 주고 xm+5=xm+xm+2mod2x_{m+5}=x_{m}+x_{m+2} mod 2의 선형 관계를 사용하여 생성된 시퀀스는 01000101001101111000110100010100110111100011이다.

🚀

LFSR 암호 (LFSR Cipher) 🔗

선형함수f(z1,z2,...,zm)=i=1lcizi에대해,상수ci들과  K=(k1,...,kl)(Z2)l  속함Enc(K,x1,x2,...,xm)=(x1,x2,...,xm)+(k1,k2,...,kl)Dec(K,y1,y2,...,ym)=(y1,y2,...,ym)+(k1,k2,...,kl)kj=f(kjl,kjl+1,...,kj1)forl+1<=j<=m선형 함수 f(z_1, z_2, ..., z_m) = \sum^l_{i=1}c_iz_i에 대해, 상수 c_i들과\;\\ 키 K=(k_1, ... , k_l)가 (\mathbb{Z}_2)^l에\; 속함\\ Enc(K, x_1, x_2, ..., x_m) = (x_1, x_2, ..., x_m) + (k_1, k_2, ..., k_l)\\ Dec(K, y_1, y_2, ..., y_m) = (y_1, y_2, ..., y_m) + (k_1, k_2, ..., k_l)\\ k_j = f(k_{j-l}, k_{j-l+1}, ..., k_{j-1}) for l+1<=j<=m\\
공격 방식