KR102460248B1 - 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 - Google Patents
유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR102460248B1 KR102460248B1 KR1020190020329A KR20190020329A KR102460248B1 KR 102460248 B1 KR102460248 B1 KR 102460248B1 KR 1020190020329 A KR1020190020329 A KR 1020190020329A KR 20190020329 A KR20190020329 A KR 20190020329A KR 102460248 B1 KR102460248 B1 KR 102460248B1
- Authority
- KR
- South Korea
- Prior art keywords
- register
- value
- stored value
- stored
- elliptic curve
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
-
- 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
- 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/726—Inversion; Reciprocal calculation; Division of elements of a finite field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Executing Machine-Instructions (AREA)
- Error Detection And Correction (AREA)
- Storage Device Security (AREA)
Abstract
본 발명에 따른 타원곡선 암호 시스템의 동작 방법은, 키 설정부에서 암호 알고리즘의 키 길이를 설정하는 단계, 상기 키 설정부에서 상기 키 길이에 대응하는 워드 개수를 지시하는 제 1 설정 정보를 설정하는 단계, 및 상기 키 설정부에서 상기 키 길이에 대응하는 유한체 나눗셈 연산기의 연산 반복 횟수를 지시하는 제 2 설정 정보를 설정하는 단계를 포함할 수 있다.
Description
본 발명은 유한체 나눗셈 연산기, 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법에 관한 것이다.
일반적으로, 타원곡선 암호 시스템(Elliptic Curve Crypto-system)은 Neal Kobliz와 Victor Miller에 의해 1985년에 제안된 이후로 공개키 암호시스템으로서 많은 연구가 수행되어 왔다. 이 암호 시스템은 타원곡선 상의 점들의 이산 대수의 어려움에 기반한 것으로, 같은 안전도에서 비교할 때 기존의 공개키 암호 시스템으로서 널리 이용되는 RSA/DSA보다 빠르고, 키의 크기가 작다는 장점이 있다. 예를 들어 약 160비트의 키크기를 가지는 ECC의 안전도는 키 크기가 1024비트인 RSA와 동일하다고 알려져 있다. 따라서, 제한된 컴퓨팅 능력 및 메모리를 가지는 스마트 카드 등에 적합한 공개키 암호 시스템으로 주목 받고 있다. 이러한 타원곡선 암호에서의 연산은 타원곡선 위의 점들의 연산으로 구성된다. 이 타원곡선 위의 점의 연산은 유한체 덧셈, 유한체 뺄셈, 유한체 곱셈, 및 유한체 나눗셈 등의 유한체 연산으로 구성된다. 한 타원곡선 암호 등은 암호학적 안전도가 사용하는 키의 크기에 의하여 결정되는 특징이 있다. 즉, 현재의 암호시스템은 안전성을 보장하기 위하여, 타원곡선의 경우 256비트를 사용하기를 권장하고 있다. 그러나, 양자 컴퓨팅의 등장으로, 키의 크기를 증가시킬 필요성이 제기되고 있다. 일예로서, 차량통신보안 국제표준규격인 IEEE 1609.2의 2017년 개정판에서는 기존의 256비트 타원곡선 암호 이외에도, 384비트 타원곡선 암호를 권장하고 있다. 그러나, 기존의 256비트 키를 기반으로 구현된 타원곡선 암호 시스템은 384비트의 타원곡선 암호의 이용을 지원하지 않는 문제점이 있다. 또한, 타원곡선 암호화의 연산 중에서도 가장 많은 시간을 소요하는 연산은 유한체 나눗셈 연산으로서, 고속의 타원곡선 암호화를 위하여서는 고속의 유한체 나눗셈 연산이 필수적이다. 기존의 타원곡선 암호 시스템은 키의 길이가 변경될 경우, 하드웨어를 교체해야 하는 문제점이 있다.
본 발명의 목적은 키 크기의 길이를 가변적으로 변경 가능한 유한체 나눗셈 연산기, 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법을 제공하는데 있다.
또한, 본 발명의 목적은 신규한 유한체 나눗셈기의 구조를 제공하는 타원곡선 암호 시스템 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 타원곡선 암호 시스템의 동작 방법에 있어서, 키 설정부에서 암호 알고리즘의 키 길이를 설정하는 단계; 상기 키 설정부에서 상기 키 길이에 대응하는 워드 개수를 지시하는 제 1 설정 정보를 설정하는 단계; 및 상기 키 설정부에서 상기 키 길이에 대응하는 유한체 나눗셈 연산기의 연산 반복 횟수를 지시하는 제 2 설정 정보를 설정하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 제 1 설정 정보는 좌표계 변환부, 타원곡선 점 덧셈부 및 타원곡선 스칼라 곱셈부로 구성된 제 1 연산 장치로 전송되고, 상기 제 2 설정 정보는 상기 유한체 나눗셈 연산기로 전송되는 것을 특징으로 한다.
실시 예에 있어서, 상기 제 1 연산 장치는 소프트웨어로 구현되는 것을 특징으로 한다.
실시 예에 있어서, 상기 유한체 나눗셈 연산기는 하드웨어로 구현되는 것을 특징으로 한다.
실시 예에 있어서, 상기 유한체 나눗셈 연산기는, 초기값과 중간 계산값을 저장하는 복수의 레지스터들; 상기 복수의 레지스터들의 출력값들에 대하여 유한체 덧셈 혹은 뺄셈을 수행하는 복수의 가/감산기들; 상기 복수의 레지스터들의 어느 하나의 출력값과 상기 복수의 가/감산기들의 어느 하나의 출력값 중에서 어느 하나를 선택하는 복수의 다중화기들; 및 상기 복수의 다중화기들의 출력값들을 우측 쉬프트를 수행하고, 상기 중간 계산값인 상기 쉬프트된 값을 대응하는 레지스터로 출력하는 복수의 쉬프터들; 및 상기 복수의 가/감산기들, 상기 복수의 다중화기들, 및 상기 복수의 쉬프터들을 제어하는 제어기를 포함할 수 있다.
본 발명의 실시 예에 따른 타원곡선 암호 시스템은: 적어도 하나의 프로세서; 상기 적어도 하나의 프로세서에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리; 및 유한체 나눗셈 연산기를 포함하고, 상기 적어도 하나의 인스트럭션은, 키 설정부에서 암호 알고리즘의 키 길이를 설정하고; 상기 키 설정부에서 상기 키 길이에 대응하는 워드 개수를 지시하는 제 1 설정 정보를 설정하고; 및 상기 키 설정부에서 상기 키 길이에 대응하는 상기 유한체 나눗셈 연산기의 연산 반복 횟수를 지시하는 제 2 설정 정보를 설정하도록 구현되는 것을 것을 특징으로 한다.
실시 예에 있어서, 상기 적어도 하나의 인스트럭션은, 좌표계 변환부에서 타원곡선 암호 연산을 수행하기 위하여 아핀 좌표계, 사영 좌표계, 자코비안 좌표계 사이의 타원곡선 점을 변환하고; 타원곡선 점 덧셈부에서 서로 다른 2개의 타원 곡선의 점들에 대한 덧셈 연산을 수행하고; 및 타원곡선 스칼라 곱셈부에서 임의의 점 혹은 고정된 점에 대한 스칼라 곱셈을 수행하도록 구현되고, 상기 제 1 설정 정보는 상기 좌표계 변환부, 상기 타원곡선 점 덧셈부, 및 상기 타원곡선 스칼라 곱셈부로 전송되는 것을 특징으로 한다.
실시 예에 있어서, 상기 유한체 나눗셈 연산기는, 초기값과 중간 계산값을 저장하는 복수의 레지스터들; 상기 복수의 레지스터들의 출력값들에 대하여 유한체 덧셈 혹은 뺄셈을 수행하는 복수의 가/감산기들; 상기 복수의 레지스터들의 어느 하나의 출력값과 상기 복수의 가/감산기들의 어느 하나의 출력값 중에서 어느 하나를 선택하는 복수의 다중화기들; 및 상기 복수의 다중화기들의 출력값들을 우측 쉬프트를 수행하고, 상기 중간 계산값인 상기 쉬프트된 값을 대응하는 레지스터로 출력하는 복수의 쉬프터들; 및 상기 복수의 가/감산기들, 상기 복수의 다중화기들, 및 상기 복수의 쉬프터들을 제어하는 제어기를 포함할 수 있다.
실시 예에 있어서, 상기 유한체 나눗셈 연산기는, 제 1, 제 2, 제 3, 제 4 및 제 5 레지스터들; 상기 제 1 레지스터의 저장값, 상기 제 2 레지스터의 저장값, 및 상기 제 5 레지스터의 저장값을 가산 혹은 감산하는 제 1 가/감산기; 상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값을 가산 혹은 감산 하는 제 2 가/감산기; 상기 제 1 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 1 다중화기; 상기 제 2 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 2 다중화기; 상기 제 3 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 3 다중화기; 상기 제 4 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 4 다중화기; 상기 제 1 내지 상기 제 4 다중화기기들 각각의 출력값을 우측 쉬트프 하고, 상기 쉬프트된 값을 상기 제 1 내지 상기 제 4 레지스터들로 출력 하는 제 1 내지 제 4 쉬프터들; 및 상기 제 1 및 제 2 가/감산기들, 상기 제 1 내지 상기 제 4 다중화기들, 및 상기 제 1 내지 상기 제 4 쉬프터들을 제어하는 제어기를 포함할 수 있다.
실시 예에 있어서, 상기 제 1 레지스터의 초기값은 피제수이고, 상기 제 2 레지스터의 초기값은 0이고, 상기 제 3 레지스터의 초기값은 제수이고, 상기 제 4 레지스터의 초기값은 모듈러스이고, 상기 제 5 레지스터의 초기값은 상기 모듈러스인 것을 특징으로 한다.
실시 예에 있어서, 상기 제 2 설정 정보에 따라 상기 제 1 내지 상기 제 5 레지스터들의 각각의 상기 연산 반복 횟수가 결정되는 것으로 특징으로 한다.
실시 예에 있어서, 상기 제어기는, 상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값이 같지 않을 때, 상기 제 3 레지스터의 저장값의 최하위 비트가 '0' 인지를 판별하고, 상기 제 3 레지스터의 저장값의 최하위 비트가 '0'이면, 상기 제 3 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0'인지 판별하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 1 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0'이 아니라면 상기 제 1 레지스터의 저장값과 상기 제 5 레지스터의 저장값을 덧셈 연산하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 1 덧셈 연산값을 상기 제 1 레지스터에 저장하는 것을 특징으로 한다.
실시 예에 있어서, 상기 제어기는, 상기 제 3 레지스터의 저장값의 최하위 비트가 '0'이 아닐 때 상기 제 4 레지스터의 저장값의 최하위 비트가 '0인 지를 판별하고, 상기 제 4 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 4 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2레지스터의 저장값의 최하위 비트가 '0'인지 판별하고, 상기 제 2 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 2 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2 레지스터의 저장값의 최하위 비트가 '0'이 아니라면 상기 제 2 레지스터의 저장값과 상기 제 5 레지스터의 저장값을 덧셈 연산하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 2 덧셈 연산값을 상기 제 2 레지스터에 저장하는 것을 특징으로 한다.
실시 예에 있어서, 상기 제어기는, 상기 제 4 레지스터의 저장값의 최하위 비트가 '0' 이 아니라면 상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 큰 지를 판별하고, 상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 크다면 상기 제 3 레지스터의 저장값에서 상기 제 4 레지스터의 저장값을 뺄셈하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 1 뺄셈 연산값을 상기 제 3 레지스터에 저장하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 크거나 같은 지를 판별하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 크거나 같을 때 상기 제 1 레지스터의 저장값에서 상기 제 2 레지스터의 저장값을 뺀 값을 제 1 중간 계산값으로 설정하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 작을 때 상기 제 1 레지스터의 저장값에서 상기 제 2 레지스터의 저장값을 빼고 상기 제 5 레지스터의 저장값을 더한 값을 상기 제 1 중간 계산값으로 설정하고, 상기 제 1 중간 계산값의 최하위 비트가 '0'인 지를 판별하고, 상기 제 1 중간 계산값의 최하위 비트가 '0'이라면 상기 제 1 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 중간 계산값의 최하위 비트가 '0' 이 아니라면 상기 제 1 중간 계산값에서 상기 제 5 레지스터의 저장값을 덧셈하여 우측 쉬프트된 제 3 덧셈 연산값을 상기 제 1 레지스터에 저장하는 것을 특징으로 한다.
실시 예에 있어서, 상기 제어기는, 상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 크지 않다면 상기 제 4 레지스터의 저장값에서 상기 제 3 레지스터의 저장값을 뺄셈하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 2 뺄셈 연산값을 상기 제 4 레지스터에 저장하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 크거나 같은 지를 판별하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 크거나 같을 때 상기 제 2 레지스터의 저장값에서 상기 제 1 레지스터의 저장값을 뺀 값을 제 2 중간 계산값으로 설정하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 작을 때 상기 제 2 레지스터의 저장값에서 상기 제 1 레지스터의 저장값을 빼고 상기 제 5 레지스터의 저장값을 더한 값을 상기 제 2 중간 계산값으로 설정하고, 상기 제 2 중간 계산값의 최하위 비트가 '0'인 지를 판별하고, 상기 제 2 중간 계산값의 최하위 비트가 '0'이라면 상기 제 2 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2 중간 계산값의 최하위 비트가 '0' 이 아니라면 상기 제 2 중간 계산값에서 상기 제 5 레지스터의 저장값을 덧셈하여 우측 쉬프트된 제 4 덧셈 연산값을 상기 제 2 레지스터에 저장하는 것을 특징으로 한다.
실시 예에 있어서, 상기 제어기는, 상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값이 같을 때, 유한체 나눗셈 연산 동작을 종료시키는 것을 특징으로 한다.
본 발명의 실시 예에 따른 타원곡선 암호 시스템의 유한체 나눗셈 연산기는, 제 1, 제 2, 제 3, 제 4 및 제 5 레지스터들; 상기 제 1 레지스터의 저장값, 상기 제 2 레지스터의 저장값, 및 상기 제 5 레지스터의 저장값을 가산 혹은 감산하는 제 1 가/감산기; 상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값을 가산 혹은 감산 하는 제 2 가/감산기; 상기 제 1 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 1 다중화기; 상기 제 2 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 2 다중화기; 상기 제 3 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 3 다중화기; 상기 제 4 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 4 다중화기; 상기 제 1 내지 상기 제 4 다중화기기들 각각의 출력값을 우측 쉬트프 하고, 상기 쉬프트된 값을 상기 제 1 내지 상기 제 4 레지스터들로 출력 하는 제 1 내지 제 4 쉬프터들; 및 상기 제 1 및 제 2 가/감산기들, 상기 제 1 내지 상기 제 4 다중화기들, 및 상기 제 1 내지 상기 제 4 쉬프터들을 제어하는 제어기를 포함하고, 상기 제 1 내지 상기 제 5 레지스터들의 각각은 설정 정보에 대응하는 레지스터의 크기에 따라 연산의 반복 횟수를 결정하는 것으로 특징으로 한다.
실시 예에 있어서, 상기 제 1 레지스터의 초기값은 피제수이고, 상기 제 2 레지스터의 초기값은 0이고, 상기 제 3 레지스터의 초기값은 제수이고, 상기 제 4 레지스터의 초기값은 모듈러스이고, 상기 제 5 레지스터의 초기값은 상기 모듈러스인 것을 특징으로 한다.
실시 예에 있어서, 상기 설정 정보는 암호 알고리즘의 키 길이에 따라 달라지는 것을 특징으로 한다.
실시 예에 있어서, 상기 설정 정보에 의해 128 비트 크기의 레지스터 크기를 갖고, 상기 키 길이가 256 비트일 때, 상기 반복 연산 횟수는 2회인 것을 특징으로 한다.
본 발명의 실시 예에 따른 타원곡선 암호 시스템 및 그것의 동작 방법은, 암호 알고리즘의 키 길이가 변경되는 경우, 하드웨어의 변화 없이 설정값 조정을 통하여 키 길이를 갱신함으로써, 종래의 그것처럼 하드웨어를 완전히 교체해야 하는 비용을 줄일 수 있다.
또한, 본 발명의 실시 예에 따른 타원곡선 암호 시스템 및 그것의 동작 방법은, 종래의 소프트웨어적인 방법으로 구성한 나눗셈 연산 방법과 달리, 하드웨어를 통하여 가장 오랜 시간이 소요되는 유한체 나눗셈 연산을 수행함으로써, 고속의 타원곡선 연산을 가능하게 한다.
또한, 본 발명의 실시 예에 따른 타원곡선 암호 시스템 및 그것의 동작 방법은, 키 길이 갱신 지원 가능하여 차량 통신 환경 같이 고속의 타원곡선 연산이 필요한 분야에서 타원곡선 암호를 구현할 수 있다.
또한, 본 발명의 실시 예에 따른 타원곡선 암호 시스템 및 그것의 동작 방법은 암호 알고리즘의 키 길이의 변경에 대응하여, 지속으로 갱신 효과를 가질 수 있다.
이하에 첨부되는 도면들은 본 실시 예에 관한 이해를 돕기 위한 것으로, 상세한 설명과 함께 실시 예들을 제공한다. 다만, 본 실시예의 기술적 특징이 특정 도면에 한정되는 것은 아니며, 각 도면에서 개시하는 특징들은 서로 조합되어 새로운 실시 예로 구성될 수 있다.
도 1은 본 발명의 실시 예에 따른 타원곡선 암호화 시스템(10)을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 타원곡선 암호 시스템(10)의 초기화 과정을 예시적으로 보여주는 흐름도이다.
도 3은 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)의 연산 과정을 예시적으로 보여주는 도면이다.
도 5은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다.
도 1은 본 발명의 실시 예에 따른 타원곡선 암호화 시스템(10)을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 타원곡선 암호 시스템(10)의 초기화 과정을 예시적으로 보여주는 흐름도이다.
도 3은 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)의 연산 과정을 예시적으로 보여주는 도면이다.
도 5은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다.
용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 타원곡선 암호화 시스템(10)을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 타원곡선 암호화 시스템(10)은 키 설정부(100), 제 1 연산 장치(200), 및 제 2 연산 장치(300)를 포함할 수 있다.
키 설정부(100)는 암호 알고리즘의 키 길이에 따른 시스템의 파라미터를 설정하도록 구현될 수 있다. 예를 들어, 키 설정부(100)는 암호 알고리즘의 길이에 따라 제 1 및 제 2 설정 정보를 발생할 수 있다.
제 1 연산 장치(200)는 좌표계 변환부(210), 타원곡선 점 덧셈부(220), 및 타원곡선 스칼라 곱셈부(230)를 포함할 수 있다.
좌표계 변환부(210)는 타원곡선 암호연산을 수행함에 있어서, 아핀 좌표계, 사영 좌표계, 자코비안 좌표계 사이의 타원곡선 점을 변환하도록 구현될 수 있다.
타원곡선 점 덧셈부(220)는 서로 다른 2개의 타원곡선의 점들에 대한 덧셈 연산하도록 구현될 수 있다. 예를 들어, [수학식 1]은 아핀 좌표계로 표현한 2개의 점(x1, y1)과 (x2, y2)에 대한 덧셈 연산 계산을 나타낸 것이다.
[수학식1]에서 2개의 점이 같은 경우, 즉 한 점의 2배 연산과, 서로 다른 2 개의 점에 대하여 각각 다르게 연산될 수 있다.
타원곡선 스칼라 곱셈부(230)는 임의의 점 혹은 고정된 점에 대한 스칼라 곱셈을 연산하도록 구현될 수 있다.
한편, 도 1에 도시된 제 1 연산 장치(200)의 구성 요소들, 좌표계 변환부(210), 타원곡선 점 덧셈부(220), 타원곡선 스칼라 곱셈부(230)은 소프트웨어적으로 구현될 수 있다. 하지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다. 제 1 연산 장치(200)의 구성 요소들(210, 220, 230)의 각각은 소프트웨어, 하드웨어, 및 펌웨어 중에서 적어도 하나에 의해 구현될 수 있다.
제 2 연산 장치(300)는 유한체 나눗셈부(310)를 포함할 수 있다.
유한체 나눗셈부(310)는 타원곡선을 구성하는 소수체에 대한 나눗셈 연산하도록 구현될 수 있다. 한편, 유한체 나눗셈부(310)는 하드웨어로 구현될 수 있다. 하지만 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다.
본 발명의 실시 예에 따른 타원곡선 암호 시스템(10)은 가장 연산 시간이 많이 걸리는 소수체 나눗셈 연산을 하드웨어로 구성하고, 타원곡선 점의 연산을 소프트웨어 구성함으로써, 타원곡선 암호를 고속으로 연산하는 장점을 가질 수 있다.
또한, 본 발명의 실시 예에 따른 타원곡선 암호 시스템(10)은 소프트웨어로 구성된 타원곡선 점의 제 1 연산 장치(200)를 키 설정부(100)를 통하여 제어함으로써, 암호화 키 길이의 갱신할 수 있다.
도 2는 본 발명의 실시 예에 따른 타원곡선 암호 시스템(10)의 초기화 과정을 예시적으로 보여주는 흐름도이다. 도 1 및 도 2를 참조하면, 타원곡선 암호 시스템(10)의 초기화 과정은 다음과 같이 진행될 수 있다.
키 설정부(110)에 의하여 초기에 타원곡선 암호 알고리즘의 키 길이가 설정될 수 있다(S110).
설정된 키 길이에 의하여, 키 설정부(100)는 제 1 연산 장치(200)으로 소프트웨어로 구성되는 좌표계 변환부(210), 타원곡선 점 덧셈부(220), 타원곡선 스칼라 곱셈부(230)의 제 1 설정 정보를 전송할 수 있다. 여기서 제 1 설정정보는 암호화 길이에 따라서 결정된 워드의 개수를 포함할 수 있다(S120).
설정된 키 길이에 의하여, 키 설정부(100)는 제 2 연산 장치(300)으로 하드웨어 구성되는 유한체 나눗셈부(310)의 설정정보를 전송할 수 있다. 여기서 제 2 설정정보는 하드웨어 레지스터의 크기에 따른 연산의 반복 횟수를 포함할 수 있다(S130).
상술 된 바와 같이, 초기화 동작에서 키 설정부(100)에 의해 암호 알고리즘의 키 길이에 따라 제 1 및 제 2 연산 장치들(200, 300)의 설정 정보가 설정될 수 있다.
도 3은 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)를 예시적으로 보여주는 도면이다. 도 3을 참조하면, 유한체 나눗셈 연산기(310)는 제 1 레지스터(311), 제 2 레지스터(312), 제 3 레지스터(313), 제 4 레지스터(314), 제 5 레지스터(315), 제 1 가/감산기(321), 제 2 가/감산기(322), 제 1 다중화기(331), 제 2 다중화기(332), 제 3 다중화기(333), 제 4 다중화기(334), 제 1 쉬프터(341), 제 2 쉬프터(342), 제 3 쉬프터(343), 제 4 쉬프터(344), 및 제어기(350)를 포함할 수 있다.
복수의 레지스터들(311 ~ 315)의 각각은 초기값 및 중간 계산값을 저장하도록 구현될 수 있다.
제 1 및 제 2 가/감산기(321, 322)의 각각은 유한체 덧셈 및 뺄셈을 수행하도록 구현될 수 있다.
복수의 다중화기(331 ~ 334)의 각각은 대응하는 쉬프터의 출력과 대응하는 가/감산기의 출력을 선택하도록 구현될 수 있다.
복수의 쉬프터들(341 ~ 344)은 우측 쉬프트를 수행하도록 구현될 수 있다.
제어기(350)는 복수의 가/감산기들(321, 322)과 복수의 다중화기(331, 332, 333, 334)의 입력을 결정하도록 구현될 수 있다.
한편, 레지스터의 초기 설정값은 다음과 같다. 제 1 레지스터(311)의 초기값은 피제수일 수 있다. 제 2 레지스터(312)의 초기값은 0일 수 있다. 제 3 레지스터(313)의 초기값은 제수일 수 있다. 제 4 레지스터(314)의 초기값은 모듈러스 일 수 있다. 제 5 레지스터(315)의 초기값은 모듈러스일 수 있다.
제 1 가/감산기(321)는 제 1 레지스터(311)의 출력값, 제 5 레지스터(315)의 출력값, 제 2 레지스터(312)의 출력값에 대한 가/감산 연산을 수행할 수 있다.
제 2 가/감산기(322)는 제 3 레지스터(313)의 출력값과 제 4 레지스터(314)의 출력값에 대한 가/감산 연산을 수행할 수 있다.
제 1 다중화기(331)는 제 1 레지스터(311)의 출력값과 제 1 가/감산기(321)의 출력값을 선택할 수 있다. 제 2 다중화기(332)는 제 2 레지스터(312)의 출력값과 제 1 가/감산기(321)의 출력값을 선택할 수 있다. 제 3 다중화기(333)는 제 3 레지스터(313)의 출력값과 제 2 가/감산기(322)의 출력값을 선택할 수 있다. 제 4 다중화기(334)는 제 4 레지스터(314)의 출력값과 제 2 가/감산기(322)의 출력값을 선택할 수 있다.
제 1 쉬프터(341)는 제 1 다중화기(331)의 출력값에 대한 우측 쉬프트를 수행할 수 있다. 제 2 쉬프터(342)는 제 2 다중화기(332)의 출력값에 대한 우측 쉬프트를 수행할 수 있다. 제 3 쉬프터(343)는 제 3 다중화기(333)의 출력값에 대한 우측 쉬프트를 수행할 수 있다. 제 4 쉬프터(344)는 제 4 다중화기(334)의 출력값에 대한 우측 쉬프트를 수행할 수 있다.
복수의 레지스터들(311 ~ 315)의 각각은 키 설정부(100)에서 제공되는 제 2 설정 정보에 의하여 레지스터의 크기에 따라 연산의 반복 횟수를 결정할 수 있다. 즉, 128비트 크기의 레지스터로 초기 구성된 유한체 나눗셈 연산기(310)는 256비트 키가 설정된 경우 2회 반복 연산을 수행하여, 최종 결과를 출력할 수 있다.
도 4는 본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)의 연산 과정을 예시적으로 보여주는 도면이다. 도 3 및 도 4를 참조하면, 유한체 나눗셈 연산기(310)의 연산 과정을 다음과 같이 진행될 수 있다.
도 4에서 R1은 제 1 레지스터(311)의 저장값, R2는 제 2 레지스터(312)의 저장값, R3은 제 3 레지스터(313)의 저장값, R4는 제 4 레지스터(314)의 저장값, R5는 제 5 레지스터(315)의 저장값, T1은 제 1 중간 계산값, T2는 제 2 중간 계산값이다.
또한 '>>1'은 한 비트 우측 쉬프트를 의미한다.
초기화 단계에서 R1은 피제수, R2는 0, R3는 제수, R4는 모듈러스, R5는 모듈러스로 초기화 될 수 있다.
R3가 R4 가 같은지 판별될 수 있다(S110). S110 단계에서 R3와 R4가 다르면, R3의 최하위 비트가 0인지 판별 될 수 있다(S120).
S120 단계에서 R3의 최하위 비트가 0이면, R3에 대한 우측 쉬프트를 수행하고, 제 3 레지스터(313)에 저장될 수 있다(S121). 이후 R1의 최하위 비트가 0인지 판별될 수 있다(S122). 만일, S122 단계에서 R1의 최하위 비트가 0이면, R1에 대한 우측 쉬프트를 수행하고, 쉬프트된 값이 제 1 레지스터(311)에 저장되고(S123), S110 단계가 반복될 수 있다. 반면에, S122 단계에서 R1의 최하위 비트가 0이 아니면, (R1+R5)에 대한 우측 쉬프트를 수행하여, 쉬프트된 값이 제 1 레지스터(311)에 저장되고(S124), S110 단계가 반복될 수 있다.
한편, S120 단계에서 R3의 최하위 비트가 0이 아니면, R4의 최하위 비트가 0인지 판별될 수 있다(S130).
S130 단계에서 R4의 최하위 비트가 0이면, R4에 대한 우측 쉬프트를 수행하고, 제 4 레지스터(314)에 저장될 수 있다(S131). 이후 R2의 최하위 비트가 0인지 판별될 수 있다(S132). 만일, S132 단계에서 R2의 최하위 비트가 0이면, R2에 대한 우측 쉬프트를 수행하고, 쉬프트된 값이 제 2 레지스터(312)에 저장되고(S133), S110 단계가 반복될 수 있다. 반면에, S132 단계에서 R2의 최하위 비트가 0이 아니면, (R2+R5)에 대한 우측 쉬프트를 수행하여, 쉬프트된 값이 제 2 레지스터(312)에 저장되고(S134), S110 단계가 반복될 수 있다.
한편, S130 단계에서 R4의 최하위 비트가 0이 아니면, R3 > R4 인지 판별될 수 있다(S140).
만일, S140 단계에서 R3 > R4 이면, (R3 - R4)에 대한 우측 쉬프트가 수행되고, 쉬프트된 값은 제 3 레지스터(313)에 저장될 수 있다(S141).
이후에 R1이 R2 보다 크거나 같은 지 판별될 수 있다(S142). 만일 S142 단계에서 R1이 R2 보다 크거나 같으면, T1에 (R1-R2)이 저장될 수 있다(S143). 반면에 S142 단계에서 R1이 R2 보다 작으면, T1에 (R1-R2+R5)이 저장될 수 있다(S144). 이후에 T1의 최하위 비트가 0인지 판별될 수 있다(S145).
만일, S145 단계에서 T1의 최하위 비트가 0이면, R1에 대한 우측 쉬프트가 수행되고, 쉬프트된 값은 제 1 레지스터(311)에 저장되고, S110 단계가 반복될 수 있다(S146). 반면에, S145 단계에서 T1의 최하위 비트가 0이 아니면, (T1 + R5)에 대한 우측 쉬프트가 수행되고, 쉬프트 된 값은 제 1 레지스터(311) 저장되고, S110 단계가 반복될 수 있다(S147).
반면에, S140 단계에서 R3이 R4 보다 크지 않으면, (R4 - R3)에 대한 우측 쉬프트가 수행되고, 쉬프트된 값은 제 4 레지스터(314)에 저장될 수 있다(S151).
이후에 R2이 R1 보다 크거나 같은 지 판별될 수 있다(S152). 만일 S152 단계에서 R2가 R1 보다 크거나 같으면, T2에 (R2-R1)이 저장될 수 있다(S153). 반면에 S152 단계에서 R2가 R1 보다 작으면, T2에 (R2-R1+R5)이 저장될 수 있다(S154). 이후에 T2의 최하위 비트가 0인지 판별될 수 있다(S155).
만일, S155 단계에서 T2의 최하위 비트가 0이면, R2에 대한 우측 쉬프트가 수행되고, 쉬프트된 값은 제 2 레지스터(312)에 저장되고, S110 단계가 반복될 수 있다(S156). 반면에, S155 단계에서 T2의 최하위 비트가 0이 아니면, (T2 + R5)에 대한 우측 쉬프트가 수행되고, 쉬프트 된 값은 제 2 레지스터(312) 저장되고, S110 단계가 반복될 수 있다(S157).
본 발명의 실시 예에 따른 유한체 나눗셈 연산기(310)의 나눗셈 연산 동작은 레지스터의 값들에 대한 가/감산과, 우측 쉬프트를 반복하는 것으로 구성될 수 있다.
도 5은 본 발명의 실시 예에 따른 전자 장치(1000)를 예시적으로 보여주는 도면이다. 도 5을 참조하면, 전자 장치(1000)는 적어도 하나의 프로세서(1100), 네트워크 인터페이스(1200), 메모리(1300), 디스플레이(1400), 입출력 장치(1500), 유한체 나눗셈 연산기(1600)을 포함할 수 있다.
프로세서(1100)는 도 1 내지 도 4을 통하여 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 4을 통하여 전술한 적어도 하나의 방법으로 구현될 수 있다. 프로세서(1100)는, 상술된 바와 같이 암호 알고리즘의 키 길이에 따라 연산 장치들(도 1 참조, 200, 300) 혹은 유한체 나눗셈 연산기(1600)의 설정 정보를 가변하고, 가변된 설정 정보에 따라 타원곡선 암/복호 동작을 수행하도록 구현될 수 있다. 여기서 유한체 나눗셈 연산기(1600)는 도 3에 도시된 유한체 나눗셈 연산기(300)로 동일하게 구현되거나 도 4에 도시된 유한체 나눗셈 연산 동작에 의해 동일하게 구현될 수 있다.
프로세서(1100)는 프로그램을 실행하고, 전자 시스템을 제어할 수 있다. 전자 시스템은 입출력 장치(1500)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 혹은 네트워크)에 연결되고, 데이터를 교환할 수 있다. 전자 시스템은 이동 전화, 스마트 폰, PDA, 태블릿 컴퓨터, 랩톱 컴퓨터 등 모바일 장치, 퍼스널 컴퓨터, 태블릿 컴퓨터, 넷북 등 컴퓨팅 장치, 혹은 텔레비전, 스마트 텔레비전, 게이트 제어를 위한 보안 장치 등 전자 제품 등 다양한 전자 시스템들을 포함할 수 있다.
네트워크 인터페이스(1200)는 외부의 네트워크와 다양한 유/무선 방식에 의해 통신을 수행하도록 구현될 수 있다.
메모리(1300)는 컴퓨터에서 읽을 수 있는 명령어(instruction)를 포함할 수 있다. 프로세서(1100)는 메모리(1300)에 저장된 명령어가 프로세서(1100)에서 실행됨에 따라 앞서 언급된 동작들을 수행할 수 있다. 메모리(1300)는 휘 발성 메모리 혹은 비휘발성 메모리일 수 있다.
메모리(1300)는 사용자의 데이터를 저장하도록 저장 장치를 포함할 수 있다. 저장 장치는 eMMC(embedded multimedia card), SSD(solid state drive), UFS(universal flash storage) 등 일 수 있다. 저장 장치는 적어도 하나의 비휘발성 메모리 장치를 포함할 수 있다. 비휘발성 메모리 장치는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
이상에서 설명된 실시 예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/혹은 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 혹은 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 혹은 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다.
또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소 (processing element) 및/혹은 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치 는 복수의 프로세서 혹은 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 혹은 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 혹은 결합적으로 (collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/혹은 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 혹은 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 혹은 장치, 혹은 전송되는 신호 파(signal wave)에 영구적으로, 혹은 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매 체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판 독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 혹은 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체 (magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명에 의하면, 암호 알고리즘의 키 길이가 변경되는 경우, 하드웨어의 변화 없이 설정값 조정을 통하여 키 길이를 갱신할 수 있는 장점이 있다. 따라서, 종래의 암호시스템처럼 하드웨어를 완전히 교체해야 하는 비용이 절감되는 장점을 가진다. 또한, 종래의 소프트웨어적인 방법으로 구성한 나눗셈 연산 방법과 달리, 하드웨어를 통하여 가장 오랜 시간이 소요되는 유한체 나눗셈 연산을 수행함으로써, 고속의 타원곡선연산이 가능하다는 장점을 가진다. 따라서, 본 발명에 의한 키 길이 갱신 지원 가능한 타원곡선 암호화 장치 및 방법을 이용하면, 차량 통신 환경 같이 고속의 타원곡선 연산이 필요한 분야에서 타원곡선 암호를 구현할 수 있으며, 암호 알고리즘의 키 길이의 변경에 대응하여, 지속으로 갱신이 효과를 가진다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 이용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 타원곡선 암호 시스템
100: 키 설정부
200: 제 1 연산 장치
300: 제 2 연산 장치
210: 좌표계 변환부
220: 타원곡선 점 덧셈부
230: 타원곡선 스칼라 곱셈부
310: 유한체 나눗셈 연산기
100: 키 설정부
200: 제 1 연산 장치
300: 제 2 연산 장치
210: 좌표계 변환부
220: 타원곡선 점 덧셈부
230: 타원곡선 스칼라 곱셈부
310: 유한체 나눗셈 연산기
Claims (20)
- 타원곡선 암호 시스템의 동작 방법에 있어서,
키 설정부에서 암호 알고리즘의 키 길이를 설정하는 단계;
상기 키 설정부에서 상기 키 길이에 대응하는 워드 개수를 지시하는 제 1 설정 정보를 설정하는 단계; 및
상기 키 설정부에서 상기 키 길이에 대응하는 유한체 나눗셈 연산기의 연산 반복 횟수를 지시하는 제 2 설정 정보를 설정하는 단계를 포함하고,
상기 제 1 설정 정보는 좌표계 변환부, 타원곡선 점 덧셈부 및 타원곡선 스칼라 곱셈부로 구성된 제 1 연산 장치로 전송되고,
상기 제 2 설정 정보는 상기 유한체 나눗셈 연산기로 전송되고,
상기 제 1 연산 장치는 소프트웨어로 구현되며, 상기 유한체 나눗셈 연산기는 하드웨어로 구현되고,
상기 키 설정부는 상기 제 1 연산 장치를 제어하여 상기 키 길이를 갱신하는 방법. - 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 유한체 나눗셈 연산기는,
초기값과 중간 계산값을 저장하는 복수의 레지스터들;
상기 복수의 레지스터들의 출력값들에 대하여 유한체 덧셈 혹은 뺄셈을 수행하는 복수의 가/감산기들;
상기 복수의 레지스터들의 어느 하나의 출력값과 상기 복수의 가/감산기들의 어느 하나의 출력값 중에서 어느 하나를 선택하는 복수의 다중화기들; 및
상기 복수의 다중화기들의 출력값들을 우측 쉬프트를 수행하고, 상기 중간 계산값인 상기 쉬프트된 값을 대응하는 레지스터로 출력하는 복수의 쉬프터들; 및
상기 복수의 가/감산기들, 상기 복수의 다중화기들, 및 상기 복수의 쉬프터들을 제어하는 제어기를 포함하는 방법. - 타원곡선 암호 시스템에 있어서:
적어도 하나의 프로세서;
상기 적어도 하나의 프로세서에 의해 실행되는 적어도 하나의 인스트럭션을 저장하는 메모리; 및
유한체 나눗셈 연산기를 포함하고,
상기 적어도 하나의 인스트럭션은,
키 설정부에서 암호 알고리즘의 키 길이를 설정하고;
상기 키 설정부에서 상기 키 길이에 대응하는 워드 개수를 지시하는 제 1 설정 정보를 설정하고; 및
상기 키 설정부에서 상기 키 길이에 대응하는 상기 유한체 나눗셈 연산기의 연산 반복 횟수를 지시하는 제 2 설정 정보를 설정하도록 구현되며,
상기 제 1 설정 정보는 좌표계 변환부, 타원곡선 점 덧셈부 및 타원곡선 스칼라 곱셈부로 구성된 제 1 연산 장치로 전송되고,
상기 제 2 설정 정보는 상기 유한체 나눗셈 연산기로 전송되고,
상기 제 1 연산 장치는 소프트웨어로 구현되며, 상기 유한체 나눗셈 연산기는 하드웨어로 구현되고,
상기 키 설정부는 상기 제 1 연산 장치를 제어하여 상기 키 길이를 갱신하는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 6 항에 있어서,
상기 적어도 하나의 인스트럭션은,
좌표계 변환부에서 타원곡선 암호 연산을 수행하기 위하여 아핀 좌표계, 사영 좌표계, 자코비안 좌표계 사이의 타원곡선 점을 변환하고;
타원곡선 점 덧셈부에서 서로 다른 2개의 타원 곡선의 점들에 대한 덧셈 연산을 수행하고; 및
타원곡선 스칼라 곱셈부에서 임의의 점 혹은 고정된 점에 대한 스칼라 곱셈을 수행하도록 구현되는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 6 항에 있어서,
상기 유한체 나눗셈 연산기는,
초기값과 중간 계산값을 저장하는 복수의 레지스터들;
상기 복수의 레지스터들의 출력값들에 대하여 유한체 덧셈 혹은 뺄셈을 수행하는 복수의 가/감산기들;
상기 복수의 레지스터들의 어느 하나의 출력값과 상기 복수의 가/감산기들의 어느 하나의 출력값 중에서 어느 하나를 선택하는 복수의 다중화기들; 및
상기 복수의 다중화기들의 출력값들을 우측 쉬프트를 수행하고, 상기 중간 계산값인 상기 쉬프트된 값을 대응하는 레지스터로 출력하는 복수의 쉬프터들; 및
상기 복수의 가/감산기들, 상기 복수의 다중화기들, 및 상기 복수의 쉬프터들을 제어하는 제어기를 포함하는 타원곡선 암호 시스템. - 제 8 항에 있어서,
상기 유한체 나눗셈 연산기는,
제 1, 제 2, 제 3, 제 4 및 제 5 레지스터들;
상기 제 1 레지스터의 저장값, 상기 제 2 레지스터의 저장값, 및 상기 제 5 레지스터의 저장값을 가산 혹은 감산하는 제 1 가/감산기;
상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값을 가산 혹은 감산 하는 제 2 가/감산기;
상기 제 1 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 1 다중화기;
상기 제 2 레지스터의 저장값과 상기 제 1 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 2 다중화기;
상기 제 3 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 3 다중화기;
상기 제 4 레지스터의 저장값과 상기 제 2 가/감산기의 출력값 중에서 어느 하나를 선택하는 제 4 다중화기;
상기 제 1 내지 상기 제 4 다중화기기들의 각각의 출력값을 우측 쉬트프 하고, 상기 쉬프트된 값을 상기 제 1 내지 상기 제 4 레지스터들로 출력 하는 제 1 내지 제 4 쉬프터들; 및
상기 제 1 및 제 2 가/감산기들, 상기 제 1 내지 상기 제 4 다중화기들, 및 상기 제 1 내지 상기 제 4 쉬프터들을 제어하는 제어기를 포함하는 타원곡선 암호 시스템. - 제 9 항에 있어서,
상기 제 1 레지스터의 초기값은 피제수이고,
상기 제 2 레지스터의 초기값은 0이고,
상기 제 3 레지스터의 초기값은 제수이고,
상기 제 4 레지스터의 초기값은 모듈러스이고,
상기 제 5 레지스터의 초기값은 상기 모듈러스인 것을 특징으로 하는 타원곡선 암호 시스템. - 제 10 항에 있어서,
상기 제 2 설정 정보에 따라 상기 제 1 내지 상기 제 5 레지스터들의 각각의 상기 연산 반복 횟수가 결정되는 것으로 특징으로 하는 타원곡선 암호 시스템. - 제 10 항에 있어서,
상기 제어기는,
상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값이 같지 않을 때, 상기 제 3 레지스터의 저장값의 최하위 비트가 '0' 인지를 판별하고, 상기 제 3 레지스터의 저장값의 최하위 비트가 '0'이면, 상기 제 3 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0'인지 판별하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 1 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 레지스터의 저장값의 최하위 비트가 '0'이 아니라면 상기 제 1 레지스터의 저장값과 상기 제 5 레지스터의 저장값을 덧셈 연산하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 1 덧셈 연산값을 상기 제 1 레지스터에 저장하는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 12항에 있어서,
상기 제어기는,
상기 제 3 레지스터의 저장값의 최하위 비트가 '0'이 아닐 때 상기 제 4 레지스터의 저장값의 최하위 비트가 '0인 지를 판별하고, 상기 제 4 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 4 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2 레지스터의 저장값의 최하위 비트가 '0'인지 판별하고, 상기 제 2 레지스터의 저장값의 최하위 비트가 '0' 이라면 상기 제 2 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2 레지스터의 저장값의 최하위 비트가 '0'이 아니라면 상기 제 2 레지스터의 저장값과 상기 제 5 레지스터의 저장값을 덧셈 연산하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 2 덧셈 연산값을 상기 제 2 레지스터에 저장하는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 13 항에 있어서,
상기 제어기는,
상기 제 4 레지스터의 저장값의 최하위 비트가 '0' 이 아니라면 상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 큰 지를 판별하고,
상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 크다면 상기 제 3 레지스터의 저장값에서 상기 제 4 레지스터의 저장값을 뺄셈하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 1 뺄셈 연산값을 상기 제 3 레지스터에 저장하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 크거나 같은 지를 판별하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 크거나 같을 때 상기 제 1 레지스터의 저장값에서 상기 제 2 레지스터의 저장값을 뺀 값을 제 1 중간 계산값으로 설정하고, 상기 제 1 레지스터의 저장값이 상기 제 2 레지스터의 저장값보다 작을 때 상기 제 1 레지스터의 저장값에서 상기 제 2 레지스터의 저장값을 빼고 상기 제 5 레지스터의 저장값을 더한 값을 상기 제 1 중간 계산값으로 설정하고, 상기 제 1 중간 계산값의 최하위 비트가 '0'인 지를 판별하고, 상기 제 1 중간 계산값의 최하위 비트가 '0'이라면 상기 제 1 레지스터의 저장값을 우측 쉬프트하고, 상기 제 1 중간 계산값의 최하위 비트가 '0' 이 아니라면 상기 제 1 중간 계산값에서 상기 제 5 레지스터의 저장값을 덧셈하여 우측 쉬프트된 제 3 덧셈 연산값을 상기 제 1 레지스터에 저장하는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 14 항에 있어서,
상기 제어기는,
상기 제 3 레지스터의 저장값이 상기 제 4 레지스터의 저장값보다 크지 않다면 상기 제 4 레지스터의 저장값에서 상기 제 3 레지스터의 저장값을 뺄셈하여 우측 쉬프트하고, 상기 우측 쉬프트된 제 2 뺄셈 연산값을 상기 제 4 레지스터에 저장하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 크거나 같은 지를 판별하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 크거나 같을 때 상기 제 2 레지스터의 저장값에서 상기 제 1 레지스터의 저장값을 뺀 값을 제 2 중간 계산값으로 설정하고, 상기 제 2 레지스터의 저장값이 상기 제 1 레지스터의 저장값보다 작을 때 상기 제 2 레지스터의 저장값에서 상기 제 1 레지스터의 저장값을 빼고 상기 제 5 레지스터의 저장값을 더한 값을 상기 제 2 중간 계산값으로 설정하고, 상기 제 2 중간 계산값의 최하위 비트가 '0'인 지를 판별하고, 상기 제 2 중간 계산값의 최하위 비트가 '0'이라면 상기 제 2 레지스터의 저장값을 우측 쉬프트하고, 상기 제 2 중간 계산값의 최하위 비트가 '0' 이 아니라면 상기 제 2 중간 계산값에서 상기 제 5 레지스터의 저장값을 덧셈하여 우측 쉬프트된 제 4 덧셈 연산값을 상기 제 2 레지스터에 저장하는 것을 특징으로 하는 타원곡선 암호 시스템. - 제 10 항에 있어서,
상기 제어기는,
상기 제 3 레지스터의 저장값과 상기 제 4 레지스터의 저장값이 같을 때, 유한체 나눗셈 연산 동작을 종료시키는 것을 특징으로 하는 타원곡선 암호 시스템. - 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190020329A KR102460248B1 (ko) | 2019-02-21 | 2019-02-21 | 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 |
US16/717,028 US11431499B2 (en) | 2019-02-21 | 2019-12-17 | Finite-field division operator, elliptic curve cryptosystem having finite-field division operator and method for operating elliptic curve cryptosystem |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190020329A KR102460248B1 (ko) | 2019-02-21 | 2019-02-21 | 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200102126A KR20200102126A (ko) | 2020-08-31 |
KR102460248B1 true KR102460248B1 (ko) | 2022-10-31 |
Family
ID=72140604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190020329A KR102460248B1 (ko) | 2019-02-21 | 2019-02-21 | 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11431499B2 (ko) |
KR (1) | KR102460248B1 (ko) |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6782100B1 (en) * | 1997-01-29 | 2004-08-24 | Certicom Corp. | Accelerated finite field operations on an elliptic curve |
CA2257008C (en) * | 1998-12-24 | 2007-12-11 | Certicom Corp. | A method for accelerating cryptographic operations on elliptic curves |
KR20030003435A (ko) * | 2001-06-30 | 2003-01-10 | 주식회사 시큐리티테크놀로지스 | 암호시스템에 사용하기 위한 최적의 역원을 구하기 위한방법 및 장치 |
KR100502071B1 (ko) * | 2002-12-16 | 2005-07-25 | 한국전자통신연구원 | 고성능 타원곡선 암호화 장치 |
KR100530372B1 (ko) | 2003-12-20 | 2005-11-22 | 삼성전자주식회사 | 사이드채널 공격을 방지할 수 있는 타원곡선 암호화 방법 |
JP5147412B2 (ja) | 2005-01-21 | 2013-02-20 | サーティコム コーポレーション | 楕円曲線乱数生成 |
US7848513B2 (en) | 2005-12-08 | 2010-12-07 | Samsung Electronics Co., Ltd. | Method for transmitting security context for handover in portable internet system |
US7961872B2 (en) * | 2006-12-04 | 2011-06-14 | Lsi Corporation | Flexible hardware architecture for ECC/HECC based cryptography |
US9191197B2 (en) * | 2007-10-10 | 2015-11-17 | Canon Kabushiki Kaisha | AES encryption/decryption circuit |
US20090103726A1 (en) * | 2007-10-18 | 2009-04-23 | Nabeel Ahmed | Dual-mode variable key length cryptography system |
DE102008010789B4 (de) * | 2008-02-22 | 2010-09-30 | Fachhochschule Schmalkalden | Verfahren zur zugriffs- und kommunikationsbezogenen Zufallsver- und Entschlüsselung von Daten |
US8577043B2 (en) * | 2009-01-09 | 2013-11-05 | International Business Machines Corporation | System and service to facilitate encryption in data storage devices |
KR101445339B1 (ko) | 2010-12-23 | 2014-10-01 | 한국전자통신연구원 | 기밀성과 무결성을 제공하는 통합 암호화 장치 및 그 방법 |
US10333696B2 (en) * | 2015-01-12 | 2019-06-25 | X-Prime, Inc. | Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency |
US10783279B2 (en) * | 2016-09-01 | 2020-09-22 | Atmel Corporation | Low cost cryptographic accelerator |
KR102272862B1 (ko) * | 2017-04-27 | 2021-07-05 | 한국전자통신연구원 | 소수체 나눗셈 연산 장치 및 그 방법 |
US11165578B1 (en) * | 2018-08-16 | 2021-11-02 | Pqsecure Technologies, Llc | Efficient architecture and method for arithmetic computations in post-quantum cryptography |
-
2019
- 2019-02-21 KR KR1020190020329A patent/KR102460248B1/ko active IP Right Grant
- 2019-12-17 US US16/717,028 patent/US11431499B2/en active Active
Non-Patent Citations (2)
Title |
---|
박병관 외 1명, NIST 소수체 상의 타원곡선을 지원하는 경량 ECC 프로세서, 전자공학회 논문지 제55권 제9호 (2018.09.)* |
성병윤 외 2명, P-224 ECC와 2048-비트 RSA를 지원하는 공개키 암호 프로세서, 전기전자학회논문지 제22권 제3호 (2018.09.)* |
Also Published As
Publication number | Publication date |
---|---|
US20200274710A1 (en) | 2020-08-27 |
US11431499B2 (en) | 2022-08-30 |
KR20200102126A (ko) | 2020-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11509454B2 (en) | Apparatus for processing modular multiply operation and methods thereof | |
JP4870932B2 (ja) | 多重精度を支援する拡張型モンゴメリモジュラ掛け算器 | |
US8380777B2 (en) | Normal-basis to canonical-basis transformation for binary galois-fields GF(2m) | |
US7986779B2 (en) | Efficient elliptic-curve cryptography based on primality of the order of the ECC-group | |
CN103975302A (zh) | 矩阵乘法累加指令 | |
US20210194680A1 (en) | Non-transitory computer-readable medium storing program code, decryption device, and communication system including encryption device and decryption device | |
US20210271795A1 (en) | Implementing Fixed-Point Polynomials in Hardware Logic | |
US11516012B2 (en) | System, apparatus and method for performing a plurality of cryptographic operations | |
Hutter et al. | NaCl’s crypto_box in hardware | |
KR20200087061A (ko) | 근사 암호화된 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법 | |
EP3127271B1 (en) | Obfuscated performance of a predetermined function | |
US8380767B2 (en) | Polynomial-basis to normal-basis transformation for binary Galois-Fields GF(2m) | |
CN111444518A (zh) | 安全处理器及其操作方法、加密或解密数据的方法 | |
CN116800466A (zh) | 函数加密***和执行函数加密的方法 | |
KR102460248B1 (ko) | 유한체 나눗셈 연산기 및 그것을 갖는 타원곡선 암호 시스템 및 그것의 동작 방법 | |
KR20200087708A (ko) | 근사 계산에 대한 계산 검증 | |
US20090003595A1 (en) | Scale-invariant barrett reduction for elliptic-curve cyrptography | |
KR101977873B1 (ko) | 하드웨어 구현된 모듈러 역원 모듈 | |
KR20150091691A (ko) | Crt-rsa 암호화 방법 및 장치와 이를 기록한 컴퓨터 판독가능 저장매체 | |
US20120317159A1 (en) | Modular operator, device having the same, and operating method thereof | |
CN115208548A (zh) | 用于处理关于同态加密消息的非多项式运算的设备及其方法 | |
JP5840086B2 (ja) | 縮約装置、縮約方法、およびプログラム | |
Gövem et al. | A fast and compact FPGA implementation of elliptic curve cryptography using lambda coordinates | |
KR102498133B1 (ko) | 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법 | |
US20230269067A1 (en) | Homomorphic encryption operation accelerator, and operating method of homomorphic encryption operation accelerator |
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 |