DOI QR코드

DOI QR Code

An Algorithm For Reducing Round Bound of Parallel Exponentiation

병렬 지수승에서 라운드 수 축소를 위한 알고리즘

  • 김윤정 (서울여자대학교 정보통신공학부)
  • Published : 2004.02.01

Abstract

Exponentiation is widely used in practical applications related with cryptography, and as the discrete log is easily solved in case of a low exponent n, a large exponent n is needed for a more secure system. However. since the time complexity for exponentiation algorithm increases in proportion to the n figure, the development of an exponentiation algorithm that can quickly process the results is becoming a crucial problem. In this paper, we propose a parallel exponentiation algorithm which can reduce the number of rounds with a fixed number of processors, where the field elements are in GF($2^m$), and also analyzed the round bound of the proposed algorithm. The proposed method uses window method which divides the exponent in a particular bit length and make idle processors in window value computation phase to multiply some terms of windows where the values are already computed. By this way. the proposed method has improved round bound.

지수승(exponentiation) 연산은 암호 관련 응용에서 널리 사용되고 있으며, 안전성을 위해 지수 n의 값을 크게 선정하여 이용하고 있다. 그런데, n의 값이 커짐에 따라 수행해야 하는 곱셈의 횟수도 따라서 증가하게 되고, 결과적으로 속도가 빠른 연산 알고리즘의 개발이 중요한 문제로 대두되고 있다. 본 논문에서는 정규 기저 표현(normal bases representation)을 갖는 GF(2$^n$) 상의 병렬 지수승 연산에 있어서, 프로세서 수가 고정된 경우에 라운드 수를 개선할 수 있는 알고리즘을 제안하고 이의 성능분석을 수행한다. 제안하는 방안은 지수(exponent)를 특정 비트 수로 나누어 지수승을 수행하는 윈도우 방법(window method)를 이용하는 것으로, 윈도우 값 계산 단계에서 휴지 프로세서들로 하여금 윈도우들 간의 곰을 계산하도록 합으로써, 전체 라운드 수를 줄이는 효과를 갖는다.

Keywords

Ⅰ. 서론

지수승(exponentiation)연산은 암호 관련 응용에서 폭넓게 이용되고 있으며, 지수 값이 작으 면 이산로그가 쉽게 구해지므로, 보통 안전한 시스템을 유지하기 위해 n 값을 크게 설정한다. 그런데, n 의 값이 커짐에 따라 지수승 연산을 수행하는 시간도 따라서 증가하게 되고, 결과적으로 속도가 빠른 지수승 알고리즘의 개발이 대단히 중요한 문제로 대두되고 있다.

속도를 증진시키기 위한 일환으로 병렬 알고리즘이 제안되었는데. 이들은 필드 요소가 정규기저표현인 것“的)과 다항식 표현인 것들"耳로 나눌 수 있다. 이 중 GF(2 ') 상에서 정규기저 표현을 갖는 병렬 지수승 연산에 대한 연구는 고정된 라운드에 대하여 프로세서 수를 줄이는 것과 프로세서 X 라운드 의 바운드를 분석한 것 등이 있다修山 또한, 프로세서 수가 고정된 경우에 라운드 수의 바운드를 개선하는 알고리즘을 고려할 수 있는데, 이에 대하여는 Stinson이 제안한 방안이 가장 효율적인 것으로 알려져 있다.

본 논문에서는 윈도우 값 계산 단계에서 휴지 프로세서들로 하여금 윈도우들간의 값을 미리 계산하도록 함으로써 Stinson이 제안한 방안보다 더 적은 수의 라운드 수를 갖는 알고리즘을 제안하고 이의 성능 분석을 수행한 내용을 소개한다

본 논문은 다음과 같이 구성된다. 우선. 2 장에서 는 연구의 배경으로서 정규기저표현을 갖는 GF(2 ”) 상의 연산과 지수승 연산, 병렬 지수승 연산의 개념 에 대하여 기술한다. 그리고, 프로세서 수가 고정된 경우의 라운드 수에 대한 기존 연구 결과를 소개한 다. 3 장에서는, 기존 제안 알고리즘에서 라운드 수를 향상 시킬 수 있는 가능성을 살펴보고 라운드 수를 개선하는 새로운 알고리즘을• 제안한다. 그리고, 제안 알고리즘의 라운드 수 분석 내용을 기술한다. 4 장에서, 지수의 비트 길이와 프로세서 수를 다양하게 변화시키며 기존 알고리즘과 제안 알고리즘의 성능을 비교한 내용을 기술하고, 5 장에서 결론을 맺는다.

Ⅱ. 배경 지식

여기서는 소단원에 관한 내용을 간단히 살펴보겠습니다. 게다가 소소단원에 관한 내용도 간단히 살펴 보겠습니다.

2.1 정규기저표현을 갖는 GF(2 *)상의 연산

GF(2 ")은 GF(2) 상에서의 n 차원 벡터 공간으로, 이 공간에서의 B, V , V.......... 仲 I 형태의 기저는모든 "에 대하여 정규 기저를 갖는다고 알려져 있다. 어느 한 필드 요소 a가 정규기저에 대한 계수로 표시될 때 이것을 "정규기저표현"이라 하는데, 정규기저표현으로 나타내어진 필드요소 4를 제곱하는 연산은 계수에 대한 환형 쉬프트만으로 이루어진다는 특성을 갖는다.⑼

예를 들어, 舟 + *2+1 을 근저 다항식으로 갖는 GF(2 ")의 경우 a를 이 다항식의 근이라 할 때, 은 정규기저이다. 또한, a4 = 1 + « + a2 으로 표시될 수 있으므로,기저이다. 이 때, 값이 a =a인 필드 요소 a의 정규기저표현은 (1,0,0)이며, /은(0丄0)/은 (0Q1), 은(1,0,0)으로 나타내진다. 이상과 같이, GF(2 ") 의 정규기저표현에서 제곱은 환형쉬프트만으로 구성 될 수 있으므로, 보통 제곱에 필요한 시간은 무시한 다고 가정하며,F 이 가정은 본 논문에도 적용된다.

2.2 지수승 연산 알고리즘

지수승(exponentiation) 연산이란 주어진 a에 대하여 a'을 계산하는 것으로 이때. e= e ,2 0 또는 1. 0^汶% — 1이다. 기본적인 지수 승 연산 기법은 '이진 방법으로 이 기법에서는 0M/ M如一1인 a'2들을 모두 곱한다. 즉. 口,'2를 계산한다. GF(2 ")상의 정규기저표현에서는 의 비용을 무시할 수 있으므로, 이진방법에서의 곱셈의 개 수는 값이 1인 의 개수가 된다. 결과적으로 이진 방법은 평균적으로 을 一 1 개의 곱셈을 필요로 한다.

이진 방법보다 더 작은 수의 곱셈을 필요로 하는 '윈도우 방법 (window method)'은 지수에 특정 패턴이 반복적으로 나타나는 특성을 이용한다. 윈도우 방법에서는 지수의 비트들을 k 개씩 나누어, 지수 e 를 e= 岩如2対 형태로 표시한다. 여기서 s = |,z/시 이며 OMMs-1이다. 이때, »는 윈도우 길이라 불린다. 이런 표현 하에서, 지수승 연 산은 2 가지 단계로 나뉘어 처리된다. 첫째는 윈도 우 값 계산 단계이며. 둘째는 윈도우들 간의 곱셈을 수행하는 단계이다. 그•림 1에 주어진 알고리즘 window()가 윈도우 방법을 설명해 준다.

그림 1. 지수승 연산 ae을 수행하는 알고리즘

위 알고리즘의 예는 다음과 같다. 如=10, *=2 라 할 때, e= 631 = 1001110111(沥za秒)라 하자. 그러면, s=5가 된다. 단계 1에서는, 윈도우 값인 a',a2, a3을 계산하며 단계 2에서는 윈도우(°2)' j 1)2" («3)2'. (a')T («3)2" 들 간의 곱이 수행된다. 정 규기저표현을 갖는 GF(2 ') 상에서의 지수승 연산은 a'가 비용이 없는 제곱 연산에 의하여 수행되므로, 단계 2는 단지 4 개의 곱셈 연산만을 필요로 한다.

2.3 병렬 지수승 연산

%개 요소의 곱셈을 병렬로 진행하는 가장 기본적인 방법은, 그림 2와 같이, m/2 개의 프로세서로 각 2 요소를 곱하고, 이들 결과의 각 2 요소를 다시 m/4 개의 프로세서로 곱하는 것이다. 이런 식으로 최종 결과가 나올 때까지 진행한다. 즉, m 개 요소 의 곱을 진행하는데, 이 짝수인 경우에는 m/2 개 의 프로세서로 Ilog 2刎 라운드가 필요하며, m이 홀 수인 경우에는 丨初2| 개의 프로세서로 Ilog”끼 라운드가 필요하다.

그림 2. m 개 요소 곱의 기본 병렬 연산: m/2 개의 프로세서로 log2m 라운드가 필요함

그림 2의 방법을 이용하여, 알고리즘window를 병렬로 진행하는 방법은 다음과 같다.⑶ 우선, 단계 2에서 필요한 총 곱셈의 개수는 s늬〃서이며, 이를 |s/2| 개의 프로세서로 그림 2의 방법으로 진행하면 Ilog 시 라운드가 필요하다. 다음으로, 단계 1은 알고리즘 그림 3의 d-c-small-powers 에 의하여 수행될 수 있으며, R为) = (2 "2 一1)2(為가 짝수인 경우) 또는 H^) = (2u+1,/2-1)(2<*~ 1,/z-1) (硏 홀수인 경우) 개의 프로세서로 I log 2서 라운드 동안 진행된다.

그림 3. 윈도우 값을 계산하는 알고리즘(알고리즘 window의 단계 1 수행)

d-c-small-powers (a,5) 가 호출된 경우를 예로 들면 다음과 같다.,=3이 되고, 부단계 1에서 a', a*1, a3, a4, a5, a6, a7-g- 계산한다. 부단계 2에서는 를 계산한다. 부단계 3에서는 부단계 1과 부단계 2에서 계산된 요소들을 각각 곱하여 21개의 값을 얻는다.

위에서 기술한 바와 같이, Stinson은 알고리즘 window를 병렬로 진행하는 경우, 프로세서 수가 max F(為), |s/이일 때 최대 | log 2^1 + I log 2«1 라운드가 필요함을 밝히고 있다.③

2.4 프로세서 수가 고정된 경우의 라운드 수

알고리즘 window가 수행될 때, 프로세서 수가 2* (이 때, 2Ms/2|)로 제한된 경우의 최대 라운 드 수에 대한 연구 결과는 다음과 같다.⑶ 우선. 단계 1은 알고리즘 d-c-small-powers를 통하여 수행되는데, 0가 짝수인 경우와 홀수인 경우 모두 2*가 2.3 절에서 기술한 R%)보다 크므로 최대 I log 2셔 라운드가 필요하다. 다음으로 s 개의 요소 를 곱하는 단계 2는 다음과 같이 진행된다. 如를 2 의 제곱 값들 중 D를 넘지 않는 최대값이라 할 때, 단계 2의 마지막 log 22饥 = log 2如+1 라운드는 그림 2의 기본 병렬 연산을 통하여 200 개의 요소를 곱한다. 이 10g 2如+1 라운드에 수행되는 곱셈의 개 수는 邓0-1이다. 따라서, 단계 2의 앞부분 라운드에서는 s-l-(2/>o—l) = s—2/>o 개의 곱셈을 필요 로 한다. s—22o 개의 곱셈은 P 개의 프로세서로 |(s-2/>0)/M 라운드에 수행될 수 있다. 따라서. 프로세서 수가 力=2* 인 경우에 단계 2의 필요한 라운드 수는 丨 (s—2如)/•시 + log 2如+ 1 = — 2+ 砰 1 이다. 결과적으로, 2* 개의 프로세서로, GF(2 ") 상에서 정규기저표현을 갖는 요소의 병렬 지수승 연산 은 I log 2k\ +1I +k-l 라운드에 수행됨이 알려져 있다.

Ⅲ. 새로운 라운드 수 향상 알고리즘

3.1 라운드 수 향상 가능성

Stinson이 제시한 알고리즘 window가 n= 593, k= 5 일때 진행되는 과정이 그림 4 (a)에 나타나 있다. 이 때 알고리즘 window의 단계 1은 알고리 즘 d-c-small-powers로 진행되며, 단계 2는 그림 2의 방법으로 윈도우 값들을 곱하여 진행된다. 이 경우 k = 5로 프로세서 수가 32로 고정되어 진행되 는데, 주목할 점은 알고리즘 window의 단계 2를 수행하는 라운드 ④〜⑪에 비하여 단계 1이 수행되 는 라운드 ①〜③까지는 유휴상태인 프로세서가 많다 는 점이다. 특히 a1, a2, 决을 계산하는 라운드 ①에 서는 a2 계산이 환형 쉬프트 연산만으로 구성될 수 있어서, 하나의 프로세서를 이용하여 / 만을 계산하면 된다. 즉, 전체 32 개의 프로세서 중 나머지 31 개의 프로세서는 유휴상태이다

그림 4. n = 593, k = 5 일때, Stinson 알고리즘에 의한 라운드수와 라운드 수 향상 가능성

이러한 유휴상태의 프로세서들로 하여금 이후단계 에서 수행되어야 할 작업을 진행시킨다면 전체 라운 드 수는 줄어들 수 있다. 이를 위한 기본 가정은 지수값의 구성이 window 알고리즘의 단계 1과 단계 2를 중첩해도 진행에 무리가 없는 경우이다. 예를 들어, 지수의 윈도우 값이 31 인 경우가 나타나지 않고, 윈도우들간의 곱을 진행시에, 해당 윈도우 값 이 미리 계산되어질 수 있다면. 그림 4 (b) 방법과 같이. 단계 1과 단계 2를 중첩하여 사용할 수 있다. 즉, 전체 라운드수를 11 라운드에서 9 라운드로 축 소할 수 있다.

실제로, n = 593인 경우와 n = 512인 경우, k = 5 일 때 지수의 윈도우 값으로 31이 나타나지 않는 경 우를 실험을 통해 조사한 결과 부록 1과 같이 대략 5-6% 임을 알 수 있었다.

3.2 제안 알고리즘

본 절에서는 단계 1과 단계 2를 양분하지 않고 단계 1 수행 중 유휴 상태에 놓인 프로세서들로 하여금 단계 2의 곱셈을 일부 미리 계산하도록 할 수 있는 알고리즘 구성 결과를 제안한다.

세부 내용은 그림 5의 알고리즘 window_cowork 에 기술되어 있다. 여기서, 단계 0와 단계 八1M 丿M为一1)는 알고리즘 window의 단계 1에 대응하 고. 단계,(虹泰+广云十는 단계 2에 대응한다. 단계 丿•(1分=»—1)에서 프로세서들은 우선 윈도우값을 계산하고 나머지 프로세서들이 윈도우 간의 곱 을 계산하게 된다. 이때, 지수는 (윈도우값, 비트위 치)가 윈도우값이 작은 순으로 정렬되어 있다고 하 자. 이것은 각 단계에서 윈도우들간의 곱을 수행할 때 지수의 해당 윈도우 승 값이 미리 계산되어 있을 확률을 높이기 위해서이다. 지수가 윈도우 값들 순으로 정렬되어 있는 것은 부록 2에 기술한 바와 같이, 소프트웨어 구현시에는 별도의 오버헤드가 없다.

그림 5. 라운드 수가 개선된, 지수승 연산 ae을 계산하는 알고리즘

3.3 제안 알고리즘 성능분석

프로세서 수가 2*로 고정된 경우에 , 알고리즘 window_cowork의 전체 라운드 수를 분석하면 다 음과 같다. 우선, 처음 k-1 라운드 동안 3-1) • 2 * 개의 프로세서를 이용할 수 있는데, 이 중 2 *—1개의 프로세서로 윈도우 값을 계산하고 나머지。一1)2 * 一(2*-1) = (为一2)2 *+1 개의 프로세서로 윈도우 간의 곱셈을 수행하도록 한다. 그러면, 이후의 라운드에서 s—((»-2)2»+l)개 요소의 곱을 수행하면 된다. 2*개의 프로세서로 f개 요소를 곱하는데 필요한 라운드 수는 2.4 절에서 기술한 바와 같이, |号*十 々一1이다. 그러므로, 윈도우 간의 곱을 수행할 때 각 윈도우 값이 모두 전 단계에서 계산된 것이 라면, s-(以一2)2 *+1) 개 요소의 곱셈을 수행하는 데 필요한 라운드 수는 I l"七泸+丄〉| + ^-1 = 『그I一 静一2) +砰 늬与L| + l이다 즉 제 안하는 방법의 전체 라운드 수는 (»-1)十 ^顷孔 + 1 = |专专+ E다.

Ⅳ. 성능비교

정규 기저 표현(normal bases representation)을 갖는 GF(2”) 상의 병렬 지수승 연산에 있 어서, 프로세서 수가 고정된 경우의 라운드 수는 Stinson0] 제안한 알고리즘을 이용하면 I log 2시 + |s/2 k\ + 為一1이고, 본 논문에서 제안한 알고리즘을 이용하면 |芸그I"이다• 즉• 제안히는 알고리즘은 기존 방법에 비하여 丨 10g 2서 만큼 라운드 수를 축소시킬 수 있다.

표 1에 如 = 593인 경우와 儿 = 512인 경우에 대한 실제 라운드 수를 계산한 예가 나타나 있다. &=5인 경우. 지수 값이 3.1 절에 기술한 바와 같이 단계를 병합하는 조건이 만족되는 경우에는, 儿 = 593과 “ = 512인 두 경우 모두 라운드 수를 11 단계에서 2 단계 줄인 9 단계에 수행됨을 알 수 있다. 표 2에는 다양한 冲에 대하여 k 값을 변화시키며 분석한 라운드 수가 비교되어 나타나 있다.

표 1. Stinson 방법과 제안방법의 라운드 수 비교( n = 593, 512인 경우)

표 2. Stinson 방법과 제안방법의 라운드 수 비교 (다양한 n,k에 대한 결과)

