[go: up one dir, main page]

KR101817879B1 - Device and method for high-speed non-adjacent form conversion - Google Patents

Device and method for high-speed non-adjacent form conversion 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
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020160154192A
Other languages
Korean (ko)
Inventor
황두희
최윤호
Original Assignee
부산대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 부산대학교 산학협력단 filed Critical 부산대학교 산학협력단
Priority to KR1020160154192A priority Critical patent/KR101817879B1/en
Priority to PCT/KR2017/001113 priority patent/WO2018092981A2/en
Application granted granted Critical
Publication of KR101817879B1 publication Critical patent/KR101817879B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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 OR CALCULATING; 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 OR CALCULATING; 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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software 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 세팅하는 처리부를 포함할 수 있다.The present invention relates to a high-speed NAF conversion apparatus and a high-speed NAF conversion method. The high-speed NAF conversion apparatus according to the present invention is characterized in that a window having the set value as a length is divided into at least a part of the public key by a setting unit for setting a window value and a LSB (Least Significant Bit) Bit right shift (when the target bit to be encrypted in the public key is outside the window, the target bit is shifted to a right-shifted direction And a processing unit for setting the window to the second setting.

Description

고속의 NAF 변환 장치 및 고속의 NAF 변환 방법{DEVICE AND METHOD FOR HIGH-SPEED NON-ADJACENT FORM CONVERSION}TECHNICAL FIELD [0001] The present invention relates to a high-speed NAF conversion apparatus and a high-speed NAF conversion apparatus,

본 발명은 고속의 NAF 변환 장치 및 고속의 NAF 변환 방법에 관한 것이다.The present invention relates to a high-speed NAF conversion apparatus and a high-speed NAF conversion method.

종래 기술에서의 비밀키 암호 방식은 하나의 암호화키를 사용하여 암호화 및 복호화 함으로써, 암호화키에 대한 유출 가능성이 매우 높다. 반면 공개키 암호 방식은 공개키와 비밀키를 사용하여 암호화함으로써, 키 교환에 대한 안정성을 보장하고 높은 보안 강도를 제공한다. 종래 기술에서의 대표적인 공개키 암호 방식은 RSA(Rivest, Shamir, Adleman)와 ECC(Elliptic Curve Cryptography)가 있다.The secret key cryptosystem in the prior art is highly likely to leak out to the encryption key by encrypting and decrypting using one encryption key. On the other hand, the public key cryptosystem uses a public key and a secret key to encrypt, thereby assuring stability of the key exchange and providing high security strength. Typical public key cryptosystems in the prior art are RSA (Rivest, Shamir, Adleman) and 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
을 계산하는 것은 아주 많은 연산을 요구할 수 있다.First, RSA is an algorithm based on the difficulty of subdivision decomposition. The public key and secret key can be obtained by multiplying two prime numbers and performing additional operations. In other words, RSA uses modular exponentiation in encryption and decryption as a core function. For example, in the case of RSA,
Figure 112016112874914-pat00001
Is a prime number,
Figure 112016112874914-pat00002
The
Figure 112016112874914-pat00003
Lt;
Figure 112016112874914-pat00004
(Secret key =
Figure 112016112874914-pat00005
, Public key =
Figure 112016112874914-pat00006
). If the public key is {7, 187} and the secret key is {23, 17, 11}
Figure 112016112874914-pat00007
, The encrypted message
Figure 112016112874914-pat00008
The
Figure 112016112874914-pat00009
Lt; / RTI &
Figure 112016112874914-pat00010
Decrypts
Figure 112016112874914-pat00011
First message
Figure 112016112874914-pat00012
Can be obtained. At this time,
Figure 112016112874914-pat00013
and
Figure 112016112874914-pat00014
And
Figure 112016112874914-pat00015
Can require a great deal of computation.

해당 연산은 RSA의 속도에 큰 영향을 미치기 때문에 모듈러 곱셈 최적화, 모듈러 곱셈 횟수 최적화에 대한 다양한 연구가 이루어지고 있다.  Since the computation has a great influence on the speed of the RSA, various studies have been conducted on the optimization of the modular multiplication and the optimization of the modular multiplication frequency.

다음으로, 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) 연산으로 구성되어 있다.Next, ECC is a public key cryptosystem based on elliptic curve theory,
Figure 112016112874914-pat00016
Elliptic curve defined on
Figure 112016112874914-pat00017
Based on the discrete log problem in ECC is a core function,
Figure 112016112874914-pat00018
Elliptic curve defined on
Figure 112016112874914-pat00019
Above point
Figure 112016112874914-pat00020
Positive integer
Figure 112016112874914-pat00021
As much as
Figure 112016112874914-pat00022
Figure 112016112874914-pat00023
Which is a computation for computing the scalar multiplication. Scalar multiplication consists of a point doubling operation and a point addition operation, which is an operation on a point on an elliptic curve.

이때, ECC의 속도는 스칼라 곱셈 연산 속도에 큰 영향을 받을 수 있다. 그래서, ECC의 속도를 향상시키기 위해서, 스칼라 곱셈 연산 속도를 향상시키는 연구가 요구된다.At this time, the speed of the ECC may be greatly affected by the scalar multiplication operation speed. Therefore, in order to improve the speed of the ECC, research for improving the scalar multiplication operation speed is required.

본 발명은 상기와 같은 문제점을 해결하기 위하여 안출된 것으로서, RSA의 모듈러 멱승 연산에서의 모듈러 곱셈 횟수와 ECC의 스칼라 곱셈 연산에서의 포인트 에디션 횟수를 감소시키도록 NAF(Non-Adgacetnt Form) 변환 과정의 속도를 향상시킬 수 있는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been conceived to solve the above problems, and it is an object of the present invention to provide a non-additive form (NAF) conversion process for reducing the number of modular multiplications in the modular exponentiation operation of RSA and the number of point editions in scalar multiplication operation of ECC So that the speed can be improved.

상기의 목적을 이루기 위한 고속의 NAF 변환 장치는, 윈도우의 값을 설정하는 설정부 및 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하고, 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 처리부를 포함할 수 있다.In order to achieve the above-mentioned object, a high-speed NAF conversion apparatus includes a setting unit for setting a value of a window and a window having the length of the set value as a length, based on a LSB (Least Significant Bit) of a public key, Bit right shifting (? -Bit right shift) so that the target bit is included if the target bit to be encrypted in the public key is outside the window And the processing unit for setting the window to the second setting.

또한, 상기 목적을 달성하기 위한 기술적 방법으로서, 고속의 NAF 변환 방법은, 윈도우의 값을 설정하는 단계, 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하는 단계, 및 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 단계를 포함하여 구성할 수 있다.According to another aspect of the present invention, there is provided a high-speed NAF conversion method comprising: setting a value of a window; setting a window having the set value as a length based on an LSB (Least Significant Bit) Bit key to the left of the window so that the target bit is included in the target key when the target bit to be encrypted in the public key is outside the window, and a step of setting the window to the second state by setting the ω-bit right shift (ω is a natural number).

본 발명의 일실시예에 따르면, RSA의 모듈러 멱승 연산에서의 모듈러 곱셈 횟수와 ECC의 스칼라 곱셈 연산에서의 포인트 에디션 횟수를 감소시키도록 NAF 변환 과정의 속도를 향상시킬 수 있다.According to an embodiment of the present invention, the speed of the NAF conversion process can be improved so as to reduce the number of modular multiplications in the modular exponentiation operation of the RSA and the number of point editions in the scalar multiplication operation of the ECC.

또한, 본 발명의 일실시예에 따르면,

Figure 112016112874914-pat00024
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00025
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00026
알고리즘의 연산 처리 속도를 최적화 할 수 있다(
Figure 112016112874914-pat00027
은 양의 정수
Figure 112016112874914-pat00028
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00029
는 윈도우 크기).Further, according to an embodiment of the present invention,
Figure 112016112874914-pat00024
By performing the comparison operation of the number of times,
Figure 112016112874914-pat00025
Bit comparison operation
Figure 112016112874914-pat00026
It is possible to optimize the processing speed of the algorithm (
Figure 112016112874914-pat00027
Is a positive integer
Figure 112016112874914-pat00028
The number of bits according to the binary conversion,
Figure 112016112874914-pat00029
Window size).

또한, 본 발명의 일실시예에 따르면, NAF 변환 시,

