KR20090090881A - 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 - Google Patents

센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 Download PDF

Info

Publication number
KR20090090881A
KR20090090881A KR1020080016421A KR20080016421A KR20090090881A KR 20090090881 A KR20090090881 A KR 20090090881A KR 1020080016421 A KR1020080016421 A KR 1020080016421A KR 20080016421 A KR20080016421 A KR 20080016421A KR 20090090881 A KR20090090881 A KR 20090090881A
Authority
KR
South Korea
Prior art keywords
elliptic curve
sensor
bit
intermediate result
exclusive
Prior art date
Application number
KR1020080016421A
Other languages
English (en)
Other versions
KR100974624B1 (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 KR1020080016421A priority Critical patent/KR100974624B1/ko
Publication of KR20090090881A publication Critical patent/KR20090090881A/ko
Application granted granted Critical
Publication of KR100974624B1 publication Critical patent/KR100974624B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register

Abstract

센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록매체가 개시된다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법은,
8비트 기반의 유한체
Figure 112008013410865-PAT00001
의 두 원소인
Figure 112008013410865-PAT00002
에 있어서 상기
Figure 112008013410865-PAT00003
에 대한 다항식을
Figure 112008013410865-PAT00004
라하고, 상기
Figure 112008013410865-PAT00005
에 대한 다항식을
Figure 112008013410865-PAT00006
라고 할 때, 상기
Figure 112008013410865-PAT00007
Figure 112008013410865-PAT00008
를 이용하여 유한체 곱셈의 결과값
Figure 112008013410865-PAT00009
를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서, 상기
Figure 112008013410865-PAT00010
를 구성하는 각 워드들의 상위 4비트에 대응하는 상기
Figure 112008013410865-PAT00011
의 사전 연산 테이블의 값과 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 단계; 상기
Figure 112008013410865-PAT00012
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00013
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 단계; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00014
와 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00015
와 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00016
를 생성하는 단계를 포함한다.
본 발명에 의하면, 8비트 센서 모트에서 구현된 타원 곡선 소프트웨어 구현 중에서 가장 뛰어난 성능을 제공하며,
Figure 112008013410865-PAT00017
의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠른 연산 속도를 제공하며, 본 발명은 8비트 Atmega128 프로세서에서 첫 번째 코블리츠(Koblitz) 커브의 구현으로 상기 커브상에서는 타원 곡선 두배 연산이 간단한 유한체 제곱 연산으로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있는 효과가 있다.

Description

센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그 장치 및 이를 기록한 기록매체{Method and Apparatus of elliptic curve cryptography processing in sensor mote and Recording medium using it}
본 발명은 타원 곡선 암호 연산에 관한 것으로, 특히 무선 센서 네트워크에서 사용되는 센서 모트의 일종인 미카즈(Micaz) 센서 모트에서 안전한 키 교환 및 전자 서명 서비스를 수행할 수 있는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법 및 그 장치에 관한 것이다.
최근 유비쿼터스 환경에서 센서 네트워크 기술이 IT839 정책의 일환으로 활성화되고 있으며, 이러한 센서 네트워크는 관리자의 부재와 무선 통신, 자원의 제약 등으로 인하여 공격자가 쉽게 접근하여 공격을 시도할 수 있다.
한편, 암호서비스에 대한 요구가 많아지면서 대칭키 알고리즘에서 발생된 키 관리 문제와 인증 문제를 해결하기 위한 알고리즘이 많이 연구되었다.
1976년 Diffie와 Hellman이 처음으로 공개키 암호 알고리즘의 개념을 소개하였다. 그 후 많은 알고리즘이 제안되었지만, 1978년 RSA가 소개되어 널리 사용되고 있다.
타원 곡선은 1985년 Kobiltz와 Miller에 의해 발표된 이후 꾸준히 연구되어 왔다.
타원 곡선 암호가 발표되었을 당시에는 새로운 암호에 대한 안전성 분석이 충분히 이루어지지 않았으므로 널리 사용되지 못했다.
이 후, 많은 연구자들에 의한 연구 결과에 따르면 같은 안전도에서 비교할 때, RSA에 비해 훨씬 빠르고 효율적이며 짧은 키 길이를 가지는 장점이 있다.
예를 들면, 타원 곡선 암호의 160비트는 RSA의 1024비트와 같은 안전도를 가진다. 이에 따라서 타원 곡선 암호는 무선 인터넷이나 스마트카드 등 제한된 연산능력을 가지는 하드웨어에 적합한 암호 시스템으로 주목받게 되었다.
한편, 다양한 차수
Figure 112008013410865-PAT00018
을 사용하는 상호 간의 거래에 있어서 Versatile 프로세서를 사용함으로써 호환성을 높일 수 있다.
많은 암호시스템에서는 유한체
Figure 112008013410865-PAT00019
에서의 연산을 사용한다. 이는 일반적인 컴퓨터 상에서는
Figure 112008013410865-PAT00020
의 성능이
Figure 112008013410865-PAT00021
의 성능을 능가하기 때문이다.
그러나, 센서 모트와 같은 저전력 장치에서는 기본 워드의 크기가 작고, 또한
Figure 112008013410865-PAT00022
의 유한체 연산에 대한 명령어가 제공되지 않기 때문에
Figure 112008013410865-PAT00023
에서의 타원 곡선의 구현이 더 효율적으로 수행되고 있다.
실제로, 유한체에서의 연산을 더욱 빠르게 하기 위하여, 많은 프로세서가 제안되고 있다. 그러나, 대부분 고정된 유한체에서의 연산을 다루고 있고, 이 경우에는 체의 변화나 파라미터 변화가 있을 경우 새로운 프로세서가 필요하게 된다.
지금까지 공개키 암호 시스템, 특히 타원곡선 암호(Elliptic Curve Cryptography:ECC)를 센서 네트워크에 적용하는 것에 관한 많은 연구가 진행되어 왔다. 이러한 연구들은 타원곡선 암호 시스템을 실제로 구현하여 동작시간과 코드 크기에 관한 성능을 제시함으로써 센서 네트워크에 타원곡선 암호를 적용하는 것은 가능하다고 결론지었다.
지금까지 상대적으로 만족할만한 성능을 제시한 타원곡선 암호 시스템은 모두
Figure 112008013410865-PAT00024
에 기반을 두고 있다.
반면,
Figure 112008013410865-PAT00025
에 기반을 둔 구현들은 센서 네트워크에 적용할 만큼 충분한 성능을 제시하지 못하고 있다.
지금까지의 센서 모트 상에서
Figure 112008013410865-PAT00026
Figure 112008013410865-PAT00027
에 기반을 둔 여러 타원 곡선 암호 소프트웨어가 구현되었으나, 이러한 구현들은 센서 네트워크에서 타원 곡선 암호의 실행가능성을 검증하기 위하여 개발되었다.
Malan은 8비트 센서 모트에서
Figure 112008013410865-PAT00028
에 기반을 둔 첫 번째 구현인 EccM을 개발하였다. 그들은 UC Berkeley에서 개발된 TinySec 암호 모듈에 키 분배 메커니즘을 제공하기 위하여 타원곡선 암호를 이용하였다.
EccM의 코드 크기는 34342 바이트이며, 하나의 공개키를 생성하는데 34초가 걸린다.
여기서, Yan과 shi 센서 모트와 같은 작은 임베디드 장치에서
Figure 112008013410865-PAT00029
에 기 반을 둔 타원곡선 암호의 소프트웨어 구현은 여전히 느리다고 지적하였으며, 8비트 Atmega128 프로세서에서
Figure 112008013410865-PAT00030
상의 빠른 모듈러 감산을 적용한 타원곡선 암호를 구현하였다.
Yan과 shi가 구현한 코드 크기는 11592 바이트이며 한 번의 스칼라 곱셈을 연산하는데 13.9초가 걸렸다.
Eberle 외는
Figure 112008013410865-PAT00031
상에서의 유한체 연산들이 저전력 마이크로프로세서에 의해서 효율적으로 지원되지 않기 때문에 매우 느리다고 지적하였다. 또한 이들은 명령어 집합 확장을 이용하는 추가적인 아키텍쳐 확장을 통하여
Figure 112008013410865-PAT00032
상의 타원곡선 연산이
Figure 112008013410865-PAT00033
상에서의 연산보다 빨라질 수 있다고 주장하였다.
실제로
Figure 112008013410865-PAT00034
상에서의 스칼라 곱셈을 어셈블리 언어로 구현한 결과 4.14초가 걸렸지만 아키텍쳐 확장을 이용한 경우 0.29초만 걸렸다.
이 결과는
Figure 112008013410865-PAT00035
상의 타원곡선 암호를 저전력 프로세서 상에서 구현할 때 소프트웨어로 구현하는 것보다는 하드웨어로 구현하는 것이 더욱 바람직하다는 주장을 뒷받침한다.
Blab와 Zitterbart는
Figure 112008013410865-PAT00036
위에서 ECDH, ECDSA 그리고 El-Gamal을 구현하고, 이것들의 성능을 EccM과 비교하였다. 이들의 구현은 서명을 생성할 때와 검증할 때 각각 6.88초와 24.17초가 걸리며 코드의 길이는 75088 바이트였다.
Gura 외는 센서 네트워크에서 공개키 암호 시스템의 적용가능성을 증명하기 위하여 8비트 Atmega128 프로세서 상에서 어셈블리 코드와 명령어 집합 확장을 이용하여 RSA와 타원 곡선 암호의 성능을 비교하였다.
구현된 타원곡선 암호는 한 번의 스칼라 곱셈을 연산하는데 0.81초가 걸리며 이것은 센서 네트워크에서 타원 곡선 암호의 사용가능성을 뒷받침한다.
그들은 또한 유한체 곱셈 연산중에 메모리 접근 명령의 수를 줄이기 위하여 오퍼랜드 곱셈 방식과 프로덕트 곱셈 방식의 장점을 결합하여 최적화된 모듈로 감산, 슬라이딩 윈도우 스칼라 곱셈, 자코비안(Jacobian) 좌표계, 그리고 혼합 곱셈/제곱 알고리즘을 적용하였다.
유한체 곱셈, 제곱 감산과 같은 성능의 핵심 부분을 인라인 어셈블리로 구현하여 하나의 서명을 생성하고 검증하는데 각각 2초와 2.43 초가 걸리며, 이때의 코드 크기는 19308 바이트였다.
C언어로 구현된 TinyECC는 15872 바이트의 줄어든 코드가 사용되지만 서명을 생성하고 검증하는데 6.26초와 7.92초가 소모된다.
지금까지 8비트 워드 크기를 사용하는 저전력 장치에서 소프트웨어로 구현된 타원곡선 암호 시스템의 성능은
Figure 112008013410865-PAT00037
상에 기반을 둔 것들이
Figure 112008013410865-PAT00038
상에 기반을 둔 것들보다 더욱 뛰어난 성능을 보였다.
이러한 기존의 결과들을 보면 저전력 장치에서
Figure 112008013410865-PAT00039
위의 타원곡선 암호의 소프트웨어 구현이
Figure 112008013410865-PAT00040
에서의 것보다 더욱 효율적인 것으로 보이며,
Figure 112008013410865-PAT00041
의 사용은 하드웨어적으로 구현될 때에만 적합한 것으로 보인다.
이와 같이, 현재까지 센서 모트에서 구현된 타원곡선 암호 시스템의 경우, 연산 시간이 느리고 구현 코드가 크기 때문에 자원이 제약된 센서 모트에서 사용되기에 충분하지 않다. 뿐만 아니라, 타원 곡선 암호 시스템 연산에 있어서 수행되는
Figure 112008013410865-PAT00042
상의 곱셈과 감산 과정에서 불필요한 중복된 메모리 접근으로 인하여 타원 곡선 암호시스템의 성능을 떨어뜨리는 문제점이 있다.
따라서, 본 발명이 해결하고자 하는 첫 번째 과제는 저전력 장치의 프로세서에서의 유한체 연산을 명령어 레벨에서 제공하지 않으므로, 이를 연산하기 위해서는 많은 메모리 접근이 필요하게 되는바, 이에 대한 중복된 연산을 제거함으로써
Figure 112008013410865-PAT00043
상에서의 타원 곡선 암호 시스템의 성능을 향상시킬 수 있는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공하는 것이다.
또한, 본 발명이 해결하고자 하는 두 번째 과제는 상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 이용한 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 세 번째 과제는 상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 컴퓨터에서 수행할 수 있도록 프로그램으로 기록된 기록매체를 제공하는 것이다.
상기 첫 번째 과제를 해결하기 위하여 본 발명은,
8비트 기반의 유한체
Figure 112008013410865-PAT00044
의 두 원소인
Figure 112008013410865-PAT00045
에 있어서 상기
Figure 112008013410865-PAT00046
에 대한 다항식을
Figure 112008013410865-PAT00047
라하고, 상기
Figure 112008013410865-PAT00048
에 대한 다항식을
Figure 112008013410865-PAT00049
라고 할 때, 상기
Figure 112008013410865-PAT00050
Figure 112008013410865-PAT00051
를 이용하여 유한체 곱셈의 결과값
Figure 112008013410865-PAT00052
를 생성하는 센서 모트에서의 효 율적인 타원 곡선 암호 연산 방법에 있어서, 상기
Figure 112008013410865-PAT00053
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00054
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 단계; 상기
Figure 112008013410865-PAT00055
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00056
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 단계; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기
Figure 112008013410865-PAT00057
의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기
Figure 112008013410865-PAT00058
의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00059
를 생성하는 단계를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공한다.
한편, 상기
Figure 112008013410865-PAT00060
Figure 112008013410865-PAT00061
는 4비트 성분으로 이루어진 것을 특징으로 한다.
그리고, 상기 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 한다.
아울러, 상기 센서 모트는 미카즈 센서 모트를 포함하는 것을 특징으로 한다.
여기서, 상기 미카즈 센서 모트는 8비트 Atmega128을 포함하는 것을 특징으로 한다.
한편, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00062
를 생성하는 단계는 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 단계를 포함하는 것을 특징으로 한다.
아울러, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00063
를 생성하는 단계는 한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 단계를 포함하는 것을 특징으로 한다.
그리고, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00064
는 상기
Figure 112008013410865-PAT00065
의 비트 인덱스를
Figure 112008013410865-PAT00066
,
Figure 112008013410865-PAT00067
를 상기
Figure 112008013410865-PAT00068
에 대한 비트 인덱스를
Figure 112008013410865-PAT00069
, 상기
Figure 112008013410865-PAT00070
에 대한 사전 연산 테이블을
Figure 112008013410865-PAT00071
, 라 할 때, 수학식
Figure 112008013410865-PAT00072
에 의해 연산되는 것을 특징으로 한다.
그리고, 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함하는 것을 특징으로 한다.
상기 두 번째 과제를 해결하기 위하여 본 발명은,
8비트 기반의 유한체
Figure 112008013410865-PAT00073
의 두 원소인
Figure 112008013410865-PAT00074
에 있어서 상기
Figure 112008013410865-PAT00075
에 대한 다항식을
Figure 112008013410865-PAT00076
라하고, 상기
Figure 112008013410865-PAT00077
에 대한 다항식을
Figure 112008013410865-PAT00078
라고 할 때, 상기
Figure 112008013410865-PAT00079
Figure 112008013410865-PAT00080
를 이용하여 유한체 곱셈의 결과값
Figure 112008013410865-PAT00081
를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치에 있어서, 상기
Figure 112008013410865-PAT00082
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00083
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 제 1 중간 결과값 생성부; 상기
Figure 112008013410865-PAT00084
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00085
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 제 2 중간 결과값 생성부; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기
Figure 112008013410865-PAT00086
의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기
Figure 112008013410865-PAT00087
의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하는 호출부; 및 상기 호출부에 따라 호출된 제 1 중간 결과값 및 사전 연산 테이블에 따라 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값 및 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00088
를 생성하는 배타적 논리합 연 산 수행부를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 제공한다.
한편, 상기
Figure 112008013410865-PAT00089
Figure 112008013410865-PAT00090
는 4비트 성분으로 이루어진 것을 특징으로 한다.
그리고, 상기 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 한다.
여기서, 상기 센서 모트는 미카즈 센서 모트를 포함하는 것을 특징으로 한다.
아울러, 상기 미카즈 센서 모트는 8비트 Atmega128을 포함하는 것을 특징으로 한다.
그리고, 상기 배타적 논리합 연산 수행부는 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 쉬프트 레지스터를 포함하는 것을 특징으로 한다.
한편, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00091
를 생성하는 단계는 한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 상기 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00092
는 상기
Figure 112008013410865-PAT00093
의 비트 인덱스를
Figure 112008013410865-PAT00094
,
Figure 112008013410865-PAT00095
를 상기
Figure 112008013410865-PAT00096
에 대한 비트 인덱스를
Figure 112008013410865-PAT00097
, 상기
Figure 112008013410865-PAT00098
에 대한 사전 연산 테이블을
Figure 112008013410865-PAT00099
, 라 할 때, 수학식
Figure 112008013410865-PAT00100
에 의해 연산되는 것을 특징으로 한다.
그리고, 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 모듈라 감산 수행부를 더 포함하는 것을 특징으로 한다.
상기 세 번째 과제를 해결하기 위하여 본 발명은,
상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 컴퓨터에서 수행할 수 있도록 프로그램으로 기록된 기록매체를 제공한다.
본 발명에 의하면,
Figure 112008013410865-PAT00101
에 기반을 둔 타원 곡선의 소프트웨어 구현을 통하여 기존의
Figure 112008013410865-PAT00102
상에서 구현된 모든 타원곡선 소프트웨어들의 성능을 능가할 뿐만 아니라,
Figure 112008013410865-PAT00103
의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠른 연산 속도를 제공하며, 8비트 Atmega128 프로세서에서
Figure 112008013410865-PAT00104
에 기반을 둔 Koblitz 커브를 구현할 수 있고, 이는 센서 모트 상에서 첫 번째 Koblitz 커브의 두 배 연산은 간단한 유한체 제곱연산들로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있는 효과가 있다.
전술한 바와 같이,
Figure 112008013410865-PAT00105
위의 타원곡선 암호의 소프트웨어 구현이
Figure 112008013410865-PAT00106
에서의 것보다 더욱 효율적인 것으로 보이며,
Figure 112008013410865-PAT00107
의 사용은 하드웨어적으로 구현될 때에만 적합한 것으로 일반적으로 알려진 기술에 대하여, 본 발명은
Figure 112008013410865-PAT00108
상에서의 유한체 곱셈이
Figure 112008013410865-PAT00109
상의 유한체 곱셈보다 빠르게 수행되는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공한다.
이를 위하여 본 발명은,
Figure 112008013410865-PAT00110
상의 유한체 곱셈과 감산 연산에서 호출(Load)과 저장(Store)에 따른 많은 수의 메모리 접근 연산에서 불필요하게 중복된 메모리 접근 명령의 수를 줄일 수 있는 방법을 제시한다.
본 발명에 따르면
Figure 112008013410865-PAT00111
에 기반을 둔 타원곡선의 소프트웨어 구현 중에서 가장 뛰어난 성능을 제공하며, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법은 기존의
Figure 112008013410865-PAT00112
상에서 구현된 모든 타원곡선 소프트웨어들의 성능을 능가한다.
뿐만 아니라,
Figure 112008013410865-PAT00113
의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠르다.
그리고, 본 발명은 센서 모트인 미카즈(micaz) 센서 모트에 따른 8비트 Atmega128 프로세서에서
Figure 112008013410865-PAT00114
에 기반을 둔 Koblitz 커브를 구현할 수 있고, 이는 센서 모트 상에서 첫 번째 Koblitz 커브의 두 배 연산은 간단한 유한체 제곱연산들로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있다.
이하, 본 발명에 적용되는 타원곡선 암호 시스템의 개요에 대하여 상술하기로 한다.
일반적으로 유한체 F상에서 정의되는 바이어슈트라스(weierstrass) 식을 만족하는 해의 집합은 항등원 역할을 하는 무한원점과 함께 아벨군을 형성하고, 이는 하기의 수학식 1과 같다. 하기 수학식 1에서 x 및 y 변수는 좌표 축을 의미한다.
Figure 112008013410865-PAT00115
여기서, F의 지표가 2인 경우, 상기의 수학식 1은 하기의 수학식 2과 같이 단순화 될 수 있다.
Figure 112008013410865-PAT00116
여기서, 아벨군의 규칙에 의거하여 타원곡선 상에 존재하는 두 점
Figure 112008013410865-PAT00117
Figure 112008013410865-PAT00118
의 합의 결과
Figure 112008013410865-PAT00119
는 여전히 타원 곡선 위에 존재한다. 서로 다른 두 점의 연산 은 타원 곡선 점 덧셈 연산(Elliptic Curve point ADDition:ECADD)이라고 불리고, 같은 점을 더하는 연산은 타원 곡선 점 두배 연산(Elliptic Curve point DouBLing:ECDBL)으로 불린다.
곡선 상의 임의의 두 점을 각각
Figure 112008013410865-PAT00120
,
Figure 112008013410865-PAT00121
라 할 때, 서로 다른 값을 가지는
Figure 112008013410865-PAT00122
Figure 112008013410865-PAT00123
에 대하여 상기
Figure 112008013410865-PAT00124
Figure 112008013410865-PAT00125
의 합을
Figure 112008013410865-PAT00126
라 하면, 상기
Figure 112008013410865-PAT00127
의 아핀 좌표는 하기의 수학식 3과 같이 연산될 수 있다.
Figure 112008013410865-PAT00128
아핀 좌표계에서 ECADD와 ECDBL은 각각 1번의 유한체 역원연산과 두 번의 유한체 곱셈연산을 필요로 한다. 역원 연산이 곱셈 연산에 비하여 막대한 부하를 가져올 경우 사영 좌표계를 사용하는 것이 유리하다.
예를 들어, Lopez-Dahab(LD) 사영 좌표계에서 ECADD와 ECDBL은 각각 14번의 곱셈과 4번의 곱셈을 요구한다.
따라서, 구현 환경에서,
Figure 112008013410865-PAT00129
가 역원이고,
Figure 112008013410865-PAT00130
이 곱셈인 경우에
Figure 112008013410865-PAT00131
을 만족하면, LD 좌표계를 사용하는 것이 더욱 효율적이다.
Figure 112008013410865-PAT00132
상에서 하나의 점
Figure 112008013410865-PAT00133
를 연속하여
Figure 112008013410865-PAT00134
번 더하는 것을 스칼라 곱셈(scalar multiplication)이라고 부르며,
Figure 112008013410865-PAT00135
로 표현된다. 이 스칼라 곱셈은 ECDH와 ECDSA 연산에서 핵심이 되는 연산이다.
본 발명에 대한 세부 구현 사항은 하기와 같다.
본 발명에 따른 8 비트 Atmega128 프로세서를 기반으로 하는 미카즈 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법(TinyECCK)을 구현하기 위하여 권고된 도메인 파라미터인 sect163k1 을 이용하였으며,
Figure 112008013410865-PAT00136
상의 원소를 표현하기 위하여 다항식 기저를 사용하였다.
본 발명에서 기술되는 알고리즘은 Guide to Elliptic Curve Cryptography에 제시된 32 비트 기반의
Figure 112008013410865-PAT00137
유한체 연산 알고리즘에 기반을 둔 것으로서 8비트 환경에 맞게 수정하였다.
연산의 효율성을 위하여 본 발명에 따른 8 비트 Atmega128 프로세서를 기반으로 하는 미카즈 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 wNAF, wTNAF 리코딩 알고리즘을 적용하였으며 혼합좌표계를 이용하여 ECADD, ECDBL 연산을 하도록 구현하였다.
여기서, 본 발명에 적용되는 8비트 기반의 유한체
Figure 112008013410865-PAT00138
의 두 원소인
Figure 112008013410865-PAT00139
에 있어서, 상기
Figure 112008013410865-PAT00140
에 대한 다항식
Figure 112008013410865-PAT00141
와 상기
Figure 112008013410865-PAT00142
에 대한 다항식
Figure 112008013410865-PAT00143
는 LD 좌표계에 의해 표현될 수 있으며, 본 발명의 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함할 수 있다.
우선 본 발명에 적용되는 각 연산에 대한 정의는 하기의 표 1에 도시된 바와 같다.
Figure 112008013410865-PAT00144
유한체 제곱 연산
한편,
Figure 112008013410865-PAT00145
의 한 원소
Figure 112008013410865-PAT00146
를 제곱하는 것은
Figure 112008013410865-PAT00147
의 이진 표현인 연속한 비트 사이에 0을 삽입하여 결과적으로
Figure 112008013410865-PAT00148
가 된다.
따라서, 사전 연산을 통한 테이블 룩업을 통하여 상기 제곱 연산은 효율적으로 연산할 수 있다. 도 1에 따른 알고리즘 1은 하나의 워드를 제곱하여 두 워드로 확장된다.
도 1을 참조하면,
Figure 112008013410865-PAT00149
의 한 원소이며, m-1차의 최대 차수를 가지는 이진 다항식으로 표현되는 하나의 워드
Figure 112008013410865-PAT00150
를 입력으로 하여 상기 워드를 제곱하여 두 워드로 확장한
Figure 112008013410865-PAT00151
를 출력한다.
우선, 사전연산(precomputation)으로 4비트의 워드의 집합으로 상기 워드의 각 비트로 표현되는 집합인
Figure 112008013410865-PAT00152
에 각각의 비트 앞에 0을 삽입하여 8비트로 확장한 사전 연산 테이블
Figure 112008013410865-PAT00153
을 생성한다
이는, 상기 4비트와 하위 4비트의 홀수 위치에 0을 삽입하여 각각 8비트 워드가 생성되게 하는 것이다.
이와 같이 연산됨으로써, 상기 사전 연산 테이블의 상위 4비트와 하위 4비트를 각각 분할하여, 분할된 4비트 단위의 단위 테이블을 출력하여 최종적으로 제곱 연산을 수행하여 두 워드로 확장한
Figure 112008013410865-PAT00154
를 출력하게 된다.
유한체 곱셈 연산
유한체 곱셈은 스칼라 곱셈 연산 중에 계산되는 가장 빈번한 연산 중의 하나이기 때문에 효율적으로 구현되어야 한다.
비록 쉬프트 앤드 애드(shift and add) 방법이 직관적이지만 많은 양의 메모리 접근과 워드 쉬프트(shift) 때문에 소프트웨어 구현에서는 바람직하지 않다.
실제로, 실험을 통하여 쉬트트 앤드 애드(shift and add), 라이트 레프트 결합(right to left comb) 방법에 비하여 윈도우 기법을 적용한 라이트 레프트 결합(right to left comb) 방법이 8비트 Atmega128 프로세서에서 더욱 효율적으로 연산된다.
이때, 최적의 윈도우 크기(
Figure 112008013410865-PAT00155
)는 4이다. 비록 크기 4의 윈도우는 15개의 구성요소에 대하여 사전연산을 해야 하지만(0번째 요소는 제외), 이를 통하여 유한체 곱셈의 연산은 현저히 빨라질 수 있다.
도 2에 도시된 바와 같이 알고리즘 2는 8비트 워드 크기를 사용하는 환경에서 윈도우 기법(
Figure 112008013410865-PAT00156
)을 적용한 레프트 라이트 결합 방법을 기술하고 있다.
워드 크기가 8 비트이고, 윈도우의 크기가 4이기 때문에,
Figure 112008013410865-PAT00157
Figure 112008013410865-PAT00158
Figure 112008013410865-PAT00159
,
Figure 112008013410865-PAT00160
와 같이 효율적으로 연산될 수 있다.
도 2에 따른 알고리즘 2의 과정 6과 과정 10의 부분적(partial) XOR 곱셈인
Figure 112008013410865-PAT00161
는 실제로 루프 문(for loop)으로 구현된다. 여기서,
Figure 112008013410865-PAT00162
는 상기 연산된
Figure 112008013410865-PAT00163
에 대한 사전 연산 테이블을 의미한다.
즉,
Figure 112008013410865-PAT00164
의 실제 코드는
Figure 112008013410865-PAT00165
가 된다.
이는 실제로 호출된
Figure 112008013410865-PAT00166
Figure 112008013410865-PAT00167
에 대하여 XOR 연산이 수행된 후, 다시
Figure 112008013410865-PAT00168
에 저장된다.
따라서, 워드의 크기가 작아질수록 더 많은 수의 메모리 접근 명령이 필요하다. 예를 들어,
Figure 112008013410865-PAT00169
상에서
Figure 112008013410865-PAT00170
Figure 112008013410865-PAT00171
인 경우 각각의 호출(Load)과 저장(Store) 명령어를 비교해보면,
Figure 112008013410865-PAT00172
의 경우는
Figure 112008013410865-PAT00173
이기 때문에 14번의 호출과 7번의 저장 연산을 필요로 하는 반면,
Figure 112008013410865-PAT00174
인 경우는
Figure 112008013410865-PAT00175
이므로 44번의 호출과 22번의 저장 연산을 요구하게 된다.
한편,
Figure 112008013410865-PAT00176
상의 곱셈과 제곱의 결과는 기약 다항식
Figure 112008013410865-PAT00177
로 감산된다. FIPS 186-2 표준에서 NIST가 권고한 빠른 모듈러 감산을 위한 감산 다항식이 존재한다.
이러한 다항식들은 3차항(Trinomial) 또는 5차항(Pentanomial)이기 때문에
Figure 112008013410865-PAT00178
는 효율적으로 연산될 수 있다.
도 3은 종래의 모듈러 감산 알고리즘을 도시한 것이다.
도 3은 곱셈과 제곱의 결과를
Figure 112008013410865-PAT00179
의 원소로 감산시킨다. 전술한 유한체 곱셈 알고리즘과 마찬가지로 도 3에 따른 유한체 곱셈 알고리즘은 8비트 워드이기 때문에 많은 수의 메모리 접근 연산이 연관되어 있으므로 연산이 비효율적이다.
또한, 센서 모트에서의 효율적인 타원 곡선 암호 연산의 연산 성능을 향상시키기 위하여 좌표계 선택 역시 중요하게 부각된다.
실제로, 8 비트 워드의 Atmega128에서
Figure 112008013410865-PAT00180
상의 곱셈 연산에 대한 역원 연산의 비율을 계산해 본 결과 24.99의 결과를 얻었다.(
Figure 112008013410865-PAT00181
)
따라서, 스칼라 곱셈 과정에서 가능한 한 역원 연산을 제거하는 것이 연산 성능을 향상시키기 위하여 바람직하다.
그러므로, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법을 구현할 때 아핀 좌표계를 선택하는 대신 로페즈 다하브(Lopez Dahab:LD) 좌표계 즉, 사영 좌표계를 적용하는 것이 나눗셈 연산을 줄임으로써 연산 속도의 향상을 가져올 수 있다.
하기의 표 2는 Atmega128 프로세서에서
Figure 112008013410865-PAT00182
상의 유한체 연산들의 연산 시간을 비교한 것으로 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에서의 적절한 좌표 선택을 뒷받침한다.
Figure 112008013410865-PAT00183
타원 곡선 점 덧셈 연산(Elliptic Curve point ADDition:ECADD)에 관련된 두 개의 점이 서로 다른 LD 좌표계와 아핀 좌표계로 표현되어 더해지는 것이 두 점이 서로 같은 좌표계로 표현되면 더욱 효율적인 연산 성능을 이끌어 낼 수 있다.
따라서, 본 발명에서의 유한체 곱셈 알고리즘이 사전 연산 테이블에 저장되는 점들은 아핀 좌표계로 표현하고, 실제 타원 곡선 점 덧셈 연산 및 타원 곡선 점 두배 연산(Elliptic Curve point DouBLing:ECDBL)에서는 혼합 좌표계를 선택할 수 있다.
Figure 112008013410865-PAT00184
위의 한 점
Figure 112008013410865-PAT00185
의 역원은
Figure 112008013410865-PAT00186
가 된다. 이와 같이
Figure 112008013410865-PAT00187
의 원소의 역원은 적은 비용의 연산으로 계산될 수 있으며, 두 점의 뺄셈은 덧셈과 같은 방법으로 연산될 수 있기 때문에 스칼라 곱셈 과정에서 부호화된 이진 표현을 하기의 수학식 4에 따라 쉽게 적용할 수 있다.
Figure 112008013410865-PAT00188
비근접 형태(Non Adjacent Form:NAF)는 모든 부호화된 이진 표현 중에서 최적의 넌 제로(non-Zero) 밀도를 제공한다.
NAF를 이용한 스칼라 곱셈은 상기 수학식 4에 따라 정의되는
Figure 112008013410865-PAT00189
을 적용하여
Figure 112008013410865-PAT00190
의 연산에 따라 계산될 수 있다.
여기서 이진 표현을 사용할 경우
Figure 112008013410865-PAT00191
가 필요하다. 만약 추가적인 메모리가 사용 가능하다면 스칼라
Figure 112008013410865-PAT00192
를 한번에
Figure 112008013410865-PAT00193
비트씩 처리할 수 있는 슬라이딩 윈도우 방법을 적용하여 스칼라 곱셈의 연산 시간을 더욱 줄일 수 있다.
Figure 112008013410865-PAT00194
크기의 윈도우를 사용하는 width - w NAF(wNAF)는
Figure 112008013410865-PAT00195
개의 사전 연 산 점들을 담는 사전 연산 테이블을 이용하여
Figure 112008013410865-PAT00196
의 넌제로(nonzero) 밀도를 제공한다.
따라서, wNAF를 적용한 스칼라 곱셈은
Figure 112008013410865-PAT00197
의 연산으로 계산된다.
미카즈 센서 모트에서는 128 Kbyte의 ROM 메모리와 4Kbyte의 RAM 메모리가 사용 가능하기 때문에 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에 wNAF를 충분히 적용할 수 있다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 구현은 sect163k1에 기반을 두므로 스칼라 곱셈에 width-w tau-adic non-adjacent form(wTNAF)을 적용할 수 있다.
상기 수학식 2에서
Figure 112008013410865-PAT00198
그리고
Figure 112008013410865-PAT00199
인 경우, 이를 코블리츠(koblitz) 커브라고 불리며, 이것의 큰 장점은 스칼라 곱셈에서 ECDBL 연산을 몇 개의 간단한 유한체 제곱 연산으로 대체시킬 수 있다는 것이다.
따라서, wTNAF를 적용한 스칼라 곱셈은
Figure 112008013410865-PAT00200
만으로 연산될 수 있다.
그러나, wTNAF 리코딩 알고리즘은 추가적인 부분 감산 함수(Partial reduction modulo function)와 라운딩 오프(Rounding off) 프로시져를 필요로 하기 때문에 wTNAF를 구현하는 것은 wNAF에 비하여 더 많은 코드를 요구한다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에 따른 코드 크기는 각각 10870 바이트와 13748 바이트이다.
이것은 미카즈 모트의 사용가능한 ROM 메모리 크기(128 Kbyte)의 단지 8.3%와 10.5%에 해당한다. 또한, 전술한 바와 같이 실질적으로 미카즈 모트에서의 최적의 윈도우 크기는 4임을 알 수 있다.
한편, 정수
Figure 112008013410865-PAT00201
에 wTNAF를 적용할 경우, 리코딩된 결과의 길이가
Figure 112008013410865-PAT00202
가 되며, 이것은 wNAF와 비교하면 두 배의 길이를 가지게 된다.
따라서, wTNAF를 적용하였을 때 발생하는 긴 TNAF의 표현의 문제점을 해결하는 것이 필요하다.
이를 위하여 상기 정수
Figure 112008013410865-PAT00203
와 대응되는 새로운
Figure 112008013410865-PAT00204
값을 탐색하는데 이것은
Figure 112008013410865-PAT00205
에서
Figure 112008013410865-PAT00206
,
Figure 112008013410865-PAT00207
을 만족하는 가장 작은 것이다.
이 경우
Figure 112008013410865-PAT00208
의 기수가 n인 모든 점
Figure 112008013410865-PAT00209
에 대하여
Figure 112008013410865-PAT00210
가 성립한다. 즉,
Figure 112008013410865-PAT00211
보다 짧은 형태의
Figure 112008013410865-PAT00212
를 wTNAF에 적용하여
Figure 112008013410865-PAT00213
길이의 리코딩 결과를 얻을 수 있는 것이다.
Figure 112008013410865-PAT00214
를 연산하기 위하여 도 4에 따른 알고리즘 4가 이용된다.
알고리즘 4는 wTNAF를 연산할 때 적용되는 부분 감산 모듈러 연산의 알고리즘의 일 예를 도시한 것이다.
알고리즘 4의
Figure 112008013410865-PAT00215
은 차수로, sect163k1을 이용하였기 때문에 163이 된다.
Figure 112008013410865-PAT00216
Figure 112008013410865-PAT00217
은 알고리즘 시작 전에 루카스(Lucas) 시퀀스를 이용하여 사전 연산될 수 있다.(
Figure 112008013410865-PAT00218
=2579386439110731650419537,
Figure 112008013410865-PAT00219
=755360064476226375461594)
알고리즘 4를 적용하였을 때, 길이가 줄어들지 않을 확률이
Figure 112008013410865-PAT00220
이기 때문에 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 구현에서는
Figure 112008013410865-PAT00221
을 적용하여 감산의 확률을 높일 수 있다.
sect163k1에서
Figure 112008013410865-PAT00222
Figure 112008013410865-PAT00223
의 값은 각각 1이고, 위수
Figure 112008013410865-PAT00224
Figure 112008013410865-PAT00225
,
Figure 112008013410865-PAT00226
의 값들이 미리 알려져 있기 때문에,
Figure 112008013410865-PAT00227
의 값 역시 사전연산 될 수 있다.(
Figure 112008013410865-PAT00228
)
또한, 도 4의 알고리즘 4의 과정 3의
Figure 112008013410865-PAT00229
역시 사전에 62로 연산될 수 있으므로 과정 3은
Figure 112008013410865-PAT00230
를 단순히 오른쪽으로 62비트 쉬프트하는 것으로 연산된다.
그리고, 도 4의 알고리즘 4의 과정 10 내지 21은 과정 5 내지 9로부터 연산된 복소수
Figure 112008013410865-PAT00231
(
Figure 112008013410865-PAT00232
은 유리수)에 근접한
Figure 112008013410865-PAT00233
의 정수
Figure 112008013410865-PAT00234
Figure 112008013410865-PAT00235
을 연산한다.
또한 과정 7의
Figure 112008013410865-PAT00236
연산을 하기 위하여 다정도 부동 소수점 표현을 사용하여야 하는 것처럼 보일 수 있지만, 실제로
Figure 112008013410865-PAT00237
비트 이하 의 값들에 한해서만 소수값이 되기 때문에 몇 개의 부동 소수점 변수를 이용하여 연산할 수 있다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 성능을 테스트해 본 결과 부동 소수점 변수를 사용한 것이 성능에 큰 영향을 미치지 않음을 확인할 수 있다.
도 4의 알고리즘 4의 결과인
Figure 112008013410865-PAT00238
이 정수
Figure 112008013410865-PAT00239
대신 wTNAF를 연산하는데 이용된다.
전술한 곱셈 알고리즘과 감산 알고리즘의 성능은 실제로 중복된 메모리의 접근을 줄임으로써 더욱 향상될 수 있다.
메모리 접근 연산은 알고리즘의 전체 연산 시간에서 많은 비중을 차지하기 때문에 중복된 메모리 접근을 줄임으로써 알고리즘의 성능을 향상시킬 수 있는 것이다.
Figure 112008013410865-PAT00240
상에서의 XOR 곱셈 연산은 많은 수의 중복된 메모리 접근 연산과 연관되어 있다.
이 때문에 일반적으로
Figure 112008013410865-PAT00241
상에서의 곱셈 연산이
Figure 112008013410865-PAT00242
상에서의 곱셈 연산보다 비효율적이다.
도 5는 상기 도 2의 알고리즘 2의 곱셈 연산의 계산 과정을 도시하고 있다.
도 5에서 홀수 행들은 알고리즘 2의 과정 9 내지 11에 해당하고, 짝수 행들은 알고리즘 2의 과정 5 내지 7에 해당한다.
결과적으로, 도 5의 모든 행들은 마지막 결과인
Figure 112008013410865-PAT00243
를 연산하기 위하여 해당 위치에서 서로 XOR 연산이 수행된다. 이를 부분(partial) XOR 곱셈을 의미한다.
도 2에서 첫 번째 for-loop의 결과들은 왼쪽으로 윈도우 크기인
Figure 112008013410865-PAT00244
만큼 쉬프트되는데 이는 도 5에 도시되어 있다.
그리고, 도 2의 알고리즘 2의 각 for-loop에서
Figure 112008013410865-PAT00245
에 관한 사전 연산 테이블에 접근하여 해당 요소를 가져오기 위하여
Figure 112008013410865-PAT00246
Figure 112008013410865-PAT00247
가 연산 된다.
그 후에 테이블에서 해당 값이 로드되고, 이는 다시
Figure 112008013410865-PAT00248
Figure 112008013410865-PAT00249
위치에서부터
Figure 112008013410865-PAT00250
위치까지 XOR 연산된다(
Figure 112008013410865-PAT00251
).
상기 도 5를 살펴보면, 도 2의 알고리즘 2의 XOR 곱셈이 많은 수의 중복된 메모리 접근 연산과 연관되어 있음을 알 수 있다.
하기의 수학식 5의 예제는 이를 확인시켜 준다. 설명의 간결함을 위하여 도 2의 두 번째 for-loop 과정만을 고려하였다.
Figure 112008013410865-PAT00252
상기 수학식 5에서
Figure 112008013410865-PAT00253
의 연산은 각각 두 번, 세 번, 네 번의 저장(STORE) 명령이 연관되었으며, 이것이 중복된 메모리 접근에 해당한다.
또한, 각 과정에서
Figure 112008013410865-PAT00254
의 값이
Figure 112008013410865-PAT00255
번 호출(LOAD)되고 있음을 알 수 있다.
(이는
Figure 112008013410865-PAT00256
까지 해당되며,
Figure 112008013410865-PAT00257
의 범위에서는
Figure 112008013410865-PAT00258
값이
Figure 112008013410865-PAT00259
번 호출된다.)
따라서, 도 2의 알고리즘 2의 성능은 중복된 저장 연산의 수와
Figure 112008013410865-PAT00260
의 호출 횟수를 줄임으로써 향상될 수 있다.
본 발명에서 제안하는 기법은 복수 개의 연속한 XOR 연산을 하나로 통합하여 연산되게 함으로써 XOR 곱셈
Figure 112008013410865-PAT00261
에 연관된 저장과 호출 연산의 수를 줄이는 것이다.
예를 들면,
Figure 112008013410865-PAT00262
Figure 112008013410865-PAT00263
는 하기의 수학식 6과 같이 통합될 수 있다.
Figure 112008013410865-PAT00264
이 기법을 일반화하면 도 6과 같이 정리될 수 있다.
이는 실제로 더 많은 수의 XOR 곱셈 연산을 통합한다면 더 많은 수의 중복 메모리 접근을 줄일 수 있으나, 더 많은 양의 코드를 필요로 하므로, 두 개의 연속한 XOR 곱셈 연산을 하나로 통합한다.
도 7은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법의 흐름도이다.
8비트 기반의 유한체
Figure 112008013410865-PAT00265
의 두 원소인
Figure 112008013410865-PAT00266
에 있어서 상기
Figure 112008013410865-PAT00267
에 대한 다항식을
Figure 112008013410865-PAT00268
라하고, 상기
Figure 112008013410865-PAT00269
에 대한 다항식을
Figure 112008013410865-PAT00270
라고 할 때, 상기
Figure 112008013410865-PAT00271
Figure 112008013410865-PAT00272
를 이용하여 유한체 곱셈의 결과값
Figure 112008013410865-PAT00273
를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서, 우선, 상기
Figure 112008013410865-PAT00274
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00275
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성한다(710 과정).
이는 상기 도 6의 알고리즘 5의 과정 5 내지 과정 8에 해당하는 것으로, 상기
Figure 112008013410865-PAT00276
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00277
각각의 사전 연 산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하게 된다.
한편, 상기 생성된 제 1 중간 결과값은 상위 4비트 성분에 대한 것으로, 하기에 수행될 제 2 중간 결과값과의 순서를 맞추기 위하여 4비트 레프트 쉬프트 될 수 있다. 이는 도 6의 알고리즘 5의 과정 9에 해당한다.
그 다음, 상기
Figure 112008013410865-PAT00278
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00279
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다(720 과정).
이 역시, 상기 도 6의 알고리즘 5의 과정 10 내지 과정 13에 해당하는 것으로, 상기
Figure 112008013410865-PAT00280
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00281
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다.
마지막으로, 상기 생성된 제 1 중간 결과값을 호출하고 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00282
와 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00283
와 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00284
를 생성한다(730 과정).
여기서, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 경우에는 코드의 크기를 고려하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00285
를 생성하는 과정에서 한 쌍의 연속한 사전 연산 테이블을 이용하여 수행되는 XOR 곱셈을 하나로 통합하였기 때문에 for-loop의 카운터가 2씩 증가한다.
즉, 이는 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00286
는 상기
Figure 112008013410865-PAT00287
의 비트 인덱스를
Figure 112008013410865-PAT00288
,
Figure 112008013410865-PAT00289
를 상기
Figure 112008013410865-PAT00290
에 대한 비트 인덱스를
Figure 112008013410865-PAT00291
, 상기
Figure 112008013410865-PAT00292
에 대한 사전 연산 테이블을
Figure 112008013410865-PAT00293
, 라 할 때, 하기의 수학식 7에 의해 연산된다.
Figure 112008013410865-PAT00294
한편, 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00295
를 생성하는 과정(730 과정)은 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함할 수 있다. 이는 하기에 더욱 자세히 상술하기로 한다.
상기 도 6의 알고리즘 5를 이용하여 절약되는 저장 연산의 수를 계산할 수 있다.
실제로, 도 2의 알고리즘 2에서는 for-loop의 카운터가 0에서부터 t-1까지 증가하며, 또한
Figure 112008013410865-PAT00296
도 for-loop이기 때문에 첫 번째와 두 번째 for-loop 과정에서 필요한 저장 연산의 수는
Figure 112008013410865-PAT00297
가 된다.
한편, 도 6의 저장 명령의 수를 연산하면
Figure 112008013410865-PAT00298
가 된 다. 따라서, 본 발명에 따른 도 6의 알고리즘 5에서는
Figure 112008013410865-PAT00299
만큼의 저장 연산이 절약된다.
또한, 호출 연산의 경우, 도 2의 알고리즘 2에서는
Figure 112008013410865-PAT00300
번의 호출 연산이 연관된 반면, 본 발명에 따른 도 6의 알고리즘 5에서는
Figure 112008013410865-PAT00301
번의 호출 연산을 사용한다.
따라서 본 발명에서는 호출 연산에서도
Figure 112008013410865-PAT00302
만큼의 연산량을 절약할 수 있다.
하기의 표 3은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법과 도 2의 알고리즘 2에 따른 암호 연산에 있어서의 성능을 비교한 테이블이다.
Figure 112008013410865-PAT00303
상기의 표 3을 참조하면, 본 발명의 도 6에 따른 알고리즘 5가 도 2의 알고리즘 2에 비하여 곱셈 연산 시간이 21.08% 빨라진 것을 확인할 수 있으며, 또한
Figure 112008013410865-PAT00304
일 때, 본 발명의 도 6에 따른 알고리즘 5가 도 2의 알고리즘 2에 비하여 441번의 저장 연산과 호출 연산이 절약되는 것을 알 수 있다.
한편, 본 발명에서는 모듈러 감산 과정에서 중복된 메모리 접근을 줄일 수 있는 기법을 개시한다.
상기 도 3 역시 중복된 메모리 접근 명령과 관련되어 있다. 알고리즘 3의 동작 과정에서 카운터
Figure 112008013410865-PAT00305
가 30에서 27로 감소하는 경우를 살펴보면, 카운터
Figure 112008013410865-PAT00306
가 30에서 27로 감소하는 동안의 연산 과정은 하기의 수학식 8과 같다.
Figure 112008013410865-PAT00307
상기 수학식 8이 적용되는 알고리즘 3은
Figure 112008013410865-PAT00308
을 연산하기 위하여 16번의 호출 명령과 저장 명령을 사용한다.
그러나, 이와 같이 중복된 호출 연산과 저장 연산 명령을 제거하기 위하여 같은 곳에 저장되는 중간값을 함께 XOR 시켜 한 번에 저장하는 전략을 사용할 수 있다.
이 전략을 적용하여 하기의 수학식 9에 따라 본 발명은 모듈러 감산 연산을 수행할 수 있게 된다.
Figure 112008013410865-PAT00309
이와 같이, 저장과 호출 명령의 빈도를 16번에서 10번으로 줄일 수 있게 된다.
도 3의 알고리즘 3은 for-loop안에서 20×4=80번의 저장과 호출 명령을 사용한다.
이에 비하여 본 발명에 따르면 5×10=50번의 저장과 호출 명령 만을 이용함으로써 30번의 저장 및 호출 명령을 줄일 수 있다.
이 전략을 일반화한 것이 알고리즘 6이며, 이에 따르면 4번의 for-loop의 실행을 하나로 통합할 수 있다.
상기 표 3에 개시된 바와 같이, 알고리즘 6은 상기 도 3의 알고리즘 3보다 24.7% 바르게 감산 연산을 수행한다.
더 많은 for-loop의 실행을 통합하면, 더 많은 수의 메모리 접근 명령의 수를 줄일 수 있지만, 코드의 크기가 증가한다는 단점이 있다.
실제 실험을 통하여 4번의 for-loop 실행을 통합하는 것이 메모리와 성능을 고려할 대 최적인 것을 탐색할 수 있다.
하기의 표 4는 상기 제안한 기법을 본 발명에서 구형하는데 적용한 결과 향상된 성능을 제시하고 있다.
이는 종래의 ECDSA의 sign 및 verify의 연산 시간을 약 15-19% 정도 단축시킬 수 있다.
이는 wTNAF를 사용하였을 때보다 WNAF를 이용하였을 때의 성능 향상이 더 큰 것을 확인할 수 있는데, 이것은 wTNAF에서는 ECDBL 연산이 몇 개의 유한체 제곱 연산으로 대체되기 때문이다.
도 8은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치의 블록도를 도시한 것이다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치는 제 1 중간 결과값 생성부(810), 제 2 중간 결과값 생성부(820), 호출부(830) 및 배타적 논리합 연산 수행부(840)로 이루어질 수 있다.
본 발명은, 8비트 기반의 유한체
Figure 112008013410865-PAT00310
의 두 원소인
Figure 112008013410865-PAT00311
에 있어서 상기
Figure 112008013410865-PAT00312
에 대한 다항식을
Figure 112008013410865-PAT00313
라하고, 상기
Figure 112008013410865-PAT00314
에 대한 다항식을
Figure 112008013410865-PAT00315
라고 할 때, 상기
Figure 112008013410865-PAT00316
Figure 112008013410865-PAT00317
를 이용하여 유한체 곱셈의 결과값
Figure 112008013410865-PAT00318
를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 구성한다.
상기 제 1 중간 결과값 생성부(810)는 상기
Figure 112008013410865-PAT00319
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00320
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성한다.
이는 상기 도 6의 알고리즘 5의 과정 5 내지 과정 8에 해당하는 것으로, 상기
Figure 112008013410865-PAT00321
의 상위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00322
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하게 된다.
한편, 상기 제 1 중간 결과값 생성부(810)에서 생성된 제 1 중간 결과값은 상위 4비트 성분에 대한 것으로, 이는 도 6의 알고리즘 5의 과정 9에 해당하는 연산에 의해 생성된다.
제 2 중간 결과값 생성부(820)는 상기
Figure 112008013410865-PAT00323
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00324
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다.
이 역시, 제 2 중간 결과값 생성부(820)는 상기 도 6의 알고리즘 5의 과정 10 내지 과정 13에 해당하는 연산을 수행하고, 상기
Figure 112008013410865-PAT00325
의 하위 4비트에 대하여 각각의 비트 성분과 상기
Figure 112008013410865-PAT00326
각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다.
한편, 호출부(830)는 상기 생성된 제 1 중간 결과값을 호출하고 배타적 논리합 연산 수행부(840)에서 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00327
와 배타적 논리합 연산을 수행할 수 있도록 하고, 상기 생성된 제 2 중 간 결과값을 호출하고 배타적 논리합 연산 수행부(840)에서 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기
Figure 112008013410865-PAT00328
와 배타적 논리합 연산을 수행할 수 있도록 한다.
배타적 논리합 연산 수행부(840)는 상기 호출부(380)에 따라 호출된 제 1 중간 결과값 및 사전 연산 테이블에 따라 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값 및 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00329
를 생성한다.
상기 배타적 논리합 연산 수행부(840)는 상기 제 1 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값을 4비트 레프트 쉬트트 하는 쉬프트 레지스터(미도시)를 포함할 수 있다.
이는 상기 제 1 중간 결과값은 상기
Figure 112008013410865-PAT00330
의 워드의 상위 4비트에 따라 연산된 것이므로, 하위 4비트에 따라 연산된 제 2 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값과의 순서를 맞추기 위하여 쉬프트 레지스터에서 상기 제 1 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값을 4비트 레프트 쉬프트 하는 것이다.
여기서, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 경우에는 배타적 논리합 연산 수행부(840)는 코드의 크기를 고려하여 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00331
를 생성하는 과정에서 한 쌍의 연속한 사전 연산 테이블을 이용하여 수행되는 XOR 곱셈을 하나로 통합하기 위하여 상기 호출부(830)에서 호출된 한 쌍의 연속한 사전 연산 테이블을 이용하여 배타적 논리합 연산의 결과값을 생성하기 때문에 for-loop의 카운터가 2씩 증가한다.
즉, 이는 상기 유한체 곱셈의 결과값
Figure 112008013410865-PAT00332
는 전술한 수학식 7에 의해 연산될 수 있다.
이하에서는 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 성능을 동작 시간, 메모리 사용량 및 지원하는 서비스 측면에서 분석하고, 센서 모트 상에서 기존의 소프트웨어 구현들과 성능을 비교할 수 있다.
유한체 연산의 분석
센서 모트 상에서
Figure 112008013410865-PAT00333
위의 유한체 곱셈의 성능이
Figure 112008013410865-PAT00334
상의 곱셈의 성능보다 빠를 수 있음을 보이기 위하여 본 발명에 따른 센서 모트에서의 타원 곡선 암호 연산 기법(TinyECCK)과 종래의 TinyECC의 성능을 비교한다.
Figure 112008013410865-PAT00335
상기 표 4를 살펴보면, 본 발명에 따른 센서 모트에서의 타원 곡선 암호 연산 기법을 TinyECCK에 알고리즘 5 및 알고리즘 6을 적용하였을 때와 종래의 알고리즘 2 및 알고리즘 3을 적용하였을 때의 기존 방법의 연산 수행 시간을 도시하고 있다.
상기 표 4에 따르면, 본 발명에 따른 타원 곡선 암호 연산의 수행 시간의 기존 방법의 연산보다 15 내지 19% 정도의 연산 수행 속도가 빠름을 알 수 있다.
TinyECC는 불필요한 메모리 접근을 줄이기 위하여 추가적인 레지스터를 사용하는 혼합 곱셈/제곱 방법과 Pseudo-Mersenne prime을 사용하는 최적화된 모듈로 감산을 적용하였기 때문에 윈도우를 사용하는 도 6의 left -to-right comb 방법과 도 7의 빠른 감산 연산을 적용한 TinyECCK와 비교하는 것은 적당하다.
하기의 표 5는 TinyECCK의 곱셈 연산이 TinyECC의 곱셈 연산보다 훨씬 빠름을 나타내고 있다. 여기서는 곱셈 연산과 제곱 연산의 시간은 감산 연산의 시간까지 포함하고 있다.
Figure 112008013410865-PAT00336
실제로 TinyECCK의 곱셈 연산이 도 2의 알고리즘 2를 이용하였을 때는 TinyECC의 곱셈 연산보다 느렸으나, 도 6의 알고리즘 5를 적용하여 TinyECC의 역원 연산보다 더 빠른 점을 차지하더라도 TinyECCK의 제곱 연산은 TinyECC에서의 연산보다 더욱 효율적으로 연산된다.
이는 상기 문제점으로 지적된
Figure 112008013410865-PAT00337
Figure 112008013410865-PAT00338
보다 연산 속도가 느리다고 알려진 바, 본 발명에 따르면
Figure 112008013410865-PAT00339
기반의 TinyECCK를 적용하면,
Figure 112008013410865-PAT00340
기반의 TinyECC 보다 속도 향상을 이끌어 낼 수 있으므로 상당한 성능 향상을 보임을 알 수 있다.
TinyECCK TinyECC 의 코드 크기 비교
한편, TinyECCK가 스칼라 곱셈 연산과 ECDSA 서비스를 지원하기 위하여
Figure 112008013410865-PAT00341
Figure 112008013410865-PAT00342
에서의 연산을 구현하였음에도 불구하고, TinyECC보다 더 작은 코드 크기를 사용한다.
하기의 표 6에 따르면, 동등한 연산을 하였을 때, TinyECCK와 TinyECC의 코드 크기를 비교한다.
Figure 112008013410865-PAT00343
비록 C언어로만 구현한 TinyECC의 경우 TinyECCK와 비교하여 코드 크기가 조금 더 크나 성능은 현저히 떨어졌다.
연산 시간을 단축시키기 위하여 곱셈/제곱, 감산 등 성능의 핵심 부분을 인라인 어셈블리(inline assembly)로 구현하였으나 TinyECCK와 비교하여 코드 크기와 연산 시간 측면에서 뒤떨어진다.
스칼라 곱셈과 ECDSA 연산에서 TinyECCK의 코드 크기가 C로 구현된 TinyECC보다 더 작을 뿐만 아니라 연산 시간 측면에서도 인라인 어셈블리를 이용한 TinyECC보다 더욱 뛰어남을 알 수 있다.
상기 표 6을 보면, TinyECCK가 TinyECC와 비교하여 성능과 코드 크기에서 더욱 효율적이다.
TinyECCK가 TinyECC와 비교하여 코드의 크기가 더 작을 수 있는 가장 큰 이유는 C언어로만 구현하였음에도 불구하고 어셈블리나 인라인 어셈블리로 구현된 것들보다 뛰어난 성능을 제공하기 때문이다.
상기 표 6의 결과를 통하여
Figure 112008013410865-PAT00344
에서 최적화된 ECDSA 구현의 코드 크기는
Figure 112008013410865-PAT00345
상의 ECDSA 구현의 코드 크기보다 더 작을 수 있다는 것을 확인할 수 있다.
기존의 구현들과의 성능 비교
하기의 표 7은 지금까지의 센서 모트 상에서 구현된 타원 곡선 암호 소프트웨어의 성능을 연산 시간, 코드 크기, 지원하는 프로토콜 등의 측면에서 TinyECCK와 비교하고 있다.
표 7을 참조하면, 기존의
Figure 112008013410865-PAT00346
상의 구현들의 성능이
Figure 112008013410865-PAT00347
상에서 구현된 것들보다 뒤떨어지는 것을 확인할 수 있다.
비록, 기존의
Figure 112008013410865-PAT00348
의 구현 4에서는 타원곡선 암호를 완전히 어셈블리 언어로 구현하였지만 핵심 부분에만 인라인 어셈블리언어를 사용한 TinyECC에 비하여 그 성능이 뒤쳐진다.
그리고, 기존의
Figure 112008013410865-PAT00349
의 구현 1 및 구현 2에서는 도메인 파라미터로 sect163k1을 사용하였지만 스칼라 곱셈 과정에 TNAF 방법을 구현하지 않았기 때문에 코블리츠 커브의 장점을 충분히 활용하지 못하였다.
어셈블리 언어로 구현한 기존의
Figure 112008013410865-PAT00350
의 구현 4보다 C언어로만 구현된 TinyECCK의 성능이 더 뛰어난 이유는 TinyECCK에 상술한 알고리즘 5와 알고리즘 6 그리고 wTNAF 기반의 스칼라 곱셈이 적용되었기 때문이다.
이는 상기 표 7에서 확인할 수 있듯이 TinyECCK는 동작 시간, 사용된 ROM, RAM의 크기 측면에서 기존의 구현들에 비하여 우수한 성능을 제공한다.
TinyECCK에서 스칼라 곱셈을 연산하는 모듈의 코드 크기는 5592바이트이며, 2TNAF와 4TNAF가 적용될 때, 각각 330 바이트와 618바이트의 RAM을 요구한다.
더욱이 이것의 성능은 지금까지 C 또는 C와 인라인 어셈블리를 이용하여 구현된 타원곡선의 소프트웨어 구현 중에서 가장 뛰어나다.
비록 서명 생성, 검증 등의 추가적인 구현으로 TinyECCK의 ECDSA 모듈의 코드 크기는 137748 바이트로 증가하였지만 여전히 19308 바이트를 이용하는 TinyECC와 비교하여 더 적은 메모리를 사용한다.
뿐만 아니라, TinyECCK는 TinyECC와 비교하여 사전 연산 테이블과 도메인 파라미터를 초기화하는데 더욱 적은 시간을 소비한다.
TinyECCK에 4TNAF가 적용되었을 때 사전 영산 테이블을 구성하는데 0.2515chrk 걸린 반면, TinyECC는 4-ary window 방법의 사전 연산 테이블을 초기화 하는데 1.83초가 걸린다.
TinyECCK를 이용하여 두 센서 모트는 1.14초 안에 공통키를 연산할 수 있으며, 또한 1.37 초와 2.32초 안에 각각 하나의 서명을 생성하고 검증할 수 있다.
지원하는 프로토콜 측면에서, TinyECCK는
Figure 112008013410865-PAT00351
상의 모든 타원 곡선 연산 즉, ECADD, ECDBL 또는 스칼라 곱셈을 제공하며, ECDSA의 서비스도 제공한다.
Figure 112008013410865-PAT00352
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법은 소프트웨어를 통해 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 테이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명은 도면에 도시된 일 실시예를 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다.
그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 하므로, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.
도 1은 종래의 하나의 워드를 제곱하여 두 워드로 확장하는 유한체 곱셈 알고리즘의 일 예를 도시한 것이다.
도 2는 종래의 8비트 워드 크기를 사용하는 환경에서 윈도우 기법(
Figure 112008013410865-PAT00409
)을 적용한 레프트 라이트 결합 알고리즘을 도시한 것이다.
도 3은 종래의 모듈러 감산 알고리즘을 도시한 것이다.
도 4는 wTNAF를 연산할 때 적용되는 부분 감산 모듈러 연산의 알고리즘의 일 예를 도시한 것이다.
도 5는 도 2의 알고리즘 2의 곱셈 연산의 연산 과정을 개괄적으로 도시한 것이다.
도 6은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산의 알고리즘을 도시한 것이다.
도 7은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법의 흐름도이다.
도 8은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치의 블록도이다.

Claims (19)

  1. 8비트 기반의 유한체
    Figure 112008013410865-PAT00353
    의 두 원소인
    Figure 112008013410865-PAT00354
    에 있어서 상기
    Figure 112008013410865-PAT00355
    에 대한 다항식을
    Figure 112008013410865-PAT00356
    라하고, 상기
    Figure 112008013410865-PAT00357
    에 대한 다항식을
    Figure 112008013410865-PAT00358
    라고 할 때, 상기
    Figure 112008013410865-PAT00359
    Figure 112008013410865-PAT00360
    를 이용하여 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00361
    를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서,
    상기
    Figure 112008013410865-PAT00362
    를 구성하는 각 워드들의 상위 4비트에 대응하는 상기
    Figure 112008013410865-PAT00363
    의 사전 연산 테이블의 값과 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 단계;
    상기
    Figure 112008013410865-PAT00364
    의 하위 4비트에 대하여 각각의 비트 성분과 상기
    Figure 112008013410865-PAT00365
    각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 단계; 및
    상기 생성된 제 1 중간 결과값을 호출하고 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기
    Figure 112008013410865-PAT00366
    와 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기
    Figure 112008013410865-PAT00367
    와 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00368
    를 생성하는 단계를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  2. 제 1 항에 있어서,
    상기
    Figure 112008013410865-PAT00369
    Figure 112008013410865-PAT00370
    4비트 성분으로 이루어진 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  3. 제 1 항에 있어서,
    상기 타원 곡선 암호 연산은
    스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  4. 제 1 항에 있어서
    상기 센서 모트는
    미카즈 센서 모트를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  5. 제 4 항에 있어서,
    상기 미카즈 센서 모트는
    8비트 Atmega128을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  6. 제 1 항에 있어서,
    상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00371
    를 생성하는 단계는
    상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 단계를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  7. 제 1 항에 있어서,
    상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00372
    를 생성하는 단계는
    한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 단계를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  8. 제 1 항에 있어서,
    상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00373
    상기
    Figure 112008013410865-PAT00374
    의 비트 인덱스를
    Figure 112008013410865-PAT00375
    ,
    Figure 112008013410865-PAT00376
    를 상기
    Figure 112008013410865-PAT00377
    에 대한 비트 인덱스를
    Figure 112008013410865-PAT00378
    , 상기
    Figure 112008013410865-PAT00379
    에 대한 사전 연산 테이블을
    Figure 112008013410865-PAT00380
    , 라 할 때, 하기의 식 1에 의해 연산되는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
    Figure 112008013410865-PAT00381
    (1)
  9. 제 1 항에 있어서,
    복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
  10. 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 컴퓨터에서 수행할 수 있는 프로그램으로 기록된 기록매체.
  11. 8비트 기반의 유한체
    Figure 112008013410865-PAT00382
    의 두 원소인
    Figure 112008013410865-PAT00383
    에 있어서 상기
    Figure 112008013410865-PAT00384
    에 대한 다항식을
    Figure 112008013410865-PAT00385
    라하고, 상기
    Figure 112008013410865-PAT00386
    에 대한 다항식을
    Figure 112008013410865-PAT00387
    라고 할 때, 상기
    Figure 112008013410865-PAT00388
    Figure 112008013410865-PAT00389
    를 이용하여 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00390
    를 생성하는 센서 모트에서의 효 율적인 타원 곡선 암호 연산 장치에 있어서,
    상기
    Figure 112008013410865-PAT00391
    의 상위 4비트에 대하여 각각의 비트 성분과 상기
    Figure 112008013410865-PAT00392
    각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 제 1 중간 결과값 생성부;
    상기
    Figure 112008013410865-PAT00393
    의 하위 4비트에 대하여 각각의 비트 성분과 상기
    Figure 112008013410865-PAT00394
    각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 제 2 중간 결과값 생성부; 및
    상기 생성된 제 1 중간 결과값을 호출하고 상기
    Figure 112008013410865-PAT00395
    의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기
    Figure 112008013410865-PAT00396
    의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하는 호출부; 및
    상기 호출부에 따라 호출된 제 1 중간 결과값 및 사전 연산 테이블에 따라 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값 및 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00397
    를 생성하는 배타적 논리합 연산 수행부를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  12. 제 11 항에 있어서,
    상기
    Figure 112008013410865-PAT00398
    Figure 112008013410865-PAT00399
    4비트 성분으로 이루어진 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  13. 제 11 항에 있어서,
    상기 타원 곡선 암호 연산은
    스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  14. 제 11 항에 있어서
    상기 센서 모트는
    미카즈 센서 모트를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  15. 제 14 항에 있어서,
    상기 미카즈 센서 모트는
    8비트 Atmega128을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  16. 제 11 항에 있어서,
    상기 배타적 논리합 연산 수행부는
    상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 쉬프트 레지스터를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  17. 제 11 항에 있어서,
    상기 배타적 논리합 연산 수행부는
    한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
  18. 제 11 항에 있어서,
    상기 유한체 곱셈의 결과값
    Figure 112008013410865-PAT00400
    상기
    Figure 112008013410865-PAT00401
    의 비트 인덱스를
    Figure 112008013410865-PAT00402
    ,
    Figure 112008013410865-PAT00403
    를 상기
    Figure 112008013410865-PAT00404
    에 대한 비트 인덱스를
    Figure 112008013410865-PAT00405
    , 상기
    Figure 112008013410865-PAT00406
    에 대한 사전 연산 테이블을
    Figure 112008013410865-PAT00407
    , 라 할 때, 하기의 식 2에 의해 연산되는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
    Figure 112008013410865-PAT00408
    (2)
  19. 제 11 항에 있어서,
    복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 모듈라 감산 수행부를 더 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
KR1020080016421A 2008-02-22 2008-02-22 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 KR100974624B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080016421A KR100974624B1 (ko) 2008-02-22 2008-02-22 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080016421A KR100974624B1 (ko) 2008-02-22 2008-02-22 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체

Publications (2)

Publication Number Publication Date
KR20090090881A true KR20090090881A (ko) 2009-08-26
KR100974624B1 KR100974624B1 (ko) 2010-08-09

Family

ID=41208612

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080016421A KR100974624B1 (ko) 2008-02-22 2008-02-22 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체

Country Status (1)

Country Link
KR (1) KR100974624B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101321221B1 (ko) * 2013-05-23 2013-10-22 목포대학교산학협력단 암호용 모듈러 곱셈 장치 및 그 방법
KR101636809B1 (ko) * 2014-12-31 2016-07-07 고려대학교 산학협력단 타원 곡선 암호용 이진체의 감산 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100550015B1 (ko) * 2003-12-18 2006-02-08 한국전자통신연구원 GF(3^m)의 유한체 곱셈 연산에 적합한 유한체 곱셈연산 장치, 이에 적합한 mod 3 비트 곱셈기, 그리고이에 적합한 mod 3 비트열 덧셈기
KR100564764B1 (ko) * 2003-12-24 2006-03-27 한국전자통신연구원 유한체 다항식 곱셈 장치 및 그 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101321221B1 (ko) * 2013-05-23 2013-10-22 목포대학교산학협력단 암호용 모듈러 곱셈 장치 및 그 방법
KR101636809B1 (ko) * 2014-12-31 2016-07-07 고려대학교 산학협력단 타원 곡선 암호용 이진체의 감산 방법

Also Published As

Publication number Publication date
KR100974624B1 (ko) 2010-08-09

Similar Documents

Publication Publication Date Title
Knezevic et al. Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods
US8111826B2 (en) Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph
Öztürk et al. Low-power elliptic curve cryptography using scaled modular arithmetic
US7904498B2 (en) Modular multiplication processing apparatus
EP1014617A2 (en) Method and apparatus for elliptic curve cryptography and recording medium therefor
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
JP2007187958A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4351987B2 (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
Tian et al. Efficient software implementation of the SIKE protocol using a new data representation
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
KR101223498B1 (ko) 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템
US6609141B1 (en) Method of performing modular inversion
JP2007041461A (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
KR100954584B1 (ko) MSD first GF(3^m) 직렬 곱셈 장치, 그방법 및 이를 기록한 기록매체
JP4423900B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
Al-Haija et al. Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures
JP4502817B2 (ja) 楕円曲線スカラー倍計算方法および装置
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
JP2006235416A (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
KR100954582B1 (ko) GF(3) 기반의 덧셈기, GF(3) 기반의 곱셈기,GF(3) 기반의 덧셈 뺄셈 통합형 연산 장치, 및 MSBfirst GF(3^m) 직렬 곱셈 장치
Saheed Effective Rivest Shamir Adleman Cryptosystem Based on Chinese Remainder Theorem
JP2007212768A (ja) 楕円曲線暗号における事前計算テーブル作成装置

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: 20130621

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151102

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee