[암호학] 5. 아핀 암호, 치환 암호, 비즈네르 암호
아핀 암호
영문자로 작성된 평문을 암호문으로 변환시킬 때 먼저 평문 속 대문자는 소문자로 고치고 구두점이나 문자와 문자 사이의 간격을 없앤다.
알파벳은 A부터 Z까지 총 26개가 있으므로 A부터 Z까지의 문자에 0부터 25까지의 정수를 대응시키면 영문자 전체의 집합은 Z26과 일대일로 대응한다.
문자 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
숫자 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
문자 |
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 |
위의 표로부터 평문 작성에 사용되는 문자의 종류에 따라 문자 전체의 집합은 그 집합의 개수가 n일 때, Zn={0,1,...,n−1}과 일대일로 대응한다.
카이사르(Caesar, 시저)는 평문의 문자 A, B, ..., X, Y, Z를 순서를 유지한 채 3 단계씩 옮겨(shift) 각각 D, E, ..., A, B, C로 바꾸어 놓는 방법으로 평문을 암호문으로 변환시켰다. 즉 다음의 표대로 각 문자를 순서에 따라 그 다음 세 번째 알파벳으로 암호화한다.
문자 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
암호문 |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
문자 |
N |
O |
P |
W |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
암호문 |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
평문VENI VIDI VICI(뜻: 왔노라, 보았노라, 이겼노라)를 암호화하면YHQLYLGLYLFL이고, 문자-숫자 표에 따라 각 문자를 Z26의 원소로 나타내면 평문과 암호문은 각각 다음과 같은 유한수열로 나타낼 수 있다.2141382183821828||||||||||||247161124116112411511이처럼 평문과 암호문을 각각 Z26의 원소로 이루어진 유한수열x1x2⋯xn,y1y2⋯yn으로 나타내면 Z26에서 각 i(1≤i≤n)에 대하여 등식 yi=xi+3이 성립하고, 이 등식은 다음의 합동식을 뜻한다.yi≡xi+3(mod26),(0≤xi,yi≤25)여기서 K=3은 열쇠이고, 다음의 두 함수EK:Z26→Z26EK(x)=x+3DK:Z26→Z26DK(x)=x−3는 각각 암호화 함수, 복호 함수이다. 위와 같이 정의된 암호화 함수 EK로 작성된 암호문을 카이사르 암호문(Caesar cipher)이라고 한다.
*참고: 영어 알파벳의 사용 빈도
알파벳 |
a |
b |
c |
d |
e |
f |
g |
h |
i |
빈도 |
082 |
015 |
028 |
043 |
127 |
022 |
020 |
061 |
070 |
알파벳 |
j |
k |
l |
m |
n |
o |
p |
q |
r |
빈도 |
002 |
008 |
040 |
024 |
067 |
075 |
019 |
001 |
060 |
알파벳 |
s |
t |
u |
v |
w |
x |
y |
z |
총합 |
빈도 |
063 |
091 |
028 |
010 |
023 |
001 |
020 |
001 |
1000 |
앞에서 다루었던 카이사르 암호를 다음과 같이 일반화할 수 있다.
일반적으로 가환환 Zn={0,1,⋯,n−1}에서 곱셈에 대해 역원을 갖는 원소 전체의 집합은 다음과 같다.Z∗n={a∈Zn|gcd(a,n)=1}두 원소 a∈Z∗n, b∈Zn으로 이루어진 순서쌍을 K라 하고 두 함수 EK,DK를 다음과 같이 정의하자.EK:Zn→ZnEK(x)=ax+bDK:Zn→ZnDK(x)=a−1(x−b)이때 임의의 x∈Zn에 대하여DK(EK(x))=DK(ax+b)=a−1((ax+b)−b)=x이므로 E−1K=EK이고, 이러한 함수 EK를 아핀 암호(affine cipher)라고 한다.
가환환 Z26={0,1,...,24,25}에서Z∗26={1,3,5,7,9,11,15,17,19,21,23,25}이므로 K=(7,10)일 때 가환환 Z26에서의 아핀암호는EK:Z26→Z26EK(x)=7x+10DK:Z26→Z26DK(x)=15x+6인데7−1=15,7−1(−10)=15(−10)=6이기 때문이다.7⋅11+10=87≡9(mod26)이므로 Z26에서 EK(11)=9이다.
평문 'VENI VIDI VICI'를 Z26상의 수열로 나타내면 다음과 같고2141382183821828이 아핀암호에 의해 다음과 같은 암호문으로 변환되며11223141145141142414여기에 대응하는 암호문은 BMXOBOFOBOYO이다.
앞서 다루었던 카이사르 암호는 아핀 암호문이고, 일반적으로 가환환 Zn위의 아핀 암호체계에서 열쇠 전체의 집합은K={(a,b)|a∈Z∗n,Zn}이므로 전체 키(열쇠)의 개수는 |Z∗n||Zn|=nϕ(n)이다.
영문자를 이용해 평문을 암호문으로 바꾸는 경우 n=26이므로 키 전체의 개수는 26ϕ(26)=26⋅12=312이다.
Z26에서의 아핀암호 EK(x)에 대해 EK(4)=11, EK(19)=20일 때,{4a+b≡11(mod26)19a+b≡20(mod26)이므로adet즉-15a\equiv-9\,(\text{mod}\,26),\,-15b\equiv1\,(\text{mod}\,26)이고11a\equiv17\,(\text{mod}\,26),\,11b\equiv1\,(\text{mod}\,26)이므로 이 두 합동식의 해는a\equiv11\,(\text{mod}\,26),\,b\equiv19\,(\text{mod}\,26)따라서 아핀암호는 E_{K}(x)=11x+19이다.
치환 암호
집합 X위의 일대일 대응 \sigma:X\,\rightarrow\,X를 집합 X위의 치환(permutation)이라 하고, \sigma의 역함수 \sigma^{-1}:X\,\rightarrow\,X를 \sigma의 역치환이라고 한다. 특히 유한집합 X_{n}=\{1,\,2,\,...,\,n\}위의 치환 \sigma에 대하여\sigma(1)=i_{1},\,\sigma(2)=i_{2},\,...,\,\sigma(n)=i_{n}일 때, 이 치환을 다음과 같이 나타낸다.\sigma=\begin{pmatrix}1&2&\cdots&n\\i_{1}&i_{2}&\cdots&i_{n}\end{pmatrix}여기서 첫째 줄에는 X_{n}의 원소를 임의로 배열할 수 있으나 둘째 줄에는 첫째 줄에 있는 원소 x의 바로 아래에 \sigma(x)를 적어야 한다. 이때 치환 \sigma의 역치환 \sigma^{-1}는 다음과 같다.\sigma^{-1}=\begin{pmatrix}i_{1}&i_{2}&\cdots&i_{n}\\1&2&\cdots&n\end{pmatrix}집합 \mathbb{Z}_{6}=\{0,\,1,\,2,\,3,\,4,\,5\}의 치환이\sigma=\begin{pmatrix}0&1&2&3&4&5\\3&1&5&0&2&4\end{pmatrix}일 때 그 역치환 \sigma^{-1}는 다음과 같다.\sigma^{-1}=\begin{pmatrix}3&1&5&0&2&4\\0&1&2&3&4&5\end{pmatrix}=\begin{pmatrix}0&1&2&3&4&5\\3&1&4&0&5&2\end{pmatrix}집합 \mathbb{Z}_{26}위의 치환 \sigma를 열쇠로 하여 K=\sigma라 할 때 두 함수\begin{align*}E_{K}:\mathbb{Z}_{26}\,\rightarrow\,\mathbb{Z}_{26}&\,E_{K}(x)=\sigma(x)\\D_{K}:\mathbb{Z}_{26}\,\rightarrow\,\mathbb{Z}_{26}&\,D_{K}(x)=\sigma^{-1}(x)\end{align*}는 일대일 대응이고 E_{K}^{-1}=D_{K}^{-1}이다. 이러한 암호를 대치 암호(substitution cipher)라고 한다. 이 암호체계에서 키(열쇠) 전체의 집합은 \mathbb{Z}_{n}위의 치환 전체의 집합이므로, 키의 총 개수는 n!이다.
양의 정수 n에 대하여 \mathbb{Z}_{26}^{n}=\{(x_{1},\,...,\,x_{n})\,|\,x_{1},\,...,\,x_{n}\in\mathbb{Z}_{26}\}라 하고 X_{n}=\{1,\,2,\,...,\,n\}위의 치환 \sigma를 선택하여 열쇠를 K=\sigma라 할 때\begin{align*}E_{K}:\mathbb{Z}_{26}^{n}\,\rightarrow\,\mathbb{Z}_{26}^{n}&\,E_{K}(x_{1},\,...,\,x_{n})=(x_{\sigma(1)},\,...,\,x_{\sigma(n)})\\D_{K}:\mathbb{Z}_{26}^{n}\,\rightarrow\,\mathbb{Z}_{26}^{n}&\,D_{K}(x_{1},\,...,\,x_{n})=(x_{\sigma^{-1}(1)},\,...,\,x_{\sigma^{-1}(n)})\end{align*}는 \mathbb{Z}_{26}^{n}위의 일대일 대응이고 E_{K}^{-1}=D_{K}이다. 이러한 암호 E_{K}를 치환 암호문(permutation cipher)이라고 한다.
이때 평문을 암호문으로 변환하려면 알파벳-숫자 표를 이용해 알파벳들을 \mathbb{Z}_{26}의 원소로 바꾸고 적당한 양의 정수 n을 선택해a_{1}\cdots a_{n}\vdots\cdots\vdots b_{1}\cdots b_{n}과 같이 처음부터 차례로 n개씩 묶어 몇 개의 블럭으로 나누고 이들 각 블럭에 E_{K}를 적용시켜 암호문을 만든다. 평문에 들어있는 문자의 개수가 n의 배수가 아니면 평문의 마지막에 적당한 문자를 첨가한다.
평문 'VENI VIDI VICI'를 집합 \mathbb{Z}_{26}의 원소를 값으로 갖는 유한수열로 나타내고 이것을 다음과 같이 처음부터 4개로 3개씩 묶는다.\begin{matrix}21&4&13&8&\vdots&21&8&3&8&\vdots&21&8&2&8\end{matrix}열쇠 K를 치환\sigma=\begin{pmatrix}1&2&3&4\\3&1&4&2\end{pmatrix}택하여 함수E_{K}:\mathbb{Z}_{26}^{4}\,\rightarrow\,\mathbb{Z}_{26}^{4}\,E_{K}(x_{1},\,x_{2},\,x_{3},\,x_{4})=(x_{3},\,x_{1},\,x_{4},\,x_{2})를 이용하면 위의 평문을 다음과 같이 암호화할 수 있다.\begin{matrix}13&21&8&4&\vdots&3&21&8&8&\vdots&2&21&8&8\end{matrix}암호화된 문자는 NVIEDVIICVII이다.
비즈네르 암호
양의 정수 n에 대하여 \mathbb{Z}_{n}의 n개의 원소 k_{1},\,k_{2},\,...,\,k_{n}로 이루어진 K=(k_{1},\,...,\,k_{n})를 열쇠로 택할 때, 두 함수\begin{align*}E_{K}:\mathbb{Z}_{26}^{n}\,\rightarrow\,\mathbb{Z}_{26}^{n}&\,E_{K}(x_{1},\,...,\,x_{n})=(x_{1}+k_{1},\,...,\,x_{r}+k_{n})\\D_{K}:\mathbb{Z}_{26}^{n}\,\rightarrow\,\mathbb{Z}_{26}^{n}&\,D_{K}(x_{1},\,...,\,x_{n})=(x_{1}-k_{1},\,...,\,x_{n}-k_{n})\end{align*}는 집합 \mathbb{Z}_{26}^{n}위의 일대일 대응이고 E_{K}^{-1}=D_{K}이다.
위와 같이 정의된 함수 E_{K}를 이용하여 작성된 암호문을 비즈네르 암호(Vigenere cipher)라고 한다.
이 암호체계에서 평문을 암호문으로 변화시키려면 평문을a_{1}\cdots a_{n}\vdots\cdots\vdots b_{1}\cdots b_{n}과 같이 처음부터 차례로 n개씩 묶어 몇 개의 블록으로 나눈 다음 이들 각 블록에 E_{K}를 적용해 암호문을 얻는다.
평문 'VENI VIDI VICI'를 다음과 같이 \mathbb{Z}_{26}의 원소로 나타낼 수 있고\begin{matrix}21&4&3&8&\vdots&21&8&3&8&\vdots&21&8&2&8\end{matrix}열쇠를 K=(2, 8, 15, 7)라 하고 암호화를E_{K}(x_{1},\,x_{2},\,x_{3},\,x_{4})=(x_{1}+2,\,x_{2}+8,\,x_{3}+15,\,x_{4}+7)라 하면 다음과 같이 암호화된다.\begin{matrix}23&12&2&15&\vdots&23&16&18&15&\vdots&23&16&17&15\end{matrix}참고자료:
암호학과 부호이론, 박승안, 경문사
수리암호학개론, 김명환, 경문사
'응용수학 > 암호학' 카테고리의 다른 글
[암호학] 7. 공개 열쇠 암호체계 (0) | 2020.10.15 |
---|---|
[암호학] 6. 힐 암호, 폴리그-헬만 암호 (0) | 2020.10.14 |
[암호학] 4. 암호체계 (0) | 2020.10.12 |
[암호학] 3. 기초 대수학 (0) | 2020.10.11 |
[암호학] 2. 기초 정수론(2) (0) | 2020.10.10 |