Figure 112016112874914-pat00030
(
Figure 112016112874914-pat00031
은 양의 정수
Figure 112016112874914-pat00032
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다.Further, according to an embodiment of the present invention, in NAF conversion,
Figure 112016112874914-pat00030
(
Figure 112016112874914-pat00031
Is a positive integer
Figure 112016112874914-pat00032
The number of bits in accordance with the binary conversion of the number of bits) increases or the number of patterns that generate an odd number is large, the NAF conversion time can be shortened.

도 1a 내지 도 1f는 본 발명의 일실시예에 따른 RSA 또는 ECC에서 사용하는 알고리즘을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 나타내는 블록도이다.
도 3은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 4는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘을 도시한 도면이다.
도 6 내지 도 11은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘의 성능 평가를 설명하기 위한 도면이다.
도 12는 본 발명의 일실시예에 따른 고속의 NAF 변환 방법을 구체적으로 도시한 작업 흐름도이다.
FIGS. 1A to 1F are diagrams for explaining an algorithm used in RSA or ECC according to an embodiment of the present invention.
2 is a block diagram showing a high-speed NAF conversion apparatus according to an embodiment of the present invention.
3 is a view for explaining an implementation example using a high-speed NAF conversion apparatus according to an embodiment of the present invention.
4 is a view for explaining an implementation example using a high-speed NAF conversion apparatus according to an embodiment of the present invention.
5 is a diagram illustrating an algorithm for implementing a high-speed NAF conversion apparatus according to an embodiment of the present invention.
FIGS. 6 to 11 are diagrams for explaining performance evaluation of an algorithm for implementing a high-speed NAF conversion apparatus according to an embodiment of the present invention.
12 is a workflow diagram specifically illustrating a high-speed NAF conversion method according to an embodiment of the present invention.

이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.

본 명세서에서 설명되는 고속의 NAF 변환 장치 및 고속의 NAF 변환 방법은 RSA의 모듈러 멱승 연산과 ECC의 스칼라 곱셈 연산 등에서 필수적으로 사용하는 양의 정수

Figure 112016112874914-pat00033
에 대한 NAF(
Figure 112016112874914-pat00034
) 변환 과정의 속도를 향상시킬 수 있다.The high-speed NAF conversion apparatus and the high-speed NAF conversion method described in this specification are based on a positive integer which is essentially used in the modular exponentiation operation of RSA and the scalar multiplication operation of ECC.
Figure 112016112874914-pat00033
NAF for
Figure 112016112874914-pat00034
) The speed of the conversion process can be improved.

명세서 상에서 설명의 이해를 돕기 위하여, 도 1a 내지 도 1f를 참조하여 RSA 또는 ECC에서 사용하는 알고리즘에 대하여 설명하고자 한다.To facilitate understanding of the description on the specification, an algorithm used in RSA or ECC will be described with reference to FIGS. 1A through 1F.

도 1a 내지 도 1f는 본 발명의 일실시예에 따른 RSA 또는 ECC에서 사용하는 알고리즘을 설명하기 위한 도면이다.FIGS. 1A to 1F are diagrams for explaining an algorithm used in RSA or ECC according to an embodiment of the present invention.

도 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의 (나)는 스퀘어 앤드 멀티플라이 기법을 이용한 연산 예를 나타내는 도면이다.1A is a diagram for explaining a Square and Multiply technique. 1a is a first algorithm for the square-and-multiply scheme, which may be an algorithm used to reduce the amount of computation in modular exponentiation of RSA.
Figure 112016112874914-pat00035
In the calculation of the form, conventionally
Figure 112016112874914-pat00036
Is represented by a decimal number, but the first algorithm, as shown in Fig. 1A (a)
Figure 112016112874914-pat00037
It can be expressed as a binary number of the form. In item (1) of the first algorithm,
Figure 112016112874914-pat00038
Is initialized to 0 and the algorithm is terminated
Figure 112016112874914-pat00039
Value,
Figure 112016112874914-pat00040
The
Figure 112016112874914-pat00041
It can be a variable that stores a value. As can be seen in item (2), the square-and-
Figure 112016112874914-pat00042
To
Figure 112016112874914-pat00043
To 0
Figure 112016112874914-pat00044
Bit by 1 bit in the left-to-right manner. At this time, the square-and-
Figure 112016112874914-pat00045
While performing the operation (item (2.1)),
Figure 112016112874914-pat00046
of
Figure 112016112874914-pat00047
Th bit
Figure 112016112874914-pat00048
1 < / RTI >
Figure 112016112874914-pat00049
and
Figure 112016112874914-pat00050
(Item 2.2). ≪ / RTI > Thus, the square-and-
Figure 112016112874914-pat00051
The number of modular multiplication operations can be reduced. (B) of FIG. 1A is a diagram showing an operation example using a square-and-multiply technique.

도 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의 개수를 줄인다면 스칼라 곱셈 연산 속도를 향상시킬 수 있다. 1B is a diagram for explaining a binary technique. Binary technique is ECC
Figure 112016112874914-pat00052
Can be most commonly used in scalar multiplication. As shown in item (1) of the second algorithm for the binary technique shown in FIG. 1B, the binary technique
Figure 112016112874914-pat00053
Bit by bit in the left-to-right or right-to-left manner. At this time, the binary technique can perform a point doubling operation for each bit as shown in the item (2.1). If the bit is non-zero, the binary scheme may perform a point edition operation on the number of non-zero bits to perform an additional point addition operation, as in item (2.2). Thus, the binary technique
Figure 112016112874914-pat00054
The number of scalar multiplication operations can be improved by decreasing the number of 1's.

바이너리 기법의 예시를 들어 설명하면,

Figure 112016112874914-pat00055
일 때, 7P = 2(2(P)+P)+P 일 수 있고,
Figure 112016112874914-pat00056
일 때, 6P = 2(2(P)+P) 일 수 있다.To illustrate an example of a binary technique,
Figure 112016112874914-pat00055
(2 (P) + P) + P, < / RTI >
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 is a diagram for explaining the NAF technique. The square-and-multiply technique for optimizing modular exponentiation of RSA and the binary technique for scalar multiplication of ECC
Figure 112016112874914-pat00057
The number of modular multiplication operations and the number of point edition operations may increase as the number of non-zero bits increases.
Figure 112016112874914-pat00058
The algorithm
Figure 112016112874914-pat00059
A number with a sign can be used for each bit of.
Figure 112016112874914-pat00060
The algorithm removes consecutive non-zero digits
Figure 112016112874914-pat00061
By reducing the average density of nonzero numbers, RSA modular exponentiation can be used to reduce the number of modular multiplications. Also,
Figure 112016112874914-pat00062
The algorithm can be used to reduce the number of point edition operations in ECC scalar multiplication. In general,
Figure 112016112874914-pat00063
sign
Figure 112016112874914-pat00064
To
Figure 112016112874914-pat00065
As shown in Fig. At this time,
Figure 112016112874914-pat00066
Lt; / RTI >

도 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 기법을 이용한 연산 예를 나타내는 도면이다.As shown in (a) of Figure 1c, the third algorithm
Figure 112016112874914-pat00067
of
Figure 112016112874914-pat00068
To convert
Figure 112016112874914-pat00069
Algorithm. The third algorithm is a positive integer
Figure 112016112874914-pat00070
And the window size
Figure 112016112874914-pat00071
Take input
Figure 112016112874914-pat00072
Binary representation of
Figure 112016112874914-pat00073
The number of bits that are non-zero integers in
Figure 112016112874914-pat00074
. ≪ / RTI > The NAF scheme, like item (2) of the third algorithm,
Figure 112016112874914-pat00075
If the condition is satisfied, it is possible to perform the while statement repeatedly,
Figure 112016112874914-pat00076
(That is, when the LSB (Least Significant Bit) is 1)
Figure 112016112874914-pat00077
The value of
Figure 112016112874914-pat00078
(Section 2.1). At this time, the NAF technique is a
Figure 112016112874914-pat00079
end
Figure 112016112874914-pat00080
If greater than or equal to
Figure 112016112874914-pat00081
The value is
Figure 112016112874914-pat00082
(See Section 2.1.1). In addition, the NAF technique may be used
Figure 112016112874914-pat00083
on
Figure 112016112874914-pat00084
Can be subtracted (item 2.1.2). As shown in item (2.2)
Figure 112016112874914-pat00085
Is an even number (i.e., when the LSB is 0)
Figure 112016112874914-pat00086
The value can be zero. In item (2.3), the NAF technique
Figure 112016112874914-pat00087
in
Figure 112016112874914-pat00088
The
Figure 112016112874914-pat00089
You can do this by dividing the value by 2, and this can be a one-bit move to the right. For example, if you represent a decimal number 7 as a binary number
Figure 112016112874914-pat00090
Dividing
7 by 2 is actually 3.5, but in the third algorithm,
Figure 112016112874914-pat00091
Is declared as an Integer
Figure 112016112874914-pat00092
The value is 3, except for the decimal point, and expressed as a binary number
Figure 112016112874914-pat00093
. Thus, the NAF technique can eliminate the rightmost bit and cause all bits to move to the right by one space. The NAF technique
Figure 112016112874914-pat00094
The length of
Figure 112016112874914-pat00095
Because of,
Figure 112016112874914-pat00096
The bit comparison operation process can be performed. (B) of FIG. 1C is a diagram showing an operation example using the NAF technique.

도 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의 (나)는 레코딩 바이너리 기법을 이용한 연산 예를 나타내는 도면이다. FIG. 1D is a diagram for explaining a recording binary technique. The recording binary technique
Figure 112016112874914-pat00097
Algorithm to perform a modular exponentiation operation. As in item 2.3,
Figure 112016112874914-pat00098
The process of processing the case of -1 is added
Figure 112016112874914-pat00099
Can be the same as the square-and-multiple technique. The fourth algorithm
Figure 112016112874914-pat00100
in
Figure 112016112874914-pat00101
The reverse cause of the multiplication of
Figure 112016112874914-pat00102
Can be calculated in advance. The detailed operation procedure of the recording binary technique is as shown in the fourth algorithm in FIG. 1D, and FIG. 1D is a diagram showing an operation example using the recording binary technique.

도 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) 일 수 있다.1E is a view for explaining a window NAF (Window NAF) technique. Windows NAF technique
Figure 112016112874914-pat00103
Algorithm to perform a scalar multiplication. In addition, the window NAF technique uses binary techniques
Figure 112016112874914-pat00104
Algorithms can be used to reduce point edition operations. The Windows NAF technique,
Figure 112016112874914-pat00105
The points on the elliptic curve corresponding to Eq. Therefore,
Figure 112016112874914-pat00106
A memory may be required to store pre-computation values depending on the size of the memory. The detailed operation procedure of the window NAF scheme is as shown in the fifth algorithm of FIG. As an operation example using the window NAF technique,
Figure 112016112874914-pat00107
when,
Figure 112016112874914-pat00108
, And 7P = 2 (2 (2 (P))) - P. As an operation example using the window NAF technique,
Figure 112016112874914-pat00109
when,
Figure 112016112874914-pat00110
, And 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 알고리즘에 나타낸 바와 같다.1F is a view for explaining a sliding window technique. The sliding window technique
Figure 112016112874914-pat00111
For
Figure 112016112874914-pat00112
And points on the elliptic curve
Figure 112016112874914-pat00113
And stores the result
Figure 112016112874914-pat00114
A memory may be required to store the pre-computation values according to the pre-computation values. And the sliding window technique
Figure 112016112874914-pat00115
Although there are many disadvantages in pre-computation compared to the window NAF technique,
Figure 112016112874914-pat00116
The size
Figure 112016112874914-pat00117
The number of point edition operations may be reduced. In addition, although the sliding window technique can use a general binary representation expressed only as 0,1, in this case, the point on the elliptic curve
Figure 112016112874914-pat00118
The memory requirements can be much increased. Thus, the sliding window technique
Figure 112016112874914-pat00119
To
Figure 112016112874914-pat00120
It is possible to increase the efficiency. The detailed operation process of the sliding window technique is as shown in the sixth algorithm of FIG. 1F.

도 2는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 나타내는 블록도이다.2 is a block diagram showing a high-speed NAF conversion apparatus according to an embodiment of the present invention.

본 발명의 고속의 NAF 변환 장치(200, 이하, NAF 변환 장치)는 설정부(210) 및 처리부(220)를 포함할 수 있다. 또한, 실시예에 따라, NAF 변환 장치(200)는 변경부(230), 연산부(240) 및 판단부(250)를 추가하여 구성할 수 있다.The high-speed NAF converting apparatus 200 (hereinafter, NAF converting apparatus) of the present invention may include a setting unit 210 and a processing unit 220. [ In addition, according to the embodiment, the NAF conversion apparatus 200 can be configured by adding the changing unit 230, the calculating unit 240, and the determining unit 250. [

설정부(210)는 윈도우의 값을 설정한다. 즉, 설정부(210)는 양의 정수인 윈도우의 값을 설정할 수 있다. 예를 들면, 설정부(210)는 2 이상의 정수 중 적어도 하나의 값을 윈도우의 값으로 설정할 수 있다.The setting unit 210 sets the value of the window. That is, the setting unit 210 can set a value of a window that is a positive integer. For example, the setting unit 210 may set at least one value of two or more integers to the window value.

처리부(220)는 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅한다. 즉, 처리부(220)는 제1 세팅으로서, 설정부(210)에 의해 설정된 값만큼 공개키의 일부분에 윈도우를 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, 처리부(220)는 공개키 중 LSB로부터 3 비트만큼을 제1 세팅할 수 있다.The processing unit 220 first sets a window having the length of the set value to at least a part of the public key based on the LSB (Least Significant Bit) of the public key. That is, as the first setting, the processing unit 220 can set the window to a part of the public key by the value set by the setting unit 210. [ For example, when the value of the window is set to 3, the processing unit 220 may set the first bit of the public key to 3 bits from the LSB.

또한, 처리부(220)는 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅한다. 즉, 처리부(220)는 타깃 비트를 윈도우에 포함시키기 위하여, 윈도우의 값인 ω-비트만큼 이동시켜 윈도우를 제2 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, 처리부(220)는 윈도우를 3-비트 이동시켜 타깃 비트가 포함되도록 세팅할 수 있다.If the target bit to be encrypted in the public key is outside the window, the processing unit 220 may perform a ω-bit right shift ? is a natural number), and sets the window to the second setting. That is, the processing unit 220 may set the window to the second value by moving the target bit by ω-bit, which is the value of the window, in order to include the target bit in the window. For example, when the value of the window is set to 3, the processing unit 220 may set the target bit to be included by shifting the window by 3 bits.

설명의 이해를 돕기 위하여, 이하 도 3 및 도 4를 참조하면서 도 2에서의 NAF 변환 장치(200)를 설명하고자 한다.In order to facilitate understanding of the explanation, the NAF conversion apparatus 200 in FIG. 2 will be described with reference to FIGS. 3 and 4. FIG.

도 3은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.3 is a view for explaining an implementation example using a high-speed NAF conversion apparatus according to an embodiment of the present invention.

도 3에 도시된 바와 같이, 처리부(220)는

Figure 112016112874914-pat00121
에 대해
Figure 112016112874914-pat00122
으로 설정되면,
Figure 112016112874914-pat00123
알고리즘에서
Figure 112016112874914-pat00124
가 홀수인 경우(즉, LSB가 1인 경우)의 윈도우를, 제1 세팅할 수 있다(회색 음영 부분, 311).As shown in FIG. 3, the processing unit 220
Figure 112016112874914-pat00121
About
Figure 112016112874914-pat00122
Lt; / RTI >
Figure 112016112874914-pat00123
In the algorithm
Figure 112016112874914-pat00124
(I.e., when the LSB is 1) can be set to the first setting (grayscale portion, 311).

변경부(230)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경할 수 있다. 즉, 변경부(230)는 제1 세팅된 비트에 대하여 모두 '0'으로 변경할 수 있다. 도 3의 (a)의 일례에서, 변경부(230)는 윈도우에 포함된(즉, 회색 음영 부분) 비트를 모두 '0'으로 변경할 수 있다(312). The changing unit 230 may change all bits in the public key included in the first set window to '0'. That is, the changing unit 230 may change all of the first set bits to '0'. In the example of FIG. 3A, the changing unit 230 may change all the bits included in the window (i.e., the gray shaded portion) to '0' (312).

연산부(240)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트에 대한 환산값을 산출할 수 있다. 도 3의 (a)의 일례에서, 연산부(240)는 가장 오른쪽의 3-비트가 011이라면 제3 알고리즘에서의 항목(2.1)인

Figure 112016112874914-pat00125
에 대하여
Figure 112016112874914-pat00126
을 산출할 수 있다. The operation unit 240 may calculate a conversion value for the bits in the public key included in the first set window. In the example of FIG. 3A, when the rightmost 3-bit is 011, the arithmetic unit 240 determines that the item (2.1) in the third algorithm
Figure 112016112874914-pat00125
about
Figure 112016112874914-pat00126
Can be calculated.

이때, 변경부(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).At this time, the changing unit 230 may check whether the calculated conversion value exceeds the predetermined reference value, and add or subtract a predetermined number to convert the conversion value to '0'. For example,
Figure 112017110511168-pat00127
The changing unit 230 sets the converted value < RTI ID = 0.0 >
Figure 112017110511168-pat00128
end
Figure 112017110511168-pat00129
. In the example of FIG. 3 (a), the changing unit 230
Figure 112017110511168-pat00130
Value of the item (2.1.1) in the third algorithm
Figure 112017110511168-pat00131
Lt; / RTI >
Figure 112017110511168-pat00132
Can be performed. At this time, the changing unit 230
Figure 112017110511168-pat00133
Is 3
Figure 112017110511168-pat00134
To make the rightmost 3-bit be 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-비트를 표시하는 회색 음영은 이동될 수 있다.At this time, the processing unit 220 determines the value of 1 as '1', 1-bit right shifts the window, and shifts the 1-bit right shift The movement can be repeated to make the second setting. In an example of FIG. 3A, the processing unit 220 performs item 2.3 of the third algorithm
Figure 112016112874914-pat00135
The value can be shifted one bit to the right by dividing by two (313). That is, as shown in Fig. 3 (a), the gray shade indicating the rightmost 3-bit can be moved.

여기서, NAF 변환 장치(200)는

Figure 112016112874914-pat00136
알고리즘을 통해, 도 3과 같은 동작을 수행한 후 오른쪽으로 1-비트 이동시키는 과정에서, 현재
Figure 112016112874914-pat00137
번째 비트를 본다고 가정할 때
Figure 112016112874914-pat00138
번째 비트부터
Figure 112016112874914-pat00139
번째 비트는 모두 0으로 바뀌는 것을 알 수 있다.Here, the NAF conversion device 200
Figure 112016112874914-pat00136
In the course of performing the operation as shown in FIG. 3 and then shifting one bit to the right through the algorithm,
Figure 112016112874914-pat00137
Assuming you see the ith bit
Figure 112016112874914-pat00138
From the ith bit
Figure 112016112874914-pat00139
0 < / RTI >

또한, 처리부(220)는 상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동할 수 있다. 도 3의 (a)에 도시된 바와 같이, 처리부(220)는

Figure 112016112874914-pat00140
값을 1 증가시킴으로써, LSB를 가리키는 화살표를 이동시킬 수 있다. In addition, the processing unit 220 may move the LSB of the public key in conjunction with the 1-bit right shift of the window. As shown in FIG. 3 (a), the processing unit 220
Figure 112016112874914-pat00140
By increasing the value by 1, the arrow pointing to the LSB can be moved.

또한, 처리부(220)는 상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거할 수 있다. 즉, 처리부(220)는 이전에(단계311, 312) LSB로 지정되었던 비트를 실제로 사라지도록 제거할 수 있다. 예를 들면, 도 3의 (a)에서, 단계(313)에 도시된 바와 같이, 처리부(220)는 윈도우에서 이탈된 부분(회색 음영이 아닌 부분)의 비트값을 제거할 수 있다.In addition, the processing unit 220 may remove the bit of the bit value '0' that deviates from the window after the 1-bit right shift. That is, the processing unit 220 may remove the bits previously designated as LSBs (steps 311, 312) so that they actually disappear. For example, in FIG. 3 (a), as shown in step 313, the processing unit 220 may remove the bit value of a portion deviated from the window (a part that is not a gray shade).

도 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)으로 바뀌는 것으로 표현하지만, 이에 한정되지는 않는다.3 (b), first, as described in step 311, the processing unit 220 , The window can be set to the first setting (grayscale portion, 321). Next, when the rightmost 3-bit is 101, the changing unit 230 sets the item (2.1) in the third algorithm
Figure 112016112874914-pat00142
about
Figure 112016112874914-pat00143
. At this time, the changing unit 230
Figure 112016112874914-pat00144
The value of the item (2.1.1)
Figure 112016112874914-pat00145
Lt; / RTI >
Figure 112016112874914-pat00146
The value is
Figure 112016112874914-pat00147
(-3), and the item
Figure 112016112874914-pat00148
Can be performed. The changing unit 230
Figure 112016112874914-pat00149
Is -3
Figure 112016112874914-pat00150
The rightmost 3-bit can be made 000 (322), at which time a carry may occur. In this specification, the occurrence of the conversion is expressed as a change of 0 or 1 (0 or 1) to 1 or 0 (1 or 0), but is not limited thereto.

그 다음으로, 처리부(220)는 제3 알고리즘의 항목(2.3)을 수행하여

Figure 112016112874914-pat00151
값을 2로 나누어 오른쪽으로 1-비트 이동시킬 수 있다(323). 또한, 처리부(220)는
Figure 112016112874914-pat00152
값을 1증가시킴으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.Next, the processing unit 220 performs an item (2.3) of the third algorithm
Figure 112016112874914-pat00151
The value may be divided by 2 and shifted one bit to the right (323). In addition, the processing unit 220
Figure 112016112874914-pat00152
By increasing the value by 1, the arrow pointing to the LSB can be moved.

실시예에 따라, 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
보다 작은 양의 홀수가 되는 특성을 활용할 수 있다. According to the embodiment, the NAF conversion device 200
Figure 112016112874914-pat00153
We apply the sliding window concept to the algorithm,
Figure 112016112874914-pat00154
In the algorithm
Figure 112016112874914-pat00155
The value of
Figure 112016112874914-pat00156
It is possible to utilize the characteristic of being a smaller amount of odd number. E.g,
Figure 112016112874914-pat00157
, The NAF converting apparatus 200 can obtain only 1 and 3 of 001 and 011
Figure 112016112874914-pat00158
Can be a value of. In the case of an even number such as 010, 100, and 110, the NAF converter 200 shifts to the right until the LSB becomes 1 and becomes a form of 001 and 011. In the case of 101 and 111, And then moves to the right until the LSB becomes 1 and can take the form of 001. Therefore, the NAF conversion device 200
Figure 112016112874914-pat00159
The value of
Figure 112016112874914-pat00160
It is possible to utilize the characteristic that becomes a smaller amount of odd number.

도 4는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 이용한 구현예를 설명하기 위한 도면이다.4 is a view for explaining an implementation example using a high-speed NAF conversion apparatus according to an embodiment of the present invention.

도 4에 도시된 바와 같이, 처리부(220)는

Figure 112016112874914-pat00161
에 대해
Figure 112016112874914-pat00162
으로 설정되면,
Figure 112016112874914-pat00163
알고리즘에서
Figure 112016112874914-pat00164
가 홀수인 경우(즉, LSB가 1인 경우)의 윈도우를, 제1 세팅할 수 있다(회색 음영 부분, 411, 421).As shown in FIG. 4, the processing unit 220
Figure 112016112874914-pat00161
About
Figure 112016112874914-pat00162
Lt; / RTI >
Figure 112016112874914-pat00163
In the algorithm
Figure 112016112874914-pat00164
(Gray shaded portion, 411, 421) can be set in the case of the odd number (that is, when the LSB is 1).

판단부(250)는 산출된 상기 환산값이 선정된 기준값을 넘는지를 판단할 수 있다. 즉, 연산부(240)에 의해 산출된 환산값에 대하여, 판단부(250)는 기준값을 기준으로 판단할 수 있다. 예를 들면, 판단부(250)는 기준값

Figure 112016112874914-pat00165
을 기준으로, 환산값이 기준값을 넘는지를 판단할 수 있다.The determination unit 250 may determine whether the calculated conversion value exceeds a predetermined reference value. That is, the determination unit 250 can determine the conversion value calculated by the calculation unit 240 based on the reference value. For example, the determination unit 250 determines that the reference value
Figure 112016112874914-pat00165
It is possible to judge whether the converted value exceeds the reference value.

이때, 처리부(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
알고리즘의 연산 과정을 생략할 수 있다.At this time, if the result of the determination is negative, the processing unit 220 can move the window to the? -Bit right and adjust the setting position of the window to the target bit. That is, the processing unit 220 determines that the reference value
Figure 112016112874914-pat00166
If the converted value is smaller, the first set window size? Can be shifted to the right by? Bits. As shown in Fig. 4 (a), the processing unit 220
Figure 112016112874914-pat00167
To the right
Figure 112016112874914-pat00168
- Bit can be moved (413). In step 413, after shifting the? -Bit, the NAF transformer 200 may check the value of the bit where the window has moved. That is, when the window size is set to '3', the processing unit 220 can move the window having the window size of 3 to the right by 3 bits. After the 3-bit shift, the NAF transformer 200 can check one of 0 or 1 as a bit value for the bits included in the window. In this process, the processing unit 220
Figure 112016112874914-pat00169
The computation process of the algorithm can be omitted.

또한, 처리부(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 중 하나를 비트값으로 체크할 수 있다.As a result of the determination, if the processing unit 220 carries out the bit value of the target bit and moves the window to the right by the? -Bit, the processing unit 220 may adjust the setting position of the window to the target bit . That is, as the processing unit 220 generates a caryy,
Figure 112016112874914-pat00170
instead
Figure 112016112874914-pat00171
(422). After switching the bit value, the processing unit 220 may move the window having the window size of? To the right by? Bits as shown in FIG. 4B (423). In step 423, after shifting the? -Bit, the NAF transformer 200 may check the value of the bit where the window has moved. For example, the processing unit 220 can move the window with the first set window size of 3 to the right by three bits. After the 3-bit shift, the NAF transformer 200 can check one of 0 or 1 as a bit value for the bits included in the window.

또한, 처리부(220)는 상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정할 수 있다. 즉, 도 4의 (a) 및 (b)에 도시된 바와 같이, 처리부(220)는 오른쪽으로

Figure 112016112874914-pat00172
-비트 이동을 하여
Figure 112016112874914-pat00173
번째 비트로 이동함으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.In addition, the processing unit 220 can adjust the LSB of the public key to the target bit in conjunction with the ω-bit right shift of the window. That is, as shown in FIGS. 4A and 4B, the processing unit 220 is moved to the right
Figure 112016112874914-pat00172
- By bit shifting
Figure 112016112874914-pat00173
Th bit, it is possible to move the arrow pointing to the LSB.

이러한, NAF 변환 장치(200)는

Figure 112016112874914-pat00174
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00175
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00176
알고리즘의 연산 처리 속도를 최적화 할 수 있다.The NAF conversion device 200,
Figure 112016112874914-pat00174
By performing the comparison operation of the number of times,
Figure 112016112874914-pat00175
Bit comparison operation
Figure 112016112874914-pat00176
The processing speed of the algorithm can be optimized.

또한, NAF 변환 장치(200)는 NAF 변환 시,

Figure 112016112874914-pat00177
(
Figure 112016112874914-pat00178
은 양의 정수
Figure 112016112874914-pat00179
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다(
Figure 112016112874914-pat00180
은 양의 정수
Figure 112016112874914-pat00181
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00182
는 윈도우 크기).Further, the NAF conversion device 200, upon NAF conversion,
Figure 112016112874914-pat00177
(
Figure 112016112874914-pat00178
Is a positive integer
Figure 112016112874914-pat00179
The number of bits in accordance with the binary conversion of the number of bits) is increased or an odd number is generated, the NAF conversion time can be shortened
Figure 112016112874914-pat00180
Is a positive integer
Figure 112016112874914-pat00181
The number of bits according to the binary conversion,
Figure 112016112874914-pat00182
Window size).

도 5는 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘을 도시한 도면이다.5 is a diagram illustrating an algorithm for implementing a high-speed NAF conversion apparatus according to an embodiment of the present invention.

도 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
는 반드시 홀수인 정수가 될 수 있다.As shown in Fig. 5, the NAF conversion apparatus 200 includes a seventh algorithm (
Figure 112016112874914-pat00183
Algorithm) as a pseudo code. The NAF transforming apparatus 200 calculates the condition of execution of the While statement in the item (2) of the seventh algorithm
Figure 112016112874914-pat00184
. ≪ / RTI > The reason is that,
Figure 112016112874914-pat00185
The value of
Figure 112016112874914-pat00186
The NAF conversion apparatus 200 can determine whether or not the while query is terminated only in the item (2.3.1). The While statement of item (2.1) can be a code to quickly process consecutive zeros. When you come out of the While door and come to the item (2.2)
Figure 112016112874914-pat00187
Can be an integer that is an odd number.

제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
만큼 오른쪽으로 이동할 수 있다. Item (2.3.2) in the seventh algorithm is a code representation of the operation process of FIG. 4 (a). At this time, the NAF conversion apparatus 200 determines whether the item (2.1.2) of the third algorithm and the item
Figure 112016112874914-pat00188
- the process of shifting bits by one bit 'can be omitted. That is, the NAF conversion apparatus 200
Figure 112016112874914-pat00189
To
Figure 112016112874914-pat00190
≪ / RTI & To
Figure 112016112874914-pat00192
To the right.

제7 알고리즘에서의 항목(2.4)는 도 4의 (b)의 동작 과정을 코드로 표현한 것이다. 이 경우, NAF 변환 장치(200)는 알고리즘에서 전환(carry)이 발생하기 때문에

Figure 112016112874914-pat00193
를 수행할 수 있다. NAF 변환 장치(200)는 나머지 부분에 대하여 항목(2.3.2)와 같이 수행할 수 있다.Item (2.4) in the seventh algorithm is a code representation of the operation process of (b) in FIG. In this case, since NAF conversion apparatus 200 generates a carry in the algorithm
Figure 112016112874914-pat00193
Can be performed. The NAF conversion apparatus 200 can perform the operation as shown in item (2.3.2) for the remaining part.

도 6 내지 도 11은 본 발명의 일실시예에 따른 고속의 NAF 변환 장치를 구현하기 위한 알고리즘의 성능 평가를 설명하기 위한 도면이다.FIGS. 6 to 11 are diagrams for explaining performance evaluation of an algorithm for implementing a high-speed NAF conversion apparatus according to an embodiment of the present invention.

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-pat00194
(Seventh algorithm) according to an embodiment of the present invention.
Figure 112016112874914-pat00195
The performance evaluation of the algorithm is based on the input value
Figure 112016112874914-pat00196
Wow
Figure 112016112874914-pat00197
About
Figure 112016112874914-pat00198
The cycle counter (Cycle Counter)
Figure 112016112874914-pat00199
And can be evaluated in a manner of comparing with an algorithm.
Figure 112016112874914-pat00200
Algorithm and
Figure 112016112874914-pat00201
The algorithm
Figure 112016112874914-pat00202
Length
Figure 112016112874914-pat00203
The total cycle counter can be increased. Both algorithms can increase the cycle counter as the odd number increases in the right shift process.

예를 들면,

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이 발생하기 때문일 수 있다.For example,
Figure 112016112874914-pat00204
Is 8 in length
Figure 112016112874914-pat00205
Is 2,
Figure 112016112874914-pat00206
The odd number occurs once
Figure 112016112874914-pat00207
Wow
Figure 112016112874914-pat00208
Since the odd number occurs four times, the cycle counter may be larger.
Figure 112016112874914-pat00209
The reason why the odd number is 4 is that, as shown in Fig. 6,
Figure 112016112874914-pat00210
By the conversion that occurs when
Figure 112016112874914-pat00211
- It may be because 1 occurs before the bit.

따라서, 본원의 성능 평가에서는

Figure 112016112874914-pat00212
의 길이
Figure 112016112874914-pat00213
에 대한 사이클 카운터 비교를 할 수 있다. 그뿐만 아니라, 본원의 성능 평가에서는 홀수의 경우가 발생하는 횟수에 대한 비교도 포함할 수 있다. 즉, 본원의 성능 평가에서는 0과 1로 조합되는 0,1,01,001,011,101 등과 같은 패턴들의 반복 횟수에 대해서
Figure 112016112874914-pat00214
크기가 2인 경우와 3인 경우를 저성능 8-비트 마이크로프로세서 아트메가128(ATmega128)에서 구현하고 사이클 카운터를 측정하여 성능 평가를 수행할 수 있다.Therefore, in the performance evaluation of the present invention
Figure 112016112874914-pat00212
Length
Figure 112016112874914-pat00213
Can be compared to the cycle counter. In addition, the performance evaluation of the present invention may include a comparison of the number of occurrences of the odd number. That is, in the performance evaluation of the present invention, the number of repetitions of patterns such as 0,1,01,001,011,101,
Figure 112016112874914-pat00214
It is possible to implement 2 and 3 cases in the low performance 8-bit microprocessor Artmega 128 (ATmega128) and measure the cycle counter to perform the performance evaluation.

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
알고리즘 보다 작아서 다양한 입력 패턴에 대해 일정한 성능을 나타낼 수 있음을 의미할 수 있다.
Figure 112016112874914-pat00215
The number of binary bits in RSA is more than 1024-bit, and the number of bits in RSC is more than 160-bit in ECC. These bits can be regarded as repetition of various patterns by 0 and 1. Therefore, as shown in FIG. 7, in accordance with various repetitive patterns that can be generated in 3-bit or less
Figure 112016112874914-pat00216
Algorithm contrast
Figure 112016112874914-pat00217
The mean and variance gains of the algorithm are summarized.
Figure 112016112874914-pat00218
Compared to the algorithm
Figure 112016112874914-pat00219
The average cycle counter of the algorithm is reduced by about 20% and the deviation is also decreased by 30% or more. Especially,
Figure 112016112874914-pat00220
The algorithm
Figure 112016112874914-pat00221
It can exhibit excellent performance in deviation from the algorithm. this is,
Figure 112016112874914-pat00222
The algorithm
Figure 112016112874914-pat00223
Length
Figure 112016112874914-pat00224
The cycle counter increment is
Figure 112016112874914-pat00225
It can be said that it is possible to show a constant performance for various input patterns because it is smaller than the algorithm.

또한, 본원에서는 두 알고리즘의 성능에 영향을 미치는 주요한 반복 패턴인 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% 성능 향상을 나타낼 수 있다. 8 and 9 show results of a detailed analysis of the cycle counter of the two algorithms according to the number of repetitions in the 1 and 01 bit patterns, which are the main repetitive patterns affecting the performance of the two algorithms. As shown in Figs. 8 and 9,
Figure 112016112874914-pat00226
The algorithm
Figure 112016112874914-pat00227
The average gain is 18.6% and 19.4%, the deviation gain is 31.3%, and the performance improvement is 31.8%, respectively. Further, as shown in Figs. 10 and 11,
Figure 112016112874914-pat00228
The algorithm
Figure 112016112874914-pat00229
The average gain is 11.8% and 14.3%, and the deviation gain is 26.7% and 29.9%, respectively, compared with the algorithm.

도 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번일 때는 사이클 카운터가 증가하게 될 수 있다.As shown in FIG. 11, the reason why the clock counter does not increase as the number of repetitions increases from 2 to 3 (or from 5 to 6)
Figure 112016112874914-pat00230
- It may be because the number of bit shifts is the same. E.g,
Figure 112016112874914-pat00231
, 0101 generates a carry, converts it to 1000, performs 3 right shifts, and then processes 0001,
Figure 112016112874914-pat00232
- Bit shift may occur. 010101 may also shift once because a carry occurs and is converted to 011000 and then shifted to the right by three bits and then processed by 011. On the other hand, a 01010101 shifts to 01011000 after a carry occurs, shifts 3-bit to the right, and then shifts to 01011. After shifting to 01000, it shifts to 3 bits to the right 01, the shift may occur twice. Therefore, the cycle counter of 01 and 2 is 3 and the cycle counter is the same, but when it is 4, the cycle counter may be increased.

도 12는 본 발명의 일실시예에 따른 고속의 NAF 변환 방법을 구체적으로 도시한 작업 흐름도이다.12 is a workflow diagram specifically illustrating a high-speed NAF conversion method according to an embodiment of the present invention.

우선 본 실시예에 따른 고속의 NAF 변환 방법은 상술한 NAF 변환 장치(200)에 의해 수행될 수 있다.First, the high-speed NAF conversion method according to this embodiment can be performed by the NAF conversion device 200 described above.

먼저, NAF 변환 장치(200)는 윈도우의 값을 설정한다(1210). 즉, 단계(1210)는 양의 정수인 윈도우의 값을 설정하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는 2 이상의 정수 중 적어도 하나의 값을 윈도우의 값으로 설정할 수 있다.First, the NAF transformer 200 sets a window value (1210). That is, step 1210 may be a process of setting a value of a window that is a positive integer. For example, the NAF conversion device 200 can set at least one value of two or more integers to the value of the window.

다음으로, NAF 변환 장치(200)는 공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅한다(1220). 즉, 단계(1220)는 제1 세팅으로서, 단계(1210)에서 설정된 값만큼 공개키의 일부분에 윈도우를 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, NAF 변환 장치(200)는 공개키 중 LSB로부터 3 비트만큼을 제1 세팅할 수 있다.Next, the NAF transformer 200 sets a window having the length of the set value to at least a part of the public key, based on the LSB (Least Significant Bit) of the public key (1220). That is, step 1220 may set the window to a portion of the public key by the value set in step 1210, as the first setting. For example, when the value of the window is set to 3, the NAF transformer 200 can set the first bit to 3 bits from the LSB of the public key.

다음으로, NAF 변환 장치(200)는 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅한다(1230). 즉, NAF 변환 장치(200)는 타깃 비트를 윈도우에 포함시키기 위하여, 윈도우의 값인 ω-비트만큼 이동시켜 윈도우를 제2 세팅할 수 있다. 예를 들면, 윈도우의 값이 3으로 설정된 경우, NAF 변환 장치(200)는 윈도우를 3-비트 이동시켜 타깃 비트가 포함되도록 세팅할 수 있다.Next, when the target bit to be encrypted in the public key is located outside the window, the NAF transformer 200 transforms the window into? -Bit right shift (? -Bit right shift ) (The above? Is a natural number), and sets the window to the second setting (1230). That is, the NAF transformer 200 may set the window to the second value by moving the target bit by ω-bit, which is the value of the window, in order to include the target bit in the window. For example, when the value of the window is set to 3, the NAF transformer 200 can set the target bit to be included by shifting the window by 3 bits.

실시예에 따라, NAF 변환 장치(200)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경할 수 있다. 즉, NAF 변환 장치(200)는 제1 세팅된 비트에 대하여 모두 '0'으로 변경할 수 있다.According to the embodiment, the NAF transformer 200 may change all the bits in the public key included in the first set window to '0'. That is, the NAF converter 200 can change all of the first set bits to '0'.

실시예에 따라, NAF 변환 장치(200)는 상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트에 대한 환산값을 산출할 수 있다. 예를 들면, NAF 변환 장치(200)는 가장 오른쪽의 3-비트가 011이라면 제3 알고리즘에서의 항목(2.1)인

Figure 112016112874914-pat00233
에 대하여
Figure 112016112874914-pat00234
을 산출할 수 있다. According to the embodiment, the NAF transformer 200 may calculate a conversion value for the bits in the public key included in the first set window. For example, if the rightmost 3-bit is 011, the NAF transformer 200 determines that the item (2.1) in the third algorithm
Figure 112016112874914-pat00233
about
Figure 112016112874914-pat00234
Can be calculated.

상기 '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이 되도록 할 수 있다.The step of changing to '0' may be a process of checking whether the calculated conversion value exceeds a predetermined reference value, and adding or subtracting a predetermined number to convert the conversion value to '0'. For example,
Figure 112017110511168-pat00235
The NAF conversion device 200 converts the converted value < RTI ID = 0.0 >
Figure 112017110511168-pat00236
end
Figure 112017110511168-pat00237
. The NAF conversion device 200
Figure 112017110511168-pat00238
Value of the item (2.1.1) in the third algorithm
Figure 112017110511168-pat00239
Lt; / RTI >
Figure 112017110511168-pat00240
Can be performed. At this time, the NAF conversion device 200
Figure 112017110511168-pat00241
Is 3
Figure 112017110511168-pat00242
So that the rightmost 3-bit can be made 000.

이때, 단계(1230)는 상기 ω을 '1'로 결정하고, 상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는 제3 알고리즘의 항목(2.3)을 수행하여

Figure 112016112874914-pat00243
값을 2로 나누어 오른쪽으로 1-비트 이동시킬 수 있다.At this time, the step 1230 determines the value of '1' and 1-bit right shifts the window, and the 1-bit right shift is performed until the target bit is included in the window. And repeating the movement to repeat the second setting. For example, the NAF transformer 200 performs an item 2.3 of the third algorithm
Figure 112016112874914-pat00243
You can divide the value by two and move it one bit to the right.

또한, 단계(1230)는 상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는 과정일 수 있다. 즉, NAF 변환 장치(200)는 이전에 LSB로 지정되었던 비트를 실제로 사라지도록 제거할 수 있다. 예를 들면, NAF 변환 장치(200)는 윈도우에서 이탈된 부분의 비트값을 제거할 수 있다.In addition, the step 1230 may be a process of removing the bit of the bit value '0' deviating from the window after the 1-bit right shift. In other words, the NAF transformer 200 can remove the bits previously designated as LSBs so that they actually disappear. For example, the NAF conversion apparatus 200 can remove the bit value of the portion deviated from the window.

또한, 단계(1230)는 상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는 과정일 수 있다. 예를 들면, NAF 변환 장치(200)는

Figure 112016112874914-pat00244
값을 1 증가시킴으로써, LSB를 이동할 수 있다.In addition, step 1230 may be a step of moving the LSB of the public key in conjunction with the 1-bit right shift of the window. For example, the NAF conversion device 200
Figure 112016112874914-pat00244
By increasing the value by 1, the LSB can be moved.

실시예에 따라, NAF 변환 장치(200)는 산출된 상기 환산값이 선정된 기준값을 넘는지를 판단할 수 있다. 즉, 상기 환산값을 산출하는 단계에서 산출된 환산값에 대하여, NAF 변환 장치(200)는 기준값을 기준으로 판단할 수 있다. 예를 들면, NAF 변환 장치(200)는 기준값

Figure 112016112874914-pat00245
을 기준으로, 환산값이 기준값을 넘는지를 판단할 수 있다.According to the embodiment, the NAF conversion apparatus 200 can determine whether the calculated conversion value exceeds a predetermined reference value. That is, with respect to the conversion value calculated at the step of calculating the conversion value, the NAF conversion device 200 can determine the conversion value based on the reference value. For example, the NAF conversion device 200 may convert the reference value
Figure 112016112874914-pat00245
It is possible to judge whether the converted value exceeds the reference value.

실시예에 따라, 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
알고리즘의 연산 과정을 생략할 수 있다.According to the embodiment, the NAF transformer 200 may move the window to the right by the? -Bit to adjust the setting position of the window to the target bit if the result of the determination is NO. That is, the NAF conversion apparatus 200 converts the reference value
Figure 112016112874914-pat00246
If the converted value is smaller, the first set window size? Can be shifted to the right by? Bits. The NAF conversion device 200 To the right
Figure 112016112874914-pat00248
- Bit can be moved. After the? -bit shift, the NAF transformer 200 can check the value of the bit where the window has moved. For example, when the window size is set to 3 in the first setting, the NAF conversion apparatus 200 can move the window having the window size of 3 to the right by 3 bits. After the 3-bit shift, the NAF transformer 200 can check one of 0 or 1 as a bit value for the bits included in the window. In this process, the NAF conversion device 200
Figure 112016112874914-pat00249
The computation process of the algorithm can be omitted.

실시예에 따라, 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 중 하나를 비트값으로 체크할 수 있다.According to the embodiment, the NAF transformer 200 may carry the bit value of the target bit when it is determined that the target bit is exceeded, move the window to the right by the? -Bit, The target bit can be adjusted. That is, as the NAF conversion apparatus 200 generates a caryy,
Figure 112016112874914-pat00250
instead
Figure 112016112874914-pat00251
Can be performed. Also, after switching the bit value, the NAF conversion apparatus 200 can move the window having the window size? To the right by? Bits. After the? -bit shift, the NAF transformer 200 can check the value of the bit where the window has moved. For example, the NAF conversion apparatus 200 can move the window with the first set window size of 3 to the right by 3 bits. After the 3-bit shift, the NAF transformer 200 can check one of 0 or 1 as a bit value for the bits included in the window.

실시예에 따라, NAF 변환 장치(200)는 상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정할 수 있다. 예를 들면, NAF 변환 장치(200)는 오른쪽으로

Figure 112016112874914-pat00252
-비트 이동을 하여 번째 비트로 이동함으로써, LSB를 가리키는 화살표를 이동시킬 수 있다.According to the embodiment, the NAF transformer 200 can adjust the LSB of the public key to the target bit in conjunction with? -Bit right shift of the window. For example, the NAF conversion device 200 is shifted to the right
Figure 112016112874914-pat00252
- By bit shifting Th bit, it is possible to move the arrow pointing to the LSB.

이러한, NAF 변환 방법은

Figure 112016112874914-pat00254
번의 비교 연산 과정을 수행함으로써,
Figure 112016112874914-pat00255
번의 비트 비교 연산 과정을 수행하는
Figure 112016112874914-pat00256
알고리즘의 연산 처리 속도를 최적화 할 수 있다(
Figure 112016112874914-pat00257
은 양의 정수
Figure 112016112874914-pat00258
의 이진수 변환에 따른 비트 수,
Figure 112016112874914-pat00259
는 윈도우 크기).This NAF conversion method
Figure 112016112874914-pat00254
By performing the comparison operation of the number of times,
Figure 112016112874914-pat00255
Bit comparison operation
Figure 112016112874914-pat00256
It is possible to optimize the processing speed of the algorithm (
Figure 112016112874914-pat00257
Is a positive integer
Figure 112016112874914-pat00258
The number of bits according to the binary conversion,
Figure 112016112874914-pat00259
Window size).

또한, NAF 변환 방법은 NAF 변환 시,

Figure 112016112874914-pat00260
(
Figure 112016112874914-pat00261
은 양의 정수
Figure 112016112874914-pat00262
의 이진수 변환에 따른 비트 수)이 증가하거나 홀수인 경우를 발생시키는 패턴이 많이 존재하는 경우에 NAF 변환 시간을 단축할 수 있다.In the NAF conversion method,
Figure 112016112874914-pat00260
(
Figure 112016112874914-pat00261
Is a positive integer
Figure 112016112874914-pat00262
The number of bits in accordance with the binary conversion of the number of bits) increases or the number of patterns that generate an odd number is large, the NAF conversion time can be shortened.

본 발명의 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment of the present invention may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

200 : 고속의 NAF 변환 장치
210 : 설정부 220 : 처리부
230 : 변경부 240 : 연산부
250 : 판단부
200: High-speed NAF converter
210: setting unit 220:
230: changing section 240:
250:

Claims (16)

윈도우의 값을 설정하는 설정부;
공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하고, 상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우, 상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 처리부
를 포함하는 고속의 NAF 변환 장치.
A setting unit for setting a value of a window;
Setting a window having the set value as a length on at least a part of the public key based on a least significant bit (LSB) of a public key, and setting, as a target bit to be encrypted in the public key, Bit right shift (the "?&Quot; is a natural number) so that the target bit is included in the window,
And a high-speed NAF converter.
제1항에 있어서,
상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경하는 변경부
를 더 포함하고,
상기 처리부는,
상기 ω을 '1'로 결정하고, 상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는
고속의 NAF 변환 장치.
The method according to claim 1,
And changing the bits in the public key included in the first set window to ' 0 '
Further comprising:
Wherein,
Bit right shifting until the target bit is included in the window, and the second bit is shifted to the right by 1-bit right shifting (1-bit right shift) Setting
High speed NAF converter.
제2항에 있어서,
상기 처리부는,
상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는
고속의 NAF 변환 장치.
3. The method of claim 2,
Wherein,
After the 1-bit right shift, the bit of the bit value '0' which is deviated from the window is removed
High speed NAF converter.
제2항에 있어서,
상기 처리부는,
상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는
고속의 NAF 변환 장치.
3. The method of claim 2,
Wherein,
The LSB of the public key is moved in conjunction with the 1-bit right shift of the window
High speed NAF converter.
제2항에 있어서,
상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 연산부
를 더 포함하고,
상기 변경부는,
산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 제1 세팅된 윈도우에 포함되는 비트를 모두 '0'으로 만드는
고속의 NAF 변환 장치.
3. The method of claim 2,
Calculating a converted value of an integer with respect to bits included in the first set window among the bits constituting the public key,
Further comprising:
The changing unit may change,
And the number of bits included in the first set window is made to be '0' by checking whether the calculated conversion value of the integer exceeds the predetermined reference value, adding or subtracting a predetermined number,
High speed NAF converter.
제1항에 있어서,
상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 연산부; 및
산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 판단하는 판단부
를 더 포함하고,
상기 처리부는,
상기 판단 결과, 넘지 않는 경우,
상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는
고속의 NAF 변환 장치.
The method according to claim 1,
An operation unit for calculating an integer conversion value of bits included in the first set window among bits constituting the public key; And
A determination unit for determining whether the calculated conversion value of the integer exceeds a predetermined reference value,
Further comprising:
Wherein,
As a result of the determination,
Moves the window to the right by the? -Bit, and adjusts the setting position of the window to the target bit
High speed NAF converter.
제6항에 있어서,
상기 판단 결과, 넘는 경우,
상기 처리부는,
상기 타깃 비트의 비트값이 0이면 1로, 또는 상기 타깃 비트의 비트값이 1이면 0으로 바뀌어 전환(carry)하고, 상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는
고속의 NAF 변환 장치.
The method according to claim 6,
As a result of the determination,
Wherein,
1 if the bit value of the target bit is 0, or 0 if the bit value of the target bit is 1, and moves the window to the right by the? -Bit so as to set the setting position of the window to the target Bit-adjusted
High speed NAF converter.
제6항 또는 제7항에 있어서,
상기 처리부는,
상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정하는
고속의 NAF 변환 장치.
8. The method according to claim 6 or 7,
Wherein,
The LSB of the public key is adjusted to the target bit in conjunction with the ω-bit right shift of the window
High speed NAF converter.
윈도우의 값을 설정하는 단계;
공개키의 LSB(Least Significant Bit)를 기준으로, 상기 설정된 값을, 길이로 갖는 윈도우를, 상기 공개키의 적어도 일부에 제1 세팅하는 단계; 및
상기 공개키 내 암호화 대상이 되는 타깃 비트가, 상기 윈도우의 밖에 있는 경우,
상기 타깃 비트가 포함되도록 상기 윈도우를, ω-비트 오른쪽 이동(ω-bit right shift)(상기 ω은 자연수)시켜, 상기 윈도우를 제2 세팅하는 단계
를 포함하는 고속의 NAF 변환 방법.
Setting a value of a window;
Setting a window having the set value as a length based on a LSB (Least Significant Bit) of a public key to at least a part of the public key; And
If the target bit to be encrypted in the public key is outside the window,
Setting the window to a second state by making ω-bit right shift (ω is a natural number) the window so that the target bit is included;
/ RTI >
제9항에 있어서,
상기 제1 세팅된 윈도우에 포함되는, 상기 공개키 내 비트를 모두 '0'으로 변경하는 단계
를 더 포함하고,
상기 제2 세팅하는 단계는,
상기 ω을 '1'로 결정하는 단계; 및
상기 윈도우를, 1-비트 오른쪽 이동(1-bit right shift)시키되, 상기 타깃 비트가 상기 윈도우에 포함될 때까지 상기 1-비트 오른쪽 이동을 반복하여 상기 제2 세팅하는 단계
를 포함하는 고속의 NAF 변환 방법.
10. The method of claim 9,
Changing all bits in the public key included in the first set window to ' 0 '
Further comprising:
Wherein the second setting comprises:
Determining? As '1'; And
Bit right shift until the target bit is included in the window, and repeating the 1-bit right shift until the target bit is included in the window,
/ RTI >
제10항에 있어서,
상기 제2 세팅하는 단계는,
상기 1-비트 오른쪽 이동 후, 상기 윈도우에서 이탈되는 비트값 '0'의 비트를 제거하는 단계
를 더 포함하는 고속의 NAF 변환 방법.
11. The method of claim 10,
Wherein the second setting comprises:
Removing the bit of the bit value '0' deviating from the window after the 1-bit right shift,
Further comprising the steps of:
제10항에 있어서,
상기 제2 세팅하는 단계는,
상기 윈도우의 1-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 이동하는 단계
를 더 포함하는 고속의 NAF 변환 방법.
11. The method of claim 10,
Wherein the second setting comprises:
Moving the LSB of the public key in conjunction with the 1-bit right shift of the window
Further comprising the steps of:
제10항에 있어서,
상기 NAF 변환 방법은,
상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는 비트에 대한 정수의 환산값을 산출하는 단계
를 더 포함하고,
상기 '0'으로 변경하는 단계는,
산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 확인하여, 정해진 수를 가산 또는 감산하여, 상기 제1 세팅된 윈도우에 포함되는 비트를 모두 '0'으로 만드는 단계
를 포함하는 고속의 NAF 변환 방법.
11. The method of claim 10,
In the NAF conversion method,
Calculating an integer conversion value of bits included in the first set window among the bits constituting the public key,
Further comprising:
The step of changing to '0'
Checking whether the calculated conversion value of the integer exceeds the predetermined reference value, adding or subtracting a predetermined number to make all the bits included in the first set window '0'
/ RTI >
제9항에 있어서,
상기 공개키를 구성하는 비트 중, 상기 제1 세팅된 윈도우에 포함되는, 비트에 대한 정수의 환산값을 산출하는 단계;
산출된 상기 정수의 환산값이 선정된 기준값을 넘는지를 판단하는 단계; 및
상기 판단 결과, 넘지 않는 경우,
상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는 단계
를 더 포함하는 고속의 NAF 변환 방법.
10. The method of claim 9,
Calculating an integer conversion value of bits included in the first set window among the bits constituting the public key;
Determining whether the calculated conversion value of the integer exceeds a predetermined reference value; And
As a result of the determination,
Shifting the window to the right ω-bit and adjusting the setting position of the window to the target bit
Further comprising the steps of:
제14항에 있어서,
상기 판단 결과, 넘는 경우,
상기 타깃 비트의 비트값이 0이면 1로, 또는 상기 타깃 비트의 비트값이 1이면 0으로 바뀌어 전환(carry)하는 단계; 및
상기 윈도우를 상기 ω-비트 오른쪽 이동시켜, 상기 윈도우의 세팅 위치를 상기 타깃 비트로 조정하는 단계
를 더 포함하는 고속의 NAF 변환 방법.
15. The method of claim 14,
As a result of the determination,
If the bit value of the target bit is 0, the bit is changed to 1 or if the bit value of the target bit is 1, the bit is changed to 0 and carry; And
Shifting the window to the right ω-bit and adjusting the setting position of the window to the target bit
Further comprising the steps of:
제14항 또는 제15항에 있어서,
상기 윈도우의 ω-비트 오른쪽 이동에 연동하여, 상기 공개키의 LSB를 상기 타깃 비트로 조정하는 단계
를 더 포함하는 고속의 NAF 변환 방법.
16. The method according to claim 14 or 15,
Adjusting the LSB of the public key to the target bit in conjunction with? -Bit right shift of the window
Further comprising the steps of:
KR1020160154192A 2016-11-18 2016-11-18 Device and method for high-speed non-adjacent form conversion Expired - Fee Related KR101817879B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160154192A KR101817879B1 (en) 2016-11-18 2016-11-18 Device and method for high-speed non-adjacent form conversion
PCT/KR2017/001113 WO2018092981A2 (en) 2016-11-18 2017-02-02 High-speed naf conversion device and high-speed naf conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160154192A KR101817879B1 (en) 2016-11-18 2016-11-18 Device and method for high-speed non-adjacent form conversion

Publications (1)

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

Family

ID=61004065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160154192A Expired - Fee Related KR101817879B1 (en) 2016-11-18 2016-11-18 Device and method for high-speed non-adjacent form conversion

Country Status (2)

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

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 (en) * 2006-12-01 2013-09-23 삼성전자주식회사 Method for generating sparse w-NAF key, method for processing and method for encrypting thereof
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 (en) * 2013-01-18 2016-05-06 Inside Secure CRYPTOGRAPHY METHOD COMPRISING A SCALAR OR EXPONENTIATION MULTIPLICATION OPERATION

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 (en) 2018-08-02
WO2018092981A2 (en) 2018-05-24

Similar Documents

Publication Publication Date Title
KR102136911B1 (en) Cryptography method comprising an operation of multiplication by a scalar or an exponentiation
US6920473B2 (en) Method and apparatus for modular multiplying and calculating unit for modular multiplying
Knezevic et al. Faster interleaved modular multiplication based on Barrett and Montgomery reduction methods
KR101326078B1 (en) Modular Arithmetic Method, Modular Multiplier and Cryptosystem having the same
US7908641B2 (en) Modular exponentiation with randomized exponent
KR101590322B1 (en) Modulated multiplier with reduced computational threshold path and computational critical path reduction method
US20020174155A1 (en) Method for calculating arithmetic inverse over finite fields for use in cryptography
JP2000010479A (en) Montgomery reduction device and recording medium
KR101817879B1 (en) Device and method for high-speed non-adjacent form conversion
US20060222175A1 (en) Computation method, computing device and computer program
CN108418687B (en) Rapid modular reduction method and medium suitable for SM2 algorithm
US8909689B2 (en) Arithmetic device
JP6457911B2 (en) Scalar multiplier
KR20140089230A (en) Mutiplication method and modular multiplier using redundant form recoding
KR101707334B1 (en) Apparatus for efficient elliptic curve cryptography processor and method for the same
Anagreh et al. Parallel method for computing elliptic curve scalar multiplication based on MOF.
KR101548174B1 (en) Method for calculating negative inverse of modulus
Al Saffar et al. Speeding up the Elliptic Curve Scalar Multiplication Using the Window-w Non Adjacent Form.
Nedjah et al. Parallel computation of modular exponentiation for fast cryptography
JP4182226B2 (en) Remainder calculation method, apparatus and program
Knezevic et al. Modular reduction without precomputational phase
US12500736B2 (en) Montgomery multiplier architecture
JP3959076B2 (en) Finite field square computing method and square computing device
KR101423947B1 (en) Modular multiplication and modular exponentiation using extended NIST prime
JP3626315B2 (en) Remainder calculation apparatus, information processing apparatus, and remainder calculation method

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20250106

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

H13 Ip right lapsed

Free format text: ST27 STATUS EVENT CODE: N-4-6-H10-H13-OTH-PC1903 (AS PROVIDED BY THE NATIONAL OFFICE); TERMINATION CATEGORY : DEFAULT_OF_REGISTRATION_FEE

Effective date: 20250106

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20250106