KR101817879B1 - 고속의 naf 변환 장치 및 고속의 naf 변환 방법 - Google Patents

고속의 naf 변환 장치 및 고속의 naf 변환 방법 Download PDF

Info

Publication number
KR101817879B1
KR101817879B1 KR1020160154192A KR20160154192A KR101817879B1 KR 101817879 B1 KR101817879 B1 KR 101817879B1 KR 1020160154192 A KR1020160154192 A KR 1020160154192A KR 20160154192 A KR20160154192 A KR 20160154192A KR 101817879 B1 KR101817879 B1 KR 101817879B1
Authority
KR
South Korea
Prior art keywords
bit
window
value
naf
public key
Prior art date
Application number
KR1020160154192A
Other languages
English (en)
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 KR1020160154192A priority Critical patent/KR101817879B1/ko
Priority to PCT/KR2017/001113 priority patent/WO2018092981A2/ko
Application granted granted Critical
Publication of KR101817879B1 publication Critical patent/KR101817879B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/02Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
    • H03M7/04Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5332Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 고속의 NAF 변환 장치 및 고속의 NAF 변환 방법에 관한 것이다. 본 발명에 따른 고속의 NAF 변환 장치는, 윈도우의 값을 설정하는 설정부 및 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하고, 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 처리부를 포함할 수 있다.

Description