Ⅴ. 결론

본 논문에서는 GF(2") 상의 병렬 지수승 연산에서 프로세서 수가 2*로 제한된 경우의 라운드 수 향 상을 위한 새로운 알고리즘을 제안하고 이의 성능분 석을 수행한 내용을 소개하였다. 제안 방안은 지수의 값이 단계를 병합할 수 있는 조건을 가질 때 이용될 수 있는 것으로, 실험을 통하여 이 조건의 발생 경우도 확인하였다. 본 논문에서 제안한 알고리즘은 儿이 커짐에 따라 속도가 더욱 중요한 의미를 갖는 지수승 연산을 이용한 암호 응용의 유용성에 기여하리라 기 대된다.

* 본 연구는 2002년도 서울여자대학교 교내연구비의 지원 으로 이루어졌습니다.

부록

1. 지수의 윈도우 값 발생 빈도

지수의 윈도우 값에 특정 패턴이 나타나는 빈도를 계산하기 위하여는 Linux 시스템 상의 openssl0.9.7b 공개소스 중 RSA 비밀키 생성부를 수정하 여 이용하였다. 임의의 비밀키를 생성하고 이를 윈도 우 길이에 따라 나눈 후. 나타나는 비트값을 조사하 는 방법을 사용한 결과 n = 593이고 k = 5일 때 지수 의 윈도우 값으로 31이 나타나지 않는 경우는 조사 한 100 개의 비밀키 중 5 가지 경우였다. n = 512, k = 5인 경우에는 100 개의 비밀키 중 6 개가 윈도 우 값으로 31을 갖지 않았다.

n = 593인 경우의 비밀키 값 하나와 이의 윈도우 값 발생빈도를 첨부하면 다음과 같다.

► 593 비트 길이의 RSA 비밀키와 이를 5 비트 원 도우로 분할했을때의 윈도우 발생빈도

#

2. 지수승 연산의 소프트웨어 구현

지수승 연산 “,은 활용 경우에 따라 2 가지 부류 로 나눌 수 있다. 하나는, 밑 “의 값은 고정되고 지 수 尢의 값이 변하는 경우이며, 다른 하나는 지수 % 의 값이 고정되고 밑 "의 값이 변하는 경우이다. 전자 는 일반적인 지수승 연산에서 밑을 고정시키고 지수 승 연산 값을 구하는 것이 해당되며 후자는 RSA 등 과 같은 공개키 암호 알고리즘에서 키인 지수가 고정 되었을때 데이터인 밑을 변화시키는 것이 해당된다.

안전한 암호 알고리즘을 구성하기 위하여 지수 为 는 256 또는 512 비트 이상을 이용하게 된다. 보통 의 경우 기본 정수형은 32 비트 (4바이트)인 관계 로, 지수는 정수형의 배열로 구성되게 된다. 공개 소 프트웨어인 openssl의 경우도 기본 데이터형(C 언 어의 경우 long 형)의 배열로 이들을 표현하고 있다.

지수승 연산의 코드 구성은 이러한 정해진 데이터 형을 이용하여 지수 값 등을 저장하고 또한 정해진 데이터 형을 대상으로 지수승 연산 코드를 구성하면 된다. 3 장에서 제안한 알고리즘은 지수가 값 및 위 치의 정보로 구성된 배열을 이용한다.

이렇게 기존의 방법들이 사용하는 지수의 데이터 형과는 다른 것을 사용하더라도, 소프트웨어 및 하드 웨어 등의 구현에서는 데이터형을 따르는 연산 코드를 구성하면 되므로 연산수행시의 추가오버헤드는 없다.

References

  1. M.Lee, Y.Kim, K.Park. and Y.Cho. 'Efficient Parallel Exponentiation in GF($q^n$)using Normal Basis Representations,' Journal of Algorithms, Academic Press. Inc., Accepted for Publication
  2. G.B. Agnew, R.C. Mullin, S.A. Vanstone, 'Fast exponentiation in GF($2^n$),' Advances in Cryptology EUROCRYPT'88, Lecture Notes in Computer Science, vol. 330, pp. 251-255, 1988 https://doi.org/10.1007/3-540-45961-8_22
  3. D.R. Stinson, 'Some Observations on parallel algorithms for fast exponentiation in GF($2^n$),' SIAM Journal on Computing. vol. 19. no. 4, pp. 711-717, August, 1990 https://doi.org/10.1137/0219049
  4. Joachim von zur Gathen, 'Processor-efficient exponentiation in finite fields, Computational Complexity, vol. 1, pp. 360-394, 1991 https://doi.org/10.1007/BF01212964
  5. Joachim von zur Gathen, 'Processor-efficient exponentiation in finite fields Information Processing Letters, vol. 41. pp. 81-86, 1992 https://doi.org/10.1016/0020-0190(92)90259-X
  6. Daniel M. Gordon, 'A survey of fast exponentiation methods,' Journal of Algorithms. vol. 27, pp. 129-146, 1998 https://doi.org/10.1006/jagm.1997.0913
  7. C.K.Koc, T.Acar, 'Montgomery multiplication in GF($2^k$),' Designs, Codes and Cryptography, vol. 14, no. 1, pp. 57-69, April, 1998 https://doi.org/10.1023/A:1008208521515
  8. A. Haalbutogullari. C.K.Koc, 'Parallel multiplication in GF($2^k$) using polynomial residue arithmetic,' Designs, Codos and Cryptography, vol. 20. no. 2, pp. 155-173, June 2000 https://doi.org/10.1023/A:1008389508626
  9. Rudolf Lidl, Introduction to finite fields and their applications, Cambridge University Press, London, 1994