KR20090090881A - 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 - Google Patents
센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/08—Methods 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비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서, 상기 를 구성하는 각 워드들의 상위 4비트에 대응하는 상기 의 사전 연산 테이블의 값과 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 단계; 상기 의 하위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 단계; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값 를 생성하는 단계를 포함한다.
본 발명에 의하면, 8비트 센서 모트에서 구현된 타원 곡선 소프트웨어 구현 중에서 가장 뛰어난 성능을 제공하며, 의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠른 연산 속도를 제공하며, 본 발명은 8비트 Atmega128 프로세서에서 첫 번째 코블리츠(Koblitz) 커브의 구현으로 상기 커브상에서는 타원 곡선 두배 연산이 간단한 유한체 제곱 연산으로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있는 효과가 있다.
Description
본 발명은 타원 곡선 암호 연산에 관한 것으로, 특히 무선 센서 네트워크에서 사용되는 센서 모트의 일종인 미카즈(Micaz) 센서 모트에서 안전한 키 교환 및 전자 서명 서비스를 수행할 수 있는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법 및 그 장치에 관한 것이다.
최근 유비쿼터스 환경에서 센서 네트워크 기술이 IT839 정책의 일환으로 활성화되고 있으며, 이러한 센서 네트워크는 관리자의 부재와 무선 통신, 자원의 제약 등으로 인하여 공격자가 쉽게 접근하여 공격을 시도할 수 있다.
한편, 암호서비스에 대한 요구가 많아지면서 대칭키 알고리즘에서 발생된 키 관리 문제와 인증 문제를 해결하기 위한 알고리즘이 많이 연구되었다.
1976년 Diffie와 Hellman이 처음으로 공개키 암호 알고리즘의 개념을 소개하였다. 그 후 많은 알고리즘이 제안되었지만, 1978년 RSA가 소개되어 널리 사용되고 있다.
타원 곡선은 1985년 Kobiltz와 Miller에 의해 발표된 이후 꾸준히 연구되어 왔다.
타원 곡선 암호가 발표되었을 당시에는 새로운 암호에 대한 안전성 분석이 충분히 이루어지지 않았으므로 널리 사용되지 못했다.
이 후, 많은 연구자들에 의한 연구 결과에 따르면 같은 안전도에서 비교할 때, RSA에 비해 훨씬 빠르고 효율적이며 짧은 키 길이를 가지는 장점이 있다.
예를 들면, 타원 곡선 암호의 160비트는 RSA의 1024비트와 같은 안전도를 가진다. 이에 따라서 타원 곡선 암호는 무선 인터넷이나 스마트카드 등 제한된 연산능력을 가지는 하드웨어에 적합한 암호 시스템으로 주목받게 되었다.
그러나, 센서 모트와 같은 저전력 장치에서는 기본 워드의 크기가 작고, 또한 의 유한체 연산에 대한 명령어가 제공되지 않기 때문에 에서의 타원 곡선의 구현이 더 효율적으로 수행되고 있다.
실제로, 유한체에서의 연산을 더욱 빠르게 하기 위하여, 많은 프로세서가 제안되고 있다. 그러나, 대부분 고정된 유한체에서의 연산을 다루고 있고, 이 경우에는 체의 변화나 파라미터 변화가 있을 경우 새로운 프로세서가 필요하게 된다.
지금까지 공개키 암호 시스템, 특히 타원곡선 암호(Elliptic Curve Cryptography:ECC)를 센서 네트워크에 적용하는 것에 관한 많은 연구가 진행되어 왔다. 이러한 연구들은 타원곡선 암호 시스템을 실제로 구현하여 동작시간과 코드 크기에 관한 성능을 제시함으로써 센서 네트워크에 타원곡선 암호를 적용하는 것은 가능하다고 결론지었다.
지금까지의 센서 모트 상에서 과 에 기반을 둔 여러 타원 곡선 암호 소프트웨어가 구현되었으나, 이러한 구현들은 센서 네트워크에서 타원 곡선 암호의 실행가능성을 검증하기 위하여 개발되었다.
Malan은 8비트 센서 모트에서 에 기반을 둔 첫 번째 구현인 EccM을 개발하였다. 그들은 UC Berkeley에서 개발된 TinySec 암호 모듈에 키 분배 메커니즘을 제공하기 위하여 타원곡선 암호를 이용하였다.
EccM의 코드 크기는 34342 바이트이며, 하나의 공개키를 생성하는데 34초가 걸린다.
여기서, Yan과 shi 센서 모트와 같은 작은 임베디드 장치에서 에 기 반을 둔 타원곡선 암호의 소프트웨어 구현은 여전히 느리다고 지적하였으며, 8비트 Atmega128 프로세서에서 상의 빠른 모듈러 감산을 적용한 타원곡선 암호를 구현하였다.
Yan과 shi가 구현한 코드 크기는 11592 바이트이며 한 번의 스칼라 곱셈을 연산하는데 13.9초가 걸렸다.
Eberle 외는 상에서의 유한체 연산들이 저전력 마이크로프로세서에 의해서 효율적으로 지원되지 않기 때문에 매우 느리다고 지적하였다. 또한 이들은 명령어 집합 확장을 이용하는 추가적인 아키텍쳐 확장을 통하여 상의 타원곡선 연산이 상에서의 연산보다 빨라질 수 있다고 주장하였다.
Blab와 Zitterbart는 위에서 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비트 워드 크기를 사용하는 저전력 장치에서 소프트웨어로 구현된 타원곡선 암호 시스템의 성능은 상에 기반을 둔 것들이 상에 기반을 둔 것들보다 더욱 뛰어난 성능을 보였다.
이러한 기존의 결과들을 보면 저전력 장치에서 위의 타원곡선 암호의 소프트웨어 구현이 에서의 것보다 더욱 효율적인 것으로 보이며, 의 사용은 하드웨어적으로 구현될 때에만 적합한 것으로 보인다.
따라서, 본 발명이 해결하고자 하는 첫 번째 과제는 저전력 장치의 프로세서에서의 유한체 연산을 명령어 레벨에서 제공하지 않으므로, 이를 연산하기 위해서는 많은 메모리 접근이 필요하게 되는바, 이에 대한 중복된 연산을 제거함으로써 상에서의 타원 곡선 암호 시스템의 성능을 향상시킬 수 있는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공하는 것이다.
또한, 본 발명이 해결하고자 하는 두 번째 과제는 상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 이용한 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 세 번째 과제는 상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 컴퓨터에서 수행할 수 있도록 프로그램으로 기록된 기록매체를 제공하는 것이다.
상기 첫 번째 과제를 해결하기 위하여 본 발명은,
8비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효 율적인 타원 곡선 암호 연산 방법에 있어서, 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 단계; 상기 의 하위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 단계; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기 의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값 를 생성하는 단계를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공한다.
그리고, 상기 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 한다.
아울러, 상기 센서 모트는 미카즈 센서 모트를 포함하는 것을 특징으로 한다.
여기서, 상기 미카즈 센서 모트는 8비트 Atmega128을 포함하는 것을 특징으로 한다.
한편, 상기 유한체 곱셈의 결과값 를 생성하는 단계는 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 단계를 포함하는 것을 특징으로 한다.
아울러, 상기 유한체 곱셈의 결과값 를 생성하는 단계는 한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 단계를 포함하는 것을 특징으로 한다.
그리고, 상기 유한체 곱셈의 결과값 는 상기 의 비트 인덱스를 , 를 상기 에 대한 비트 인덱스를 , 상기 에 대한 사전 연산 테이블을, 라 할 때, 수학식 에 의해 연산되는 것을 특징으로 한다.
그리고, 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함하는 것을 특징으로 한다.
상기 두 번째 과제를 해결하기 위하여 본 발명은,
8비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치에 있어서, 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하는 제 1 중간 결과값 생성부; 상기 의 하위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성하는 제 2 중간 결과값 생성부; 및 상기 생성된 제 1 중간 결과값을 호출하고 상기 의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하는 호출부; 및 상기 호출부에 따라 호출된 제 1 중간 결과값 및 사전 연산 테이블에 따라 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값 및 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값 를 생성하는 배타적 논리합 연 산 수행부를 포함하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 제공한다.
그리고, 상기 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 한다.
여기서, 상기 센서 모트는 미카즈 센서 모트를 포함하는 것을 특징으로 한다.
아울러, 상기 미카즈 센서 모트는 8비트 Atmega128을 포함하는 것을 특징으로 한다.
그리고, 상기 배타적 논리합 연산 수행부는 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 쉬프트 레지스터를 포함하는 것을 특징으로 한다.
한편, 상기 유한체 곱셈의 결과값 를 생성하는 단계는 한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 상기 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 유한체 곱셈의 결과값 는 상기 의 비트 인덱스를 , 를 상기 에 대한 비트 인덱스를 , 상기 에 대한 사전 연산 테이블을, 라 할 때, 수학식 에 의해 연산되는 것을 특징으로 한다.
그리고, 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 모듈라 감산 수행부를 더 포함하는 것을 특징으로 한다.
상기 세 번째 과제를 해결하기 위하여 본 발명은,
상기 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 컴퓨터에서 수행할 수 있도록 프로그램으로 기록된 기록매체를 제공한다.
본 발명에 의하면, 에 기반을 둔 타원 곡선의 소프트웨어 구현을 통하여 기존의 상에서 구현된 모든 타원곡선 소프트웨어들의 성능을 능가할 뿐만 아니라, 의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠른 연산 속도를 제공하며, 8비트 Atmega128 프로세서에서 에 기반을 둔 Koblitz 커브를 구현할 수 있고, 이는 센서 모트 상에서 첫 번째 Koblitz 커브의 두 배 연산은 간단한 유한체 제곱연산들로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있는 효과가 있다.
전술한 바와 같이, 위의 타원곡선 암호의 소프트웨어 구현이 에서의 것보다 더욱 효율적인 것으로 보이며, 의 사용은 하드웨어적으로 구현될 때에만 적합한 것으로 일반적으로 알려진 기술에 대하여, 본 발명은 상에서의 유한체 곱셈이 상의 유한체 곱셈보다 빠르게 수행되는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법을 제공한다.
이를 위하여 본 발명은, 상의 유한체 곱셈과 감산 연산에서 호출(Load)과 저장(Store)에 따른 많은 수의 메모리 접근 연산에서 불필요하게 중복된 메모리 접근 명령의 수를 줄일 수 있는 방법을 제시한다.
본 발명에 따르면 에 기반을 둔 타원곡선의 소프트웨어 구현 중에서 가장 뛰어난 성능을 제공하며, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법은 기존의 상에서 구현된 모든 타원곡선 소프트웨어들의 성능을 능가한다.
뿐만 아니라, 의 타원 곡선 암호 구현을 포함하여 Atmega128 프로세서에서 C언어 또는 C 언어와 인라인 어셈블리(inline assembly)를 혼합하여 구현한 것들에 비하여 더욱 빠르다.
그리고, 본 발명은 센서 모트인 미카즈(micaz) 센서 모트에 따른 8비트 Atmega128 프로세서에서 에 기반을 둔 Koblitz 커브를 구현할 수 있고, 이는 센서 모트 상에서 첫 번째 Koblitz 커브의 두 배 연산은 간단한 유한체 제곱연산들로 대체될 수 있기 때문에 일반적인 커브에 비하여 더욱 빠른 연산 속도를 제공할 수 있다.
이하, 본 발명에 적용되는 타원곡선 암호 시스템의 개요에 대하여 상술하기로 한다.
일반적으로 유한체 F상에서 정의되는 바이어슈트라스(weierstrass) 식을 만족하는 해의 집합은 항등원 역할을 하는 무한원점과 함께 아벨군을 형성하고, 이는 하기의 수학식 1과 같다. 하기 수학식 1에서 x 및 y 변수는 좌표 축을 의미한다.
여기서, F의 지표가 2인 경우, 상기의 수학식 1은 하기의 수학식 2과 같이 단순화 될 수 있다.
여기서, 아벨군의 규칙에 의거하여 타원곡선 상에 존재하는 두 점 과 의 합의 결과 는 여전히 타원 곡선 위에 존재한다. 서로 다른 두 점의 연산 은 타원 곡선 점 덧셈 연산(Elliptic Curve point ADDition:ECADD)이라고 불리고, 같은 점을 더하는 연산은 타원 곡선 점 두배 연산(Elliptic Curve point DouBLing:ECDBL)으로 불린다.
아핀 좌표계에서 ECADD와 ECDBL은 각각 1번의 유한체 역원연산과 두 번의 유한체 곱셈연산을 필요로 한다. 역원 연산이 곱셈 연산에 비하여 막대한 부하를 가져올 경우 사영 좌표계를 사용하는 것이 유리하다.
예를 들어, Lopez-Dahab(LD) 사영 좌표계에서 ECADD와 ECDBL은 각각 14번의 곱셈과 4번의 곱셈을 요구한다.
상에서 하나의 점 를 연속하여 번 더하는 것을 스칼라 곱셈(scalar multiplication)이라고 부르며, 로 표현된다. 이 스칼라 곱셈은 ECDH와 ECDSA 연산에서 핵심이 되는 연산이다.
본 발명에 대한 세부 구현 사항은 하기와 같다.
본 발명에 따른 8 비트 Atmega128 프로세서를 기반으로 하는 미카즈 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법(TinyECCK)을 구현하기 위하여 권고된 도메인 파라미터인 sect163k1 을 이용하였으며, 상의 원소를 표현하기 위하여 다항식 기저를 사용하였다.
본 발명에서 기술되는 알고리즘은 Guide to Elliptic Curve Cryptography에 제시된 32 비트 기반의 유한체 연산 알고리즘에 기반을 둔 것으로서 8비트 환경에 맞게 수정하였다.
연산의 효율성을 위하여 본 발명에 따른 8 비트 Atmega128 프로세서를 기반으로 하는 미카즈 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 wNAF, wTNAF 리코딩 알고리즘을 적용하였으며 혼합좌표계를 이용하여 ECADD, ECDBL 연산을 하도록 구현하였다.
여기서, 본 발명에 적용되는 8비트 기반의 유한체 의 두 원소인 에 있어서, 상기 에 대한 다항식 와 상기 에 대한 다항식 는 LD 좌표계에 의해 표현될 수 있으며, 본 발명의 타원 곡선 암호 연산은 스칼라 곱셈 또는 ECDSA 연산을 포함할 수 있다.
우선 본 발명에 적용되는 각 연산에 대한 정의는 하기의 표 1에 도시된 바와 같다.
유한체 제곱 연산
따라서, 사전 연산을 통한 테이블 룩업을 통하여 상기 제곱 연산은 효율적으로 연산할 수 있다. 도 1에 따른 알고리즘 1은 하나의 워드를 제곱하여 두 워드로 확장된다.
우선, 사전연산(precomputation)으로 4비트의 워드의 집합으로 상기 워드의 각 비트로 표현되는 집합인 에 각각의 비트 앞에 0을 삽입하여 8비트로 확장한 사전 연산 테이블 을 생성한다
이는, 상기 4비트와 하위 4비트의 홀수 위치에 0을 삽입하여 각각 8비트 워드가 생성되게 하는 것이다.
이와 같이 연산됨으로써, 상기 사전 연산 테이블의 상위 4비트와 하위 4비트를 각각 분할하여, 분할된 4비트 단위의 단위 테이블을 출력하여 최종적으로 제곱 연산을 수행하여 두 워드로 확장한 를 출력하게 된다.
유한체 곱셈 연산
유한체 곱셈은 스칼라 곱셈 연산 중에 계산되는 가장 빈번한 연산 중의 하나이기 때문에 효율적으로 구현되어야 한다.
비록 쉬프트 앤드 애드(shift and add) 방법이 직관적이지만 많은 양의 메모리 접근과 워드 쉬프트(shift) 때문에 소프트웨어 구현에서는 바람직하지 않다.
실제로, 실험을 통하여 쉬트트 앤드 애드(shift and add), 라이트 레프트 결합(right to left comb) 방법에 비하여 윈도우 기법을 적용한 라이트 레프트 결합(right to left comb) 방법이 8비트 Atmega128 프로세서에서 더욱 효율적으로 연산된다.
이때, 최적의 윈도우 크기()는 4이다. 비록 크기 4의 윈도우는 15개의 구성요소에 대하여 사전연산을 해야 하지만(0번째 요소는 제외), 이를 통하여 유한체 곱셈의 연산은 현저히 빨라질 수 있다.
도 2에 따른 알고리즘 2의 과정 6과 과정 10의 부분적(partial) XOR 곱셈인 는 실제로 루프 문(for loop)으로 구현된다. 여기서, 는 상기 연산된 에 대한 사전 연산 테이블을 의미한다.
따라서, 워드의 크기가 작아질수록 더 많은 수의 메모리 접근 명령이 필요하다. 예를 들어, 상에서 와 인 경우 각각의 호출(Load)과 저장(Store) 명령어를 비교해보면, 의 경우는 이기 때문에 14번의 호출과 7번의 저장 연산을 필요로 하는 반면, 인 경우는 이므로 44번의 호출과 22번의 저장 연산을 요구하게 된다.
도 3은 종래의 모듈러 감산 알고리즘을 도시한 것이다.
도 3은 곱셈과 제곱의 결과를 의 원소로 감산시킨다. 전술한 유한체 곱셈 알고리즘과 마찬가지로 도 3에 따른 유한체 곱셈 알고리즘은 8비트 워드이기 때문에 많은 수의 메모리 접근 연산이 연관되어 있으므로 연산이 비효율적이다.
또한, 센서 모트에서의 효율적인 타원 곡선 암호 연산의 연산 성능을 향상시키기 위하여 좌표계 선택 역시 중요하게 부각된다.
따라서, 스칼라 곱셈 과정에서 가능한 한 역원 연산을 제거하는 것이 연산 성능을 향상시키기 위하여 바람직하다.
그러므로, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법을 구현할 때 아핀 좌표계를 선택하는 대신 로페즈 다하브(Lopez Dahab:LD) 좌표계 즉, 사영 좌표계를 적용하는 것이 나눗셈 연산을 줄임으로써 연산 속도의 향상을 가져올 수 있다.
하기의 표 2는 Atmega128 프로세서에서 상의 유한체 연산들의 연산 시간을 비교한 것으로 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에서의 적절한 좌표 선택을 뒷받침한다.
타원 곡선 점 덧셈 연산(Elliptic Curve point ADDition:ECADD)에 관련된 두 개의 점이 서로 다른 LD 좌표계와 아핀 좌표계로 표현되어 더해지는 것이 두 점이 서로 같은 좌표계로 표현되면 더욱 효율적인 연산 성능을 이끌어 낼 수 있다.
따라서, 본 발명에서의 유한체 곱셈 알고리즘이 사전 연산 테이블에 저장되는 점들은 아핀 좌표계로 표현하고, 실제 타원 곡선 점 덧셈 연산 및 타원 곡선 점 두배 연산(Elliptic Curve point DouBLing:ECDBL)에서는 혼합 좌표계를 선택할 수 있다.
위의 한 점 의 역원은 가 된다. 이와 같이 의 원소의 역원은 적은 비용의 연산으로 계산될 수 있으며, 두 점의 뺄셈은 덧셈과 같은 방법으로 연산될 수 있기 때문에 스칼라 곱셈 과정에서 부호화된 이진 표현을 하기의 수학식 4에 따라 쉽게 적용할 수 있다.
비근접 형태(Non Adjacent Form:NAF)는 모든 부호화된 이진 표현 중에서 최적의 넌 제로(non-Zero) 밀도를 제공한다.
여기서 이진 표현을 사용할 경우 가 필요하다. 만약 추가적인 메모리가 사용 가능하다면 스칼라 를 한번에 비트씩 처리할 수 있는 슬라이딩 윈도우 방법을 적용하여 스칼라 곱셈의 연산 시간을 더욱 줄일 수 있다.
미카즈 센서 모트에서는 128 Kbyte의 ROM 메모리와 4Kbyte의 RAM 메모리가 사용 가능하기 때문에 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에 wNAF를 충분히 적용할 수 있다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 구현은 sect163k1에 기반을 두므로 스칼라 곱셈에 width-w tau-adic non-adjacent form(wTNAF)을 적용할 수 있다.
상기 수학식 2에서 그리고 인 경우, 이를 코블리츠(koblitz) 커브라고 불리며, 이것의 큰 장점은 스칼라 곱셈에서 ECDBL 연산을 몇 개의 간단한 유한체 제곱 연산으로 대체시킬 수 있다는 것이다.
그러나, wTNAF 리코딩 알고리즘은 추가적인 부분 감산 함수(Partial reduction modulo function)와 라운딩 오프(Rounding off) 프로시져를 필요로 하기 때문에 wTNAF를 구현하는 것은 wNAF에 비하여 더 많은 코드를 요구한다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법에 따른 코드 크기는 각각 10870 바이트와 13748 바이트이다.
이것은 미카즈 모트의 사용가능한 ROM 메모리 크기(128 Kbyte)의 단지 8.3%와 10.5%에 해당한다. 또한, 전술한 바와 같이 실질적으로 미카즈 모트에서의 최적의 윈도우 크기는 4임을 알 수 있다.
따라서, wTNAF를 적용하였을 때 발생하는 긴 TNAF의 표현의 문제점을 해결하는 것이 필요하다.
알고리즘 4는 wTNAF를 연산할 때 적용되는 부분 감산 모듈러 연산의 알고리즘의 일 예를 도시한 것이다.
와 은 알고리즘 시작 전에 루카스(Lucas) 시퀀스를 이용하여 사전 연산될 수 있다.(=2579386439110731650419537, =755360064476226375461594)
알고리즘 4를 적용하였을 때, 길이가 줄어들지 않을 확률이 이기 때문에 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 구현에서는 을 적용하여 감산의 확률을 높일 수 있다.
또한 과정 7의 연산을 하기 위하여 다정도 부동 소수점 표현을 사용하여야 하는 것처럼 보일 수 있지만, 실제로 비트 이하 의 값들에 한해서만 소수값이 되기 때문에 몇 개의 부동 소수점 변수를 이용하여 연산할 수 있다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 성능을 테스트해 본 결과 부동 소수점 변수를 사용한 것이 성능에 큰 영향을 미치지 않음을 확인할 수 있다.
전술한 곱셈 알고리즘과 감산 알고리즘의 성능은 실제로 중복된 메모리의 접근을 줄임으로써 더욱 향상될 수 있다.
메모리 접근 연산은 알고리즘의 전체 연산 시간에서 많은 비중을 차지하기 때문에 중복된 메모리 접근을 줄임으로써 알고리즘의 성능을 향상시킬 수 있는 것이다.
도 5는 상기 도 2의 알고리즘 2의 곱셈 연산의 계산 과정을 도시하고 있다.
도 5에서 홀수 행들은 알고리즘 2의 과정 9 내지 11에 해당하고, 짝수 행들은 알고리즘 2의 과정 5 내지 7에 해당한다.
상기 도 5를 살펴보면, 도 2의 알고리즘 2의 XOR 곱셈이 많은 수의 중복된 메모리 접근 연산과 연관되어 있음을 알 수 있다.
하기의 수학식 5의 예제는 이를 확인시켜 준다. 설명의 간결함을 위하여 도 2의 두 번째 for-loop 과정만을 고려하였다.
이 기법을 일반화하면 도 6과 같이 정리될 수 있다.
이는 실제로 더 많은 수의 XOR 곱셈 연산을 통합한다면 더 많은 수의 중복 메모리 접근을 줄일 수 있으나, 더 많은 양의 코드를 필요로 하므로, 두 개의 연속한 XOR 곱셈 연산을 하나로 통합한다.
도 7은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법의 흐름도이다.
8비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서, 우선, 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성한다(710 과정).
이는 상기 도 6의 알고리즘 5의 과정 5 내지 과정 8에 해당하는 것으로, 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연 산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하게 된다.
한편, 상기 생성된 제 1 중간 결과값은 상위 4비트 성분에 대한 것으로, 하기에 수행될 제 2 중간 결과값과의 순서를 맞추기 위하여 4비트 레프트 쉬프트 될 수 있다. 이는 도 6의 알고리즘 5의 과정 9에 해당한다.
이 역시, 상기 도 6의 알고리즘 5의 과정 10 내지 과정 13에 해당하는 것으로, 상기 의 하위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다.
마지막으로, 상기 생성된 제 1 중간 결과값을 호출하고 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값 를 생성한다(730 과정).
여기서, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 경우에는 코드의 크기를 고려하여 상기 유한체 곱셈의 결과값 를 생성하는 과정에서 한 쌍의 연속한 사전 연산 테이블을 이용하여 수행되는 XOR 곱셈을 하나로 통합하였기 때문에 for-loop의 카운터가 2씩 증가한다.
즉, 이는 상기 유한체 곱셈의 결과값 는 상기 의 비트 인덱스를 , 를 상기 에 대한 비트 인덱스를 , 상기 에 대한 사전 연산 테이블을, 라 할 때, 하기의 수학식 7에 의해 연산된다.
한편, 상기 유한체 곱셈의 결과값 를 생성하는 과정(730 과정)은 복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함할 수 있다. 이는 하기에 더욱 자세히 상술하기로 한다.
상기 도 6의 알고리즘 5를 이용하여 절약되는 저장 연산의 수를 계산할 수 있다.
실제로, 도 2의 알고리즘 2에서는 for-loop의 카운터가 0에서부터 t-1까지 증가하며, 또한 도 for-loop이기 때문에 첫 번째와 두 번째 for-loop 과정에서 필요한 저장 연산의 수는 가 된다.
하기의 표 3은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법과 도 2의 알고리즘 2에 따른 암호 연산에 있어서의 성능을 비교한 테이블이다.
상기의 표 3을 참조하면, 본 발명의 도 6에 따른 알고리즘 5가 도 2의 알고리즘 2에 비하여 곱셈 연산 시간이 21.08% 빨라진 것을 확인할 수 있으며, 또한 일 때, 본 발명의 도 6에 따른 알고리즘 5가 도 2의 알고리즘 2에 비하여 441번의 저장 연산과 호출 연산이 절약되는 것을 알 수 있다.
한편, 본 발명에서는 모듈러 감산 과정에서 중복된 메모리 접근을 줄일 수 있는 기법을 개시한다.
상기 도 3 역시 중복된 메모리 접근 명령과 관련되어 있다. 알고리즘 3의 동작 과정에서 카운터 가 30에서 27로 감소하는 경우를 살펴보면, 카운터 가 30에서 27로 감소하는 동안의 연산 과정은 하기의 수학식 8과 같다.
그러나, 이와 같이 중복된 호출 연산과 저장 연산 명령을 제거하기 위하여 같은 곳에 저장되는 중간값을 함께 XOR 시켜 한 번에 저장하는 전략을 사용할 수 있다.
이 전략을 적용하여 하기의 수학식 9에 따라 본 발명은 모듈러 감산 연산을 수행할 수 있게 된다.
이와 같이, 저장과 호출 명령의 빈도를 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비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치를 구성한다.
상기 제 1 중간 결과값 생성부(810)는 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성한다.
이는 상기 도 6의 알고리즘 5의 과정 5 내지 과정 8에 해당하는 것으로, 상기 의 상위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 1 중간 결과값을 생성하게 된다.
한편, 상기 제 1 중간 결과값 생성부(810)에서 생성된 제 1 중간 결과값은 상위 4비트 성분에 대한 것으로, 이는 도 6의 알고리즘 5의 과정 9에 해당하는 연산에 의해 생성된다.
이 역시, 제 2 중간 결과값 생성부(820)는 상기 도 6의 알고리즘 5의 과정 10 내지 과정 13에 해당하는 연산을 수행하고, 상기 의 하위 4비트에 대하여 각각의 비트 성분과 상기 각각의 사전 연산 테이블에 논리 곱 연산을 수행하여 제 2 중간 결과값을 생성한다.
한편, 호출부(830)는 상기 생성된 제 1 중간 결과값을 호출하고 배타적 논리합 연산 수행부(840)에서 상기 호출된 제 1 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행할 수 있도록 하고, 상기 생성된 제 2 중 간 결과값을 호출하고 배타적 논리합 연산 수행부(840)에서 상기 호출된 제 2 중간 결과값의 비트 인덱스에 대응되는 상기 와 배타적 논리합 연산을 수행할 수 있도록 한다.
배타적 논리합 연산 수행부(840)는 상기 호출부(380)에 따라 호출된 제 1 중간 결과값 및 사전 연산 테이블에 따라 배타적 논리합 연산을 수행하고, 상기 생성된 제 2 중간 결과값 및 사전 연산 테이블을 호출하여 배타적 논리합 연산을 수행하여 상기 유한체 곱셈의 결과값 를 생성한다.
상기 배타적 논리합 연산 수행부(840)는 상기 제 1 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값을 4비트 레프트 쉬트트 하는 쉬프트 레지스터(미도시)를 포함할 수 있다.
이는 상기 제 1 중간 결과값은 상기 의 워드의 상위 4비트에 따라 연산된 것이므로, 하위 4비트에 따라 연산된 제 2 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값과의 순서를 맞추기 위하여 쉬프트 레지스터에서 상기 제 1 중간 결과값을 이용하여 생성된 배타적 논리합 연산의 결과값을 4비트 레프트 쉬프트 하는 것이다.
여기서, 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 경우에는 배타적 논리합 연산 수행부(840)는 코드의 크기를 고려하여 상기 유한체 곱셈의 결과값 를 생성하는 과정에서 한 쌍의 연속한 사전 연산 테이블을 이용하여 수행되는 XOR 곱셈을 하나로 통합하기 위하여 상기 호출부(830)에서 호출된 한 쌍의 연속한 사전 연산 테이블을 이용하여 배타적 논리합 연산의 결과값을 생성하기 때문에 for-loop의 카운터가 2씩 증가한다.
이하에서는 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 기법의 성능을 동작 시간, 메모리 사용량 및 지원하는 서비스 측면에서 분석하고, 센서 모트 상에서 기존의 소프트웨어 구현들과 성능을 비교할 수 있다.
유한체 연산의 분석
센서 모트 상에서 위의 유한체 곱셈의 성능이 상의 곱셈의 성능보다 빠를 수 있음을 보이기 위하여 본 발명에 따른 센서 모트에서의 타원 곡선 암호 연산 기법(TinyECCK)과 종래의 TinyECC의 성능을 비교한다.
상기 표 4를 살펴보면, 본 발명에 따른 센서 모트에서의 타원 곡선 암호 연산 기법을 TinyECCK에 알고리즘 5 및 알고리즘 6을 적용하였을 때와 종래의 알고리즘 2 및 알고리즘 3을 적용하였을 때의 기존 방법의 연산 수행 시간을 도시하고 있다.
상기 표 4에 따르면, 본 발명에 따른 타원 곡선 암호 연산의 수행 시간의 기존 방법의 연산보다 15 내지 19% 정도의 연산 수행 속도가 빠름을 알 수 있다.
TinyECC는 불필요한 메모리 접근을 줄이기 위하여 추가적인 레지스터를 사용하는 혼합 곱셈/제곱 방법과 Pseudo-Mersenne prime을 사용하는 최적화된 모듈로 감산을 적용하였기 때문에 윈도우를 사용하는 도 6의 left -to-right comb 방법과 도 7의 빠른 감산 연산을 적용한 TinyECCK와 비교하는 것은 적당하다.
하기의 표 5는 TinyECCK의 곱셈 연산이 TinyECC의 곱셈 연산보다 훨씬 빠름을 나타내고 있다. 여기서는 곱셈 연산과 제곱 연산의 시간은 감산 연산의 시간까지 포함하고 있다.
실제로 TinyECCK의 곱셈 연산이 도 2의 알고리즘 2를 이용하였을 때는 TinyECC의 곱셈 연산보다 느렸으나, 도 6의 알고리즘 5를 적용하여 TinyECC의 역원 연산보다 더 빠른 점을 차지하더라도 TinyECCK의 제곱 연산은 TinyECC에서의 연산보다 더욱 효율적으로 연산된다.
이는 상기 문제점으로 지적된 가 보다 연산 속도가 느리다고 알려진 바, 본 발명에 따르면 기반의 TinyECCK를 적용하면, 기반의 TinyECC 보다 속도 향상을 이끌어 낼 수 있으므로 상당한 성능 향상을 보임을 알 수 있다.
TinyECCK
와
TinyECC
의 코드 크기 비교
하기의 표 6에 따르면, 동등한 연산을 하였을 때, TinyECCK와 TinyECC의 코드 크기를 비교한다.
비록 C언어로만 구현한 TinyECC의 경우 TinyECCK와 비교하여 코드 크기가 조금 더 크나 성능은 현저히 떨어졌다.
연산 시간을 단축시키기 위하여 곱셈/제곱, 감산 등 성능의 핵심 부분을 인라인 어셈블리(inline assembly)로 구현하였으나 TinyECCK와 비교하여 코드 크기와 연산 시간 측면에서 뒤떨어진다.
스칼라 곱셈과 ECDSA 연산에서 TinyECCK의 코드 크기가 C로 구현된 TinyECC보다 더 작을 뿐만 아니라 연산 시간 측면에서도 인라인 어셈블리를 이용한 TinyECC보다 더욱 뛰어남을 알 수 있다.
상기 표 6을 보면, TinyECCK가 TinyECC와 비교하여 성능과 코드 크기에서 더욱 효율적이다.
TinyECCK가 TinyECC와 비교하여 코드의 크기가 더 작을 수 있는 가장 큰 이유는 C언어로만 구현하였음에도 불구하고 어셈블리나 인라인 어셈블리로 구현된 것들보다 뛰어난 성능을 제공하기 때문이다.
기존의 구현들과의 성능 비교
하기의 표 7은 지금까지의 센서 모트 상에서 구현된 타원 곡선 암호 소프트웨어의 성능을 연산 시간, 코드 크기, 지원하는 프로토콜 등의 측면에서 TinyECCK와 비교하고 있다.
그리고, 기존의 의 구현 1 및 구현 2에서는 도메인 파라미터로 sect163k1을 사용하였지만 스칼라 곱셈 과정에 TNAF 방법을 구현하지 않았기 때문에 코블리츠 커브의 장점을 충분히 활용하지 못하였다.
어셈블리 언어로 구현한 기존의 의 구현 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초 안에 각각 하나의 서명을 생성하고 검증할 수 있다.
본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법은 소프트웨어를 통해 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 테이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명은 도면에 도시된 일 실시예를 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며, 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시예의 변형이 가능하다는 점을 이해할 것이다.
그러나, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 하므로, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.
도 1은 종래의 하나의 워드를 제곱하여 두 워드로 확장하는 유한체 곱셈 알고리즘의 일 예를 도시한 것이다.
도 3은 종래의 모듈러 감산 알고리즘을 도시한 것이다.
도 4는 wTNAF를 연산할 때 적용되는 부분 감산 모듈러 연산의 알고리즘의 일 예를 도시한 것이다.
도 5는 도 2의 알고리즘 2의 곱셈 연산의 연산 과정을 개괄적으로 도시한 것이다.
도 6은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산의 알고리즘을 도시한 것이다.
도 7은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법의 흐름도이다.
도 8은 본 발명에 따른 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치의 블록도이다.
Claims (19)
- 8비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법에 있어서,
- 제 1 항에 있어서,상기 타원 곡선 암호 연산은스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
- 제 1 항에 있어서상기 센서 모트는미카즈 센서 모트를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
- 제 4 항에 있어서,상기 미카즈 센서 모트는8비트 Atmega128을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
- 제 1 항에 있어서,복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법.
- 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 컴퓨터에서 수행할 수 있는 프로그램으로 기록된 기록매체.
- 8비트 기반의 유한체 의 두 원소인 에 있어서 상기 에 대한 다항식을 라하고, 상기 에 대한 다항식을 라고 할 때, 상기 및 를 이용하여 유한체 곱셈의 결과값 를 생성하는 센서 모트에서의 효 율적인 타원 곡선 암호 연산 장치에 있어서,상기 생성된 제 1 중간 결과값을 호출하고 상기 의 워드에 상위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하고, 상기 생성된 제 2 중간 결과값을 호출하고 상기 의 워드에 하위 4비트를 스캔하여 상기 상위 4비트에 해당되는 사전 연산 테이블을 호출하는 호출부; 및
- 제 11 항에 있어서,상기 타원 곡선 암호 연산은스칼라 곱셈 또는 ECDSA 연산을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
- 제 11 항에 있어서상기 센서 모트는미카즈 센서 모트를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
- 제 14 항에 있어서,상기 미카즈 센서 모트는8비트 Atmega128을 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
- 제 11 항에 있어서,상기 배타적 논리합 연산 수행부는상기 상위 4비트에 해당되는 사전 연산 테이블을 호출함으로써 생성된 배타적 논리합 연산의 결과값을 4 비트 레프트 쉬프트(left shift) 하는 쉬프트 레지스터를 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
- 제 11 항에 있어서,상기 배타적 논리합 연산 수행부는한 쌍의 연속한 사전 연산 테이블을 동시에 호출하고, 연속한 부분의 배타적 논리합 연산을 하나로 통합하여 배타적 논리합 연산의 결과값을 생성하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
- 제 11 항에 있어서,복수 회 중복으로 호출되는 중간 결과값에 대한 연산을 단일화하여 배타적 논리합 연산을 수행함으로써 모듈라 감산을 수행하는 모듈라 감산 수행부를 더 포함하는 것을 특징으로 하는 센서 모트에서의 효율적인 타원 곡선 암호 연산 장치.
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)
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)
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 | 한국전자통신연구원 | 유한체 다항식 곱셈 장치 및 그 방법 |
-
2008
- 2008-02-22 KR KR1020080016421A patent/KR100974624B1/ko not_active IP Right Cessation
Cited By (2)
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 |