1-&8 i à l È ; î Ý p & .d ³ 3fbmj[bujpo pg hfofsbmj[fe ... · 암호시스템은...

31
敎育學碩士學位請求論文 MAPLE을 이용한 일반화된 다카기 공개키 암호시스템의 구현 Realization of generalized Takagi's public key cryptosystem by using the MAPLE language 2004年 2月 仁荷大學校 敎育大學院 數學敎育專攻 吳 暻 旼

Upload: others

Post on 19-Nov-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

敎育學碩士學位請求論文

MAPLE을 이용한

일반화된 다카기 공개키 암호시스템의 구현

Realization of generalized Takagi's public key

cryptosystem by using the MAPLE language

2004年 2月

仁荷大學校 敎育大學院

數學敎育專攻

吳 暻 旼

Page 2: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

敎育學碩士學位請求論文

MAPLE을 이용한

일반화된 다카기 공개키 암호시스템의 구현

Realization of generalized Takagi's public key

cryptosystem by using the MAPLE language

2004年 2月

仁荷大學校 敎育大學院

數學敎育專攻

吳 暻 旼

指導敎授 李 益 權

이 論文을 碩士學位 論文으로 提出함.

Page 3: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

本 論文을 吳 暻 旼의 碩士學位 論文으로 認准함

2004년 2月

主審 인

副審 인

副審 인

Page 4: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

목 차

국문초록․․․․․․․․․․․․․․․․․․․․․․․․․․ⅰ영문초록․․․․․․․․․․․․․․․․․․․․․․․․․․ⅱ

1제 장 서 론 ․․․․․․․․․․․․․․․․․․․․․․․11.1 용어의 소개 ․․․․․․․․․․․․․․․․․․․․․11.2 대칭키 암호시스템과 비대칭키 암호시스템 ․․․․․․․3

2제 장 공개키 암호시스템․․․․․․․․․․․․․․․․․․42.1 수학적 배경 ․․․․․․․․․․․․․․․․․․․․․52.2 소인수 분해의 어려움에 기반을 둔 공개키 암호시스템 ․․72.2.1 RSA 공개키 암호시스템 ․․․․․․․․․․․․․․72.2.2 CRT를 이용한 복호화 시간의 단축 ․․․․․․․․․92.2.3 일반화된 다카기 시스템 ․․․․․․․․․․․․10

3제 장 MAPLE를 이용한 구현과 복호화 시간 비교 ․․․․․․153.1 사용되는 함수 ․․․․․․․․․․․․․․․․․․․․153.2 다카기 시스템 ․․․․․․․․․․․․․․․․․․․․163.3 RSA 공개키 암호시스템 ․․․․․․․․․․․․․․․․213.4 CRT를 이용한 복호화 ․․․․․․․․․․․․․․․․․233.5 복호화의 시간 비교․․․․․․․․․․․․․․․․․․24

참고문헌

Page 5: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- v -

국문초록

공개키 암호시스템 중 가장 많이 사용되는 시스템이 RSA 암호시

스템인데 이것은 매우 큰 정수의 소인수 분해가 어렵다는 가정에서

설계된 것이다. 그런데 RSA시스템은 실제 운영에서 암호화하는데

걸리는 시간과 복호화하는데 걸리는 시간의 차이가 많이 나므로 복

호화하는데 걸리는 시간을 줄이기 위하여 시스템의 기본은 유지하

면서 변형을 가한 시스템들이 연구되었다. 이 중 복호화에 CRT방법

을 사용한 것, 또는 다카기가 연구한 다카기 시스템을 논하여 본

다. 또한 이 시스템들이 얼마만큼 효율성을 증대시켰는지 Maple로

비교하여 본다.

Page 6: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- vi -

ABSTRACT

The RSA system is the most widely used public key

cryptosystem. The security of RSA system is based on the

difficulty of factoring large integers.

In running RSA system, it takes much longer in decryption

than it does in encryption. To reduce the decryption time, many

variations of RSA decryption were suggested. Among them are

using CRT in decryption and Takagi's scheme. In this thesis,

we materialize Takagi's scheme in the MAPLE language. We

also compare the decryption times of the original RSA system,

Using CRT, and Takagi's scheme.

Page 7: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 7 -

1제 장 서론

두 차례의 세계대전을 거치면서 암호는 군사 및 외교분야의 전유

물로 인식되어왔다. 그러나 1960년대 이후 컴퓨터에 관련된 기술의

급격한 발달은 민간 상업분야에서도 컴퓨터와 통신시스템에의 의존

도를 가중시켰고 이 과정에서 보안의 필요성은 자연스럽게 대두되

었으며 암호의 연구는 점차 활발해졌다. 특히 1977년 미국 상무부

표준국의 공모에 IBM사가 응모한 암호시스템을 토대로 설계된 미국

의 표준암호체계인 DES(Data Encryption Standard)가 발표된 후 많

은 대학, 연구소에서 암호에 대한 높은 관심을 갖고 연구에 박차를

가하여 여러 가지 형태의 암호시스템이 개발되었다. 특히 1977년

MIT대학의 연구원 Rivest, Shamir, Adleman이 수학의 소인수분해

문제를 암호학에 도입하여 설계한 공개키 암호 RSA의 발표는 주목

할 만한 사건이었다. 이제 여러 암호시스템을 살펴보기 전에 그에

쓰이는 기본적 용어에 대하여 간단히 살펴보고자 한다.

1.1 용어의 소개

암호화되지 않은 원래의 정보(즉 정보를 갖고 있는, 혹은 묘사하

고 있는 데이터)즉 누구나 의미를 알 수 있는 문장을 평문

(plaintext)이라 한다. 주로 M이나 P로 표시하며 비트열, 문서

파일, 음성, 영상 등을 포함한다. 또한 평문을 합당하게 푸는 방법

을 모르는 사람에게는 알 수 없는 형태로 변환된 데이터를 암호문

(ciphertext)이라 하고 주로 C로 표시한다.

이렇게 평문을 암호문으로 변환시키는 과정을 암호화

(encryption)라 한다. 이 과정을 함수로 보아 E로 표시하기도 한

다. 즉, E(M)=C로 나타낸다.

Page 8: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 8 -

또한 암호문을 평문으로 변환시키는 과정을 복호화(decryption)

라 한다. 이 과정을 함수로 보아 D로 표시하기도 한다. 즉,

D(C)=M으로 나타낸다.

앞의 용어들 사이의 관계는 <그림 1.1>과 같다.

< 그림 1.1 >

<그림1.1>의 과정을 식으로 나타내면 다음과 같다.

D (E(M ))=D (C )=M

현대 암호 알고리즘은 키를 사용한다. 키를 K 라고 하면 위의

식은 다음<그림 1.2>와 같이 된다.

< 그림 1.2 >

K를 고려하는 암호화/복호화 과정을 다음 식으로 나타낼 수 있

다.

EK (M )=C , DK (C )=M

M

평문암호화 E

C

암호문복호화 D

M

평문

K K

평문암호화 복호화

암호문 평문

Page 9: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 9 -

1.2 대칭키 암호시스템과 비대칭키 암호시스템

암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로

대별해 볼 수 있다. 대칭키 암호시스템(symmetric key

cryptosystem), 관용 암호시스템(conventional cryptosystem), 비

밀키 암호시스템(secret key cryptosystem)으로 불리우는 암호시스

템에서는 암호키와 복호키가 동일하여, 키를 철저히 비밀로 유지하

여야 한다. 그런데 발전하는 통신망에 의하여 문제점이 발생하였

다. n명이 가입된 통신망에서 서로 비밀통신을 할 경우

n(n-1)2

개의 키를 안전하게 관리해야 한다. 예를 들어 6명이 서

로 통신을 한다면 관리해야 되는 키는 모두 15개가된다. 하지만 가

입자가 늘어 천명이 가입된 통신망에서는 499500개의 키가 존재한

다. 즉 사용자의 수 n에 대하여 비밀키의 수가 n 2의 수준으로

증가한다. 이것은 대규모 통신망에서는 키 관리 문제가 커다란 문

제가 된다는 것을 의미한다. 또한 이 많은 키를 어떻게 가입자에게

안전하게 분배하느냐도 문제가 된다. 대칭키 암호시스템에서는 통

신의 양쪽 당사자들이 키를 공유하기 전에는 암호 통신을 할 수 없

기 때문에 철저하게 보안이 유지된 상태에서 키를 공유하여야 하는

어려움이 발생하였다. 이런 문제를 해결하기 위하여 등장한 것이

공개키 암호시스템이라 불리는 비대칭 암호 시스템이다. 다음 장에

서는 공개키 암호시스템에 대하여 알아보고 공개키 암호시스템의

효율성을 증대시킬 수 있는 방법에 대하여 알아보겠다.

Page 10: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 10 -

2 제 장 공개키 암호시스템

공개키 암호시스템은 대칭키 암호시스템의 여러 문제를 해결하기

위하여 등장한 시스템이다. 이 장에서는 대칭암호시스템과 비대칭

암호시스템에 관하여 살펴보고 공개키 암호시스템이라 불리우는 비

대칭 암호시스템 중 RSA 시스템과 이의 변형에 관하여 알아보도록

하겠다.

대칭 암호시스템(symmetric, conventional,

single-key cryptosystem, 단일키, 비밀키 암호시스템)

암호시스템을 보다 엄밀하게 기술하고자 할 때, 보통 키는 암호

키(encryption-key, KE)와 복호키(decryption-key, KD)로 구별하여

쓴다. 그리고 암호키 KE와 대응되는 복호키 KD의 쌍

K=(KE,KD)를 키(key)라 부른다. 이 때, 대칭키 암호시스템이란

KE=KD 로 두 개의 키가 같거나 하나의 키를 알았을 때 다른 키

를 쉽게 알 수 있는 경우이다.이런 키를 운영할 때는 수신자와 송

신자가 사전에 키를 공유하고 있어야 한다.

비대칭 암호시스템(asymmetric, public-key crytosystem,

이중키, 공개키 암호시스템)

암호화 키와 복호화 키가 다른 암호시스템으로 암호화에 사용되

며 공개되는 공개키(public-key, PK=KE)와 비밀로 공개되는 복

호키인 비밀키(private-key, SK=KD)를 갖고 있다.

누구든지 공개키로 평문을 암호화할 수 있으나 그 암호문에 대응

되는 비밀키를 아는 사람만이 다시 평문으로 환원할 수 있다. 즉

공개된 공개키로부터 비밀키를 얻어내는 것은 계산적으로 불가능하

다. 이를 식으로 표현하면 다음과 같다.

EPK (M )=C , DSK (C )=M

Page 11: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 11 -

2.1 수학적 배경

계산적으로 불가능한 수학적 난제에 기반하여 공개키 시스템의

성질들을 얻어낸다. 따라서 필연적으로 많은 수학적 연산을 할 수

밖에 없다. 이 때 모든 공개키 시스템에서 공통으로 사용되는 정리

들이 있는데 이러한 정리들을 나열하여 보겠다.

유클리드 알고리즘

r 0와 r 1를 r 0〉r 1인 자연수라 할 때 다음과 같이 연속적으로

나눗셈을 실행하여

r 0=q 1 r 1+r 2 ( 0〈 r 2〈r 1 ) r 1=q 2 r 2+r 3 ( 0〈 r 3〈r 2 ) r 2=q 3 r 3+r 4 ( 0〈 r 4〈r 3 )

․ ․ ․

rm-2=qm-1 rm-1+rm ( 0〈 rm〈rm-1 ) rm-1=qm rm

을 얻는다. 이 때 r 0와 r 1의 최대공약수 d는 rm이 된다.

여기서 두 개의 수열 { x i } 와 { y i } 를

{ y j=yj-2+qj-1yj-1xi=xi-2+qi-1xi-1 ,

( x 0=1, x 1=0, y 0=0, y 1=1, i≥2 , j≥2)

와 같은 순환식으로 정의하면

r i=(-1)ix ir 0+(-1)

i+1y ir i ( i 〉1)

이고 특별히

d=r m=r i=(-1)mxmr 0+(-1)

m+1ymr 1

이다.

Page 12: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 12 -

중국인의 나머지 정리(Chinese remainder theorem)

n 1,…,nr 이 쌍마다 서로 소인 양의 정수이면

︳︳︳︳︳︳

︳︳︳︳︳︳

x≡a 1 ( modn 1 ) x≡a 2 ( modn 2 ) ․ ․ ․ x≡ar ( modnr )

은 M= n 1…nr을 법으로 유일한 해를 갖는다. 예를 들어 r=2

인 경우를 살펴보면, { x≡c 1 ( modp )x≡c 2 ( modq )이고 gcd(p,q )=1 이라 하

면 x는 법 pq에 관하여 유일한 해를 갖고 그 해는 n= pq에 관

하여 pN 1≡1 (modq), qN 2≡1 (modp) 인 N 1, N 2 를 구하여 다음

과 같이 구한다.

x ≡ c 1qN 2+c 2pN 1 ( modn)

Euler의 φ 함수

양의 정수 1,2,…, n 중 n과 서로 소인 것의 개수를 φ(n ) 으

로 표시하고 Euler의 φ 함수라 한다.

이 때, φ 함수를 구하는 방법은 다음과 같다.

φ(p rq s )=p r-1(p-1)․q s-1 (q-1)

Fermat의 소정리

p가 소수이고 gcd(a,p)=1이면 ap-1≡1 ( modp )이다.

Page 13: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 13 -

Euler의 정리

n이 양의 정수이고 a는 gcd(a,n)=1 인 정수이면

aφ(n)≡1 ( modn )

이다.

2.2 소인수 분해의 어려움에 기반을 둔 공개키 암호 시스템

2.2.1 RSA 공개키 암호시스템

RSA 공개키 암호시스템은 1978년 R.L. Rivest, A. Shamir, L.

Adleman 의 3인이 발표한 논문인 “A Method for Obtaining Digital

Signatures and Public Key Cryptosystems"에 제안된 암호시스템[12]

을 말하며, 발표자의 머리글자를 따서 RSA라 명명되었다. 이 시스

템은 지난 1977년 발표 후에 지금까지 가장 널리 쓰이는 공개키 암

호시스템이다. RSA 공개키 암호시스템은 매우 큰 정수의 소인수분

해가 어렵다는 가정에서 설계된 것이다. 이러한 RSA 공개키 암호시

스템을 키생성, 암호화, 복호화로 구별하여 서술하겠다.

키생성

① 단계 1

두 개의 큰 소수 p와 q를 선정한다.

② 단계 2

n= pq인 n을 공개하고 φ (n ) 과 서로소인 임의의 정수 e

를 선택하여 공개키로 한다.

③ 단계 3

e․d≡1 (modφ(n)) 이 되는 d를 계산하여 비밀키로 한다.

즉, d는 비밀키로, n과 e는 공개키로 한다.

Page 14: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 14 -

암호화

C는 법 n으로 e번 거듭제곱해서 계산한다.

C≡Me ( modn )

복호화

암호문 C를 비밀키 d를 사용하여 법 n으로 d번 거듭제곱하

여 계산한다.

M '=Cd ( modn)

다시 평문이 나오는 식이 옳은지 확인해보면,

M '≡Cd≡(Me) d=Mt․φ(n)+ 1=M φ(n)t․M≡M ( modn)

이다. 여기서 t는 e․d≡1 (modφ(n) ) 에서 유도되는

ed= tφ(n)+1

을 만족하는 정수이다.

RSA 시스템에서 p,q의 조건

법 n의 크기는 현재 1024bit를 많이 쓴다. 이와 더불어 보다 안

전한 RSA 공개키 암호시스템을 위하여 p와 q를 선택하는 조건이

부가적으로 필요하다. 매개변수들 p, q, e, d는 다음과 같은 조건

을 만족시켜야 한다.

(1) p과 q는 거의 같은 크기이다.

(2) p-1과 q-1은 큰 소인수를 갖는다.

(3) p-1과 q-1의 최대공약수는 작은 수이다.

(4) d는 n과 거의 같은 크기이다.

Page 15: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 15 -

n과 e로부터 비밀키 d를 구할 수 있다면 RSA 시스템의 안전

성은 무너지게 된다. 그런데 현재까지는 식 ed≡1 (mod φ(n) )

을 이용하는 것이 알려진 유일한 방법이다. 따라서 d를 찾기 위하

여는 φ (n ) 을 계산할 수 있어야 하는데, 이를 위해서는 n의 소

인수분해가 필요하다. p와 q가 512bit의 소수이고 n이 1024bit

의 합성수라면 현재의 알고리즘과 전자 기술로 n을 소인수 분해

하는 것은 거의 불가능하다고 알려지고 있다.

2.2.2 CRT를 이용한 복호화 시간의 단축

일반적으로 RSA 시스템은 암호화하는데는 걸리는 시간을 줄이기

위하여 e를 보통 216+1 이나 3등 작은 소수를 잡는 것이 보통

이다. 그런데 (4)번 조건과 같이 d는 n 과 거의 같은 크기의 숫

자이다. 따라서 암호화하는데 걸리는 시간은 짧으나 상대적으로 복

호화 하는데는 많은 시간이 걸린다. 이런 상황에서 복호화 시간을

줄이는 것이 많은 학자들 사이에 논제가 되었고 이때 나온 방법이

복호화에서 중국인의 나머지 정리(CRT)를 이용하는 방법이다. CRT

를 이용하는 방법에서는 암호화 단계는 RSA 공개키 시스템과 같으

나 복호화 단계에서는 CRT를 사용함으로써 복호화 시간을 대략 14

로 단축시킨다.

CRT를 이용한 RSA 공개키 시스템에서는 p와 q 그리고 d는 비

밀키로 하고 n과 e는 공개키로 한다.

복호화

암호문 C 를 비밀키 d를 사용하여 법 p와 법 q에 대하여

C를 각각 d 제곱한다. 즉, {A≡Cd ( modp )

B≡Cd ( modq ) 이다. 이에 CRT에

Page 16: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 16 -

의하여 {M≡A ( modp )M≡B ( modq )를 만족하는 유일한 M이 암호문 C에 대

응하는 평문이다.

이 복호화 과정이 맞는지 살펴보면

Cd≡Med=Mkφ(n)+ 1 ≡ (M φ( p) ) kφ( q)․M≡M ( modp )

Cd≡Med=Mkφ( n)+ 1 ≡(M φ( q)) kφ( p)․M≡M ( modq )

이다. 따라서 중국인의 나머지 정리를 이용하면

Med≡M (modn)

이다.

2.2.3 일반화된 다카기 시스템

다카기 시스템이란 다카기가 RSA 시스템을 연구하여 법(modulus)

을 n= p rq s로 변형시켜 복호화하는데 걸리는 시간을 더욱 단축

시킨 암호기법인데 이를 좀 더 일반적인 형태인 n= prq s로 바꾼

것이 일반화된 다카기 시스템이다[1].

이에 대하여 키생성, 암호화, 복호화 단계로 살펴보면

키생성

① 단계 0

n의 크기를 미리 정하고 아래의 조건에 상응하는 r,s를 미리

정한다.

② 단계 1

두 개의 큰 소수 p와 q를 조건(RSA 시스템의 p, q의 조건과

같다)에 맞게 생성한다.

③ 단계 2

n= prq s을 계산한다.

Page 17: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 17 -

④ 단계 3

L= lcm ( p-1,q-1 ) 을 계산한다.

⑤ 단계 4

1〈e〈L과 gcd(e,L)=gcd(e,n)=1을 만족하는 홀수 e를

선택한다.

⑥ 단계 5

d≡e-1 ( modL ) 즉, ed≡ 1 (modL )인 d를 계산한다.

생성된 키들 중 e, n 를 공개키로 발표하고 d, p, q를 비밀키로

관리한다.

r, s의 조건

보다 안전한 다카기 시스템을 위하여 r과 s는 다음 조건을 만

족하여야 한다.

(1) r과 s는 서로소이다.

(2) r-s 는 너무 크지 않아야 한다.

(3) r+s 는 n이 1024bit 일 때는 3이하여야 한다[1].

암호화

평문 M을 공개키 e를 사용하여 법 n으로 e제곱을 계산한다.

즉, 암호문 C는 다음과 같다.

C≡Me ( modn )

Page 18: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 18 -

복호화

① 단계 1

암호문 C를 법 p r에 관하여 나타내고 A라 한다. 마찬가지로

C를 법 qs 에 관하여 나타내고 B라 한다.

{A≡C (modpr )

B≡C ( modqs )

② 단계 2

A를 p진법으로, B를 q진법으로 나타낸다. 즉,

A= A 0+pA 1+p2A 2+․․․+p

r-1Ar-1를 p진법으로,

B= B 0+qB 1+q2B 2+․․․+q

s-1Bs-1를 q진법으로

나타낸다.

③ 단계 3

법 pr의 암호문 A를 법 pr에서 복호화한 X = X 0 + ∑r-1

i=1p iX i

를 다음의 과정을 통하여 순차적으로 구한다.

․ X 0≡Ad0 ( mod p ) ․ A[ i] =A 0+pA 1+…+p iA i ․ Fi = (X 0+pX 1+․․․+p i-1X i-1)

e

․ Xi≡e-1X 1- e0

(A[ i]-Fi ( mod pi+1))

p i ( mod p )

여기서 A[ i] ≡Fi ( mod pi ) 이고,

(A[ i]-Fi ( mod pi+1 ) )

p i 은

p보다 작은 양의 정수가 된다.

Page 19: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 19 -

④ 단계 4

법 q s의 암호문 B를 법 q s에서 복호화한 Y = Y 0 + ∑s-1

i=1q iYi

를 다음의 과정을 통하여 순차적으로 구한다.

․ Y 0≡ Bd0 ( mod q ) ․ B[ i] =B 0+qB 1+…+q iB i ․ Gi= (Y 0+qY 1+…+p i-1Xi-1) e

․ Yi≡e-1Y 1- e0 (B[ i]-Gi ( mod q

i+1 ) )

q i ( mod q )

여기서 B[ i] ≡Gi ( mod qi ) 이고,

(B[ i]-Gi ( mod qi+1 ) )

qi

은 q보다 작은 양의 정수가 된다.

⑤ 단계 5

③,④의 X,Y와 2.3.5의 CRT에 의하여

{M'≡X ( mod p )M'≡Y (mod q ) 를 만족하는 유일한 M' 이 암호문 C에 대응

하는 평문이다.

복호화 단계 3의 복호화과정이 수학적으로 옳았는지 살펴보자.

즉, S≡M ( mod pr ) 라 할 때 X=S 인지 확인하여 보자. 이를

위하여 S를 p진법으로 S=S 0+pS 1+…+pr-1Sr-1로 쓰자.

이제

A≡C≡Me≡Se ( mod pr )

이다. 이 식을 법 p로 다시 쓰면 A 0≡Se0 ( mod p ) 이고, 따라

Page 20: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 20 -

X 0≡Ad0≡S

ed0 ≡S 0 ( mod p )

를 얻는다. 그런데 X 0, S 0는 모두 p보다 작은 양의 정수들이므

로, X 0 = S 0이다. 수학적 귀납법을 이용하여 0 ≤ t < i인 t에

대하여 Xt = S t를 증명하였다고 가정하자. 다음으로 Xi = S i

임을 증명하기 위하여 우선 A[ i] ≡A ( mod p i+1 ) 로부터

A[ i] ≡Se≡(S 0+pS 1+…+piS i)

e ( mod p i+1 )

임을 확인하자. 귀납법의 가정으로부터

A[ i]-Fi ≡(S 0+pS 1+…+piS i)

e-(X 0+pX 1+…+pi-1Xi-1)

e

≡e (X 0+pX 1+…+pi-1Xi-1)

e-1p iS i≡ep iXe-10 S i ( mod p

i+1)

를 얻는다. 따라서 복호화 단계 3에서 주장했던 바와 같이

A[ i] ≡Fi ( mod pi )

이 성립하고, 또

Xi≡e-1X 1- e

0 (A[ i]-Fi ( mod p

i+1))

pi ≡Si ( mod p )

임이 증명되었다. 앞에서와 같이 Xi, S i는 모두 p보다 작은 양

의 정수들이므로, Xi = S i이다. 그러므로

M'≡X = S≡M ( mod ps )

이다. 복호화 단계 4도 마찬가지로 증명이 된다.

다음 장에서는 RSA, CRT를 이용한 RSA, 다카기 시스템들을

MAPLE로 구현하고, 구현한 프로그램을 실현시켜서 복호화하는데 걸

리는 시간을 비교하여 보겠다.

Page 21: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 21 -

3제 장 MAPLE을 이용한 구현과 복호화 시간 비교

형식적인 식의 계산이 가능한 MAPLE을 사용하여 RSA시스템과 이

의 변형인 CRT를 이용한 복호화, 일반화된 다카기 시스템의 효율성

을 알아보고자 한다.

우선은 다카기 시스템을 MAPLE로 구현하였고, n 이 1024bit 일

때 다카기 시스템과의 복호화 시간 비교를 위하여 RSA 시스템과

CRT를 이용한 복호화를 구현하였다.

1024bit RSA 시스템과 동일한 안전성을 유지하기 위해서는 r,s

의 조건(3)에서와 같이 r+s=3이어야 하지만 복호화 시간 차이

를 보다 분명히 보여주기 위하여 r+s=5 즉 r=2, s=3으로

선택하였다. 또한 두 소수 p와 q는 무작위로 선정하였고, 세 시

스템 모두 n의 크기를 1024(±1)bit로 유지하려 노력하였다. 또

한 세 시스템 모두에서 e를 37로, 평문을 M =9478653234123432345

54332312121344456676888312314756423425643257864321123443211345

6778436123147로 선택하여 사용하였다. MAPLE로 구현된 예제를 분

명히 보이기 위하여 MAPLE프로그램의 작업창의 내용들을 그대로

따왔다.

3.1 사용되는 함수

1. 소수생성 프로그램

> Prime_Generation:=proc(A)> local p;> p:=1;> while not isprime(p) do;> p:=2*rand(2^(A-2)..2^(A-1))()+1;> od; > return(p);> end:

Page 22: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 22 -

2. 확장된 유클리드 알고리즘

> xeuclid:=proc(A,B)> local a,b,q,r,x,y,xx,yy,sign;> a:=A; b:=B;> x[0]:=1 ; x[1]:=0 ; y[0]:=0 ; y[1]:=1 ;> sign:=1; > while b>0 do> r:=irem(a,b,'q'); > a:=b; b:=r;> xx:=x[1]; yy:=y[1];> x[1]:=q*x[1]+x[0]; y[1]:=q*y[1]+y[0];> x[0]:=xx; y[0]:=yy;> sign:=-sign;> od;> x[0]:=sign*x[0]; y[0]:=-sign*y[0];> return(a,x[0],y[0])> end:

3. 정수 K의 a진법 표현

> adic:=proc(K,a)> local r,q,t,u;> r:=irem(K,a,'q');> t:=r;> while q>0 do> u:=q;> q:=iquo(u,a,'r');> t:=r,t> od;> return([t])> end:

3.2 다카기 시스템

키생성

> p:=Prime_Generation(205);

p := 2617039923581873998855592946012564177178204398705

0148299691697

> q:=Prime_Generation(205);

Page 23: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 23 -

q := 3413172786387739010847581628842643650405278424065 8920006425133

> r:=2:s:=3:> PR:=p^r;

PR := 6848897961621420899660063453648326803595909835 0094494832761835271552979390997167475344033965 1617620037313846257425250739809

> QS:=q^s;

QS := 3976260444517140975888273481321660552487686302 1161586534264647156129118058180339540236467149 1889278800563683682957641589187735725323381873 74853665258256748603751477820969394575332827637

> n:=PR*QS;

n := 272330020533293318020253119777937359878790673302 049841343854259582441307420566062946725002873702 503609998695272692221452811769024768832614439706 171609161927866312187197590782676545869447901926 784930777839934336241951958141878771304106064430 825283980637175216280149969067463993146471653488 05721044038131301333

> L:=(p-1)*(q-1)/gcd(p-1,q-1);

L := 223310236201497511177329285666510310879432485247 379851718677240863508582921803990381627035108079 473492976846443353676525968

> e:=37: > d:=e^(-1) mod L;

d := 120708235784593249285042857117032600475368910944 529649577663373439734369146921075881960559517880 79648269018726667766298701

dA≡d ( modp-1 ) 이라 하면 ad≡a

dA ( modp )이다. 이를 이용하면 복호

화에 걸리는 시간을 줄일 수 있다.

> dA:=d mod (p-1);

Page 24: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 24 -

dA := 1485346983654577134485606807196320208668710604 6704138224149341

> dB:=d mod (q-1);

dB := 2029454089203520492936399887419950278619354738 6337736220036565

CRT를 이용한 모든 복호화에서 N(유클리드 호제법을 이용한 최대공약수)은 같

은 값을 사용하게 되므로 먼저 계산한다.

> N:=[xeuclid(PR,QS)] ;

N := [1, 647176144482930909196387097404358165535144816 671714618868042086953458024204020112323182948 660240720077373851630523097869786279560988252 187094163262474554336857631746574331820008087 0910, -11147266228174375772025452523716000019655502 202469640052877510872277782367483395021414489 3263658981910592071973975519104297]

암호화

> M:=947865323412343234554332312121344456676888312314 7564234256432578643211234432113456778436123147> C:=M&^e mod n;

C := 11903630604900179937559250608670501601505300567 35286742263839435708759799978153714774444141098 09204636719579783519159101743473597990246740866 78800412336038658079760138675783440738285805891 10358834966961191934244990039169443358772989653 53344034234988001166175721051185818471137466466 1936402551954209382179018733

복호화

> st1:=time():> A:=H mod PR : > AA:=adic(A,p);

Page 25: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 25 -

AA:=[19643223018300673408512551545667961395687416985 367053697792041, 47609847147283079017648859176799901030525061208 43739810713857]

> x[0]:=op(2,AA)&^dA mod p;

x[0] := 174366012897656236329501763384536132038663571 49758357906560363 > v:=(x[0]^(1-e)) mod p;

v := 1075939534601153574988266371348492436649341151871 7671157110344

> AAA[1]:=(op(2,AA)+p*op(1,AA)) mod (p^2);

AAA[1] := 514070988667153026559326784953215842853216 946587356112723193654182180836482463387656 199721624231759793126953697229731097434

> F[1]:= (x[0]^e) mod (p^2);

F[1] := 331491419052263909061062007887302851801430726 968614499749236759683529139930124130062846572 940145322718778255613569652233979

> xx[1]:=(AAA[1]-F[1])/p ;

xx[1] := 6976567990793095835678533315820669390332877 338287906351104015

> x[1]:=xx[1]*v/e mod p;

x[1] := 362189859952546995363049573299872

> x:=(x[0]+p*x[1]) mod (p^2);

x := 94786532341234323455433231212134445667688831231 47564234256432578643211234432113456778436123147

> B:=H mod QS:> BB:=adic(B,q);

BB := [428207466857217137202840665675717875825003532

Page 26: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 26 -

7510842200740629, 210327171308960802416673991616473750666410719 00555507310765255, 556289224239969863189836543970658903674168309 2423764387509371]

> y[0]:=(op(3,BB)&^dB) mod q;

y[0] := 254095139545610826916964679499985776085945987 32781417504634537

> w:=y[0]&^(1-e) mod q;

w := 10646202594777733263270238007362957388988895606 816097038422505

> BBB[1]:=(op(3,BB)+q*op(2,BB)) mod (q^2);

BBB[1] := 71788297734965705810702101292510187937177 22111240311863489926463900874376253123522 57028253645437529646105642602503482663286

> G[1]:= (y[0]^e) mod (q^2);

G[1] := 98162405567893897797797705418412079346845370 45469357008808804299614261582116462402516986 84089508248790845203909987879535502

> yy[1]:=(BBB[1]-FF[1])/q ;

yy[1] := -772715285265141375803190183970248512505065 5384771168576844152

> y[1]:=yy[1]*w/e mod q;

y[1] := 277707981029433010569392543152170

> BBB[2]:=(op(3,BB)+(q*op(2,BB))+((q^2)*op(1,BB))) mod (q^3);

BBB[2] := 498850928175018315765038256125106458702158 115960080688464294074173977757172740187860 009672179235238217559959566853078277532106 462555997227895276650348068060802971996895 1034857501099667

Page 27: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 27 -

> G[2]:= ((y[0]+q*y[1])^e) mod (q^3) ;

G[2] := 498850928175018315765038256125106458702158115 960080688464294074173977757172740187860009672 179235238217559959566853078277532106462555997 227895276650348068060802971996895103485750109 9667

> yy[2]:=(BBB[2]-FF[2])/(q^2);

yy[2] := 0

> y[2]:=yy[2]*w/e mod q;

y[2] := 0

> y:=y[0]+(q*y[1])+(q^2*y[2]) mod (q^3);

y := 9478653234123432345543323121213444566768883123 147564234256432578643211234432113456778436123147

> M:=(x*QS*op(3,N)+y*PR*op(2,N)) mod n; >

M := 94786532341234323455433231212134445667688831 23147564234256432578643211234432113456778436 123147

> st:=time()-st1;

st := 0.072

3.3 RSA 공개키 암호시스템

키생성

> p:=Prime_Generation(512);

p := 11300148670463875645479796006638940988444086729 94552715030548084418179569088215981589273556933 77758341642370202490966785900159333593180072897 78300170797461

Page 28: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 28 -

> q:=Prime_Generation(512);

q := 12548793967240113888921576682033899687818287025 20425713350362201330413188964593348692077981239 23685302113827630826023211092581565340260942589 95802688808519

> n:=p*q;

n := 14180323746483347643409216041150197949810795747 74466414828008922047438613963518651849994822187 86159258116475278651797769 08800738840772561317 60049879210402590907192416031534534736916648532 37460523359413558119987276498775394160219878509 85701465493087449982230253463848238963311920492 5669183154170243168160370259

> e:=37:> E:=(p-1)*(q-1);

E := 14180323746483347643409216041150197949810795747 74466414828008922047438613963518651849994822187 86159258116475278651797769088007388407725613176 00498792104023524177660389916391907231897618039 67842609856584083357034673959179082326393504165 54201139549144355457926914855150690633419930835 775839052621469065300764280

> d:=e^(-1) mod E;

d := 13413819760186950473495204363250187249821023004 62333095107576007342171661857382508506751858826 35556054975044182508457349137304286331632336788 11282641179481712059949017488478831165308557605 10121387702174132905303069961385618416858720156 59379456330271687595336270808926328977559394033 842009914641930196906128373

암호화

> C:=9478653234123432345543323121213444566768883123147 564234256432578643211234432113456778436123147&^e mod n ;

C := 428780548542549101547302374686148656990939526613 387440965891575720808389439402688979826701944628 243424393141306482669631143096838547387079456467 868225927986798246635182546434800040126935346588

Page 29: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 29 -

455711919028294370010087747928310583356650073294 045792578431672704492902637996178865621530568186 96007929735553382591

복호화

> st1:=time():> M:=C&^d mod n;

M := 947865323412343234554332312121344456676888312314 7564234256432578643211234432113456778436123147

> st:=time()-st1;

st := 1.294

3.4 CRT를 이용한 복호화

모든 파라메타가 RSA시스템과 동일하고 암호화 과정까지는 동일하므로 CRT를

이용한 시스템에서는 복호화과정만 프로그램하였다.

CRT를 이용한 모든 복호화에서 N은 같은 값을 사용하게 되므로 먼저 계산한다.

> N:=[xeuclid(p,q)];

N := [1, 27917338648161595619647741268550832212776557 32180359307547851972833993322499236720720928 87701522619348392337992187789507177615813469 2721245334683523377389, -3179486437386145090253769327316710386513841 19252954839143351820662805086154319213229728 38582152453976218572170128349023974320446530 09347355953974245794482]

복호화

> st1:=time():> dA:=d mod (p-1):> dB:=d mod (q-1):> A:=C&^dA mod p;

A := 94786532341234323455433231212134445667688831

Page 30: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 30 -

23147564234256432578643211234432113456778436 123147

> B:=C&^dB mod q;

B := 947865323412343234554332312121344456676888312 314756423425643257864321123443211345677843612 3147

> M:=(A*q*op(3,N)+B*p*op(2,N)) mod n;

M := 947865323412343234554332312121344456676888312 314756423425643257864321123443211345677843612 3147

> st:=time()-st1;

st := 0.358

3.5 복호화의 시간 비교

지금까지의 계산 결과를 표로 정리하면 다음과 같다.

RSA 시스템 CRT 시스템일반화된

다카기 시스템

법 n 의 모양 pq pq p 2q 3

법 n 의 크기 1024 1024 1024

복호화에 걸리는 시간 1.294 0.358 0.072

위에서 제시된 표는 일반화된 다카키 시스템이 공개키 암호 시

스템인 RSA 공개키 암호 시스템의 기본적인 틀은 유지하면서도 RSA

공개키 암호 시스템이나 CRT를 이용한 방법보다 복호화에 걸린 시

간이 훨씬 빠르다는 것을 볼수 있다.

Page 31: 1-&8 I à L È ; î Ý P & .D ³ 3FBMJ[BUJPO PG HFOFSBMJ[FE ... · 암호시스템은 대칭 암호시스템과 비대칭 암호시스템 두 가지로 대별해 볼 수 있다

- 31 -

참고문헌

[1] Seongan Lim, Seungjoo Kim, Ikkwon Yie, and Hongsub Lee(2000),

A Genaeralized Takagi- Cryptosystem with a Modulus of the Form prq s,

LNCS 1977, pp.281-294

[2] 김철(1996), 암호학의 이해,서울 : (주)영풍문고

[3] 서광석․김용태․임종인․김창한(1998), 수론과 암호학, 서울 : 경문사

[4] 이민섭(2001),현대암호학, 서울 : 교우사

[5] 육군사관학교 수학과(2001), 암호학개론, 서울 : 경문사

[6] 장은성(1999), 네트워크 사회의 에티켓 암호학, 서울 : 전파과학사

[7] 박경수․한동숭(2002), MAPLE Ⅵ-미적분학을 중심으로, 서울 : 경문사

[8] 박창섭(1999), 암호이론과 보안, 서울 : 대영사

[9] 한국전자통신연구원(1999), 암호학의 기초, 서울 : 경문사

[10] 한국정보보호센터(2002), 정보보호개론, 서울 : 교우사

[11] H.X.Mel & Doris Baker(2001), 정재원․류대걸․강한 역, 보안과

암호화 모든 것, 서울 : 인포․북

[12] Ronald L.Rivest, Adi Shamir and L. Adleman, A Method for

Obtaining Digital Signature and Public Key Cryptosysthem.

Communications of the ACM, vol.21, no.2, pp.120-126, February 1978.