이상구교수의  강의 자료  (새로운 자료이니 검토의견 환영합니다.)

  행렬을 이용한 암호문 작성 및 해독

 행렬을 이용하는 흥미있는 문제를 만들 수 있습니다 . 암호문을 만들고 해독하는 기술이 그것인데 암호문은 선형대수를 많이 이용하고 있습니다.  여기서는 행렬   가 행렬 의 역행렬일 때, 행렬 를 이용하여 암호문을 만들고 를 이용하여 그것을 해독하는 방법에 대하여 설명할 것입니다.  암호이론의 흥미로운 세계로 빠져봅시다.

 

 

한국어암호화

 

 

 

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)         anii28.gif

  bar01a.GIF

         ⓒ 2002 Prof. S.G.Lee, Dept. of Math of SungKyunKwan University