고속의 NAF 변환 장치 및 고속의 NAF 변환 방법{DEVICE AND METHOD FOR HIGH-SPEED NON-ADJACENT FORM CONVERSION}
본 발명은 고속의 NAF 변환 장치 및 고속의 NAF 변환 방법에 관한 것이다.
종래 기술에서의 비밀키 암호 방식은 하나의 암호화키를 사용하여 암호화 및 복호화 함으로써, 암호화키에 대한 유출 가능성이 매우 높다. 반면 공개키 암호 방식은 공개키와 비밀키를 사용하여 암호화함으로써, 키 교환에 대한 안정성을 보장하고 높은 보안 강도를 제공한다. 종래 기술에서의 대표적인 공개키 암호 방식은 RSA(Rivest, Shamir, Adleman)와 ECC(Elliptic Curve Cryptography)가 있다.
먼저, RSA는 소인수분해의 어려움에 기초한 알고리즘으로, 두 개의 소수들의 곱과 추가 연산을 통해 공개키 및 비밀키를 구할 수 있다. 즉, RSA는 핵심 기능으로 암호화, 복호화 과정에서 모듈러 멱승 연산을 사용한다. 예를 들면, RSA의 경우에서,
Figure 112016112874914-pat00001
는 소수이고,
Figure 112016112874914-pat00002
Figure 112016112874914-pat00003
이며,
Figure 112016112874914-pat00004
이다(비밀키=
Figure 112016112874914-pat00005
, 공개키=
Figure 112016112874914-pat00006
). 만일, 공개키가 {7, 187}이고, 비밀키가 {23, 17, 11}일 때 메시지
Figure 112016112874914-pat00007
이라면, 암호화된 메시지
Figure 112016112874914-pat00008
Figure 112016112874914-pat00009
가 되고,
Figure 112016112874914-pat00010
를 복호화하면
Figure 112016112874914-pat00011
이므로 처음 메시지
Figure 112016112874914-pat00012
가 구해질 수 있다. 이 때,
Figure 112016112874914-pat00013
Figure 112016112874914-pat00014
을 구하고
Figure 112016112874914-pat00015
을 계산하는 것은 아주 많은 연산을 요구할 수 있다.
해당 연산은 RSA의 속도에 큰 영향을 미치기 때문에 모듈러 곱셈 최적화, 모듈러 곱셈 횟수 최적화에 대한 다양한 연구가 이루어지고 있다.
다음으로, ECC는 타원곡선 이론에 기초한 공개키 암호 방식으로, 유한체
Figure 112016112874914-pat00016
상에 정의된 타원곡선
Figure 112016112874914-pat00017
에서의 이산로그문제에 기초한다. ECC는 핵심 기능으로 유한체
Figure 112016112874914-pat00018
상에 정의된 타원곡선
Figure 112016112874914-pat00019
위의 점
Figure 112016112874914-pat00020
를 양의 정수
Figure 112016112874914-pat00021
만큼 더한
Figure 112016112874914-pat00022
Figure 112016112874914-pat00023
를 계산하는 연산인 스칼라 곱셈을 사용한다. 스칼라 곱셈은 타원곡선 상의 점에 대한 연산인 포인트 더블링(point doubling) 연산과 포인트 에디션(point addition) 연산으로 구성되어 있다.
이때, ECC의 속도는 스칼라 곱셈 연산 속도에 큰 영향을 받을 수 있다. 그래서, ECC의 속도를 향상시키기 위해서, 스칼라 곱셈 연산 속도를 향상시키는 연구가 요구된다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, RSA의 모듈러 멱승 연산에서의 모듈러 곱셈 횟수와 ECC의 스칼라 곱셈 연산에서의 포인트 에디션 횟수를 감소시키도록 NAF(Non-Adgacetnt Form) 변환 과정의 속도를 향상시킬 수 있는 것을 목적으로 한다.
상기의 목적을 이루기 위한 고속의 NAF 변환 장치는, 윈도우의 값을 설정하는 설정부 및 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하고, 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 처리부를 포함할 수 있다.
또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 고속의 NAF 변환 방법은, 윈도우의 값을 설정하는 단계, 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하는 단계, 및 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 단계를 포함하여 구성할 수 있다.
본 발명의 일실시예에 따르면, RSA의 모듈러 멱승 연산에서의 모듈러 곱셈 횟수와 ECC의 스칼라 곱셈 연산에서의 포인트 에디션 횟수를 감소시키도록 NAF 변환 과정의 속도를 향상시킬 수 있다.
또한, 본 발명의 일실시예에 따르면,
Figure 112016112874914-pat00024
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00025
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00026
알고리즘의 연산 처리 속도를 최적화 할 수 있다(
Figure 112016112874914-pat00027
은 양의 정수
Figure 112016112874914-pat00028
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00029
는 윈도우 크기).
또한, 본 발명의 일실시예에 따르면, NAF 변환 시,
Figure 112016112874914-pat00030
(
Figure 112016112874914-pat00031
은 양의 정수
Figure 112016112874914-pat00032
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다.
도 1a 내지 도 1f는 본 발명의 일실시예에 따른 RSA 또는 ECC에서 사용하는 알고리즘을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 나타내는 블록도이다.
도 3은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘을 도시한 도면이다.
도 6 내지 도 11은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘의 성능 평가를 설명하기 위한 도면이다.
도 12는 본 발명의 일실시예에 따른 고속의 NAF 변환 방법을 구체적으로 도시한 작업 흐름도이다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 명세서에서 설명되는 고속의 NAF 변환 장치 및 고속의 NAF 변환 방법은 RSA의 모듈러 멱승 연산과 ECC의 스칼라 곱셈 연산 등에서 필수적으로 사용하는 양의 정수
Figure 112016112874914-pat00033
에 대한 NAF(
Figure 112016112874914-pat00034
) 변환 과정의 속도를 향상시킬 수 있다.
명세서 상에서 설명의 이해를 돕기 위하여, 도 1a 내지 도 1f를 참조하여 RSA 또는 ECC에서 사용하는 알고리즘에 대하여 설명하고자 한다.
도 1a 내지 도 1f는 본 발명의 일실시예에 따른 RSA 또는 ECC에서 사용하는 알고리즘을 설명하기 위한 도면이다.
도 1a는 스퀘어 앤드 멀티플라이(Square and Multiply) 기법을 설명하기 위한 도면이다. 도 1a의 (가)는 스퀘어 앤드 멀티플라이 기법을 위한 제1 알고리즘으로서, RSA의 모듈러 멱승 연산에서 연산량을 줄이기 위해서 사용되는 알고리즘일 수 있다.
Figure 112016112874914-pat00035
형태의 계산에 있어서, 종래에는
Figure 112016112874914-pat00036
를 십진수로 표현하였지만, 도 1a의 (가)에 도시된 바와 같은, 제1 알고리즘은
Figure 112016112874914-pat00037
형태의 이진수로 표현할 수 있다. 제1 알고리즘의 항목(1)에서,
Figure 112016112874914-pat00038
는 0으로 초기화되어 알고리즘이 종료될 때는
Figure 112016112874914-pat00039
값이 될 수 있으며,
Figure 112016112874914-pat00040
Figure 112016112874914-pat00041
값을 저장하는 변수일 수 있다. 항목(2)에서 확인할 수 있듯이, 스퀘어 앤드 멀티플라이 기법은
Figure 112016112874914-pat00042
Figure 112016112874914-pat00043
부터 0까지 감소시키며
Figure 112016112874914-pat00044
의 각 비트(bit)들을 왼쪽-오른쪽(Left-to-Right) 방식으로 1-비트씩 이동(Shift)하며 확인할 수 있다. 이 때, 스퀘어 앤드 멀티플라이 기법은
Figure 112016112874914-pat00045
연산을 수행하면서(항목(2.1)),
Figure 112016112874914-pat00046
Figure 112016112874914-pat00047
번째 비트인
Figure 112016112874914-pat00048
가 1인 경우에는 추가적으로
Figure 112016112874914-pat00049
Figure 112016112874914-pat00050
연산을 수행할 수 있다(항목(2.2)). 따라서, 스퀘어 앤드 멀티플라이 기법은
Figure 112016112874914-pat00051
에서 1의 개수를 줄인다면 모듈러 곱셈 연산 횟수를 줄일 수 있다. 도 1a의 (나)는 스퀘어 앤드 멀티플라이 기법을 이용한 연산 예를 나타내는 도면이다.
도 1b는 바이너리(Binary)기법을 설명하기 위한 도면이다. 바이너리 기법은 ECC의
Figure 112016112874914-pat00052
를 계산하는 스칼라 곱셈에서 가장 일반적으로 사용될 수 있다. 도 1b에 도시된, 바이너리 기법을 위한 제2 알고리즘의 항목(1)에 나타낸 바와 같이, 바이너리 기법은
Figure 112016112874914-pat00053
의 각 비트들을 왼쪽-오른쪽(Left-to-Right) 또는 오른쪽-왼쪽(Right-to-Left) 방식으로 1-비트씩 이동하며 확인할 수 있다. 이 때, 바이너리 기법은 항목(2.1)과 같이 각 비트마다 한 번의 포인트 더블링(point doubling) 연산을 수행할 수 있다. 비트가 0이 아닌 경우, 바이너리 기법은 항목(2.2)와 같이 추가적인 포인트 에디션(point addition) 연산을 수행하도록 0이 아닌 비트의 수만큼 포인트 에디션 연산을 수행할 수 있다. 따라서, 바이너리 기법은
Figure 112016112874914-pat00054
에서 1의 개수를 줄인다면 스칼라 곱셈 연산 속도를 향상시킬 수 있다.
바이너리 기법의 예시를 들어 설명하면,
Figure 112016112874914-pat00055
일 때, 7P = 2(2(P)+P)+P 일 수 있고,
Figure 112016112874914-pat00056
일 때, 6P = 2(2(P)+P) 일 수 있다.
도 1c는 NAF 기법을 설명하기 위한 도면이다. RSA의 모듈러 멱승 연산을 최적화하기 위한 스퀘어 앤드 멀티플라이 기법과, ECC의 스칼라 곱셈에 사용되는 바이너리 기법은
Figure 112016112874914-pat00057
에서 0이 아닌 비트의 수가 많을수록 모듈러 곱셈 연산, 포인트 에디션 연산 횟수가 증가할 수 있다.
Figure 112016112874914-pat00058
알고리즘은
Figure 112016112874914-pat00059
의 각 비트에 부호가 있는 숫자를 사용할 수 있다.
Figure 112016112874914-pat00060
알고리즘은 0이 아닌 숫자가 연속된 부분을 제거하여
Figure 112016112874914-pat00061
보다 0이 아닌 숫자의 평균 밀도를 감소시킴으로써, RSA의 모듈러 멱승 연산에서는 모듈러 곱셈의 횟수를 줄이기 위해서 사용될 수 있다. 또한,
Figure 112016112874914-pat00062
알고리즘은 ECC의 스칼라 곱셈에서는 포인트 에디션 연산의 수를 줄이기 위해서 사용될 수 있다. 일반적으로 길이가
Figure 112016112874914-pat00063
Figure 112016112874914-pat00064
Figure 112016112874914-pat00065
와 같이 표현할 수 있다. 이 때,
Figure 112016112874914-pat00066
일 수 있다.
도 1c의 (가)에 도시된 바와 같이, 제3 알고리즘은
Figure 112016112874914-pat00067
Figure 112016112874914-pat00068
로 변환하는
Figure 112016112874914-pat00069
알고리즘일 수 있다. 제3 알고리즘은 양의 정수
Figure 112016112874914-pat00070
와 윈도우 크기(window size)인
Figure 112016112874914-pat00071
를 입력 받아
Figure 112016112874914-pat00072
의 이진 표현인
Figure 112016112874914-pat00073
에서 0이 아닌 정수인 비트 수가 줄어들도록 변환한
Figure 112016112874914-pat00074
를 반환할 수 있다. NAF 기법은 제3 알고리즘의 항목(2)와 같이,
Figure 112016112874914-pat00075
조건을 만족하면 와일(While)문을 반복하여 수행할 수 있고,
Figure 112016112874914-pat00076
가 홀수일 때(즉, LSB(Least Significant Bit)가 1일 때)
Figure 112016112874914-pat00077
의 값은
Figure 112016112874914-pat00078
가 되도록 할 수 있다(항목(2.1). 이 때, NAF 기법은 앞서 구한
Figure 112016112874914-pat00079
Figure 112016112874914-pat00080
보다 크거나 같으면
Figure 112016112874914-pat00081
값은
Figure 112016112874914-pat00082
가 되도록 하고, 그렇지 않을 경우에는 앞에서 구한 값을 사용할 수 있다(항목(2.1.1). 또한, NAF 기법은
Figure 112016112874914-pat00083
Figure 112016112874914-pat00084
를 빼줄 수 있다(항목(2.1.2)). 항목(2.2)에 나타낸 바와 같이,
Figure 112016112874914-pat00085
가 짝수일 경우(즉, LSB가 0일 경우)
Figure 112016112874914-pat00086
값은 0이 될 수 있다. 항목(2.3)에서, NAF 기법은
Figure 112016112874914-pat00087
에서
Figure 112016112874914-pat00088
Figure 112016112874914-pat00089
값을 2로 나누는 수행을 할 수 있고, 이 과정이 오른쪽으로 1-비트 이동하는 동작일 수 있다. 예를 들어, 십진수 7을 이진수로 나타내면
Figure 112016112874914-pat00090
이고, 7을 2로 나누면 실제로는 3.5이지만, 제3 알고리즘에서 변수
Figure 112016112874914-pat00091
가 정수(Integer)로 선언되어있기 때문에
Figure 112016112874914-pat00092
값은 소수점을 제외한 3이 되고, 이를 이진수로 나타내면
Figure 112016112874914-pat00093
이 될 수 있다. 따라서, NAF 기법은 가장 오른쪽 비트를 없애고 모든 비트가 오른쪽으로 한 칸씩 이동하도록 할 수 있다. NAF 기법은
Figure 112016112874914-pat00094
의 길이가
Figure 112016112874914-pat00095
이므로,
Figure 112016112874914-pat00096
번의 비트 비교 연산 과정을 수행할 수 있다. 도 1c의 (나)는 NAF 기법을 이용한 연산 예를 나타내는 도면이다.
도 1d는 레코딩 바이너리(Recording Binary) 기법을 설명하기 위한 도면이다. 레코딩 바이너리 기법은
Figure 112016112874914-pat00097
알고리즘을 사용하여 모듈러 멱승 연산을 수행하는 알고리즘일 수 있다. 항목(2.3)과 같이,
Figure 112016112874914-pat00098
가 -1인 경우를 처리하는 과정을 추가한다는 점과
Figure 112016112874914-pat00099
를 사용한다는 점을 제외하면 스퀘어 앤드 멀티플라이 기법과 동일할 수 있다. 제4 알고리즘은
Figure 112016112874914-pat00100
에서
Figure 112016112874914-pat00101
의 곱셈에 대한 역원인
Figure 112016112874914-pat00102
가 미리 계산될 수 있다. 레코딩 바이너리 기법의 상세 동작 과정은 도 1d의 (가)에서의 제4 알고리즘에 나타낸 바와 같고, 도 1d의 (나)는 레코딩 바이너리 기법을 이용한 연산 예를 나타내는 도면이다.
도 1e는 윈도우 NAF(Window NAF) 기법을 설명하기 위한 도면이다. 윈도우 NAF 기법은
Figure 112016112874914-pat00103
알고리즘을 사용하여 스칼라 곱셈을 수행하는 알고리즘일 수 있다. 또한, 윈도우 NAF 기법은 바이너리 기법에
Figure 112016112874914-pat00104
알고리즘을 활용하여 포인트 에디션 연산을 줄일 수 있다. 윈도우 NAF 기법은,
Figure 112016112874914-pat00105
에 해당하는 타원곡선 상의 점들을 미리 계산하여 저장할 수 있다. 따라서 윈도우 NAF 기법은
Figure 112016112874914-pat00106
의 크기에 따라 미리 계산한(pre-computation) 값들을 저장할 메모리가 요구될 수 있다. 윈도우 NAF 기법의 상세 동작 과정은 도 1e의 제5 알고리즘에 나타낸 바와 같다. 윈도우 NAF 기법을 이용한 연산 예로서,
Figure 112016112874914-pat00107
일 때,
Figure 112016112874914-pat00108
이고, 7P = 2(2(2(P)))-P 일 수 있다. 또한, 윈도우 NAF 기법을 이용한 연산 예로서,
Figure 112016112874914-pat00109
일 때,
Figure 112016112874914-pat00110
이고, 6P = 2(2(2(P))-P) 일 수 있다.
도 1f는 슬라이딩 윈도우(Sliding Window) 기법을 설명하기 위한 도면이다. 슬라이딩 윈도우 기법은
Figure 112016112874914-pat00111
에 대한
Figure 112016112874914-pat00112
와 타원곡선 상의 점
Figure 112016112874914-pat00113
을 미리 계산하여 결과를 저장하기 때문에
Figure 112016112874914-pat00114
에 따라 미리 계산한(pre- computation) 값들을 저장할 메모리가 요구될 수 있다. 그리고 슬라이딩 윈도우 기법은
Figure 112016112874914-pat00115
부터 윈도우 NAF 기법에 비해 미리 계산한 값(pre-computation)이 많은 단점이 있지만, 일반적으로 사용하는
Figure 112016112874914-pat00116
크기인
Figure 112016112874914-pat00117
인 경우에 포인트 에디션 연산 횟수가 줄어든다는 장점이 있을 수 있다. 또한, 슬라이딩 윈도우 기법은 0,1로만 표현되는 일반적인 이진 표현을 사용할 수 있지만 이 경우는 타원곡선 상의 점
Figure 112016112874914-pat00118
을 미리 계산하기 때문에 메모리 요구가 훨씬 증가할 수 있다. 따라서, 슬라이딩 윈도우 기법은
Figure 112016112874914-pat00119
Figure 112016112874914-pat00120
로 변환하여 사용함으로써, 효율을 증가시킬 수 있다. 슬라이딩 윈도우 기법의 상세 동작 과정은 도 1f의 제6 알고리즘에 나타낸 바와 같다.
도 2는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 나타내는 블록도이다.
본 발명의 고속의 NAF 변환 장치(200, 이하, NAF 변환 장치)는 설정부(210) 및 처리부(220)를 포함할 수 있다. 또한, 실시예에 따라, NAF 변환 장치(200)는 변경부(230), 연산부(240) 및 판단부(250)를 추가하여 구성할 수 있다.
설정부(210)는 윈도우의 값을 설정한다. 즉, 설정부(210)는 양의 정수인 윈도우의 값을 설정할 수 있다. 예를 들면, 설정부(210)는 2 이상의 정수 중 적어도 하나의 값을 윈도우의 값으로 설정할 수 있다.
처리부(220)는 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅한다. 즉, 처리부(220)는 제1 세팅으로서, 설정부(210)에 의해 설정된 값만큼 공개키의 일부분에 윈도우를 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, 처리부(220)는 공개키 중 LSB로부터 3 비트만큼을 제1 세팅할 수 있다.
또한, 처리부(220)는 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅한다. 즉, 처리부(220)는 타깃 비트를 윈도우에 포함시키기 위하여, 윈도우의 값인 ω-비트만큼 이동시켜 윈도우를 제2 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, 처리부(220)는 윈도우를 3-비트 이동시켜 타깃 비트가 포함되도록 세팅할 수 있다.
설명의 이해를 돕기 위하여, 이하 도 3 및 도 4를 참조하면서 도 2에서의 NAF 변환 장치(200)를 설명하고자 한다.
도 3은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 3에 도시된 바와 같이, 처리부(220)는
Figure 112016112874914-pat00121
에 대해
Figure 112016112874914-pat00122
으로 설정되면,
Figure 112016112874914-pat00123
알고리즘에서
Figure 112016112874914-pat00124
가 홀수인 경우(즉, LSB가 1인 경우)의 윈도우를, 제1 세팅할 수 있다(회색 음영 부분, 311).
변경부(230)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경할 수 있다. 즉, 변경부(230)는 제1 세팅된 비트에 대하여 모두 '0'으로 변경할 수 있다. 도 3의 (a)의 일례에서, 변경부(230)는 윈도우에 포함된(즉, 회색 음영 부분) 비트를 모두 '0'으로 변경할 수 있다(312).
연산부(240)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트에 대한 환산값을 산출할 수 있다. 도 3의 (a)의 일례에서, 연산부(240)는 가장 오른쪽의 3-비트가 011이라면 제3 알고리즘에서의 항목(2.1)인
Figure 112016112874914-pat00125
에 대하여
Figure 112016112874914-pat00126
을 산출할 수 있다.
이때, 변경부(230)는 산출된 상기 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 환산값을 '0'으로 만들 수 있다. 예를 들어, 기준값이
Figure 112017110511168-pat00127
로 선정된다면, 변경부(230)는 환산값
Figure 112017110511168-pat00128
Figure 112017110511168-pat00129
인지를 확인할 수 있다. 도 3의 (a)의 일례에서, 변경부(230)는
Figure 112017110511168-pat00130
값이 제3 알고리즘에서의 항목(2.1.1)의
Figure 112017110511168-pat00131
를 만족시키지 않으므로,
Figure 112017110511168-pat00132
를 수행할 수 있다. 이때, 변경부(230)는
Figure 112017110511168-pat00133
가 3이므로
Figure 112017110511168-pat00134
을 수행하여 가장 오른쪽의 3-비트가 000이 되도록 할 수 있다(312).
이때, 처리부(220)는 상기 ω을 '1'로 결정하고, 상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅할 수 있다. 도 3의 (a)의 일례에서, 처리부(220)는 제3 알고리즘의 항목(2.3)을 수행하여
Figure 112016112874914-pat00135
값을 2로 나누어 오른쪽으로 1-비트 이동시킬 수 있다(313). 즉, 도 3의 (a)에 도시된 바와 같이, 가장 오른쪽 3-비트를 표시하는 회색 음영은 이동될 수 있다.
여기서, NAF 변환 장치(200)는
Figure 112016112874914-pat00136
알고리즘을 통해, 도 3과 같은 동작을 수행한 후 오른쪽으로 1-비트 이동시키는 과정에서, 현재
Figure 112016112874914-pat00137
번째 비트를 본다고 가정할 때
Figure 112016112874914-pat00138
번째 비트부터
Figure 112016112874914-pat00139
번째 비트는 모두 0으로 바뀌는 것을 알 수 있다.
또한, 처리부(220)는 상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동할 수 있다. 도 3의 (a)에 도시된 바와 같이, 처리부(220)는
Figure 112016112874914-pat00140
값을 1 증가시킴으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.
또한, 처리부(220)는 상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거할 수 있다. 즉, 처리부(220)는 이전에(단계311, 312) LSB로 지정되었던 비트를 실제로 사라지도록 제거할 수 있다. 예를 들면, 도 3의 (a)에서, 단계(313)에 도시된 바와 같이, 처리부(220)는 윈도우에서 이탈된 부분(회색 음영이 아닌 부분)의 비트값을 제거할 수 있다.
도 3의 (b) 일례에 대해 설명하면, 먼저, 단계(311)에서 설명한 바와 같이 처리부(220)는으로 설정되면, 윈도우를 제1 세팅할 수 있다(회색 음영 부분, 321). 다음으로, 변경부(230)는 가장 오른쪽의 3-비트가 101이라면 제3 알고리즘에서의 항목(2.1)인
Figure 112016112874914-pat00142
에 대하여
Figure 112016112874914-pat00143
으로 할 수 있다. 이때, 변경부(230)는
Figure 112016112874914-pat00144
값이 항목(2.1.1)의
Figure 112016112874914-pat00145
를 만족시키므로,
Figure 112016112874914-pat00146
값이
Figure 112016112874914-pat00147
인 -3이 되고, 항목(2.1.2)의
Figure 112016112874914-pat00148
를 수행할 수 있다. 변경부(230)는
Figure 112016112874914-pat00149
가 -3이므로
Figure 112016112874914-pat00150
을 수행하면 가장 오른쪽의 3-비트가 000이 되도록 할 수 있는데(322), 이때 전환(carry)이 발생할 수 있다. 본 명세서에서, 전환이 발생하는 것은 0 또는 1(0 or 1)이 1 또는 0(1 or 0)으로 바뀌는 것으로 표현하지만, 이에 한정되지는 않는다.
그 다음으로, 처리부(220)는 제3 알고리즘의 항목(2.3)을 수행하여
Figure 112016112874914-pat00151
값을 2로 나누어 오른쪽으로 1-비트 이동시킬 수 있다(323). 또한, 처리부(220)는
Figure 112016112874914-pat00152
값을 1증가시킴으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.
실시예에 따라, NAF 변환 장치(200)는
Figure 112016112874914-pat00153
알고리즘에 슬라이딩 윈도우 개념을 적용하고,
Figure 112016112874914-pat00154
알고리즘에서
Figure 112016112874914-pat00155
의 값이 반드시
Figure 112016112874914-pat00156
보다 작은 양의 홀수가 된다는 특성을 활용할 수 있다. 예를 들어,
Figure 112016112874914-pat00157
인 경우, NAF 변환 장치(200)는 001 및 011인 1 및 3만이
Figure 112016112874914-pat00158
의 값이 될 수 있다는 특성을 활용할 수 있다. 또한, NAF 변환 장치(200)는 010, 100 및 110과 같은 짝수의 경우, LSB가 1이 될 때까지 오른쪽으로 이동하여 001 및 011의 형태가 되고, 101 및 111의 경우에는 전환(carry)가 발생하여 1000이 된 다음 LSB가 1이 될 때까지 오른쪽으로 이동하여 001의 형태가 될 수 있다는 특성을 활용할 수 있다. 따라서, NAF 변환 장치(200)는
Figure 112016112874914-pat00159
의 값이 반드시
Figure 112016112874914-pat00160
보다 작은 양의 홀수가 되는 특성을 활용할 수 있다.
도 4는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 4에 도시된 바와 같이, 처리부(220)는
Figure 112016112874914-pat00161
에 대해
Figure 112016112874914-pat00162
으로 설정되면,
Figure 112016112874914-pat00163
알고리즘에서
Figure 112016112874914-pat00164
가 홀수인 경우(즉, LSB가 1인 경우)의 윈도우를, 제1 세팅할 수 있다(회색 음영 부분, 411, 421).
판단부(250)는 산출된 상기 환산값이 선정된 기준값을 넘는지를 판단할 수 있다. 즉, 연산부(240)에 의해 산출된 환산값에 대하여, 판단부(250)는 기준값을 기준으로 판단할 수 있다. 예를 들면, 판단부(250)는 기준값
Figure 112016112874914-pat00165
을 기준으로, 환산값이 기준값을 넘는지를 판단할 수 있다.
이때, 처리부(220)는 상기 판단 결과, 넘지 않는 경우, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정할 수 있다. 즉, 처리부(220)는 기준값
Figure 112016112874914-pat00166
보다 환산값이 작은 경우, 제1 세팅된 윈도우 크기(ω)만큼을, ω 비트만큼 오른쪽 이동시킬 수 있다. 도 4의 (a)에 도시된 바와 같이, 처리부(220)는
Figure 112016112874914-pat00167
인 경우 오른쪽으로
Figure 112016112874914-pat00168
-비트 이동시킬 수 있다(413). 단계(413)에서, ω-비트 이동한 후, NAF 변환 장치(200)는 윈도우가 이동한 비트의 값을 체크할 수 있다. 즉, 처리부(220)는 윈도우 크기가 3으로 제1 세팅된 경우, 윈도우 크기가 3인 윈도우를 3-비트만큼 오른쪽 이동시킬 수 있다. 3-비트 이동한 후, NAF 변환 장치(200)는 윈도우에 포함된 비트에 대하여, 0 또는 1 중 하나를 비트값으로 체크할 수 있다. 이 과정에서, 처리부(220)는
Figure 112016112874914-pat00169
알고리즘의 연산 과정을 생략할 수 있다.
또한, 처리부(220)는 상기 판단 결과, 넘는 경우, 상기 타깃 비트의 비트값을 전환(carry)하고, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정할 수 있다. 즉, 처리부(220)는 전환(caryy)을 발생시킴에 따라,
Figure 112016112874914-pat00170
대신
Figure 112016112874914-pat00171
를 수행할 수 있다(422). 또한, 처리부(220)는 비트값을 전환한 후, 도 4의 (b)에 도시된 바와 같이, 윈도우 크기가 ω인 윈도우를 ω 비트만큼 오른쪽 이동시킬 수 있다(423). 단계(423)에서, ω-비트 이동한 후, NAF 변환 장치(200)는 윈도우가 이동한 비트의 값을 체크할 수 있다. 예를 들면, 처리부(220)는 제1 세팅된 윈도우 크기가 3인 윈도우를 3-비트만큼 오른쪽 이동시킬 수 있다. 3-비트 이동한 후, NAF 변환 장치(200)는 윈도우에 포함된 비트에 대하여, 0 또는 1 중 하나를 비트값으로 체크할 수 있다.
또한, 처리부(220)는 상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정할 수 있다. 즉, 도 4의 (a) 및 (b)에 도시된 바와 같이, 처리부(220)는 오른쪽으로
Figure 112016112874914-pat00172
-비트 이동을 하여
Figure 112016112874914-pat00173
번째 비트로 이동함으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.
이러한, NAF 변환 장치(200)는
Figure 112016112874914-pat00174
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00175
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00176
알고리즘의 연산 처리 속도를 최적화 할 수 있다.
또한, NAF 변환 장치(200)는 NAF 변환 시,
Figure 112016112874914-pat00177
(
Figure 112016112874914-pat00178
은 양의 정수
Figure 112016112874914-pat00179
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다(
Figure 112016112874914-pat00180
은 양의 정수
Figure 112016112874914-pat00181
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00182
는 윈도우 크기).
도 5는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘을 도시한 도면이다.
도 5에 도시된 바와 같이, NAF 변환 장치(200)는 제7 알고리즘(
Figure 112016112874914-pat00183
알고리즘)으로서 수도 코드(pseudo code)로 표현될 수 있다. NAF 변환 장치(200)는 제7 알고리즘의 항목(2)에서의 While문의 수행 조건을
Figure 112016112874914-pat00184
으로 설정하지 않을 수 있다. 그 이유는,
Figure 112016112874914-pat00185
의 값이 반드시
Figure 112016112874914-pat00186
보다 작은 양의 홀수가 되므로 NAF 변환 장치(200)는 와일(While)문의 중단 여부를 항목(2.3.1)에서만 판단하도록 할 수 있다. 항목(2.1)의 와일(While)문은 연속된 0을 빠르게 처리하기 위한 코드일 수 있다. 와일(While)문을 빠져 나와 항목(2.2)에 왔을 때는
Figure 112016112874914-pat00187
는 반드시 홀수인 정수가 될 수 있다.
제7 알고리즘에서의 항목(2.3.2)는 도 4의 (a)의 동작 과정을 코드로 표현한 것이다. 이때, NAF 변환 장치(200)는 제3 알고리즘의 항목(2.1.2)과 '0임을 확신할 수 있는
Figure 112016112874914-pat00188
-비트에 대한 1-비트씩 이동(shift) 하는 과정'을 생략할 수 있다. 즉, NAF 변환 장치(200)는
Figure 112016112874914-pat00189
Figure 112016112874914-pat00190
만큼 증가시키고
Figure 112016112874914-pat00192
만큼 오른쪽으로 이동할 수 있다.
제7 알고리즘에서의 항목(2.4)는 도 4의 (b)의 동작 과정을 코드로 표현한 것이다. 이 경우, NAF 변환 장치(200)는 알고리즘에서 전환(carry)이 발생하기 때문에
Figure 112016112874914-pat00193
를 수행할 수 있다. NAF 변환 장치(200)는 나머지 부분에 대하여 항목(2.3.2)와 같이 수행할 수 있다.
도 6 내지 도 11은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘의 성능 평가를 설명하기 위한 도면이다.
Figure 112016112874914-pat00194
알고리즘(제7 알고리즘)의 성능 평가를 도시한 도면이다.
Figure 112016112874914-pat00195
알고리즘에 대한 성능 평가는 입력 값
Figure 112016112874914-pat00196
Figure 112016112874914-pat00197
에 대해
Figure 112016112874914-pat00198
를 계산하는 데에 걸리는 사이클 카운터(Cycle Counter)를
Figure 112016112874914-pat00199
알고리즘과 비교하는 방식으로 평가할 수 있다.
Figure 112016112874914-pat00200
알고리즘과
Figure 112016112874914-pat00201
알고리즘은
Figure 112016112874914-pat00202
의 길이
Figure 112016112874914-pat00203
이 늘어나면 전체 사이클 카운터가 증가할 수 있다. 두 알고리즘은 오른쪽 이동(right shift)하는 과정에서 홀수인 경우가 증가할수록 사이클 카운터가 증가할 수 있다.
예를 들면,
Figure 112016112874914-pat00204
의 길이가 8이고
Figure 112016112874914-pat00205
가 2일 때,
Figure 112016112874914-pat00206
은 홀수인 경우가 1번 발생하지만
Figure 112016112874914-pat00207
Figure 112016112874914-pat00208
은 홀수인 경우가 4번 발생하기 때문에 사이클 카운터가 더 클 수 있다.
Figure 112016112874914-pat00209
이 홀수인 경우가 4번이 되는 이유는 도 6에 도시된 바와 같이,
Figure 112016112874914-pat00210
일 때 발생하는 전환(Carry)에 의해
Figure 112016112874914-pat00211
-비트 앞에 1이 발생하기 때문일 수 있다.
따라서, 본원의 성능 평가에서는
Figure 112016112874914-pat00212
의 길이
Figure 112016112874914-pat00213
에 대한 사이클 카운터 비교를 할 수 있다. 그뿐만 아니라, 본원의 성능 평가에서는 홀수의 경우가 발생하는 횟수에 대한 비교도 포함할 수 있다. 즉, 본원의 성능 평가에서는 0과 1로 조합되는 0,1,01,001,011,101 등과 같은 패턴들의 반복 횟수에 대해서
Figure 112016112874914-pat00214
크기가 2인 경우와 3인 경우를 저성능 8-비트 마이크로프로세서 아트메가128(ATmega128)에서 구현하고 사이클 카운터를 측정하여 성능 평가를 수행할 수 있다.
Figure 112016112874914-pat00215
의 이진수 비트수는 RSA에서 1024-비트 이상, ECC에서 160-비트 이상이 사용되며, 이러한 비트들은 0과 1에 의한 다양한 패턴들의 반복이라고 볼 수 있다. 따라서, 도 7에 도시된 바와 같이, 3-비트 이하에서 발생 가능한 다양한 반복 패턴에 따른
Figure 112016112874914-pat00216
알고리즘 대비
Figure 112016112874914-pat00217
알고리즘의 평균 및 편차 이득을 요약하여 도시한다.
Figure 112016112874914-pat00218
알고리즘에 비해
Figure 112016112874914-pat00219
알고리즘의 평균 사이클 카운터가 약 20% 정도 감소하고 편차 또한 30% 이상 감소한 것을 확인할 수 있다. 특히,
Figure 112016112874914-pat00220
알고리즘은
Figure 112016112874914-pat00221
알고리즘에 비해 편차에서 우수한 성능을 나타낼 수 있다. 이는,
Figure 112016112874914-pat00222
알고리즘이
Figure 112016112874914-pat00223
의 길이
Figure 112016112874914-pat00224
이 늘어나더라도 사이클 카운터 증가량이
Figure 112016112874914-pat00225
알고리즘 보다 작아서 다양한 입력 패턴에 대해 일정한 성능을 나타낼 수 있음을 의미할 수 있다.
또한, 본원에서는 두 알고리즘의 성능에 영향을 미치는 주요한 반복 패턴인 1과 01 비트 패턴에서의 반복 횟수에 따른 두 알고리즘의 사이클 카운터를 상세히 분석한 결과를 도 8 및 도 9에 도시한다. 도 8 및 도 9에 도시된 바와 같이,
Figure 112016112874914-pat00226
알고리즘은
Figure 112016112874914-pat00227
알고리즘에 비해 각각 평균 이득이 18.6%와 19.4%, 편차 이득이 31.3%와 31.8% 성능 향상을 나타낼 수 있다. 또한, 도 10 및 도 11에 도시된 바와 같이,
Figure 112016112874914-pat00228
알고리즘은
Figure 112016112874914-pat00229
알고리즘에 비해 각각 평균 이득이 11.8%와 14.3%, 편차 이득이 26.7%와 29.9% 성능 향상을 나타낼 수 있다.
도 11에 도시된 바와 같이, 반복 회수가 2에서 3으로(또는, 5에서 6으로) 증가함에 따라 클락 카운터(Clock Counter)가 증가하지 않는 이유는
Figure 112016112874914-pat00230
-비트 이동(shift) 횟수가 동일하기 때문일 수 있다. 예를 들어,
Figure 112016112874914-pat00231
일 때, 0101은 전환(carry)이 발생해 1000로 변환된 후 3 오른쪽 이동(right shift)을 한 다음 0001을 처리하기 때문에 한 번의
Figure 112016112874914-pat00232
-비트 이동(shift)이 발생할 수 있다. 010101도 전환(carry)이 발생해 011000으로 변환된 후 오른쪽으로 3-비트 이동(shift)을 한 다음 011을 처리하기 때문에 이동(shift)이 한 번 발생할 수 있다. 반면에, 01010101은 전환(carry)이 발생하여 01011000으로 변환된 후 오른쪽으로 3-비트 이동(shift)을 한 다음 01011이 되고, 다시 01000으로 변환된 후 오른쪽으로 3-비트 이동(shift)을 하여 01을 처리하기 때문에 이동(shift)이 두 번 발생할 수 있다. 따라서, 01의 연속 횟수가 2번일 때와 3번일 때의 사이클 카운터는 동일하지만 4번일 때는 사이클 카운터가 증가하게 될 수 있다.
도 12는 본 발명의 일실시예에 따른 고속의 NAF 변환 방법을 구체적으로 도시한 작업 흐름도이다.
우선 본 실시예에 따른 고속의 NAF 변환 방법은 상술한 NAF 변환 장치(200)에 의해 수행될 수 있다.
먼저, NAF 변환 장치(200)는 윈도우의 값을 설정한다(1210). 즉, 단계(1210)는 양의 정수인 윈도우의 값을 설정하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는 2 이상의 정수 중 적어도 하나의 값을 윈도우의 값으로 설정할 수 있다.
다음으로, NAF 변환 장치(200)는 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅한다(1220). 즉, 단계(1220)는 제1 세팅으로서, 단계(1210)에서 설정된 값만큼 공개키의 일부분에 윈도우를 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, NAF 변환 장치(200)는 공개키 중 LSB로부터 3 비트만큼을 제1 세팅할 수 있다.
다음으로, NAF 변환 장치(200)는 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅한다(1230). 즉, NAF 변환 장치(200)는 타깃 비트를 윈도우에 포함시키기 위하여, 윈도우의 값인 ω-비트만큼 이동시켜 윈도우를 제2 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, NAF 변환 장치(200)는 윈도우를 3-비트 이동시켜 타깃 비트가 포함되도록 세팅할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경할 수 있다. 즉, NAF 변환 장치(200)는 제1 세팅된 비트에 대하여 모두 '0'으로 변경할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트에 대한 환산값을 산출할 수 있다. 예를 들면, NAF 변환 장치(200)는 가장 오른쪽의 3-비트가 011이라면 제3 알고리즘에서의 항목(2.1)인
Figure 112016112874914-pat00233
에 대하여
Figure 112016112874914-pat00234
을 산출할 수 있다.
상기 '0'으로 변경하는 단계는, 산출된 상기 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 환산값을 '0'으로 만드는 과정일 수 있다. 예를 들어, 기준값이
Figure 112017110511168-pat00235
로 선정된다면, NAF 변환 장치(200)는 환산값
Figure 112017110511168-pat00236
Figure 112017110511168-pat00237
인지를 확인할 수 있다. NAF 변환 장치(200)는
Figure 112017110511168-pat00238
값이 제3 알고리즘에서의 항목(2.1.1)의
Figure 112017110511168-pat00239
를 만족시키지 않으므로,
Figure 112017110511168-pat00240
를 수행할 수 있다. 이때, NAF 변환 장치(200)는
Figure 112017110511168-pat00241
가 3이므로
Figure 112017110511168-pat00242
을 수행하여 가장 오른쪽의 3-비트가 000이 되도록 할 수 있다.
이때, 단계(1230)는 상기 ω을 '1'로 결정하고, 상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는 제3 알고리즘의 항목(2.3)을 수행하여
Figure 112016112874914-pat00243
값을 2로 나누어 오른쪽으로 1-비트 이동시킬 수 있다.
또한, 단계(1230)는 상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는 과정일 수 있다. 즉, NAF 변환 장치(200)는 이전에 LSB로 지정되었던 비트를 실제로 사라지도록 제거할 수 있다. 예를 들면, NAF 변환 장치(200)는 윈도우에서 이탈된 부분의 비트값을 제거할 수 있다.
또한, 단계(1230)는 상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는
Figure 112016112874914-pat00244
값을 1 증가시킴으로써, LSB를 이동할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 산출된 상기 환산값이 선정된 기준값을 넘는지를 판단할 수 있다. 즉, 상기 환산값을 산출하는 단계에서 산출된 환산값에 대하여, NAF 변환 장치(200)는 기준값을 기준으로 판단할 수 있다. 예를 들면, NAF 변환 장치(200)는 기준값
Figure 112016112874914-pat00245
을 기준으로, 환산값이 기준값을 넘는지를 판단할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 상기 판단 결과, 넘지 않는 경우, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정할 수 있다. 즉, NAF 변환 장치(200)는 기준값
Figure 112016112874914-pat00246
보다 환산값이 작은 경우, 제1 세팅된 윈도우 크기(ω)만큼을 ω 비트만큼 오른쪽 이동시킬 수 있다. NAF 변환 장치(200)는 인 경우 오른쪽으로
Figure 112016112874914-pat00248
-비트 이동시킬 수 있다. ω-비트 이동한 후, NAF 변환 장치(200)는 윈도우가 이동한 비트의 값을 체크할 수 있게 된다. 예를 들면, NAF 변환 장치(200)는 윈도우 크기가 3으로 제1 세팅된 경우, 윈도우 크기가 3인 윈도우를 3-비트만큼 오른쪽 이동시킬 수 있다. 3-비트 이동한 후, NAF 변환 장치(200)는 윈도우에 포함된 비트에 대하여, 0 또는 1 중 하나를 비트값으로 체크할 수 있다. 이 과정에서, NAF 변환 장치(200)는
Figure 112016112874914-pat00249
알고리즘의 연산 과정을 생략할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 상기 판단 결과, 넘는 경우, 상기 타깃 비트의 비트값을 전환(carry)하고, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정할 수 있다. 즉, NAF 변환 장치(200)는 전환(caryy)을 발생시킴에 따라,
Figure 112016112874914-pat00250
대신
Figure 112016112874914-pat00251
를 수행할 수 있다. 또한, NAF 변환 장치(200)는 비트값을 전환한 후, 윈도우 크기가 ω인 윈도우를 ω 비트만큼 오른쪽 이동시킬 수 있다. ω-비트 이동한 후, NAF 변환 장치(200)는 윈도우가 이동한 비트의 값을 체크할 수 있다. 예를 들면, NAF 변환 장치(200)는 제1 세팅된 윈도우 크기가 3인 윈도우를 3-비트만큼 오른쪽 이동시킬 수 있다. 3-비트 이동한 후, NAF 변환 장치(200)는 윈도우에 포함된 비트에 대하여, 0 또는 1 중 하나를 비트값으로 체크할 수 있다.
실시예에 따라, NAF 변환 장치(200)는 상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정할 수 있다. 예를 들면, NAF 변환 장치(200)는 오른쪽으로
Figure 112016112874914-pat00252
-비트 이동을 하여 번째 비트로 이동함으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.
이러한, NAF 변환 방법은
Figure 112016112874914-pat00254
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00255
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00256
알고리즘의 연산 처리 속도를 최적화 할 수 있다(
Figure 112016112874914-pat00257
은 양의 정수
Figure 112016112874914-pat00258
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00259
는 윈도우 크기).
또한, NAF 변환 방법은 NAF 변환 시,
Figure 112016112874914-pat00260
(
Figure 112016112874914-pat00261
은 양의 정수
Figure 112016112874914-pat00262
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다.
본 발명의 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
200 : 고속의 NAF 변환 장치
210 : 설정부 220 : 처리부
230 : 변경부 240 : 연산부
250 : 판단부

Claims (16)

  1. 윈도우의 값을 설정하는 설정부;
    공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하고, 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 처리부
    를 포함하는 고속의 NAF 변환 장치.
  2. 제1항에 있어서,
    상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경하는 변경부
    를 더 포함하고,
    상기 처리부는,
    상기 ω을 '1'로 결정하고, 상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는
    고속의 NAF 변환 장치.
  3. 제2항에 있어서,
    상기 처리부는,
    상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는
    고속의 NAF 변환 장치.
  4. 제2항에 있어서,
    상기 처리부는,
    상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는
    고속의 NAF 변환 장치.
  5. 제2항에 있어서,
    상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 연산부
    를 더 포함하고,
    상기 변경부는,
    산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 제1 세팅된 윈도우에 포함되는 비트를 모두 '0'으로 만드는
    고속의 NAF 변환 장치.
  6. 제1항에 있어서,
    상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 연산부; 및
    산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 판단하는 판단부
    를 더 포함하고,
    상기 처리부는,
    상기 판단 결과, 넘지 않는 경우,
    상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는
    고속의 NAF 변환 장치.
  7. 제6항에 있어서,
    상기 판단 결과, 넘는 경우,
    상기 처리부는,
    상기 타깃 비트의 비트값이 0이면 1로, 또는 상기 타깃 비트의 비트값이 1이면 0으로 바뀌어 전환(carry)하고, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는
    고속의 NAF 변환 장치.
  8. 제6항 또는 제7항에 있어서,
    상기 처리부는,
    상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정하는
    고속의 NAF 변환 장치.
  9. 윈도우의 값을 설정하는 단계;
    공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하는 단계; 및
    상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우,
    상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 단계
    를 포함하는 고속의 NAF 변환 방법.
  10. 제9항에 있어서,
    상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경하는 단계
    를 더 포함하고,
    상기 제2 세팅하는 단계는,
    상기 ω을 '1'로 결정하는 단계; 및
    상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는 단계
    를 포함하는 고속의 NAF 변환 방법.
  11. 제10항에 있어서,
    상기 제2 세팅하는 단계는,
    상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는 단계
    를 더 포함하는 고속의 NAF 변환 방법.
  12. 제10항에 있어서,
    상기 제2 세팅하는 단계는,
    상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는 단계
    를 더 포함하는 고속의 NAF 변환 방법.
  13. 제10항에 있어서,
    상기 NAF 변환 방법은,
    상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 단계
    를 더 포함하고,
    상기 '0'으로 변경하는 단계는,
    산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 제1 세팅된 윈도우에 포함되는 비트를 모두 '0'으로 만드는 단계
    를 포함하는 고속의 NAF 변환 방법.
  14. 제9항에 있어서,
    상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는, 비트에 대한 정수의 환산값을 산출하는 단계;
    산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 판단하는 단계; 및
    상기 판단 결과, 넘지 않는 경우,
    상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는 단계
    를 더 포함하는 고속의 NAF 변환 방법.
  15. 제14항에 있어서,
    상기 판단 결과, 넘는 경우,
    상기 타깃 비트의 비트값이 0이면 1로, 또는 상기 타깃 비트의 비트값이 1이면 0으로 바뀌어 전환(carry)하는 단계; 및
    상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는 단계
    를 더 포함하는 고속의 NAF 변환 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정하는 단계
    를 더 포함하는 고속의 NAF 변환 방법.
KR1020160154192A 2016-11-18 2016-11-18 고속의 naf 변환 장치 및 고속의 naf 변환 방법 KR101817879B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160154192A KR101817879B1 (ko) 2016-11-18 2016-11-18 고속의 naf 변환 장치 및 고속의 naf 변환 방법
PCT/KR2017/001113 WO2018092981A2 (ko) 2016-11-18 2017-02-02 고속의 naf 변환 장치 및 고속의 naf 변환 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160154192A KR101817879B1 (ko) 2016-11-18 2016-11-18 고속의 naf 변환 장치 및 고속의 naf 변환 방법

Publications (1)

Publication Number Publication Date
KR101817879B1 true KR101817879B1 (ko) 2018-01-11

Family

ID=61004065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160154192A KR101817879B1 (ko) 2016-11-18 2016-11-18 고속의 naf 변환 장치 및 고속의 naf 변환 방법

Country Status (2)

Country Link
KR (1) KR101817879B1 (ko)
WO (1) WO2018092981A2 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150012743A1 (en) 2012-02-14 2015-01-08 Nokia Corporation Device to device security using naf key

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020057796A1 (en) * 1998-12-24 2002-05-16 Lambert Robert J. Method for accelerating cryptographic operations on elliptic curves
KR101309797B1 (ko) * 2006-12-01 2013-09-23 삼성전자주식회사 성긴 w-NAF 키 생성방법,이를 이용한 연산 방법 및암호화 방법
CA2631276C (en) * 2008-05-14 2014-12-09 Patrick Longa Exponentiation method using multibase number representation
US8549299B2 (en) * 2011-02-28 2013-10-01 Certicom Corp. Accelerated key agreement with assisted computations
FR3001315B1 (fr) * 2013-01-18 2016-05-06 Inside Secure Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150012743A1 (en) 2012-02-14 2015-01-08 Nokia Corporation Device to device security using naf key

Also Published As

Publication number Publication date
WO2018092981A3 (ko) 2018-08-02
WO2018092981A2 (ko) 2018-05-24

Similar Documents

Publication Publication Date Title
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
US6920473B2 (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
KR101326078B1 (ko) 모듈러 곱셈 방법, 모듈러 곱셈기 및 모듈러 곱셈기를구비하는 암호 연산 시스템
US20060222175A1 (en) Computation method, computing device and computer program
KR101590322B1 (ko) 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
US20020174155A1 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
JP2011512556A (ja) 楕円曲線上の多数の点を計算する装置及び方法
KR101817879B1 (ko) 고속의 naf 변환 장치 및 고속의 naf 변환 방법
Barman et al. An Efficient Elliptic Curve Cryptography Arithmetic Using Nikhilam Multiplication
JP4182226B2 (ja) 剰余系の計算方法及び装置並びにプログラム
CN108418687B (zh) 一种适合sm2算法的快速模约减方法和介质
Nedjah et al. Efficient parallel modular exponentiation algorithm
KR101707334B1 (ko) 효율적인 타원곡선 암호화 연산 장치 및 그 방법
KR101548174B1 (ko) 모듈러스의 음의 역원을 구하는 방법
Anagreh et al. Parallel method for computing elliptic curve scalar multiplication based on MOF.
Brar et al. Design and implementation of block method for computing NAF
Nedjah et al. Parallel computation of modular exponentiation for fast cryptography
Knezevic et al. Modular reduction without precomputational phase
KR101777400B1 (ko) 룩업 테이블을 이용한 타원 곡선의 스칼라 곱셈 연산 장치 및 방법
JP3959076B2 (ja) 有限体の二乗演算方法及び二乗演算装置
Zadeh Division and inversion over finite fields
KR101423947B1 (ko) 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법
JP3626315B2 (ja) 剰余算装置、情報処理装置及び剰余算方法
Al Saffar et al. Speeding up the Elliptic Curve Scalar Multiplication Using the Window-w Non Adjacent Form.

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant