KR20000008153A - Modular processing device and method - Google Patents
Modular processing device and method Download PDFInfo
- Publication number
- KR20000008153A KR20000008153A KR1019980027865A KR19980027865A KR20000008153A KR 20000008153 A KR20000008153 A KR 20000008153A KR 1019980027865 A KR1019980027865 A KR 1019980027865A KR 19980027865 A KR19980027865 A KR 19980027865A KR 20000008153 A KR20000008153 A KR 20000008153A
- Authority
- KR
- South Korea
- Prior art keywords
- carry
- bit
- value
- bits
- memory means
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
Description
본 발명은 모듈러 연산장치에 관한 것으로서, 특히 공개키 암호화/복호화 및 디지털 서명 시스템에 사용되는 모듈러 연산장치 및 그 방법에 관한 것이다.TECHNICAL FIELD The present invention relates to a modular computing device, and more particularly, to a modular computing device and a method for use in a public key encryption / decryption and digital signature system.
1976년 디피(Diffie)와 헬만(Hellman)은 수학적으로 매우 풀기 어려운 문제의 일방성을 이용한 공개키 암호시스템(Public Key Cryptosystem)의 개념을 처음으로 소개하여 현대 암호학의 새로운 전기를 마련하였다. 기존의 관용(대칭형) 암호시스템(conventional or symmetric cryptosystem)에서는 통신하고자 하는 두 사용자가 동일한 비밀키를 공유하여야 하므로 키관리가 어렵고, 디지털 서명(digital signature)을 구현하기 어렵다는 등의 단점이 있었다. 그런데, 공개키 암호시스템에서는 수학적으로 풀기 어려운 문제의 일방성을 이용하여 공개키와 비밀키를 계산하고, 공개키는 누구나 이용할 수 있게 공개하며 비밀키만 각 사용자가 보관하게 된다. 따라서, 공개된 상대방의 공개키를 가진 사용자는 누구나 그 상대방과 비밀통신을 할 수 있게 된다.In 1976, Diffie and Hellman introduced the concept of the Public Key Cryptosystem for the first time using a one-sided problem of mathematically very difficult problems to prepare a new biography of modern cryptography. Conventional or symmetric cryptosystems have disadvantages such as difficult to manage keys and difficult to implement digital signatures because two users who want to communicate must share the same secret key. However, in the public key cryptosystem, the public key and the private key are calculated using one-sided problems that are difficult to solve mathematically, the public key is open to everyone, and only the private key is kept by each user. Therefore, anyone who has the public key of the other party who has been disclosed can perform secret communication with the other party.
공개키 암호시스템에서 가장 널리 이용되는 어려운 문제로는 이산대수 문제(Discrete Logarithm Problem)와 소인수분해 문제가 있다. 대표적인 공개키 암호시스템으로는 이산대수 문제에 근거한 엘가말(ElGamal)형의 암호시스템과 소인수분해 문제에 근거한 알.에스.에이(Revest Shamir Adleman : 이하 RSA라 한다) 암호시스템이 있다. 표준으로 채택된 것도 국제표준으로는 ISO(the International Organization for Standardization:국제표준기구)/IEC(the International Electrotechnical Commission:국제전자기술위원회) 9796, 엘가말형의 변형인 미국의 DSA, 러시아의 GOST 등이 있으며, 한국에서는 KC-DSA가 있다.The most widely used difficult problems in public key cryptosystems are the discrete logarithm problem and the prime factorization problem. Representative public key cryptosystems include ElGamal-type cryptosystems based on discrete algebra and Revest Shamir Adleman (RSA) cryptosystems based on prime factorization. International standards such as the International Organization for Standardization (ISO) / the International Electrotechnical Commission (IEC) 9796, the DSA in the United States, and the GOST in Russia In Korea, there is KC-DSA.
한편, 디지털 서명은 정보를 전자적으로 교환할 때 전자적 문서에 종래 종이에 자필 서명한 기능을 제공할 수 있도록 하는 기술이다.On the other hand, digital signature is a technology that can provide the electronic document handwritten signature function on the electronic paper when information is exchanged electronically.
이러한 공개키 암호시스템들 및 디지털 서명 시스템은 대부분 모듈러 멱승(modular exponentiation: memod N) 연산을 필요로 하고, 이 모듈러 멱승 연산을 위해서는 모듈러 곱셈 (AB mod N)을 반복적으로 수행하는 것이 반드시 필요하다. 모듈러 곱셈을 위한 알고리듬으로는 고전적인 알고리듬, 바레트(Barret)의 알고리듬, 그리고 몽고메리(Montgomery) 알고리듬 등이 제안되어 있다.Most of these public key cryptosystems and digital signature systems require modular exponentiation (m e mod N) operations, and it is necessary to repeatedly perform modular multiplication (AB mod N) for this modular exponentiation operation. Do. Algorithms for modular multiplication are proposed as classical algorithms, Barrett's algorithms, and Montgomery algorithms.
상기 고전적인 알고리듬은 보통 연필로 나눗셈을 하여 나머지를 구하듯이 한자리씩 몫을 추정하여 나머지를 구하는 과정을 반복함으로써 모듈러 감소를 하는 방법이다. 이는 법 M에 대한 제약이 없으며 사전(事前) 계산이나 사후(事後) 계산이 필요하지 않으므로 어느 경우에나 적용될 수 있는 가장 일반적인 모듈러 감소 알고리듬이다. 그러나, 몫을 추정하는 과정에서 (곱셈에 비해 속도가 느린) 나눗셈이 필요하고 추정된 몫이 정확한 값이 아닌 경우 추가적인 덧셈이나 뺄셈이 필요하므로 비교적 속도가 느린 편이다.The classical algorithm is a method of modular reduction by repeating the process of estimating the quotient by one digit and calculating the remainder as if it is usually divided by a pencil to obtain the remainder. This is the most common modular reduction algorithm that can be applied in either case because there is no restriction on law M and no pre or post calculation is required. However, the estimation of the quotient requires a division (slower than multiplication), and if the estimated quotient is not an exact value, additional addition or subtraction is required, which is relatively slow.
바레트 알고리듬은 고정된 법에 대한 사전계산값을 이용하여 전체 몫을 한꺼번에 추정하여 곱셈만으로 모듈러 감소를 수행한다. 이는 법 M이 고정되어 있는 경우 또는 같은 법에 대해 많은 수의 모듈러 곱셈이 필요한 모듈러 멱승 연산시 고전적인 알고리듬에 비해 좀 더 나은 성능을 보여준다.Barrett's algorithm estimates the total quotient at once using precomputed values for a fixed method and performs modular reduction by multiplication alone. This shows better performance compared to the classical algorithm when the law M is fixed or when the modular power multiplication operation requires a large number of modular multiplications for the same law.
몽고메리 알고리듬은 수체제의 변환을 통해 나눗셈없이 나머지를 구하는 알고리듬으로서 다른 알고리듬에 비해 속도가 빠르므로 모듈러 멱승이 필요한 공개키 암호시스템의 구현시 가장 널리 이용된다. 즉 주어진 수들을 곱셈만으로 모듈러 감소를 할 수 있는 다은 수체제로 변환하여 거기서 모듈러 감소시킨 후 이를 다시 원래의 수체제로 역변환시켜 원하는 결과를 얻게 된다. 대부분의 공개키 암호시스템에서 요구되는 모듈러 멱승의 연산시는 이러한 사전/사후 계산은 전체의 수행속도에 거의 영향을 미치지 못하므로 이 알고리듬은 전체적으로 다른 알고리듬에 비해 매우 좋은 성능을 보여준다.The Montgomery algorithm is the most widely used algorithm for public key cryptography that requires modular power because it is faster than other algorithms. In other words, a given number is converted to a different water system, which can be modularly reduced, and then reduced to a modular water system, and then converted back to the original water system to obtain a desired result. In the calculation of the modular power required by most public key cryptosystems, this algorithm shows very good performance compared to other algorithms because these pre / post calculations have little effect on the overall performance.
본 발명은 몽고메리 알고리듬을 특징을 이용하여 공개키 암호/복호 및 디지털 서명에 이용되는 모듈러 멱승 및 모듈러 곱셈 연산을 적은 클럭수 내에 효율적으로 수행할 수 있고, 그 구성이 간단한 모듈러 연산장치 및 그 방법을 제공함을 그 목적으로 한다.The present invention uses a Montgomery algorithm to efficiently perform modular power and modular multiplication operations used for public key cryptography / decryption and digital signatures within a small number of clocks. The purpose is to provide.
도 1은 본 발명에 의한 모듈러 연산장치의 구성을 도시한 블록도이다.1 is a block diagram showing the configuration of a modular computing device according to the present invention.
도 2는 도 1에 도시된 제1캐리저장 덧셈기 및 제2캐리저장 덧셈기의 블록구성도이다.FIG. 2 is a block diagram illustrating a first carry storage adder and a second carry storage adder shown in FIG. 1.
상기의 목적을 달성하기 위하여, 본 발명에 의한 모듈러 연산을 계산하는 장치는 k비트의 저장용량을 지니고, 상기 A값을 입력받아 매 클럭마다 w비트 단위로 하위비트 방향으로 쉬프트하면서 최하위 w비트를 출력하는 A메모리수단; (k+w+1)비트의 저장용량을 지니고, 최하위 w비트를 출력하는 S메모리수단; (k+w+2)비트의 저장용량을 지니고, 최하위 w비트를 출력하는 C메모리수단; 상기 B값을 입력받고, 0, B·2w,…,(2w-1)·B·2w를 계산한 2w개의 값들을 출력하는 B곱셈수단; 상기 N값을 입력받고, 0, N,…,(2w-1)·N를 계산한 2w개의 값들을 출력하는 N곱셈수단; 매 클럭마다 상기 S메모리수단과 C메모리수단의 최하위 w비트를 더한 값 ti와 상기 N값의 최하위 w비트인 N0을 입력받고,에 의해 mi를 생성하는 mi생성기(여기에서,); 매 클럭마다 상기 A메모리수단의 최하위 w비트값에 의해 상기 B곱셈수단의 출력 0,…,(2w-1)·B·r 중 하나의 값을 선택하는 제1선택수단; 매 클럭마다 상기 mi생성기의 출력값에 의해 상기 N곱셈수단의 출력 0,…,(2w-1)·N 중 하나의 값을 선택하는 제2선택수단; 상기 C메모리수단, 상기 제1선택수단 및 제2선택수단의 출력값들을 더하여 각 비트의 합 S1 및 각 비트의 캐리 C1을 출력하는 제1캐리저장 덧셈기; 상기 S메모리수단의 출력과 상기 제1캐리저장 덧셈기의 출력 S1, C1을 더하여 각 비트의 합 S2, 각 비트의 캐리 C2를 출력하고, 출력 S2 중 상위 k+w+1비트는 상기 S메모리수단에 전달하고, 출력 C2 중 상위 k+w+2비트는 상기 C메모리수단에 전달하는 제2캐리저장 덧셈기; 상기 S메모리수단과 C메모리수단의 최하위 w비트값을 더하여 상기 mi생성기에 전달하는 제1가산기; 및 상기 제2캐리저장 덧셈기의 출력 S2와 C2의 최하위 w비트값을 더하여 그 캐리값을 생성하는 제2가산기를 포함하고, 상기 제2가산기에 의해 생성된 캐리값은 1클럭 지연되어 상기 S1의 최하위비트로서 상기 제2캐리저장 덧셈기에 입력되고, 캐리 입력으로서 상기 제1가산기에 입력되는 것을 특징으로 한다(여기에서, k = w·s이고, k,w,s는 모두 2이상의 정수).In order to achieve the above object, the modular operation according to the present invention An apparatus for calculating a memory has an storage capacity of k bits, A memory means for receiving the value A and outputting the least significant w bits while shifting in the lower bit direction in units of w bits every clock; S memory means having a storage capacity of (k + w + 1) bits and outputting the least significant w bits; C memory means having a storage capacity of (k + w + 2) bits and outputting the least significant w bits; The value B is input and 0, B · 2 w ,... B multiplication means for outputting 2 w values obtained by calculating, (2 w −1) · B · 2 w ; Receiving the value of N, 0, N,... N multiplying means for outputting 2 w values obtained by calculating, (2 w −1) · N; Each clock receives a value t i plus the least significant w bits of the S memory means and the C memory means and N 0 , which is the least significant w bit of the N value, Mi generator that generates m i by ); The output of the B multiplication means is 0,... By the least significant w bit value of the A memory means every clock. First selecting means for selecting one of values of, (2 w −1) · B · r; Every clock by the output value of the m i output generator of the N multiplying means 0,. Second selecting means for selecting one of values of, (2 w −1) · N; A first carry storage adder for outputting the sum S1 of each bit and the carry C1 of each bit by adding output values of the C memory means, the first selection means and the second selection means; The output of the S memory means and the outputs S1 and C1 of the first carry storage adder are added to output the sum S2 of each bit and the carry C2 of each bit, and the upper k + w + 1 bits of the output S2 are the S memory means. A second carry storage adder for transferring the upper k + w + 2 bits of the output C2 to the C memory means; A first adder for adding the least significant w bit values of the S memory means and the C memory means to pass to the m i generator; And a second adder for generating a carry value by adding an output S2 of the second carry storage adder and a least significant w bit value of C2, wherein the carry value generated by the second adder is delayed by one clock to It is input to the second carry storage adder as the least significant bit, and is input to the first adder as a carry input (where k = w · s and k, w, s are all two or more integers).
상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 모듈러 연산
본 발명은 각각 k비트인 수The present invention is a number of k bits each
에 대하여 몽고메리 알고리듬을 이용하여 A·B mod N을 효율적으로 구현하기 위한 것이다. 이때, A,B,N은 각각으로 나타낼 수 있는 큰 수이고, w비트인 워드 s개로 나타낼 수 있다(여기에서, k=s·w, r=2w). 몽고메리 알고리듬에 의하면 T = A·B·R-1mod N은 다음과 같이 표현될 수 있다(단, R=rs).For the purpose of efficiently implementing A · B mod N using the Montgomery algorithm. In this case, A, B, and N are respectively Can be represented by s words that are w bits (where k = s · w, r = 2 w ). According to the Montgomery algorithm, T = A · B · R −1 mod N can be expressed as follows (where R = r s ):
여기서 mi는 i번째 임시값의 최하위워드값인 ti에 의해서 결정되는데, 이것은 조합회로를 이용해서 구성할 수 있다. 즉,,을 만족하도록 조합회로를 구성한다(여기에서 N0는 N의 최하위워드이다). 이때, 워드의 크기가 커질수록 조합회로의 깊이가 깊어져 신호의 전파 지연시간이 길어지게 된다. 예를들어, 워드가 2비트로 구성되었을 때, mi는 다음의 표 1을 바탕으로 조합회로를 구성할 수 있다.Where m i is determined by t i , the lowest word value of the i th temporary value, which can be configured using a combination circuit. In other words, , Configure a combination circuit to satisfy (where N 0 is the lowest word of N). At this time, the larger the word size, the deeper the depth of the combination circuit, the longer the signal propagation delay time. For example, when a word is composed of two bits, m i can construct a combination circuit based on the following Table 1.
이하에서 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.
수학식 1에 의하여 T = A·B·R-1mod N을 계산하기 위한 회로를 도 1과 같이 구성할 수 있다.According to Equation 1, a circuit for calculating T = A · B · R −1 mod N may be configured as shown in FIG. 1.
A메모리수단(10), B메모리수단(12) 및 N메모리수단(14)은 각각 k비트의 레지스터 또는 유사한 형태의 메모리로 구현되며, A·B·2-kmod N을 계산하기 위한 A, B, N을 저장한다. A메모리수단(10)은 매 클럭마다 하위비트 측으로 한 워드 단위, 즉 w비트 단위로 이동시키는 쉬프트 레지스터이다(메모리인 경우에는 한 워드 단위로 값을 읽어들인다).The A memory means 10, the B memory means 12 and the N memory means 14 are each embodied as k-bit registers or a similar type of memory, each of which is used to calculate A, B, 2- k mod N, Store B and N. The A memory means 10 is a shift register for shifting by one word unit, i.e., w bit unit, on the lower bit side every clock (in the case of a memory, the value is read in units of one word).
B곱셈부(20)는 B메모리수단(12)로부터 B를 입력받아 0,…,(2w-1)·B·r을 계산하여 테이블 형태로 관리한다. 그리고, N곱셈기(22)는 N메모리수단(14)로부터 N을 입력받아 0,…,(2w-1)·N을 계산하여 테이블 형태로 관리한다.The B multiplication unit 20 receives B from the B memory means 12 and 0,... Calculate, (2 w -1) · B · r and manage it in table form. The N multiplier 22 receives N from the N memory means 14 and 0,... Calculate, (2 w -1) · N and manage it in table form.
S메모리수단(16)과 C메모리수단(18)은 각각 k+w+2비트의 레지스터 또는 유사한 형태의 메모리로 구현되며, 매 클럭마다의 계산 과정에서 생성된 최신의 임시값을 저장한다. 도 1의 aw-1…a0, Sw-1…S0, Cw-1…C0는 각각 A메모리수단(10), S메모리수단(18) 및 C메모리수단(16)의 최하위워드(Least Significant Word : 이하 LSW라 한다)를 표시한 것이다.The S memory means 16 and the C memory means 18 are each implemented with k + w + 2 bit registers or a similar type of memory, and store the latest temporary values generated in the calculation process every clock. A w-1 in FIG. a 0 , S w-1 ... S 0 , C w-1 ... C 0 indicates the least significant word (Least Significant Word: hereinafter referred to as LSW) of the A memory means 10, the S memory means 18, and the C memory means 16, respectively.
mi생성기(28)는 매 클럭마다 S메모리수단(16)과 C메모리수단(18)의 최하위워드값을 더한 값과 N0에 의해 mi를 생성하는 조합회로이다.The mi generator 28 is a combination circuit which generates m i by N 0 plus the lowest word value of the S memory means 16 and the C memory means 18 for each clock.
제1멀티플렉서(26)은 매 클럭마다 A메모리수단의 최하위워드값에 의해 B곱셈부(20)로부터 0,…,(2w-1)·B·r 중 하나의 값을 선택한다. 그리고, 제2멀티플렉서(28)는 mi생성기(24)의 출력값에 의해 N곱셈부(22)로부터 0,…,(2w-1)·N 중 하나의 값을 선택한다.The first multiplexer 26 receives 0,... From the B multiplier 20 by the lowest word value of the A memory means every clock. Select one of, (2 w -1) · B · r. Then, the second multiplexer 28 outputs 0,... From the N multiplier 22 by the output value of the m i generator 24. Select one of, (2 w -1) · N.
도 1의 제1캐리저장덧셈기(30) 및 제2캐리저장덧셈기(32)는 각각 세 개의 입력을 받아서 캐리와 그 합을 출력한다. 비트 크기가 큰 수의 덧셈의 경우에는 덧셈 시 발생하는 캐리의 전파 시간이 문제가 된다. 더구나, RSA의 멱승과 같은 응용에서 많은 곱셈은 덧셈의 연속이므로 고속의 덧셈기는 중요한 요소이다. 본 발명에서는 덧셈을 수행할 때 임의의 k비트의 수를 입력으로 하여 1개의 전가산기 만큼의 전파지연시간을 갖는 캐리저장 덧셈기를 채용하고 있다.The first carry storage adder 30 and the second carry storage adder 32 of FIG. 1 each receive three inputs and output a carry and the sum thereof. In the case of addition of a large number of bits, the carry propagation time of the addition becomes a problem. Moreover, in applications such as power of RSA, multiplication is a continuation of addition, so fast adders are an important factor. In the present invention, a carry storage adder having a propagation delay time of one full adder is adopted by inputting an arbitrary number of k bits when adding.
도 2에 의하면, 캐리저장 덧셈기는 다음 두 수식Ci+1=AiBi+BiCi+CiAi에 의해 구성할 수 있는데, 이는 입력 비트 수 만큼의 전가산기(Full Adder)를 사용하여 구현할 수 있다. 본 발명은 이 캐리저장 덧셈기를 사용함으로써 크리티컬 패스(critical path)의 전파지연(propagation delay)을 현저히 줄여서 프로세서의 클럭 속도를 높이고, 입력을 새로 표현해야 하는 번거로움이 없앴다.According to Figure 2, the carry save adder is the following two equations It can be configured by C i + 1 = A i B i + B i C i + C i A i , which can be implemented using a full adder as many as the number of input bits. The present invention significantly reduces the propagation delay of the critical path, thereby increasing the clock speed of the processor and eliminating the need for a new representation of the input.
다시, 도 3에 의하면 제2캐리저장 덧셈기(32)의 C2출력은 k+2w+2비트이고, S2출력은 k+2w+1비트인데, 이들 출력 S2와 C2의 LSW의 합은 항상 0이다. 그리고, 이 값은 중간에 필요하지 않은 값이므로, 임시값을 저장하는 S메모리수단(18) 및 C메모리수단(16)의 입력단에는 각각 제2캐리저장 덧셈기(32) 출력 S2와 C2의 LSW를 제외한 k+w+1 및 k+w+2비트가 각각 입력된다.Again, according to FIG. 3, the C2 output of the second carry storage adder 32 is k + 2w + 2 bits, and the S2 output is k + 2w + 1 bits, and the sum of the LSWs of these outputs S2 and C2 is always zero. . Since this value is not necessary in the middle, LSWs of the second carry storage adder 32 outputs S2 and C2 are respectively provided at the input terminals of the S memory means 18 and the C memory means 16 which store the temporary value. The excluded k + w + 1 and k + w + 2 bits are input respectively.
제1가산기(34)는 S메모리수단(16)과 C메모리수단(18)의 최하위워드값을 더하여 mi생성기(24)에 전달한다. 제2가산기(36)는 제2캐리저장 덧셈기(32) 출력 S2와 C2의 LSW를 더하여 그 캐리값을 출력한다. 이 캐리값은 D플립플롭(38)에 의해 1클럭 지연되어 S1의 최하위비트로서 제2캐리저장 덧셈기(32)에 입력되고, 캐리값 C1_0로서 제1가산기(34)에 입력된다.The first adder 34 adds the lowest word values of the S memory means 16 and the C memory means 18 and transfers them to the m i generator 24. The second adder 36 adds the LSW of the second carry storage adder 32 output S2 and C2 to output the carry value. The carry value is input to the D flip-flop 38, the first adder 34 is 1 clock delay as the least significant bits of S1 being input to the second carry save adder 32, a carry value by the C1_ 0.
이하에서 본 발명의 동작과정을 도 1을 이용하여 설명한다.Hereinafter, an operation process of the present invention will be described with reference to FIG. 1.
본 발명에서 중요한 점은 각각 k비트인 A, B, N을 입력으로 받아서 s+1 클럭만에 (A·B·2-kmod N)을 계산하는데 있다. (A·B·2-kmod N)을 계산하는 과정을 설명하면 다음과 같다.An important point in the present invention is to calculate (A · B · 2 −k mod N) only at s + 1 clocks by receiving A, B, and N, which are k bits, respectively. The process of calculating (A · B · 2 −k mod N) is as follows.
a) 먼저 초기화 단계로서 k비트인 A,B,N을 각각의 레지스터 혹은 메모리에 저장한다. 임시값을 저장하는 S메모리수단(18)과 C메모리수단(16)은 0으로 초기화시킨다.a) First, k bits A, B, and N are stored in each register or memory as an initialization step. The S memory means 18 and the C memory means 16 which store temporary values are initialized to zero.
b) 이전 클럭에서 계산된 제2캐리저장덧셈기(32)의 출력인 S2, C2의 하위 w비트를 더할 때 생성되는 캐리 C1_0을 입력 캐리로 하여 S메모리수단(18)과 C메모리수단(16)의 하위 w비트를 더한 결과에 의해서 mi를 결정한다.b) S memory means 18 and C memory means 16, with the carry C1_ 0 generated as adding the lower w bits of S2 and C2, the output of the second carry storage adder 32 calculated at the previous clock, as the input carry. M i is determined by adding the low order w bits of the
c) 각각의 레지스터 또는 메모리에 모든 데이터들이 입력되었을 때, 제1멀티플렉서(26)는 aw-1…a0값에 따라서 0, B·r,…, (2w-1)B·r 중 하나, 제2멀티플렉서(28)는 mi값에 따라서 0, N,…,(2w-1)N 중 한 값을 선택한다.c) When all data is input to each register or memory, the first multiplexer 26 performs a w-1 ... a 0 , B · r,... , One of (2 w −1) B · r, the second multiplexer 28 is 0, N,... According to the value of m i . Select one of, (2 w -1) N.
d) 제1캐리저장 덧셈기(30)는 C메모리수단(16), 제1멀티플렉서(26) 및 제2멀티플렉서(28)의 출력값들을 더하여 출력 S1, C1을 제2캐리저장 덧셈기(32)의 입력으로 한다.d) The first carry storage adder 30 adds the output values of the C memory means 16, the first multiplexer 26 and the second multiplexer 28 to input the outputs S1 and C1 to the second carry storage adder 32. It is done.
e) 제2캐리저장 덧셈기(32)는 S메모리수단(18)의 출력과 제1캐리저장 덧셈기(30)의 출력 S1, C1을 입력으로 하여 S2, C2를 출력으로 한다. 이때, S1의 최하위비트는 S2, C2의 하위 w비트를 더한 캐리로 구성한다.e) The second carry storage adder 32 receives the outputs of the S memory means 18 and the outputs S1 and C1 of the first carry storage adder 30 as outputs. At this time, the least significant bit of S1 consists of a carry plus the lower w bits of S2 and C2.
f) S2, C2의 하위 w비트를 제외한 값을 각각 S메모리수단(18)과 C메모리수단(16)에 저장한다.f) The values excluding the lower w bits of S2 and C2 are stored in the S memory means 18 and the C memory means 16, respectively.
g) s+1 클럭 동안에 A메모리수단(10)의 저장된 값을 하위비트 측으로 한 워드만큼 쉬프트하면서 b) 단계 내지 f) 단계를 반복 수행한다.g) Steps b) to f) are repeated while shifting the stored value of the A memory means 10 by one word to the lower bit side during the s + 1 clock.
h) S메모리수단(18)과 C메모리수단(16)에 남아 있는 값들을 더한 값 T가 N보다 크면, T에서 N을 뺀 값을 T값으로 한다.h) If the value T obtained by adding the values remaining in the S memory means 18 and the C memory means 16 is larger than N, the value obtained by subtracting N from T is regarded as T value.
본 발명에서는 레지스터 등의 메모리수단을 제외한 모든 소자는 단순한 조합회로로 구현되므로 회로의 잘못된 동작을 방지하기 위하여 연결된 조합회로의 전파지연시간을 충분히 보장하는 정도의 클럭을 제공하여야 한다.In the present invention, all the elements except the memory means such as registers are implemented in a simple combination circuit, so in order to prevent the wrong operation of the circuit, it is necessary to provide a clock sufficient to ensure the propagation delay time of the connected combination circuit.
본 발명에 의한 모듈러 연산장치를 이용하여 모듈러 곱셈 A·B mod N을 계산하는 과정은 다음과 같다.The process of calculating the modular multiplication A · B mod N using the modular operation device according to the present invention is as follows.
(1) 먼저, 미리 P = 22kmod N을 계산해 둔다.(1) First, calculate P = 2 2k mod N in advance.
(2) 다음, 도 1에 도시된 회로를 이용하여 C = A·B·2-kmod N을 계산한다.(2) Next, C = A.B.2 -k mod N is calculated using the circuit shown in FIG.
(3) 마지막으로, P·C·2-kmod N = A·B mod N을 계산한다.(3) Finally, P · C · 2 −k mod N = A · B mod N is calculated.
본 발명에 의하면, 몽고메리 알고리듬을 특징을 이용하여 공개키 암호/복호 및 디지털 서명에 이용되는 모듈러 멱승 및 모듈러 곱셈 연산을 적은 클럭수 내에 효율적으로 수행할 수 있고, 그 구성이 간단하여 경제적으로 구현할 수 있다.According to the present invention, the Montgomery algorithm can be used to efficiently perform modular power and modular multiplication operations for public key cryptography / decryption and digital signatures within a small number of clocks. have.
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980027865A KR100322740B1 (en) | 1998-07-10 | 1998-07-10 | Modular computing apparatus and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980027865A KR100322740B1 (en) | 1998-07-10 | 1998-07-10 | Modular computing apparatus and method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000008153A true KR20000008153A (en) | 2000-02-07 |
KR100322740B1 KR100322740B1 (en) | 2002-03-08 |
Family
ID=19543738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980027865A KR100322740B1 (en) | 1998-07-10 | 1998-07-10 | Modular computing apparatus and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100322740B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100413947B1 (en) * | 2001-07-07 | 2004-01-07 | 주홍정보통신주식회사 | RSA cipher device using modular exponentiation algorithm |
KR100449491B1 (en) * | 2001-12-11 | 2004-09-21 | 한국전자통신연구원 | Modular multiply apparatus |
KR100617384B1 (en) * | 2004-09-24 | 2006-08-31 | 광주과학기술원 | Montgomery Multiplier for RSA Security Module |
KR100682354B1 (en) * | 2004-01-26 | 2007-02-15 | 후지쯔 가부시끼가이샤 | Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit |
-
1998
- 1998-07-10 KR KR1019980027865A patent/KR100322740B1/en not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100413947B1 (en) * | 2001-07-07 | 2004-01-07 | 주홍정보통신주식회사 | RSA cipher device using modular exponentiation algorithm |
KR100449491B1 (en) * | 2001-12-11 | 2004-09-21 | 한국전자통신연구원 | Modular multiply apparatus |
KR100682354B1 (en) * | 2004-01-26 | 2007-02-15 | 후지쯔 가부시끼가이샤 | Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit |
KR100617384B1 (en) * | 2004-09-24 | 2006-08-31 | 광주과학기술원 | Montgomery Multiplier for RSA Security Module |
Also Published As
Publication number | Publication date |
---|---|
KR100322740B1 (en) | 2002-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8504602B2 (en) | Modular multiplication processing apparatus | |
US5742530A (en) | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers | |
US5101431A (en) | Systolic array for modular multiplication | |
JP4554239B2 (en) | Montgomery type modular multiplication apparatus and method | |
Chen et al. | A systolic RSA public key cryptosystem | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
US20080114820A1 (en) | Apparatus and method for high-speed modulo multiplication and division | |
KR100508092B1 (en) | Modular multiplication circuit with low power | |
KR100457177B1 (en) | Serial-Parallel Multiplier to Multiply Two Elements in the Finite Field | |
Sakiyama et al. | Reconfigurable modular arithmetic logic unit for high-performance public-key cryptosystems | |
KR100322740B1 (en) | Modular computing apparatus and method thereof | |
Jung et al. | A reconfigurable coprocessor for finite field multiplication in GF (2n) | |
KR100486697B1 (en) | Modular arithmetic apparatus and method thereof | |
KR100304693B1 (en) | Modular arithmetic apparatus and IC card having the function for modular arithmetic | |
Kong | Optimizing the improved Barrett modular multipliers for public-key cryptography | |
KR100480997B1 (en) | APPARATUS OF FIELD MULTIPLICATION OVER GF(p) AND GF(2^m) | |
WO2023043467A1 (en) | A method and architecture for performing modular addition and multiplication sequences | |
KR100946256B1 (en) | Scalable Dual-Field Montgomery Multiplier On Dual Field Using Multi-Precision Carry Save Adder | |
US7403965B2 (en) | Encryption/decryption system for calculating effective lower bits of a parameter for Montgomery modular multiplication | |
Laracy | An RSA Co-processor Architecture Suitable for a User-Parameterized FPGA Implementation | |
Schinianakis et al. | RNS-Based Public-Key Cryptography (RSA and ECC) | |
Poomagal et al. | Modular multiplication algorithm in cryptographic processor: A review and future directions | |
KR20000009759A (en) | Modular multiplier | |
KR100200906B1 (en) | Prime generation method for efficient discrete log cryptosystems | |
KR100400210B1 (en) | Modular multiplication device for digital signature |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20090112 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |