
이상구교수의 강의 자료 (새로운 자료이니 검토의견 환영합니다.)
행렬을 이용한 암호문 작성 및 해독 |
행렬을
이용하는 흥미있는 문제를 만들 수 있습니다 . 암호문을
만들고 해독하는 기술이 그것인데 암호문은 선형대수를
많이 이용하고 있습니다. 여기서는 행렬
가 행렬
의 역행렬일 때, 행렬
를 이용하여 암호문을 만들고
를 이용하여 그것을 해독하는 방법에 대하여 설명할
것입니다. 암호이론의 흥미로운 세계로
빠져봅시다.
한국어를 암호화
|
ㄱ |
ㄴ |
ㄷ |
ㄹ |
ㅁ |
ㅂ |
ㅅ |
ㅇ |
ㅈ |
ㅊ |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ㅋ |
ㅌ |
ㅍ |
ㅎ |
ㅏ |
ㅑ |
ㅓ |
ㅕ |
ㅗ |
ㅛ |
|
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
ㅜ |
ㅠ |
ㅡ |
ㅣ |
ㅐ |
ㅒ |
ㅔ |
ㅖ |
* |
! |
|
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
(1) 내가 전달하고자 하는 문장은 "난 최고다!"이다. 이 문장을 위의 표를 이용하여 변환하면 다음과 같다.
|
ㄴ |
ㅏ |
ㄴ |
* |
ㅊ |
|
|
2 |
15 |
2 |
25 |
10 |
|
|
ㅗ |
ㅣ |
ㄱ |
ㅗ |
ㄷ |
|
|
19 |
24 |
1 |
19 |
3 |
|
|
ㅏ |
! |
! |
! |
* |
|
|
15 |
26 |
26 |
26 |
25 |
표 2
위의 표를 3행의 행렬식으로 변환을 한다면,

위와 같이 된다.
암호화 시킬 3 X 3 행렬을 다음과 같이 임의로 정하면.

위 두식 A,B를 이용하여 암호화 시키는 즉, 변조행렬 C행렬을 만들면,

와 같이 된다.
여기서 A : 암호화하기 위하여 곱해주는 행렬
B : 원래의 전송하는 내용
C : 변조 행렬
위 내용을 받는 사람이 암호를 풀기 위하여 A의 역행렬이 필요하다.
다시 말하면,
이런 식이 성립한다는 것이다. A의 역행렬은

이므로


이 된다. 위 방법대로 해독하요 이 문장을 수신하는 사람은
"난 최고다!!!"
라는 말을 찾을 수 있다.
(2) 전달하고자 하는 문장을 "나는 당신을 사랑합니다!!"라고 하자.
이 문장을 위의 표를 이용하여 변환하면 다음과 같다.
|
ㄴ |
ㅏ |
ㄴ |
ㅡ |
ㄴ |
* |
ㄷ |
ㅏ |
ㅇ |
ㅅ |
ㅣ |
ㄴ |
ㅇ |
ㅡ |
|
2 |
15 |
2 |
23 |
2 |
25 |
3 |
15 |
8 |
7 |
24 |
2 |
8 |
23 |
|
ㄹ |
* |
ㅅ |
ㅏ |
ㄹ |
ㅏ |
ㅇ |
ㅎ |
ㅏ |
ㅂ |
ㄴ |
ㅣ |
ㄷ |
ㅏ |
|
4 |
25 |
7 |
15 |
4 |
15 |
8 |
14 |
15 |
6 |
2 |
24 |
3 |
15 |
이를 3행 짜리 행렬로 변환하면 다음과 같이 된다.

암호화 시키는 3 X 3 행렬을 다음과 같이 정한다.

암호화시키기 위해서 AB를 구한다.



A: 암호화하기 위하여 곱해주는 행렬
B: 원래의 전송하는 내용
C: 변조 행렬
그리고 위의 C 행렬을 받는 측에게 전송하면 된다.
받는 측에서는 암호를 풀기 위해 A의 역행렬이 필요하다.
이기
때문이다.
이므로,
가
된다.
따라서 수신자 측에서 암호를 해독하여 위의 표를 이용, "나는 당신을 사랑합니다!!" 라는 문장을 얻게 된다.
(3) "엽기적인 그녀"를 암호화......
|
ㅇ |
ㅕ |
ㅂ |
ㄱ |
ㅣ |
ㅈ |
ㅓ |
ㄱ |
ㅇ |
ㅣ |
ㄴ |
* |
ㄱ |
ㅡ |
ㄴ |
ㅕ |
* |
* |
|
8 |
18 |
6 |
1 |
24 |
9 |
17 |
1 |
8 |
24 |
2 |
29 |
1 |
23 |
2 |
18 |
29 |
29 |



이므로 숫자화 된 암호문은 다음과 같다.
41, -3, 20, 31, -1, 38, 33, 37, 20, 26, 50, 47, 11, 29, 6, 59, 36, 78
영문을 암호화
사랑하는 연인에게 고백을 하고 싶은 사람이 있었다. 그러나 그 연인의 집안은 대대로 원수의 집안... 안타깝게도 그 집에 오는 편지는 모두 철저하게 검열을 당하고 있는 실정... 어떻게 그는 해야 할까?...
고민을 하던 그는 그가 가지고 있던 뛰어난 수학적 소양을 사용하기로 한다.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
|
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
U |
V |
W |
X |
Y |
Z |
* |
. |
! |
? |
|
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
위 표를 가지고 다음과 같은 문장을 암호로 보내기로 하였다.
I LOVE YOU!
이것을 숫자화하면 다음과 같은 행렬을 얻을 수 있습니다.
I * L O V E * Y O U !
9 27 12 15 22 5 27 25 15 21 29
☞

위 행렬에 다음 행렬을 곱하여 그 내용을 알 수 없게 변조시킵니다. 즉, 암호화시키는 것입니다.
☞

☞
A : 암호화하기 위하여 곱해주는 행렬
B : 원래의 전송하는 내용
C : 변조 행렬
그런 다음에 C를 자신이 사랑하는 이에게 보내면 됩니다.
하지만, 받는 쪽은 원래의 내용이 무엇인지 알 수 없기 때문에, 다시 원래의 내용을 볼수 있게 복구하는 과정이 필요합니다.
입니다. 따라서 먼저 자신이 사랑하는 이가 원래의 내용을 확인할 수 있는
를
알고 있어야 합니다.
그러면

이므로
따라서, 구하는 행렬은
☞

이렇게 됨으로써, 원래 내용인 I LOVE YOU!를 출력할 수 있습니다.
(2) I CAN DO IT MYSELF!라는 문장을 전달하고자 한다.
먼저 두 행렬 A를 다음과 같이 정의하자.
다음 알파벳과 기호를 다음표와 같이 숫자화 시키자.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
! |
* |
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
(* : 띄어쓰기)
이젠 나타내고자 하는 문장을 위의 표를 이용하여 변환시켜보자.
I * CAN * DO * IT * MYSELF! *
|
I |
* |
C |
A |
N |
* |
D |
O |
* |
I |
|
9 |
28 |
3 |
1 |
14 |
28 |
4 |
15 |
28 |
9 |
|
T |
* |
M |
Y |
S |
E |
L |
F |
! |
* |
|
20 |
28 |
13 |
25 |
19 |
5 |
12 |
6 |
27 |
28 |
이것을
2
by 2 행렬로 전환시켜보면,

그다음 암호화를 시키기 위해서 AB를 구하고 그 값을 C라 칭한다.

A : 암호화 하기 위하여 곱해주는 행렬
B : 원래의 전송하는 내용
C : 변조행렬
그리고
위의 C 행렬을 받는 측에게 전송하면 된다. 받는 측에서는 암호를 풀기 위해
A의 역행렬이
필요하다.
이기
때문이다. (
결합법칙
성립)
이것을 복구하기 위해!!
이고,

가 된다.
따라서 이것을 다시 숫자화 시켜 해독하여 보면,
|
9 |
28 |
3 |
1 |
14 |
28 |
4 |
15 |
28 |
9 |
20 |
28 |
13 |
25 |
19 |
5 |
12 |
6 |
27 |
28 |
|
I |
* |
C |
A |
N |
* |
D |
O |
* |
I |
T |
* |
M |
Y |
S |
E |
L |
F |
! |
* |
즉 전하고자 하는 문장이 I CAN DO IT MYSELF! 라는 것을 알게된다.
(3)
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
* |
|
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
|
전달하고자 하는 문장은 FINAL FANTASY이다. 이 문장은 표로 나타내어 변환하면 다음과 같이 된다.
|
F |
I |
N |
A |
L |
* |
* |
F |
A |
N |
T |
A |
S |
Y |
* |
* |
|
6 |
9 |
14 |
1 |
12 |
27 |
27 |
6 |
1 |
14 |
20 |
1 |
19 |
25 |
27 |
27 |
이것을 4x4행렬로 변환하면 이렇게 된다.

암호화 시키는 4X4 행렬 A를 정의한다.

암호화 시키기 위해서 A*B를 구하면



따라서 C는 암호화된 행렬이다.
암호화된
행렬 C를 해독하기 위해서는 A의 역행렬
가
필요하다.
이므로
따라서
AB
= B


가 된다.
따라서 위의 해독표를 이용하여
" FINAL FANTASY" 라는 문장을 얻게 된다.
(4)전달하고자 하는 문장은 " IT IS A CUTY " 이다.
, 
문제에 주어지는 기호표에 의하면,
|
I |
T |
. |
I |
S |
. |
A |
. |
C |
U |
T |
Y |
|
9 |
20 |
27 |
9 |
19 |
27 |
1 |
27 |
3 |
21 |
20 |
25 |
행렬은,

이것을 암호화,

따라서 N 으로부터 숫자화된 암호문
28 87 84 48 77 106 19 67 57 39 58 79을
상대방에게 보낸다.
상대방은 BN을 통해서 원래 행렬을 알수 있다.

따라서, 상대방도 IT IS A CUTY 라는 문장을
얻을수 있다.
혼 합
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
* |
! |
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
위의 표는 암호문을 해독하는 해결 열쇠입니다.
암호문을 해독하기 전에 알아두셔야 할 사항을 몇 가지 적겠습니다.
암호문은 총 3회에 걸쳐서 나오며 첫 번째 암호문과 두 번째 암호문은 한글의 자모를 이용해서 해독해 주시고 세 번째 암호문은 알파벳을 이용해서 해독해 주세요.
첫째 : 두개의 암호문을 연결해서 해석을 완료하시오

둘째 : 선형대수학!

셋째 : Do your best !

행렬 A를 통한 암호화








L, M, N 상대방한테 보내기
20,22,9,48,12,31,43,44,10,19,25,28,34,12,45,10,27,63,9,66,39,40,12,21,51,10,32,70,28,49,65,52,58,33,37,62,-2, 136,18,91,128,114,26,43,50,77,85,7,121,5,74
21,32,3,44,47,30,21,51,44,71,55,93,-16,125,120
23,35,54,53,42,61,56,81,32,37,38,87,135,157,121
암호문 해독
여기서
이다.
L
=
AB
= B
M
=
AC
= C
N
=
AD
= D
따라서 구하는 행렬은





이다.
암호문 참고 사항을 토대로 차례대로 해석하면
첫째 : 두 개의 암호문을 연결해서 해석을 완료하시오
둘째 : 선형대수학!
셋째 : Do your best !
=> 선형대수학! Do your best !(선형대 수학! 최선을 다해라!)
과 제
(1)
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
* |
|
|
|
|
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
|
|
|
![]()
문장을 만들면
I AM GOING TO THE STORE
이것을 숫자화 하면
I *AM *GOING *TO *THE *STORE*
9 27 1 13 27 7 15 9 14 7 27 20 15 27 20 8 5 27 19 20 15 18 5 27
행렬 M을 만들자
M=
(9
27 1 13 27 7 15 9 14 7 27 20 15
27 20 8 5 27 19 20 15 18 5 27) (책에 나오는 것과 같은 행렬을 만들수 없어서
이
M을 행렬로 정의하겠습니다)
N=AM=( 33 81 22 34 59 41 49 38 43 32 59 67 24 54 21 21 32 34 34 29 29 25 32 47)
따라서 암호문은 33, 81, 22 ,34, 59, 41, 49 ,38, 43, 32, 59, 67, 24, 54, 21, 21, 32, 34, 34 ,29, 29, 25, 32, 47
이제
이 암호문을 행렬 B를 이용하여 해독해보자. B=
BN=B(AM)=
(AM)=(
A)M=M
따라서 암호문을 두행을 가지는 행렬을 만들고, 이것의 왼쪽에 B를 곱하면 해독할수 있다.
BN=(9 27 1 13 27 7 15 9 14 7 27 20 15 27 20 8 5 27 19 20 15 18 5 27)
9 27 1 13 27 7 15 9 14 7 27 20 15 27 20 8 5 27 19 20 15 18 5 27
I * A M * G O I N G * T O * T H E * S T O R E *
(2) 내가 전달하고자 하는 문장은 "Life is short, art is long"이다. 이 문장을 위의 표를 이용하여 변환하면 다음과 같다.
|
L |
i |
f |
e |
* |
i |
s |
* |
s |
h |
o |
r |
t |
, |
|
12 |
9 |
6 |
5 |
27 |
9 |
19 |
27 |
19 |
8 |
15 |
18 |
20 |
28 |
|
* |
a |
r |
t |
* |
i |
s |
* |
l |
o |
n |
g |
* |
|
|
27 |
1 |
18 |
20 |
27 |
9 |
19 |
27 |
12 |
15 |
14 |
7 |
27 |
|
위의 표를 3행의 행렬식으로 변환을 한다면,
위와 같이 된다. 내 마름대로 암호화 시킬 3 X 3 행렬을 다음과 같이 정하였다.
위 두식 A,B를 이용하여 암호화 시키는 즉, 변조행렬 C행렬을 만들면,


