I. 서론
타원곡선암호는 기존의 공개키암호와 비교하였을 때 여러 장점을 가진다. 다른 공개키 암호와 같은 보안강도를 기준으로 비교하였을 때 짧은 키 길이를 가지고 요구되는 계산량도 비교적 적다. 따라서 경량화가 요구되는 환경에서 타원곡선은 강점을 가진다.
타원곡선 암호는 타원곡선 상수배(scalar multi plication) 연산으로 구성된다. 그리고 타원곡선의 상수배 알고리즘은 반복적인 타원곡선 점 덧셈 연산(point-addition)과 두 배 연산(point-doubling)으로 구성되어 있는데, 두 가지 연산은 타원곡선을 정의하는 유한체의 덧셈, 곱셈, 역원 연산으로 분류할 수 있다. 이러한 유한체 연산 중 역원 연산은 다른 연산과 비교하여 상대적으로 계산량이 많기 때문에 상수배 연산은 역원 연산이 필요한 아핀 좌표계(affine coordinate)보다 역원 연산이 없는 사영 좌표계(projective coordinate)를 많이 사용한다. 따라서 타원곡선 상수배 알고리즘과 유한체 곱셈이 효율성이 타원곡선암호의 성능을 좌우한다[1-4].
본 논문은 FIPS 186-4에서 제시된 타원곡선 224비트 소수체에서 효율적인 모듈러곱셈 방법을 제안한다. 제안하는 방법은 Karatuba 곱셈과 새로운 모듈러 감산 방법을 수행한다. 제안하는 방법은 기존방법에 비하여 25%정도 빠르며, 모듈러 감산만 비교하면 기존 방법의 절반으로 계산이 가능하다.
본 논문의 구성은 다음과 같다. 2장에서는 224비트 소수체에서 기존 모듈러 곱셈 방법에 대하여 기술한다. 3장에서는 제안하는 karatsuba 과 모듈러 감산 방법을 기술한다. 4장에서는 기존 결과와 비교하고 결론을 내린다.
II. 224비트 소수체에서 기존 모듈러 곱셈
FIPS 186-4 타원곡선에서 사용하는 224비트 유한체 소수는 다음과 같다.
\(p 224=2^{224}-2^{96}+1\)
이다. 정수 표현을 위한 워드 크기를 B=232으로 가정하면 소수체의 원소 a는 다음과 같이 표현된다.
\(a=a_{6} B^{6}+a_{5} B^{5}+\cdots+a_{1} B+a_{0}\)
2.1 기존 소수체 원소의 곱셈
본 소절에서는 기존의 정수 곱셈 방법에 대하여 기술한다. 두 원소 \(a, b \in G F(p)\)의 모듈러 곱셈을 정수 곱셈과 모듈러 감산으로 구분하면 다음과 같다.
\(\begin{aligned} &a=a_{6} B^{6}+a_{5} B^{5}+\cdots+a_{1} B+a_{0} \\ &b=b_{6} B^{6}+b_{5} B^{5}+\cdots+b_{1} B+b_{0} \\ &c=a \cdot b=c_{13} B^{13}+c_{12} B^{12}+\cdots+c_{1} B+c_{0} \\ &s=c \bmod p 224 \end{aligned}\)
타원곡선 상수배 연산의 효율성은 모듈러 곱셈 연산이 많은 부분을 차지한다. 따라서 효율적인 연산을 위하여 karatsuba 곱셈을 사용할 수 있다. n개의 워드로 구성된 정수를 곱하는 경우 n2번의 곱셈 연산을 수행하지만 karatsuba 곱셈을 사용하면 n1.58번으로 줄일 수 있다. karatsuba 곱셈을 한번만 적용하는 경우 곱셈은 다음과 같이 계산된다.\(\begin{aligned} &a H=a_{6} B^{3}+\cdots+a_{3}, a L=a_{2} B^{2}+\cdots+a_{0} \\ &b H=b_{6} B^{3}+\cdots+b_{3} b L=b_{2} B^{2}+\cdots+b_{0} \\ &a=a H \cdot B^{3}+a L, b=b H \cdot B^{3}+b L \\ &c=a \cdot b=\left(a H \cdot B^{3}+a L\right)\left(b H \cdot B^{3}+b L\right) \\ &=a H b H B^{6}+(a H b L+a L b H) B^{3}+a L b L \\ &=a H b H B^{6}+a L b L \\ &\quad+\{a H b H+a L b L-(a H-a L)(b H-b L)\} B^{3} \\ &s=c \bmod p 224 \end{aligned}\) (1)
224비트 소수체에서 식(1)과 같이 karatsuba 곱셈을 사용하면 워드 단위 곱셈을 47번에서 41번으로 줄일 수 있다. 그러나 감소하는 단위 곱셈 연산량에 비해 추가적으로 발생하는 덧셈, 뺄셈이 많고 계산을 위한 데이터 저장 공간도 늘어나는 단점이 있다. RSA와 같이 크기가 비교적 큰 환경에서는 효과적이나 일반적으로 타원곡선과 작은 환경에서는 구현 복잡도와 난이도에 비하여 크게 효과가 없다.
2.2 기존의 모듈러 감산
본 소절에서는 FIPS 186-4 타원곡선에서 사용하는 유한체 소수 p224 기반의 모듈러 감산 방법을 살펴본다. Fig.1은
\(t 2^{224} \equiv t\left(2^{96}-1\right) \bmod p 224\)
를 이용하여 몇 번의 덧셈, 뺄셈으로 모듈러 감산을 빠르게 수행한다[5-8].
Fig.1을 살펴보면 2번의 덧셈, 2번의 뺄셈과 더불어 추가적인 모듈러 연산을 수행하여 모듈러 감산이 된다. modp224의 경우 사전 계산된 p224의 상수배를 사용하면 최대 두 번의 덧셈 또는 뺄셈으로 계산된다.
Fig. 1. Fast reduction modulo NIST p224
III. 제안하는 모듈로 곱셈 방법
본 절에서는 모듈로 감산의 효율성을 고려하면 유한체 원소의 표현방법을 제안하고, 제안한 표현방법 기반의 모듈로 곱셈에 대하여 기술한다. 제안하는 원소 표현 방법은 \(p 224 \cdot B^{-3}\)을 모듈러로 사용한다. 따라서 유한체의 원소 a의 제안하는 원소 표현 방법은 다음과 같다.
\(\begin{aligned} &a=a_{6} B^{3}+a_{5} B^{2}+\cdots+a_{1} B^{-2}+a_{0} B^{-3} \\ &a_{i} \in\left\{0,2^{32}-1\right\} \end{aligned}\)
ai의 범위와 표현법이 기존과 같기 때문에 위의 표현 방법으로 연산하는 경우 덧셈, 뺄셈, 곱셈 연산은 기존과 동일하다. 그러나 모듈러 감산의 경우 모듈러 연산하는 항이 기존과 달라진다.
3.1 제안하는 karatsuba 모듈로 곱셈
본 소절에서는 karatsuba 곱셈 방법에 제안하는 원소 표현 방법을 적용하여 효율적인 모듈로 곱셈방법을 제안한다. 먼저 기존 원소 표현을 적용한 식(1)을 살펴보자. karatsuba곱셈과 Fig.1의 모듈러 감산을 같이 살펴보면 \(a H b H B^{6}\)와
\(\{a H b H+a L b L-(a H-a L)(b H-b L)\} B^{3}\)
의 계산에 모듈러 감산해야 하는 항이 포함되어 있다. 따라서 식 (1)과 같이 karatsuba 곱셈을 수행한 결과에 모듈러 감산한다. 그러나 제안하는 원소 표현법을 기반으로 karatsuba 모듈로 곱셈을 수행하면 Fig.2와 같이 한 번에 carry 처리를 할 수 있다. 제안하는 방법은 다음과 같다.
\(\begin{aligned} &a H=a_{6} B^{3}+\cdots+a_{3}, a L=a_{2} B^{2}+\cdots+a_{0} \\ &b H=b_{6} B^{3}+\cdots+b_{3}, b L=b_{2} B^{2}+\cdots+b_{0} \\ &c=a \cdot b=\left(a H+a L \cdot B^{-3}\right)\left(b H+b L \cdot B^{-3}\right) \\ &=a H b H+(a H b L+a L b H) B^{-3}+a L b L B^{-6} \\ &=a H b H+a L b L B^{-6} \\ &\quad+\{a H b H+a L b L-(a H-a L)(b H-b L)\} B^{-3} \\ &s=c \bmod p 224 \cdot B^{-3} \end{aligned}\)
제안하는 원소 표현법으로 위와 같이 계산하면 모듈러 감산해야 하는 항은\(a H b H, a L b L B^{-6}\)
에만 존재한다. 그리고
\(\{a H b H+a L b L-(a H-a L)(b H-b L)\} B^{-3}\)
은 \((a H b L+a L b H) B^{-3}\)과 같으므로 제안하는 원소의 표현 범위 크기의 값 연산이 된다. 따라서 기존에 모듈로 감산 대상인 값과 더하여 carry 처리하지 못했던 문제가 해결된다. 제안하는 방법은 Fig.1과 같이 karatsuba 곱셈에서 부가적으로 발생하는 덧셈과 모듈러 감산에서 발생하는 덧셈을 Fig.2의 (3)과 같이 한 번에 계산할 수 있다.
Fig. 2. Proposed karatsuba modulo multiplication
Fig.2에서 y = (t, y) - x mod p224·B-3
는 식을 풀어보면 \((a H b L+a L b H) B^{-3}+s 1+s 2\)와 같다. 따라서 Fig.2의 (3)에서 음수는 발생하지 않는다. 또한 mod p224·B-3 연산은 사전 계산된 p224·B-3의 상수배를 사용하면 최대 두 번의 뺄셈으로 계산된다.
3.2 제안하는 모듈로 감산 방법
본 소절에서는 제안하는 원소 표현 기반의 모듈로 감산에 대하여 기술한다. 제안하는 모듈로 감산방법은 기존과 비교하여 작은 계산량을 가진다. Fig.3과 같이 제안하는 모듈러 감산 방법을 사용하면 기존의 2번의 덧셈과 2번의 뺄셈이 1번의 덧셈과 1번의 뺄셈으로 감소한다. 또한 계산과정에서 필요한 저장 공간도 줄어든다.
Fig. 3. Proposed fast reduction modulo p224
IV. 비교 및 결론
본 논문에서는 새로운 모듈러 곱셈 방법을 제시하였다. 제안하는 방법은 새로운 원소 표현을 기반으로 karatuba곱셈과 모듈로 감산을 효율적으로 병합한다. Cortex-M3 75MHz에서 C로 구현한 결과 기존 방법은 모듈로 곱셈에서 3,232 clock cycle이 소요되고 제안하는 방법은 2,418 clock cycle이 소요된다. 또한 모듈로 감산만 비교하는 경우 4번에서 2번으로 덧셈, 뺄셈 연산이 줄어든다.
References
- D. E. Knuth, "The Art of Computer Programming," Addison-Wesley Publis hing Company, Reading, MA, 1981
- H. Cohen, "'A Course in Computation al Algebric Number Theory," Springer-Verlag, Berlin, Heidelberg, 1993
- American National Standard for Financial Services, "Public Key Cryptography for the financial services industry: ECDSA, X9.62," 1998
- D. Hankerson, A. Menezes, S. Vanstone, "Guide to Elliptic Curve Cryptography," Springer, 2004
- M. Brown, D. Hankerson, A. Menezes, "Software Implementation of the NIST Elliptic Curves over Prime Fields", Proceedings of CT-RSA 2001, LNCS2020, Springer Verlag, pp.250-265, 2001
- N. S. Chang, C. H. Kim, S. Hong, Y. Park, "Efficeint Bit-Parallel Polynomi ial Basis Multipliers fo All Irreducible Trinomial," Jonornal of The Korea Institute of information Security & Cryptology, 19(2), pp. 49-61, Apr. 2009
- E. Kasper, "Fast elliptic curve cryptography in OpenSSL," Proceed ings of the 2011 international conference on Financial Cryptography and Data Security, Mar, 2011
- J. Chung, M. A. Hasan, "Low-weight polynomial form integers for efficient modular multiplication" IEEE Tran sactions on Computers, 56(1), pp. 44-57, Jan. 2007 https://doi.org/10.1109/TC.2007.250622