KR20010103134A - 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법 - Google Patents

빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법 Download PDF

Info

Publication number
KR20010103134A
KR20010103134A KR1099-058778A KR19990058778A KR20010103134A KR 20010103134 A KR20010103134 A KR 20010103134A KR 19990058778 A KR19990058778 A KR 19990058778A KR 20010103134 A KR20010103134 A KR 20010103134A
Authority
KR
South Korea
Prior art keywords
polynomial
elliptic curve
multiplication
value
finite field
Prior art date
Application number
KR1099-058778A
Other languages
English (en)
Other versions
KR100341507B1 (ko
Inventor
이재원
홍성민
윤현수
Original Assignee
김지윤
주식회사 트러스컴
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 김지윤, 주식회사 트러스컴 filed Critical 김지윤
Priority to KR1019990058778A priority Critical patent/KR100341507B1/ko
Publication of KR20010103134A publication Critical patent/KR20010103134A/ko
Application granted granted Critical
Publication of KR100341507B1 publication Critical patent/KR100341507B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Abstract

본 발명은 타원곡선 암호시스템 구현시, 유한체 곱셈과 제곱 연산을 빠르게 수행할 수 있도록 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법에 관한 것으로서, 사용자 A 및 B측에서 상기 선택된 개인키와 타원곡선 상의 다항식으로 표시되는 임의 좌표와의 상호 연산결과로 공개키를 생성하고, 상기 사용자 A측에서 상기 일정 범위 내의 임의의 정수와 상기 좌표를 상호 연산하되, 상기 연산 시 짝수 차 다항식(항수 m, 최고 차수 m-1)으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하는 하위 1단계와, 나머지 m-1차 항을 곱하기 위한 중간 값을 구하되, 상기 중간 값은 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 하위 제 2단계와, 마지막으로 상기 하위 제 1단계에서 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 하위 제 2단계에서 구해진 중간값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하는 하위 제 3단계를 수행하여 이루어지는 것을 특징으로 하여, 유한체 곱셈과 제곱연산을 빠르게 수행하여, 암호화안전도 및 효율을 높이는 효과가 있다.

Description

빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법{Elliptic Curve Cryptography and Digital Signature Method using fast finite field operations}
본 발명은 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법에 관한 것으로서, 보다 상세하게는 유한체(finite field)의 이산대수(discrete logarithm)에서 사용하는 곱셈군(multiplicative group) F* q을 타원곡선의 덧셈군(additive group)으로 바꾸어 사용하는 타원곡선 암호화 방법에 있어서, 유한체 곱셈과 제곱 연산을 빠르게 수행할 수 있도록 하는 타원곡선 암호화 구현을 위한 유한체 연산 방법에 관한 것이다.
컴퓨터시스템과 네트웍이 증가하면서 전자 정보 교환이 급속히 확산되고 사회 전반에 걸쳐 컴퓨터 시스템의 이용이 증가하여 정보 처리 능력이 증대되고 있다. 이에 따라 현대 사회는 정보화사회라고 불리울 만큼 정보의 효율적 이용이 중요하게 인식되고 있다. 그러나 현재의 컴퓨터 및 네트웍의 기반을 이루는 디지털 기술은 데이타의 도용, 변경, 삭제 등이 용이해 개인의 정보 보호뿐만 아니라 기업이나 국가의 보안에 많은 문제점을 야기할 수 있다. 이를 해결하기 위하여 암호 기술이 필요하게 되었고, 정보의 암호화와 전자서명 및 인증을 통하여 정보의 원하지 않는 누출을 막을 수 있으며, 전자상거래 등과 같은 새로운 문화를 가능하게 만들었다.
인류가 암호를 처음 사용한 것은 4000년 전으로 추정되고, 체계적인 암호 방식을 사용한 것은 B.C 2000년 경 Julius Caesar라고 알려져 있다. 그러나 그 형태가 최근에 이르기까지 모두 동일하였다. 즉, 평문(plain-text)을 알아볼 수 없는 암호문(cipher-text)으로 변형시키는 데에 사용되는 키(key)와 암호문을 다시 알아볼 수 있는 형태의 복호문으로 바꾸는데 사용되는 키가 같았다. 이러한 방식의 암호시스템을 대칭적 암호시스템(symmetric cryptosystem) 또는 비밀키 암호시스템(secret-key cryptosystem)이라고 한다. 그러나, 대칭적 암호시스템은 두 가지 커다란 단점을 가지고 있다. 첫째, 정보를 비밀리에 교환하고자 하는 사람들은 키를 공유해야 하므로 별도의 안전한 정보전송 통로를 필요로 한다는 점이다. 이로인해 비밀 정보를 공유하고자 하는 집단이 많아질수록 비밀키의 개수는 기하급수적으로 증가하게 되므로 이의 관리에 많은 문제점이 생길 수 있다. 또 다른 단점은 최근들어 그 활용도가 중요해진 전자서명(digital signature)을 효과적으로 구현할 수 없다는 점이다.
이러한 문제점들을 해결하기 위해서, 1976년에 Diffie와 Hellman이 공개키 암호시스템(public-key cryptosystem)을 제안하였다. 공개키 암호시스템에서는 암호화(encryption)와 복호화(decryption)에서 사용하는 키를 구분하여 암호화에 사용하는 키를 공개키(public-key), 복호화에 사용하는 키를 개인키(private-key)라고 하며, 공개키는 모든 사람에게 공개하고 개인키는 자신만이 알고 있도록 관리한다. 또한 공개키 암호시스템을 사용하면 전자서명을 효과적으로 구현할 수 있다.
예를 들어, 갑이 을에게 비밀 정보를 전달하기 위해서는 누구나 알고있는 공개키로 정보를 암호화하여 전송한다. 이를 받은 을은 자신만이 알고 있는 개인키로 암호문을 해독하여 원래의 정보를 얻을 수 있다. 따라서, 비밀 정보를 공유하고자 하는 집단은 키를 공유할 필요가 없으므로 별도의 안전한 정보전송을 위한 통로를 필요로 하지 않는다. 또한 공개키 암호시스템을 사용하면 전자서명을 효과적으로 구현할 수 있다
공개키 암호시스템의 안전성은 단방향 함수(one-way function)에 근거를 두고 있으며 RSA와 ElGamal 암호법으로 대표된다. 단방향 함수란 한쪽 방향으로의 계산은 쉬운 반면, 반대 방향의 계산은 매우 힘든 함수를 말한다. 예를 들어, RSA 암호법의 기반이 되는 단방향 함수는 정수의 소인수분해 문제로서, 매우 큰 두 소수 p와 q의 곱 n = pq이 주어졌을 때 이를 다시 p와 q로 소인수분해하기 힘들다는 사실을 가정하고 있다.
기존의 공개키 암호시스템에서 사용하던 단방향 함수는 여러가지 공격방법이 연구되어 개인키를 모르고도 암호문을 해독할 수 있게 되었다. 이러한 공격을 막기위한 대책은 아직까지는 키의 길이를 증가시키는 방법이 유일하며, 현재는 1024 bit 정도가 되어야 안전한 것으로 알려져 있다. 그러나 키의 길이를 계속해서 증가시키면 그만큼 키를 관리하는데 어려움이 커지고 암호화나 복호화에 걸리는 계산 시간이 늘어나는 단점이 있다. 이로인해 공개키 암호시스템의 개념적 장점에도 불구하고 다양한 용도에 활용되지 못하고 있다. 특히 스마트카드(smart card), 이동 단말 등과 같이 기억 용량과 계산 능력이 부족한 환경에서는 공개키 암호시스템을 사용하기 힘들다.
이상과 같은 문제점을 극복하기 위해서 다양한 단방향 함수들이 제안되어, 새로운 공개키 암호시스템을 만들기 위한 연구가 많이 진행되어 왔지만, 대부분 안전성이나 실용성을 인정받지 못했다. 이 중 타원곡선 상에서의 이산 대수 문제를 기반으로하는 타원곡선 암호시스템은 높은 보안성과 다양한 특성으로 인해서 최근까지 많은 연구의 대상이 되었다.
타원곡선 암호시스템의 가장 큰 장점은 140 ~ 200 비트의 키로도 기존의 RSA나 ElGamal 암호시스템에서 512 ~ 1024 비트의 키로 얻을 수 있는 보안성을 제공할 수 있다는 점이다{6,7}. 또한 타원곡선의 매개 변수만 변화시켜서 새로운 암호시스템을 만드는 것이 용이하여, 각각의 집단에서 각기 다른 암호체제를 구축할 수 있다. 이밖에도 기존의 공개키 암호시스템이 제공하는 기밀성(confidentiality), 사용자 인증(entity authentication), 자료의 무결성(data integrity), 부인 방지(non-repudiation) 및 인증된 키 교환(authenticated key exchange)와 같은 제반 정보 보호 서비스 또한 제공할 수 있다.
타원곡선 암호시스템(elliptic curve cryptosystem)은 1985년, Kobliz와 Miller 에 의하여 각각 독자적으로 제안되었다. 타원곡선 암호의 기본 아이디어는 유한체(finite field)의 이산대수(discrete logarithm)에서 사용하는 곱셈군(multiplicative group) Fq*을 타원곡선의 덧셈군(additive group)으로 바꾸어 사용하는 것이다. 하지만 이 암호가 처음 제안될 당시에는 타원곡선군 위에서의 연산이 너무 어려워 Miller와 Koblitz 자신들도 타원곡선 암호를 비 실용적인 것으로 보았다. 그러나 이후 많은 수학자와 암호학자들의 연구에 의해 타원곡선위에서의 연산이 쉽게 구현될 수 있게 되었다.
타원곡선 암호시스템의 성능을 향상시키기 위한 연구는 크게 두 가지로 나누어볼 수 있다. 첫째는 타원곡선 군(group)의 연산을 효율적으로 수행할 수 있도록 하는 상위 계층(high-level) 알고리즘의 개발로서, 이러한 방식은 기존의 암호시스템에 대한 연구에서 모듈라 멱승 등을 빠르게 수행하기 위한 방법들과 크게 다르지 않으므로 기존의 알고리즘들을 타원곡선에 적용시키려는 접근 방법으로 볼 수 있다. 둘째, 하위 계층(low-level) 알고리즘 개발로 분류할 수 있는 연구들로서, 타원곡선이 정의되는 유한체(finite field)에서의 연산을 효율적으로 수행하고자 하는 연구들이 이에 속하며, 본 발명 역시 이에 속한다.
최근까지 빠른 연산을 행할 수 있는 다양한 유한체들이 제안되어 왔고, 다양한 연산 알고리즘을 적용하여 효율적으로 구현하려는 노력들이 있어왔다. 유한체 연산 속도를 향상시키기 위한 다양한 알고리즘들이 제안되어왔고, 다양한 종류의 유한체 또한 많은 학자들에 의해 제안되었다. 유한체 연산은 유한체의 정의에 따라 많은 특성을 보이고 다양한 연산에서 각기 다른 성능을 보이게 된다. 그러나 여태까지 대부분의 발명들은 새로운 유한체의 제안이나 연산 알고리즘의 제안에 국한되어 각각의 알고리즘과 유한체에 대한 성능 비교를 위한 체계적이고 종합적인 분석이 이루어지지 않았다. 어떤 연산 알고리즘은 다른 종류의 유한체에서는 적용이 불가능한 경우도 있고, 유한체의 종합적인 성능은 다양한 연산의 성능과 복합적인 관계에 있기 때문에 여태까지의 제안들에 대한 체계적인 비교 분석이 필수적이다.
타원곡선 암호시스템의 성능을 향상시키기 위한 연구는 크게 두가지 방향으로 나누어 볼수 있다. 첫째, 타원곡선 군의 효율적인 연산을 위한 상위 계층 알고리즘 개발로서, 타원곡선상에서의 연산 횟수를 줄이고 각각의 연산 속도를 증가시켜, 타원곡선을 이용한 암호시스템 전체의 성능을 향상시키려는 연구 방향이다.
둘째, 하위계층 알고리즘 개발로 분류할 수 있는 연구들로서, 타원곡선이 정의되는 유한체에서의 연산을 효율적으로 수행하고자 하는 연구들이 이에 속한다.
유한체(finite field)란 유한한 개수의 원소를 갖는 체(field)로서, 체는 덧셈과 곱셈에 대해 닫혀있는 가환군(abelian 군)이고, 유한체는 덧셈과 곱셈에 대한 역원과 항등원이 존재하며, 교환법칙과 결합법칙이 성립한다고 정의 된다.
유한체의 원소의 개수 q는 소수 p의 멱승 형태(q=pm, m 은 양의 정수)이며, 원소의 개수에 따라 유일하게 정의되고, Fq,Fpm 또는 GF(pm)으로 표기한다. m이 1일 경우 modulo p상의 정수 군과 같다. 또한, Fp상의 m차 기약 다항식(irreducible polynominal) f(x)에 대해 다음과 같은 특성을 갖는 다.
이 경우, Fq는 Fp의 확장체(extention field)라 하고, Fq의 위수(order)는 대략 pm이며, 그 위에서 정의된 타원곡선 E(Fq)의 위수는 다음 정리에 따른다.
정리 2.1 (Hasse) 타원곡선 E(Fpm)의 위수 # E(Fpm)은 다음 부등식을 만족한다.
----------------------------------------------(2.1)
유한체의 원소를 표현하는 대표적인 방법은 다항식 기저(polynomial basis)를 사용하는 방법과 정규 기저(normal basis)를 사용하는 방법이 있다. 유한체에서의 덧셈과 곱셈 연산은 원소를 표현하는 방법에 따라 다양한 특성을 보이므로, 이에 대해 더욱 자세히 논한다.
를 Fp상의 m 차 디약 다항식의 근이라 할때,의 각 원소는 선형 독립을 이루며, 이들의 선형조합으로 Fq의 원소를 표현하는 것을 다항식 기저 표현법이라 한다.
즉, Fq의 원소 A(x)를 다항식 기저로 표현하면 다음과 같다.
A(x)=am-1xm-1+....+a1x+a0, where ai Fp, i=0,1...,m-1
다항식 기저로 표현된 Fq상의 두 원소 A(x), B(x)의 덧셈은 다음과 같다.
C(x)=A(x)+B(x)
---------- (2.2)
뺄셈 또한 덧셈과 같은 방법으로 표현된다.
곱셈을 계산하는 가장 기본적인 방법은 다음과 같다.
C(x)=A(x)x B(x)
----- (2.3)
이경우,(m2)의 시간 복잡도를 갖는 다.
정규기저는 다항식 기저와 비슷한 형대를 갖는다.를 Fp상의 m차 기약 다항식의 근이라 할때, 집합의 원소들이 각각 선형 독립을 이루면,를 정규 생성기라고 하고, 이 집합의 원소들의 선형조합으로 Fq의 원소를 표현하는 것을 정규 기저 표현법이라 한다. 즉, Fq의 원소 A(x)를 정규 기저로 표현하면 다음과 같다.
덧셈 및 뺄셈은 다항식 기저에서 사용한 방법과 동일하지만, 곱셈은 더 복잡합 알고리즘을 사용해야 한다. 그러나 정규기저 표현법은 하드웨어로 구현했을때 더 좋은 성능을 보이는 것으로 알려져 있다.
체 K상에서 정의되는 타원곡선 E는 원시점을 가진 genus가 1인 smooth curve를 말한다. 좀더 구체적으로, 다음 다항식을 만족하는 점 (X,Y,Z)들의 집합이다.
------------------ (2.4)
smooth curve란, 곡선 위의 임의의 점
의 편미분중 적어도 하나는 P에서 0이 아님을 뜻한다. 이를 만족하면서 Z좌표가 0인 점은 (0,1,0) 하나만이 존재하며, 덧셈에 대한 항등원 역할을 한다. 이점을 원시점 혹은 무한대점이라고 부르며,로 표기한다.
타원곡선 사의 점들은 덧셈에 대한 abelian 군을 이룬다. 식(2.4)에 의해 정의된 타원곡선 위의 두점 P=(x1,y1), Q=(x2,y2)와 이들의 합을 P+Q=(x3,y3)라 하면, P+Q의 좌표는 다음과 같다.
, if PQ
, if PQ
------------------------------- (2.5)
타원곡선 식을 non-homorneous(affine) 좌표계에서 얻기 위해,라 하고 무한대점와 함께 식 (2.4)에 대입하면 다음과 같은 식을 얻는 다.
------------------------(2.6)
따라서 유한체 K상에서 정의되는 타원곡선 E는 식(2.6)을 만족하는 점들의 집합과로 정의될 수 있다. 이때 K를 타원곡선 E의 정의체라 한다.
타원곡선 정의체 K의 특성계수에 따라 죄표계 변환을 통해 식(2.6)을 다음과 같이, 간단히 할 수 있다.
char(K)=2 :
------------------------------- (2.7)
------------------------------- (2.8)
char(K)=3 :
------------------------------- (2.9)
char(K)> 3 :
------------------------------- (2.9)
특히 타원곡선의 j-invariant가 0이 아닐 경우, 초특이(supersingular)곡선이라 하고, 그렇지 않은 경우, 비초특이(non-supersingular)곡선이라 한다.
따라서, 식(2.7)을 특이(singular)곡선이라 하고, (2.8)을 비초특이 곡선이라 한다. 초특이 타원곡선은 MOV 공격방법을 통해 sub-exponential 시간만에 공격이 가능하므로 실제 구현에는 사용되지 않는다.
특성계수가 2인 정의체 상의 비초특이 타원곡선인 식(2.8)에 대한 덧셈을 정의한다. 먼저 타원곡선 E상의 한점 P=(x1,y1) 의 덧셈에 대한 역원은 -P=(x1,y1+x1)로 정의된다. 또한 덧셈에 대한 교환법칙이 성립하며, E상의 모든점에 대하여가 성립한다. E상의 다른 한점 Q=(x2,y2)가 Q-P일때, P+Q=(x3+y3)는 다음과 같이 정의된다.
, if PQ
, if PQ
, if PQ
, if PQ ----------------- (2.11)
이를 정리해 보면, 타원곡선 상의 서로다른 두점의 덧셈과 한점의 두배, 즉 P=Q인 경우 필요한 유한체 연산횟수는 다음 표 2.1과 같다.
타원곡선 덧셈 타원곡선 두배
유한체 덧셈 8 5
유한체 제곱 1 2
유한체 곱셈 2 2
유한체 역원 1 1
표 2.1 char(K)=2 인 유한체상의 타원곡선 연산에 필요한 유한체 연산 횟수
식(2.10)과 같이 정의된 char(K)> 3인 정의체 K상의 타원곡선 E의 한점P=(x1,y1)의 덧셈에 대한 역원은 -P=(x1,-y1)로 정의된다. 또한 덧셈에 대한 교하ㅗㄴ법칙이 성립하며, E상의 모든점에 대하여가 성립한다. E상의 다른 한점 Q=(x2,y2)가 Q≠-P일 때, P+Q=(x3,y3)는 다음과 같이 정의된다.
, if P≠Q
, if P≠Q ---------------------- (2.12)
따라서, 특성계수가 3보다 큰 유한체 상에서 정의된 타원곡선에서의 덧셈과 두배 연산에 필요한 유한체 연산횟수는 다음 표 2.2와 같다.
타원곡선 덧셈 타원곡선 두배
유한체 덧셈 6 5
유한체 제곱 1 2
유한체 곱셈 2 2
유한체 역원 1 1
표 2.2 : char(k)>3인 유한체 상의 타원곡선 연산에 필요한 유한체 연산횟수
타원곡선 암호를 구현하기 위해서는 유한체 상에서 정의된 타원곡선 위의 점들의 개숫가 중요하다. E(Fq)의 위수를 정확하게 구하는 문제는 Schoof의 알고리즘에 의하면 0(log8q)의 시간복잡도를 가진다. 이는 #E(Fq)를 구하는 문제가 다항식 시간 문제임을 의미하지만, 실제로는 상수가 커서 실제 계산에 적용하기에는 문제가 많았다. 그 후에 나온 Atkin의 알고리즘의 경우에는 다항식 시간 알고리즘임이 증명되지는 않았으나 십진수로 50에서 100자리인 수 q에 대해서도 #E(Fq)를 구하는데 성공하였다. 최근에는 Schoof의 알고리즘을 개선하여 q=21301일 경우에는 103일만에 #E(Fq)를 계산한 결과가 발표되었다.
#E(Fq)를 구하기 쉬운 타원곡선으로는 초특이(supersingluar) 타원곡선이 있다. 타원곡선이 초특이인 경우 #E(Fq)를 쉽게 구할 수 있다. 또한 고정된 유한체 위에서 주어진 타원곡선이 초특이일 확률은 1/12이므로 구현을 위해 초특징 타원곡선을 잡는 것도 어렵지 않다. 그러나, 초특이 타원곡선을 이용한 암호는 Weil pairing에 의해 공격이 가능함이 알려져 최근에는 거의 사용되지 않는다.
타원곡선 암호는, 기존의 암호시스템들과 마찬가지로, 이산로그에 기반을 두는 것과 소인수 분해에 기반을 두는 것으로 나누어진다. 타원곡선 위에서의 이산로그란 특정 점 P와 그 상수배 kP가 주어졌을 때, 상수 k를 알아내는 문제가 어렵다는 점에 기반을 두는 암호시스템으로서, 기존의 유한체 위에서의 이산로그 문제와 형태가 동일하다. 따라서, 쉽게 기존의 암호시스템을 타원곡선을 이용해서 구현할 수 있다. 소인수 분해에 기반을 둔 타원곡선 암호는 RSA의 장점을 가지면서 나름대로의 독특한 특성을 가지고 있으나, 그 안전성이 소인수 분해에 의존하기 때문에 이산로그를 이용하는 타원곡선 암호와는 달리 작은 키 크기와 놓은 안전도와 같은 장점이 없다.
이산로그에 기반한 ElGamal-like 타원곡선 암호시스템의 한예를 소개한다[15]. 사용자 A가 메시지 M을 사용자 B에게 암호화하여 보내기를 원하다고 가정한다.
1. (setup)한 유한체 Fq위에서 타원곡선 E(Fq)와 이 위의 한점 P와 N=Ord(P)를 공개한다. 각 사용자는 자신의 개인키로 s∈{0,1,...N-1}을 임의로 선택하고 Q=sP를 계산하여 Q를 공개한다.
2. A는 임의 수 k∈{0,1,...N-1}을 선택하여 R=kP를 계산한다. 메시지 M을 E(Fq)위의 한점 PM으로 끼워넣기 한다.
3. A는 B의 공개키 QB=sBP를 찾아 kQB를 계산한 후, (R,S=PM+kQB)를 B에게 보낸다.
4. B는 S-sBR=PM+kQB-sB(kP)-PM으로 메시지 M을 얻는다.
이와 같이 타원곡선을 이용한 암호시스템에서는 암호화와 복호화 과정에 타원곡선 상의 상수배 연산(scalar mlitiplication)을 사용한다. 즉, 유한체 Fq상에서 정의된 타원곡선 E(Fq)위의 어떤 점 P∈E(Fq)에 대한 상수배 kP로서, k는 정의체 Fq의 비트 공간 크기의 숫자이다. 앞에서 살펴본 바와 같이 타원곡선 상에서는 덧셈과 두배 연산만이 정의되어 있기 때문에 이와 같은 커단란 숫자에 대한 상수배 연산은 덧셈과 두배 연산의 반복으로만 구해진다. 이와 같이 타원곡선 상의 상수배 연산에서 덧셈과 두배 연산의 횟수를 효율적으로 줄이기 위한 연구가 타원곡선 암호 연구의 다른 한 부류인 상위계층 알고리즘 개발이다.
본 발명에서는 이와 같은 상위계층 알고리즘 개발에 관한 설명은 생략하고, 하위계층 알고리즘인 효율적인 유한체 연산과의 관계에 대해서만 설명한다. 상수배 연산은 덧셈과 두배의 반복으로서 이루어져 있다. 즉, 상수 k가 160비트 정도의 숫자라면 일반적으로 덧셈 80번과 두배 159번이 필요하다. 이와 같은 횟수를 줄여도 덧셈과 두배연산 자체가 느리다면 별다른 이득을 가져올 수 없다. 따라서 덧셈과 두배 연산의 속도 향상이 중요하다. 또한, 타원곡선 상의 덧셈과 두배연산은 다시 여러번의 유한체 연산으로 이루어져 있기 때문에, 빠른 유한체 연산이 필요한다.
앞서 설명한 유한체에서의 연산을 빠르게 수행하기 위해서, 다양한 종류의 유한체가 제안되어 왔다. 유한체 연산의 속도는 연산 알고리즘 뿐만 아니라, 유한체의 구조에도 많은 영향을 받는다. 유한체의 구조에 따라 적용할 수 있는 알고리즘도 각기 다르고 같은 알고리즘일지라도 많은 성능 차이를 보인다.
이하, 대표적인 세가지의 유한체를 설명하고 각각의 특성에 대해 알아본다.
첫째, GF(2m)에 대하여 설명한다.
유한체는 암호학에서 뿐만 아니라 오류 제어코드 등에서도 많이 사용되어 왔고, 가장 먼저 GF(2m) 형태의 유한체가 제안되어 많은 연구가 진행되었다. GF(2m) 형태의 유한체는 다항식 기저나 정규 기저로 원소를 표현했을 때, 각항의 계수나 GF(2) 상에 존재한다. 즉, 모든 계수는 0 또는 1이며, 다항식 기저로 표현했을 때, 최고차 항의 차수는 m을 넘지 않는다.
모든 항의 계수가 0 또는 1이므로 이 형태의 유한체는 하드웨어로 구현하기에 가장 적합하다. 특히 두 원소를 더하기 위해서 각 항의 계수에 대해 mod 2 덧셈을 하므로 이는 XOR 연산으로 대신할 수 있다.
둘째, 3.2 GF((2m)n)에 대하여 설명한다.
GF(2m) 형태의 유한체는 하드웨어 구현에 적합한 반면, 비트 연산이 많기 때문에 스프트웨어 구현에는 적합하지 못하다. 또한 하드웨어 구현에서도 회로의 모듈화를 통해 구현 복잡도를 줄일 수 있는 것으로 알려져 있다[21]. 이를 위해 GF((2m)n) 형태의 유한체가 제안되었다.
GF((2m)n)에서는 원소를 다항식 기저나 정규 기저로 표현했을 때, 각 항의 계수가 GF(2m)상에 존재한다. 즉, 모든 계수는 0에서 부터 2m사이의 값을 갖는다. GF(2m)을 하위체(subfield)라 하며 전체 GF((2m)n)을 복합체(compositefield)라 한다.
m값은 보통 컴퓨터의 레지스터 크기와 비슷하게 정하고, 하위체에서의 연산들 중 덧셈과 뺄셈은 XOR로 쉽게 수행할 수 있다. 또한, 하위체 GF(2m)의 생성자(generator)γ에 대하여 하위체의 임의의 원소 α=γi(α∈GF(2m)/{0};0≤i<2m-1)을 만족하므로, (α,i)의 쌍을 α에 대해서 저장한 log 테이블과 i에 대해서 저장한 antilog 테이블을 사용하여 곱셈과 역원을 쉽게구할 수 있다. 즉, 하위체 GF(2m) 상의 두 원소 α, β의 곱은 다음과 같이 구한다.
αβ=antilog[(log[α]+log[β]) mod (2m-1)]
또한 역원은 다음과 같이 구한다.
α-1=antilog[-log[α] mod (2m-1)]
그 동안 제안된 복합체는 GF((28)13)과 GF((216)11)이 있다. 그러나, 현재 가장 널리 사용되되는 컴퓨터들은 32비트 혹은 64비트 연산을 매우 빠른 시간 내에 수행할 수 있다. 따라서, GF((232)m) 혹은 GF((264)m) 형태의 복합체를 사용하는 것이 보다 효율적이다. 하지만 복합체를 이용할 경우 하위체에서의 곱셈과 역원을 구할 때 사용되는 두개의 테이블의 크기는 하위체의 크기와 동일하므로, GF((232)m) 형태의 복합체를 사용하기 위해서는 32GBytes의 메모리가 필요하나, 이는 현재의 컴퓨터들에서는 비현실적인 크기의 메모리이다. 따라서, GF((28)m) 혹은 GF((216)m) 형태로 제안된다.
마지막 셋째, GF(pm)에 대해 설명한다.
소프트웨어 구현에서의 성능을 향상시키기 위한 GF((2m)n)은 GF(2m) 형태의 하위체를 사용하므로 하위체에서의 연산에 필요한 추가비용(overhead)이 발생하며, 이를 해결하기 위해 많은 메모리를 사용하는 단점이 있다. 이러한 단점을 없애고소프트웨어 구현시 보다 높은 효율성을 위해 Bailey 등은 다음 정의와 같은 GF(pm) 형태의 유한체를 제안하고, 이를 최적확장체(OEF : Optimal Extention Field)라 이름 붙였다.
정의 2.2 (최적확장체(OEF : Optimal Extention Field)) 다음 두가지 성질을 만족하는 유한체 GF(pm)를 최적확장체라 한다.
1. p는 pseudo-Mersenne prime(log2c≤n/2일 때, 2n±c로 표현되는 소수)이다. 2. GF(p)에 대한 기약 이항식(irreducible binomial) P(x)=xm-ω가 존재한다.
최적확장체는 GF(p)를 하위체로 삼고, p의 값을 하나의 컴퓨터 레지스터로 표현할 수 있는 최대 크기 혹은 이보다 약간 작은 소수로 선택하기 때문에, 하위체 연산시 일반적인 컴퓨터 중앙처리장치(CPU)의 연산기능을 그대로 사용할 수 있다. 따라서, 32비트 혹은 64비트의 하위체를 사용할 경우 확장체(extension field)의 원소를 표현한 다항식의 항의 개수를 크게 줄일 수 있으므로 확장체 연산을 보다 빠르게 수행할 수 있다. 또한, 특성계수가 2인 유한체에서는 존재하지 않는 기약 이항식이 존재하므로 이를 이용한 확장체에서의 모듈라 감소시 계산 복잡도를 낮출 수 있다. 마지막으로, p가 pseudo-Mersenne prime일 경우 하위체에서의 모듈라 감소가 아주 쉽게 구현될 수 있다. 특히 다음 정의와 같은 형태의 최적확장체는 각각 하위체와 확장체에서의 모듈라 감소를 보다 빠르게 수행할 수 있는 특징을 갖는다.
정의 2.3 p=2n±1 값을 갖는 최적확장체를 Type Ⅰ OEF라 한다.
정의 2.4 xm-2 형태의 기약 이항식을 갖는 최적확장체를 Type Ⅱ OEF라 한다.
이와 같은 좋은 특성들로 인해 최근들어 최적확장체에 대한 연구가 활발히 진행되고 있으며, 본 발명 또한 최적확장체에서의 연산을 보다 효율적으로 구현하기 위한 것으로, 앞으로는 특별한 언급이 없는 한 GF(pm)으로 표기하는 유한체는 최적확장체를 의미한다.
유한체 상에서의 곱셈은 덧셈과 뺄셈에 비하여 상대적으로 시간이 많이 걸리는 연산이면서도, 타원곡선 상에서의 연산에서 가장 많이 사용되는 연산이다. 따라서 곱셈을 빠르게 수행하는 것이 전체 시스템의 성능 향상에 가장 중요하다.
유한체 상의 두 원소 A(x)와 B(x)의 곱은 다음과 같이 표현한다.
C(x)=A(x)×B(x) mod P(x)
A(x)=am-1xm-1+...+a1x+ao
B(x)=bm-1xm-1+...+b1x+bo
C(x)=cm-1xm-1+...+c1x+co(2.13)
식 (2.13)을 계산하기 위해서 다항식의 곱셈과 유한체 상에서의 모듈라 감소(modular reduction)의 두 과정을 수행해야 한다. 이 두 과정 중 첫번째, 다항식 곱셈을 빠르게 수행하기 위한 기존의 연구들에 대해 살펴보면 다음과 같다.
먼저, 다항식 곱셈의 가장 간단한 방법(school book method)은 다음과 같다.
(2.14)
이 경우 m2번의 곱셈과 m2-1번의 덧셈이 필요하다.
분할 해결법(divide-and-conquer) 방식의 곱셈을 다항식 곱셈에 적용시키면 다음과 같다.
m개의 항을 갖는 m-1차 다항식은 m이 짝수일 때 식(2.15)와 같이 나타낼 수 있고, 식(2.16)과 같은 중간과정을 수행한다.
(2.15)
D0(x)=Al(x)Bl(x)
D1(x)=[Al(x)+Ah(x)][Bl(x)+Bh(x)] (2.16)
D2(x)=Ah(x)Bh(x)
따라서 식(2.16)을 이용해 C'(x)=A(x)B(x)를 다음과 같이 구할 수 있다.
(2.17)
m이 홀수일 경우 A(x)와 B(x)를 각각 상위 (m+1)/2개의 항과 하위 (m-1)/2개의 항으로 나누어 같은 방식으로 계산하는 것이 가장 빠르다.
식(2.16)를 재귀적으로 수행할 때, 전체 m-1차 다항식 곱셈에 소요되는 시간 T(m)은 다음과 같다.
(2.18)
식 (2.18)을 풀어 시간 복잡도를 구하면 다음과 같다.
또한 m이 2의 거듭제곱 형태일 때 m-1차 다항식의 곱셈에 필요한 하위체에서의 곱셈과 덧셈 횟수는 다음 정리와 같다.
정리 2.2 (Paar) 두개의 m-1차 다항식을 곱함에 있어서, m≤2t이면, 하위체에서의 곱셈과 덧셈 횟수는 다음과 같다.
#MUL=, #ADD≤
정리 2.2를 확장하여 m≤2tㅣ형태일 때 필요한 하위체에서의 곱셈과 덧셈횟수는 다음 정리와 같다.
정리 2.3 (Guajardo) 두개의 m-1차 다항식을 곱함에 있어서, m≤2tl이면, 하위체에서의 곱셈과 덧셈 횟수는 다음과 같다.
#MUL=,
#ADD=
정리 2.3에서 l=1일 경우, 정리 2.2와 같아진다.
정리 2.3은 곱하고자 하는 다항식이 2t-1차 다항식으로 나누어질 때 각각의 묶음을 KOA를 이용하여 계산하고, 그 결과를 다시 기본적인 방법으로 곱하는 방식을 취한다.
이상 설명한 바와 같이, 다항식 곱셈은 일반적으로 매우 긴 정수의 곱셈과 비슷하여 정수 곱셈 알고리즘을 사용할 수 있다. 정수 곱셈의 경우 O(nlognloglogn)의 시간 복잡도를 갖는 알고리즘과 같은 빠른 알고리즘이 존재한다. 하지만 이와 같은 알고리즘은 타원곡선에 사용되는 유한체에서와 같이 곱하고자 하는 다항식의 길이가 작은 경우에는 비효율적이므로 실제 구현에서는 사용되지 않는다. 따라서, 유한체 곱셈을 위한 다항식 곱셈은 상술된 기본적인 방법(school book method)과 KOA(Karatsuba-Ofman Algorithm)방식, 혹은 이 두가지의 혼합 형태가 주로 사용되어 왔다. 이 중, KOA에 의한 다항식 곱셈은 타원곡선에서와 같이 항의 개수가 작은 경우 가장 좋은 성능을 나타내며, 2t-1차 다항식의 경우 최적의 성능을 보인다.
그러나, 유한체 Fp위에서 정의되어 있는 타원곡선 E/Ep가 암호학적으로 안전하려면, 타원곡선 E/Fp 위의 Fpm-point들의 개수 Nm(= #E(Fpm))이 큰 소인수를 지녀야 한다. 일반적으로 Nm≒n이고, n이 m을 나누는 경우에 Nn은 Nm을 나누기때문에, m이 소수일 때 Nm이 큰 소인수를 가질 확률이 가장 커진다. 역으로, m이 짝수이거나 2의 멱승으로 표현되는 수일 때는 Nm이 큰 소인수를 가질 수 없으므로, 암호학적으로 안전하지 못한 타원곡선밖에 만들 수 없는 문제가 있었다.
본 발명은 상기와 같은 기존의 문제점을 해결하여 보다 빠른 타원곡선 암호화를 구현하도록 창작된 것으로서, 그 목적은 타원곡선 암호시스템 구현시 필수적으로 수행되고 속도에 매우 큰 영향을 미치는 다항식의 곱셈 및 제곱 연산을 빠르게 수행할 수 있도록 된 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법을 제공하고자 하는 것이며, 특히 2t+ l (0≤ l < 2t)차 다항식과 같이 일반적인 경우에 보다 빠른 곱셈을 수행할 수 있도록 함과 아울러 기존에 일반적인 다항식의 곱셈과 동일한 방법으로 연산하던 유한체 제곱을 보다 빠르게 수행할 수 있는 방법을 제공하여, 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법을 구현하고자 하는 것이다.
즉, m-1차 다항식의 곱셈은 m-1차 항을 제외한 나머지 m-2차 다항식의 곱셈과 이 과정에서 얻을 수 있는 중간 계산 결과를 이용하면, 추가적으로 m-1번의 곱셈을 수행하여 전체 곱셈 결과를 얻을 수 있고, 이와 같은 과정을 계속하여 2t-1 (2t< m)차 다항식까지 적용시켜, 그 단계에서 KOA를 이용한 최적의 곱셈횟 수로 다항식의 곱셈을 수행할 수 있게 함으로써, 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법을 구현하고자 하는 것이다.
도 1은 본 발명이 적용되는 메시지 통신 시스템 블록도이고,
도 2는 본 발명의 일 실시예에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 방법을 설명하는 흐름도이고,
도 3은 본 발명의 일 실시예에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명방법을 설명하는 흐름도이고,
도 4는 다항식 곱셈 방식별 곱셈 횟수를 나타내는 그래프이고,
도 5는 다항식 제곱 방식별 곱셈 횟수를 나타내는 그래프이다.
※ 도면의 주요부분에 대한 부호의 설명
10, 20 : 단말기 30 : 인터넷 망
상기와 같은 목적을 달성하기 위하여 본 발명에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 방법은, 타원곡선 암호 시스템을 이용하여 사용자 A가 통신망을 매개로 사용자 B에게 메시지 M을 암호화하여 보내는 방법에 있어서, 상기 사용자 A측에서 송신할 임의 크기의 상기 메시지 M을 입력받는 메시지 입력 단계; 상기 사용자 A 및 B측에서, 일정 범위 내의 임의의 제 1정수를 개인키로 선택하는 개인키 선택 단계; 상기 사용자 A 및 B측에서 상기 선택된 개인키와 타원곡선 상의 다항식으로 표시되는 임의 좌표와의 상호 연산결과로 공개키를 생성하고, 상기 사용자 A측에서 상기 일정 범위 내의 임의의 제 2정수와 상기 좌표를 상호 연산하여 제 1 값을 생성하되, 상기 연산 시 짝수 차 다항식( 항수 m, 최고 차수 m-1 )으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하는 하위 1단계와, 나머지 m-1차 항을 곱하기 위한 중간값을 구하되, 상기 중간 값은 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 하위 제 2단계와, 마지막으로 상기 하위 제 1단계에서 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 하위 제 2단계에서 구해진 중간값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하는 하위 제 3단계를 수행하여 이루어지는 제 1연산 단계; 상기 사용자 A측에서 상기 제 1연산 단계에서 생성된 상기 사용자 B측의 공개키와 상기 제 2정수를 상호 연산하되, 상기 연산 시 짝수 차 다항식( 항수 m, 최고 차수 m-1 )의 곱셈 연산은, 상기 하위 제 1 내지 하위 제 3단계를 수행하여 이루어지는 제 2연산 단계; 상기 입력된 메시지 M을 상기 타원곡선 상의 한 좌표에 끼워 넣기하고, 상기 메시지 M이 삽입된 좌표와 상기 제 2연산 단계의 연산 결과 좌표를 기약된 기약식에 대입하여 제 2 값으로 생성하는 메시지 암호화 단계; 및 상기 생성된 제 1 값 및 상기 제 2 값을 통신망을 매개로 원하는 상대 단말기측으로 송신하는 메시지 암호화 송신 단계를 포함하여 구성된다.
또한, 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명 방법은, 타원곡선 암호 시스템을 이용한 암호화 방법에 있어서, 송신할 임의 크기의 서명 메시지를 입력받는 메시지 입력 단계;
일정 범위 내의 임의의 정수를 선택하는 단계; 상기 선택된 정수를 타원곡선 상의 다항식으로 표시되는 임의 좌표와 상호 연산하되, 짝수 차 다항식( 항수 m, 최고 차수 m-1 )으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하는 하위 1단계와, 나머지 m-1차항을 곱하기 위한 중간 값을 구하되, 상기 중간 값은 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 하위 제 2단계와, 마지막으로 상기 하위 제 1단계에서 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 하위 제 2단계에서 구해진 중간값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하는 하위 제 3단계를 수행하여 이루어지는 연산 단계; 상기 연산에 의해 구해진 생성 값을 기약된 제 1 기약식에 의거하여 제 1 값으로 생성하는 제 1 값 생성단계; 상기 입력된 메시지, 상기 제 1 값, 및 해당 개인키 값을 기약된 제 2 기약식에 의거하여 연산하여 제 2 값으로 생성하는 제 2 값 생성 단계; 및 상기 생성된 제 1 값 및 제 2 값을 통신망을 매개로 원하는 상대 단말기측으로 송신하는 메시지 암호화 송신 단계를 포함하여 구성된다.
특히, 상기 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법에서, 상기 연산 단계에서의 다항식 곱셈 연산 시, 상기 m-2차 다항식의 곱을라 하면, 여기에 상기 m-1차 항이 추가된 다항식의 곱은, i = 0,1,...,m-2일 경우 ci= ci', i = m-1,...,2m-3일 경우 ci= ci'+ (am-1+ ai-m+1)(bm-1+ bi-m+1) - (am-1)(bm-1) - (ai-m+1)(bi-m+1), i = 2m-2일 경우 ci= (am-1)(bm-1)"의 식을 이용하여 구하며, 상기 i = m-1,...,2m-3일 경우의 상기 (ai-m+1)(bi-m+1)는 상기 하위 1단계에서 KOA 방식에 의해 구해진 상기 중간 값을 반복 이용하는 것을 특징으로 하고, 상기 연산 시, 2차 다항식의 제곱의 연산은, 반복곱셈으로 나타나는 계수들의 곱을 포함하는 중간 값을 구하는 하위 4단계와, 그 중간값의 덧셈 및 뺄셈을 이용하여 상기 2차 다항식의 제곱의 계수들을 산출 생성하는 하위 5단계로 이루어진 것을 특징으로 하며, 상기 하위 4단계에서 구해진 중간 값 d0∼4는, 상기 2차 다항식에서 상수를 a0, 1차 계수를 a1, 2차 계수를 a2라 할 때, d0= a0 2, d1= 2a1a0, d2= (a2+ a1+ a0)2, d3= 2a2a1, d4= a2 2이고, 상기 하위 4단계에서 상기 2차 다항식을 제곱한 다항식에서, 상수를 c0, 1차 계수를 c1, 2차 계수를 c2, 3차 계수를 c3, 4차 계수를 c4라 할 때, c0= d0,c1= d1,c2= d2- (d0+ d1+ d3+ d4), c3= d3, c4= d4인 것을 특징으로 한다.
이어, 본 발명의 바람직한 실시예에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법에 대하여 설명하기로 한다.
도 1은 본 발명이 적용되는 메시지 통신 시스템의 블록도로서, 타원곡선 암호화를 구현하는 단말기 A(10)와 단말기 B(20), 및 이 단말기들(10,20)간의 상호 메시지 통신을 위한 인터넷망과 같은 통신망(30)으로 구성되어 있다. 이하의 설명에서 상기 단말기 A(10)는 사용자 A측으로, 상기 단말기 B(20)는 사용자 B측으로 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 방법을 설명하는 흐름도로서, 먼저, 유한체, 타원곡선, 상기 타원곡선 상의한 점 G = (xG, yG), 오더(Order) Ord(G) = n를 포함하는 도메인 파라미터를 셋업(Setup)하고(S201), 사용자 A측에서 임의 크기의 메시지 M을 입력한다(S202). 상기 사용자 A, B는 1 내지 n-1 범위 내의 임의의 정수 d를 개인키로 선택한 다음 dG를 계산하여 나온 결과 Q값을 공개키로 만들어 공개한다(S203).
상기 사용자 A는 1 내지 n-1 범위 내의 임의의 정수 k를 선택하여(S204) R = kG를 계산하되(S205), 상기 단계 S205에서 상기 공개키 Q = dG 및 상기 kG 계산시 상기 G = (xG, yG)에서 xG와 yG가 다항식의 원소이므로 발생되는 두 다항식간의 곱셈의 연산 방법은, 상기 각 다항식의 항 수가 m(m은 홀수)이고 차수가 m-1인 다항식 일 때, m-1보다 작으면서 최대 크기인 2t-1차(2t< m, t는 정수), 즉 m-2차 항까지 KOA( Karatsuba-Ofman Algorithm) 방식을 적용하여 곱셈 연산을 수행함으로써, "= "을 계산하고, 상기에 m-1차 항이 추가된 다항식의 곱, "= "을 구하되, "i = 0,1,...,m-2일 경우 ci= ci', i = m-1,...,2m-3일 경우 ci= ci'+ (am-1+ ai-m+1)(bm-1+ bi-m+1) - (am-1)(bm-1) - (ai-m+1)(bi-m+1), i = 2m-2일 경우 ci= (am-1)(bm-1)"의 식을 이용하여 구하며, 상기 i = m-1,...,2m-3일 경우의 상기 (ai-m+1)(bi-m+1)는 상기에서 계산되어 저장된 중간 값을 이용하여 이를 계산하기 위한 곱셈과정을 생략함으로써, 계산 속도를 빠르게 할 수 있다. 이와 같이 본 발명에 따른 짝수차 다항식 곱셈 연산 방법에 대한 자세한 설명은 후술하도록 한다.
상기 사용자 A는 상대방 사용자 B의 공개키 QB= sBG를 찾아 kQB를 계산하되, 상기 kQB의 계산시 상기 QB가 다항식의 원소이므로 발생되는 두 다항식간의 곱셈의 연산은, 상기 단계 S205에서의 연산 방법과 동일하게 수행하여 계산하도록 한다(S206).
마지막으로, 메시지 M을 상기 타원곡선 위의 한 점 PM으로 끼워 넣기 하여 (R=kG, S=PM+kQB)를 생성하고(S207), 상기 통신망(30)을 매개로 상기 사용자 B에게 전송하도록 한다(S208)
한편, 상기 단계 S203에서, 상기 공개키 Q = dG 및 상기 kG 계산시 2차 다항식의 제곱인= (a2x2+ a1x + a0)2를 계산할 경우를 예를 들어 설명하면, "d0= a0 2, d1= 2a1a0, d2= (a2+ a1+ a0)2, d3= 2a2a1, d4= a2 2"의 수식을 이용하여 중간 값 d0∼d4를 구한 후, 상기 중간 값 d0∼d4를 이용하여 상기 2차 다항식의 제곱의 결과 값 "c0= d0,c1= d1,c2= d2- (d0+ d1+ d3+ d4), c3= d3, c4= d4"를 구하도록 한다.
도 3은 본 발명의 일 실시예에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명방법을 설명하는 흐름도로서, 타원곡선 암호 시스템을 이용하여 사용자 A가 서명 메시지 M을 통신망(30)을 매개로 사용자 B에게 전자 서명하여 보내는 경우를 일 예로 설명하면 다음과 같다.
먼저, 도메인 파라미터(즉, 공개 정보)를, 유한체 F23, 타원곡선 y2= x3+ x + 1, 상기 타원곡선 상의 한 점 G = (13, 7), 오더(Order) Ord(G) = n = 7로 셋업(Setup)한다(S301).
상기와 같은 시스템 셋업 상태에서, 각 사용자 A,B는 자신의 개인키로 정수 d∈{0,1, ..., n-1}을 임의로 3을 선택하고, 공개키 Q = dG = 3(13, 7) = (17,3)을 계산하여 공개키 Q를 만드는 키 생성(Key Generation) 작업을 한다(S302).
사용자 A는 서명 메시지 M을 입력하고, 하쉬값 H(M)은 e = 6으로 하며(S303), k∈{0,1, ..., n-1} 중에서 임의 정수 k = 4를 선택하여(S304) R=kG를 "(x1, y1) = kG = 4(13, 7) = (17, 20)"와 같이 계산하는 데(S305), 여기서 G의 좌표는 상기 단계 S301와 같은 셋업에 의해 정수(13, 7)로 표현되었으나, 예를 들어 최적확장체 GF(Pm)에서 m이 복수일 경우 다항식 좌표로 표현될 것이므로, 다항식의 곱셈 및 제곱 연산이 필요하게되며, 이 때 다음과 같은 본 발명에 따라 연산함으로써 속도를 빠르게 하도록 한다.
본 발명에 따른 연산 방법은, 짝수 차 다항식( 항수 m, 최고 차수 m-1 )으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하고, 나머지 m-1차 항을 곱하기 위한 중간 값을 구한 후, 최종적으로 상기 KOA 방식에 의해 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 m-1차 항을 곱하기 위한 중간 값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하도록 하는 데, 이와 같이 본 발명에 따른 짝수 차 곱셈 연산 방법에 대한 보다 상세한 설명은 후술하도록 한다.
상기 단계 S305에 이어, 상기 (x1, y1) = kG = (17, 20)의 x1을 정수 /x1 = 17로 나타낸 후( 즉, x1이 다항식의 좌표 값이더라도 계수 합의 평균과 같이 대표되는 정수로 표시 함)(S306), r = (/x1 mod n) = (17 mod 7) = 3과같이 r을 생성한다(S307).
이어, 기약식에 의해 " s = k-1(e + dr) mod n = 4-1(6 + 3×3) mod 7 = 2(15) mod 7 = 2 "을 계산하여 S = 7을 구하고(S308), 마지막으로, 상기 단계 S307에서 구해진 r과 상기 단계 S308에서 구해진 S 즉, 암호화된 서명 메시지 (r, s)를 통신망(30)을 매개로 사용자 B에게 송신하도록 한다(S309).
이어, 후술하기로 했던 도 2의 상기 단계 S203, S205 및 S206, 및 도 3의 상기 단계 S305 등에서 필요한 다항식의 곱셈 및 제곱 연산 방법에 대하여 상세히 설명하기로 하되, 다항식의 곱셈 연산 중 4차 다항식의 곱셈을, 그리고 2차 다항식의 제곱 연산을 일 예로 설명하면 다음과 같다.
m - 1차 다항식의 곱셈은 m - 1차 항을 제외한 나머지 m - 2차 다항식의 곱셈과 이 과정에서 얻을 수 있는 중간 계산 결과를 이용하면, 추가적으로 m - 1번의 곱셈을 수행하여 전체 곱셈 결과를 얻을 수 있다. 이와 같은 과정을 계속하여 2t-1, (2t<m)차 다항식까지 적용시켜, 그 단계에서 KOA를 이용한 최적의 곱셈 횟수로 다항식 곱셈을 수행할 수 있다.
개의 m - 2차 다항식의 곱을라 하면, 여기에 상기 m-1차 항이 추가된 다항식의 곱,은 다음(1)(2)(3)과 같이 구할 수 있다.
(1) i = 0,1,...,m-2일 경우 ci= ci'이고,
(2) i = m-1,...,2m-3일 경우 ci= ci'+ (am-1+ ai-m+1)(bm-1+ bi-m+1) - (am-1)(bm-1) - (ai-m+1)(bi-m+1)이고,
(3) i = 2m-2일 경우 ci= (am-1)(bm-1)이다.
상기 (2)의 경우에서 (ai-m+1)(bi-m+1) (i = m - 1,...,2m-3)는 C'(x)를 계산하는 과정에서 얻어진 값을 이용할 수 있으므로 이를 계산하기 위한 추가적인 곱셈은 필요하지 않고, (am-1+ ai-m+1)(bm-1+ bi-m+1)의 곱셈만 필요하다.
4차 다항식의 곱셈을 상기 (1)(2)(3)에 적용시킨 예는 다음과 같다.
= (a4x4+ a3x3+ a2x2+ a1x + a0)(b4x4+ b3x3+ b2x2+ b1x + b0)
위 식에서 3차식까지를 KOA에 적용했을 때 얻을 수 있는 중간 값은 다음과 같다.
d0= a0b0
d1= (a1+ a0)(b1+ b0)
d2= a1b1
d3= (a2+ a0)(b2+ b0)
d4= (a3+ a2+ a1+ a0)(b3+ b2+ b1+ b0)
d5= (a3+ a1)(b3+ b2)
d6= a2b2
d7= (a3+ a2)(b3+ b2)
d8= a3b3
상기 중간 값 d0∼8을 이용한 3차 다항식의 곱은 다음과 같다.
c'0 = d0
c'1 = -d0 + d1 - d2
c'2 = -d0 + d2 + d3 + d6
c'3 = d0 - d1 + d2 - d3 + d4 - d5 + d6 - d7 + d8
c'4 = -d0 - d2 + d5 + d6 - d8
c'5 = d0 - d1 - d6 + d7 - d8
c'6 + d0 - d3 + d8
또한 나머지 4차 항을 곱하기 위한 중간 값은 다음과 같다.
d9 = (a4 + a0)(b4 + b0)
d10 = (a4 + a1)(b4 + b1)
d11 = (a4 + a2)(b4 + b2)
d12 = (a4 + a3)(b4 + b3)
d13 = a4b4
마지막으로, 4차 다항식의 곱의 계수들은 상기 중간값 d0∼8, 상기 c0'∼ c6', 상기 중간값
d9∼13을 이용하여 다음과 같이 구할 수 있다.
c0 = c'0
c1 = c'1
c2 = c'2
c3 = c'3
c4 = c'4 + d9 - d0 - d13
c5 = c'5 + d10 - d2 - d13
c6 = c'6 + d11 - d6 - d13
c7 = c'7 + d12 - d8 - d13
c8 = d13
결과적으로, 기존의 KOA에 의한 4차 다항식의 곱셈은 총 17번의 곱셈이 필요하지만, 제안된 본 발명의 곱셈 방법에 의하면 14번의 곱셈이 필요하다.
KOA의 분할 해결법(divide-and-conquer)을 사용할 경우 긴 다항실을 두 개의 다항식으로 나누어 재귀적인 곱셈 방식을 사용한다. 하지만, 2t- 1차 다항식이 아닌 경우, 재귀적인 알고리즘 적용시 다항식의 분할이 불균형을 이루므로 중복되는 계산이 행해지게 되어 전체 연산 속도가 저하된다. 따라서 KOA 알고리즘에 의해 분할된 다항식이 2t차 형태일 때, 기존의 KOA 알고리즘을 계속 사용하지 않고 제안 곱셈 알고리즘을 사용하여 곱셈을 행하면 전체 성능을 향상시킬 수 있다.
한편, 유한체 제곱 연산은 타원곡선 연산에서 곱셈과 비슷한 빈도로 자주 사용되지만, 기존의 연구에서는 제곱을 일반적인 다항식 곱셈과 같은 방법으로 계산하여 왔다. 본 발명에서는 2차 다항식의 제곱을 일반적인 곱셈보다 효율적으로 계산할 수 있는 방법을 제안한다.
다음과 같은 2차 다항식의 제곱을 계산한다고 가정하자.
= (a2x2+ a1x + a0)2
이를 계산하기 위해 다음과 같은 중간 값을 계산한다.
d0=a0 2
d1= 2a1a0
d2= (a2+ a1+ a0)2
d3= 2a2a1
d4= a2 2
상기 중간 값 d를 이용한 제곱의 결과는 다음과 같다.
c0=d0
c1= d1
c2= d2- (d0+ d1+ d3+ d4)
c3= d3
c4= d4
상기 중간값 d에서 곱하기 2는 쉬프트 혹은 덧셈으로 구현할 수 있으므로 곱셈 횟수에는 포함되지 않는다. 따라서 기존의 다항식 곱셈 방법으로 최소 6번의 곱셈이 필요하지만 제안 방법에서는 5번의 곱셈으로 계산할 수 있다.
이상과 같이 2차 다항식의 제곱을 빠르게 계산할 수 있으므로, 1절에서 설명한 곱셈 방법에 의해 일반 다항식의 제곱을 계산할 때, 2차식으로 분할되는 경우에도 보다 빠른 계산을 수행할 수 있다.
특수한 경우로서 3t - 1 (t≥2)차 다항식의 경우, KOA에 의해 2개의 다항식으로 분할하지 않고, 3개의 다항식으로 분할하여 위의 방법을 재귀적으로 적용하게 되면 보다 많은 이득을 가져올 수 있다.
이상 상세히 설명한 바와 같이 본 발명에 따른 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자 서명 방법은, 타원곡선 암호시스템 구현시 필수적으로 수행되고 속도에 매우 큰 영향을 미치는 다항식의 곱셈 및 제곱 연산을 빠르게 수행할 수 있게 되어, 암호화 및 전자 서명을 속도를 빠르게 하며, 빠른 연산속도의 구현으로 최적 확장체 GF(pm)에서 m을 높을 수 있게 되어 암호화 안전도를 향상시킬 수 있는 바, 본 발명에 의한 곱셈 및 제곱 연산 효과에 대하여 보다 상세히 설명하면 다음과 같다.
다항식 기저 표현법을 사용하는 유한체에서의 곱셈은 다항식 곱셈 알고리즘을 필요로 한다. 다항식 곱셈을 위해서는 덧셈, 뺄셈, 곱셈 등의 단정도 연산이 필요하지만, 이 중 곱셈 연산은 덧셈, 뺄셈보다 2 ∼ 8 배 정도 느리기 때문에 곱셈 연산의 횟수는 전체 다항식 곱셈의 속도에 가장 큰 영향을 미친다.
다항식 곱셈 알고리즘은 긴 정수의 곱셈과 비슷하여 여기에서 사용되는 알고리즘을 사용한다. 타원곡선을 위한 유한체와 같이 차수가 작은 다항식의 곱셈에는 분할 해결법을 사용하는 KOA(Karatsuba-Ofman Algorithm)가 최소의 곱셈 횟수로 연산을 수행한다. 하지만 KOA는 2t-1차 다항식이 아닌 경우에서는 KOA를 그대로 사용할 수 없어, 많은 변형 알고리즘들이 제안되어 왔다. 이들 알고리즘은 KOA의 이론적 시간 복잡도에 비하여 많은 차이를 보인다. 또한 타원곡선 암호시스템에서는 안전성의 이유로 2t-1차 다항식으로 표현되는 유한체를 사용할 수 없으므로 일반적인 차수의 다항식에서의 빠른 곱셈 알고리즘이 필요로 한다.
본 발명에서는 2t차 다항식에서 기존의 알고리즘보다 적은 곱셈 횟수로 다항식 곱셈을 수행할 수 있는 방법과 이를 활용하여 일반적인 차수의 다항식에 적용할 수 있는 방법을 제안했다. 본 발명의 제안 방식과 기존의 연구들에 의한 곱셈 횟수는 도 4와 같다.
또한, 본 발명에서 제안하는 다항식의 제곱 방법은 기본적으로 2차 다항식의 제곱시 곱셈 횟수를 6번에서 5번으로 줄였다. 이러한 결과는 기존의 곱셈 방법에 의한 제곱 계산시 2차 다항식으로 분할되는 경우에도 활용이 가능하다. 이러한 결과를 정리하여, 본 발명에서 제안된 다항식 제곱 방법이 적용가능한 차수의 다항식의 제곱에 대한 필요한 곱셈 횟수는 다음과 같은 표 및 도 5와 같다.
* 제곱 방식 별 필요한 단정도 곱셈 횟수
다항식 차수 School book KOA 본 발명의 곱셈 본 발명의 제곱
2 9 7 6 5
4 25 17 14 13
5 36 21 18 15
6 49 25 24 23
8 81 43 36 27
9 100 51 41 39
10 121 59 50 43
11 144 63 54 45
12 169 71 66 61
13 196 75 71 69
14 225 79 78 67
타원곡선은 유한체 상에서 정의되므로 타원곡선 상에서의 연산은 유한체 연산의 성능에 좌우된다. 따라서 높은 보안성을 지니면서 빠른 계산을 수행할 수 있는 유한체를 찾으려는 연구가 계속하여 진행되어 왔고, 이 중 매우 큰 특성 계수를 갖는 GF(pm) 형태의 유한체가 소프트웨어 구현시 많은 장점을 보이는 것으로 알려wu 있는 바, 본 발명에서는 GF(pm)상에서의 곱셈의 성능을 향상시킬 수 있는 다항식 곱셈 방법을 구현하고, 성능을 분석하였다. 본 발명에서 제안하는 곱셈 방법은 기존의 방식보다 최적 곱셈 횟수에 근접시켰고, 최대 27% 정도의 성능 향상을 보인다.
또한 기존의 연구에서는 유한체 제곱 연산을 곱셈과 같은 방법으로 계산하였지만, 본 발명에서는 제곱을 보다 효율적으로 계산할 수 있는 방법을 제안하였다. 새로운 다항식 제곱 방법은 기존의 다항식 곱셈 알고리즘 중 가장 곱셈 횟수가 적은 KOA 방식보다 적은 횟수를 보이거나 이와 비슷하게 나타난다. 구현 결과 기존의 곱셈 방식을 사용하는 것 보다 최대 40.1% 정도의 속도 향상을 보인다.
마지막으로 하위체 모듈라 감소를 수행함에 있어서, 덧셈과 뺄셈 후의 경우에 대해서 최적화 하여 기존의 방법보다 최대 40.5% 정도의 속도 향상을 보인다.
따라서, 본 발명에서 구현한 빠른 연산 방법을 종합하여 타원곡선 암호시스템에 적용했을 경우, 전체 성능은 최대 32.7% 정도 향상될 수 있음을 알 수 있다.

Claims (8)

  1. 타원곡선 암호 시스템을 이용하여 사용자 A가 통신망을 매개로 사용자 B에게 메시지 M을 암호화하여 보내는 방법에 있어서,
    상기 사용자 A측에서 송신할 임의 크기의 상기 메시지 M을 입력받는 메시지 입력 단계;
    상기 사용자 A 및 B측에서, 일정 범위 내의 임의의 제 1정수를 개인키로 선택하는 개인키 선택 단계;
    상기 사용자 A 및 B측에서 상기 선택된 개인키와 타원곡선 상의 다항식으로 표시되는 임의 좌표와의 상호 연산결과로 공개키를 생성하고, 상기 사용자 A측에서 상기 일정 범위 내의 임의의 제 2정수와 상기 좌표를 상호 연산하여 제 1 값을 생성하되,
    상기 연산 시 짝수 차 다항식( 항수 m, 최고 차수 m-1 )으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하는 하위 1단계와, 나머지 m-1차 항을 곱하기 위한 중간 값을 구하되, 상기 중간 값은 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 하위 제 2단계와, 마지막으로 상기 하위 제 1단계에서 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 하위 제 2단계에서 구해진 중간값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하는 하위 제 3단계를 수행하여 이루어지는 제 1연산 단계;
    상기 사용자 A측에서 상기 제 1연산 단계에서 생성된 상기 사용자 B측의 공개키와 상기 제 2정수를 상호 연산하되, 상기 연산 시 짝수 차 다항식( 항수 m, 최고 차수 m-1 )의 곱셈 연산은, 상기 하위 제 1 내지 하위 제 3단계를 수행하여 이루어지는 제 2연산 단계;
    상기 입력된 메시지 M을 상기 타원곡선 상의 한 좌표에 끼워 넣기하고, 상기 메시지 M이 삽입된 좌표와 상기 제 2연산 단계의 연산 결과 좌표를 기약된 기약식에 대입하여 제 2 값으로 생성하는 메시지 암호화 단계; 및
    상기 생성된 제 1 값 및 상기 제 2 값을 통신망을 매개로 원하는 상대 단말기측으로 송신하는 메시지 암호화 송신 단계를 포함하여 구성된 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 방법.
  2. 제 1 항에 있어서,
    상기 제 1 및 제 2연산 단계에서의 연산 시,
    상기 m-2차 다항식의 곱을라 하면, 여기에 상기 m-1차 항이 추가된 다항식의 곱은, i = 0,1,...,m-2일 경우 ci= ci', i = m-1,...,2m-3일 경우 ci= ci'+ (am-1+ ai-m+1)(bm-1+ bi-m+1) - (am-1)(bm-1) - (ai-m+1)(bi-m+1), i = 2m-2일 경우 ci= (am-1)(bm-1)"의 식을 이용하여 구하며, 상기 i = m-1,...,2m-3일 경우의 상기 (ai-m+1)(bi-m+1)는 상기 하위 1단계에서 KOA 방식에 의해구해진 상기 중간 값을 반복 이용하는 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 방법.
  3. 제 1 항에 있어서,
    상기 제 1 및 제 2연산 단계에서의 연산 시,
    2차 다항식의 제곱의 연산은, 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 중간 값을 구하는 하위 4단계와, 그 중간값의 덧셈 및 뺄셈을 이용하여 상기 2차 다항식의 제곱의 계수들을 산출 생성하는 하위 5단계로 이루어진 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 방법.
  4. 제 3 항에 있어서,
    상기 하위 4단계에서 구해진 중간 값 d0∼4는, 상기 2차 다항식에서 상수를 a0, 1차 계수를 a1, 2차 계수를 a2라 할 때, d0= a0 2, d1= 2a1a0, d2= (a2+ a1+ a0)2, d3= 2a2a1, d4= a2 2이고, 상기 하위 4단계에서 상기 2차 다항식을 제곱한 다항식에서, 상수를 c0, 1차 계수를 c1, 2차 계수를 c2, 3차 계수를 c3, 4차 계수를 c4라 할 때, c0= d0,c1= d1,c2= d2- (d0+ d1+ d3+ d4), c3= d3, c4= d4인 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 방법.
  5. 타원곡선 암호 시스템을 이용한 암호화 방법에 있어서,
    송신할 임의 크기의 서명 메시지를 입력받는 메시지 입력 단계;
    일정 범위 내의 임의의 정수를 선택하는 단계;
    상기 선택된 정수를 타원곡선 상의 다항식으로 표시되는 임의 좌표와 상호 연산하되,
    짝수 차 다항식( 항수 m, 최고 차수 m-1 )으로 표시되는 좌표와의 곱셈 연산은, m-2차 다항식의 곱을 KOA(Karatsuba-Ofman Algorithm) 방식으로 연산하는 하위 1단계와, 나머지 m-1차 항을 곱하기 위한 중간 값을 구하되, 상기 중간 값은 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 하위 제 2단계와, 마지막으로 상기 하위 제 1단계에서 구해진 계수들의 값과 KOA 방식에 의해 구해진 중간값, 및 상기 하위 제 2단계에서 구해진 중간값들의 덧셈 및 뺄셈을 이용하여 전체 m-1차 다항식의 곱의 계수들을 산출 생성하는 하위 제 3단계를 수행하여 이루어지는 연산 단계;
    상기 연산에 의해 구해진 생성 값을 기약된 제 1 기약식에 의거하여 제 1 값으로 생성하는 제 1 값 생성단계;
    상기 입력된 메시지, 상기 제 1 값, 및 해당 개인키 값을 기약된 제 2 기약식에 의거하여 연산하여 제 2 값으로 생성하는 제 2 값 생성 단계; 및
    상기 생성된 제 1 값 및 제 2 값을 통신망을 매개로 원하는 상대 단말기측으로 송신하는 메시지 암호화 송신 단계를 포함하여 구성된 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명 방법.
  6. 제 5 항에 있어서,
    상기 연산 단계에서의 연산 시,
    상기 m-2차 다항식의 곱을라 하면, 여기에 상기 m-1차 항이 추가된 다항식의 곱은, i = 0,1,...,m-2일 경우 ci= ci', i = m-1,...,2m-3일 경우 ci= ci'+ (am-1+ ai-m+1)(bm-1+ bi-m+1) - (am-1)(bm-1) - (ai-m+1)(bi-m+1), i = 2m-2일 경우 ci= (am-1)(bm-1)"의 식을 이용하여 구하며, 상기 i = m-1,...,2m-3일 경우의 상기 (ai-m+1)(bi-m+1)는 상기 하위 1단계에서 KOA 방식에 의해 구해진 상기 중간 값을 반복 이용하는 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명 방법.
  7. 제 5 항에 있어서,
    상기 연산 단계에서의 연산 시,
    2차 다항식의 제곱의 연산은, 반복 곱셈으로 나타나는 계수들의 곱을 포함하는 중간 값을 구하는 하위 4단계와, 그 중간값의 덧셈 및 뺄셈을 이용하여 상기 2차 다항식의 제곱의 계수들을 산출 생성하는 하위 5단계로 이루어진 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명 방법.
  8. 제 7 항에 있어서,
    상기 하위 4단계에서 구해진 중간 값 d0∼4는, 상기 2차 다항식에서 상수를 a0, 1차 계수를 a1, 2차 계수를 a2라 할 때, d0= a0 2, d1= 2a1a0, d2= (a2+ a1+ a0)2, d3= 2a2a1, d4= a2 2이고, 상기 하위 4단계에서 상기 2차 다항식을 제곱한 다항식에서, 상수를 c0, 1차 계수를 c1, 2차 계수를 c2, 3차 계수를 c3, 4차 계수를 c4라 할 때, c0= d0,c1= d1,c2= d2- (d0+ d1+ d3+ d4), c3= d3, c4= d4인 것을 특징으로 하는 빠른 유한체 연산을 이용한 타원곡선 암호화 전자 서명 방법.
KR1019990058778A 1999-12-17 1999-12-17 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법 KR100341507B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990058778A KR100341507B1 (ko) 1999-12-17 1999-12-17 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990058778A KR100341507B1 (ko) 1999-12-17 1999-12-17 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법

Publications (2)

Publication Number Publication Date
KR20010103134A true KR20010103134A (ko) 2001-11-23
KR100341507B1 KR100341507B1 (ko) 2002-06-21

Family

ID=45789132

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990058778A KR100341507B1 (ko) 1999-12-17 1999-12-17 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법

Country Status (1)

Country Link
KR (1) KR100341507B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100859185B1 (ko) * 2006-05-18 2008-09-18 학교법인 영광학원 유한체 GF(2m)상의 곱셈기

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2657925B1 (en) * 2010-12-24 2018-05-16 Mitsubishi Electric Corporation Signature generating device, method of generating signature, and recording medium
KR102649929B1 (ko) 2022-11-28 2024-03-21 (주)드림시큐리티 저사양 plc를 위한 전자서명 생성 및 검증 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100859185B1 (ko) * 2006-05-18 2008-09-18 학교법인 영광학원 유한체 GF(2m)상의 곱셈기

Also Published As

Publication number Publication date
KR100341507B1 (ko) 2002-06-21

Similar Documents

Publication Publication Date Title
Galbraith Elliptic curve Paillier schemes
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
Khalique et al. Implementation of elliptic curve digital signature algorithm
Koblitz et al. The state of elliptic curve cryptography
Dawahdeh et al. A new modification for menezes-vanstone elliptic curve cryptosystem
US7519644B2 (en) Finite field serial-serial multiplication/reduction structure and method
Jeng et al. An ECC-based blind signature scheme
Dawahdeh et al. Modified ElGamal elliptic curve cryptosystem using hexadecimal representation
US6480606B1 (en) Elliptic curve encryption method and system
US7062043B1 (en) Method of elliptic curve digital signature using coefficient splitting
US7062044B1 (en) Method of elliptic curve cryptographic key agreement using coefficient splitting
JP2007041461A (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
Aung et al. Implementation of elliptic curve arithmetic operations for prime field and binary field using java BigInteger class
KR20040055550A (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
Gligoroski Stream cipher based on quasigroup string transformations in $ Z_p^* $
KR100341507B1 (ko) 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법
Frey et al. Fast bilinear maps from the Tate-Lichtenbaum pairing on hyperelliptic curves
JP4058152B2 (ja) 楕円曲線演算装置
Chou et al. A novel hierarchical key management scheme based on quadratic residues
Saju et al. Design and execution of highly adaptable elliptic curve cryptographic processor and algorithm on FPGA using Verilog HDL
Sarma et al. Public key cryptosystem based on Pell's equation using the Gnu Mp library
El-sisi et al. Reconfigurable implementation of Karatsuba multiplier for Galois field in elliptic curves
JPH1152854A (ja) 有限体上の四則演算装置及び楕円曲線上の群演算装置
Somsuk The alternative Method to Finish Modular Exponentiation and Point Multiplication Processes

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130613

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150109

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20160111

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20180531

Year of fee payment: 17