와 같이 된다. 여기서 A : 암호화하기 위하여 곱해주는 행렬
B : 원래의 전송하는 내용
C : 변조 행렬 이다.
위 내용을 받는 사람이 암호를 풀기 위하여 A의 역행렬이 필요하다. 다시 말하면,
이런
식이 성립한다는 것이다. A의
역행렬은
이므로........
(A^T C =)

이
된다.
위 방법대로 해독하요 이 문장을 수신하는 사람은
"Life is short, art is long"
라는 말을 찾을 수 있다.
(3) 문장의 행렬을 통한 암호문 작성
(*) 영문을 암호화하는 경우
두
행렬 A, B (=
)
,
이라 하고, 알파벳과
기호를 다음 표와 같이 숫자화한다.
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
* |
|
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
"STAR WARS"를 암호화.........
|
S |
T |
A |
R |
* |
W |
A |
R |
S |
* |
|
19 |
20 |
1 |
18 |
27 |
23 |
1 |
18 |
19 |
27 |


N으로부터 숫자화된 암호는
103, 62, 39, 92, 135, 61, 41, 20, 55, 81
<해독>
이므로, "STAR
WARS" 이다
(3) I know who he is 교과서의 표에 맞추면 다음과 같은 행렬을 얻는다.

(
)라고
한다면,



↓
9, 27, 11, 14, 15, 23, 27, 23, 8, 15, 27, 8, 5, 27, 9, 19
I * K N O W * W H O * H E * I S
|
ㄱ |
ㄴ |
ㄷ |
ㄹ |
ㅁ |
ㅂ |
ㅅ |
ㅇ |
ㅈ |
ㅊ |
ㅋ |
ㅌ |
ㅍ |
ㅎ |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
ㅏ |
ㅑ |
ㅓ |
ㅕ |
ㅗ |
ㅛ |
ㅜ |
ㅠ |
ㅡ |
ㅣ |
* |
. |
! |
? |
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
(4)
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
|
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
* |
|
|
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
|
전달하고자 하는 문장을 "God bless you"이라 한다. 이 문장을 위의 표를 이용하여 변환하면 다음과 같다.
|
G |
o |
d |
* |
b |
l |
e |
s |
s |
* |
y |
o |
u |
* |
|
7 |
15 |
4 |
27 |
2 |
12 |
5 |
19 |
19 |
27 |
25 |
15 |
21 |
27 |
이를 2행 짜리 행렬로 변환하면은 다음과 같이 된다.

암호화시키는 2 X 2 행렬을 다음과 같이 정한다.

그리고 암호화시키기 위해서 AB를 구한다.


A : 암호화하기 위하여 곱해주는 행렬
B : 원래의 전송하는 내용
C : 변조 행렬
그리고
위의 C 행렬을 받는 측에게 전송하면 된다. 받는 측에서는 암호를 풀기 위해 A의 역행렬이
필요하다.
이기
때문이다.
이므로,

가 된다.
따라서 수신자 측에서 암호를 해독하여 위의 표를 이용,
"God bless you"
라는 문장을 얻게 된다.
이상구교수의 읽고 보는 수학 자료실 (http://matrix.skku.ac.kr/sglee) ![]()
![]()
ⓒ 2002 Prof. S.G.Lee, Dept. of Math of SungKyunKwan University