KR100256776B1 - Montgomery modular multiflying apparatus and method - Google Patents
Montgomery modular multiflying apparatus and method Download PDFInfo
- Publication number
- KR100256776B1 KR100256776B1 KR1019970027606A KR19970027606A KR100256776B1 KR 100256776 B1 KR100256776 B1 KR 100256776B1 KR 1019970027606 A KR1019970027606 A KR 1019970027606A KR 19970027606 A KR19970027606 A KR 19970027606A KR 100256776 B1 KR100256776 B1 KR 100256776B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- processor
- carry
- result
- input
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/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/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/723—Modular exponentiation
-
- 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/727—Modulo N arithmetic, with N being either (2**n)-1,2**n or (2**n)+1, e.g. mod 3, mod 4 or mod 5
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
Description
본 발명은 암호와 및 복호화를 수행하는 시스템과 같이 정보의 보호를 요구하는 시스템을 위한 모듈러 승산에 관한 것으로서, 특히 모듈러 승산의 일종인 몽고메리 모듈러 승산 장치에 관한 것이다.The present invention relates to modular multiplication for systems that require protection of information, such as systems that perform encryption and decryption, and more particularly, to a Montgomery modular multiplication apparatus, which is a type of modular multiplication.
모듈러 승산은 암호화 및 복호화 시스템에서 주로 사용된다. 특히 많은 데이타를 암호화 및 복호화하기 위해서 다른 모듈러 승산 방법보다 속도가 매우 빠른 몽고메리(montgomery) 모듈러 승산 방법이 사용된다.Modular multiplication is mainly used in encryption and decryption systems. In particular, the Montgomery modular multiplication method, which is much faster than other modular multiplication methods, is used to encrypt and decrypt a lot of data.
한편, 전술한 모듈러 승산 방법 또는 몽고메리 모듈러 승산 방법은 소프트웨어 및 하드웨어적으로 수행될 수 있으며, 소프트웨어적으로 몽고메리 모듈러 승산을 수행할 경우, 하드웨어적으로 수행하는 것보다 훨씬 시간이 많이 소요되기 때문에 빠른 연산 속도를 요구하는 시스템에서는 하드웨어적으로 몽고메리 모듈러 승산을 수행한다.Meanwhile, the above-described modular multiplication method or Montgomery modular multiplication method may be performed in software and hardware. When performing the Montgomery modular multiplication in software, it takes much longer than performing in hardware. In systems that require speed, Montgomery's modular multiplication is done in hardware.
그러나, 종래의 몽고메리 모듈러 승산을 하드웨어적으로 수행하는 장치는 순차적인 방법에 의해 몽고메리 모듈러 승산을 수행하였기 때문에 처리 속도 면에서 뒤떨어지고, 이를 위해서 여러개의 프로세서들이 필요하였으므로 몽고메리 모듈러 승산 장치의 원가가 비싼 문제점이 있었다.However, the conventional Montgomery modular multiplication apparatus is inferior in terms of processing speed because the Montgomery modular multiplication is performed by a sequential method, and the cost of the Montgomery modular multiplication apparatus is expensive because several processors are required for this purpose. There was a problem.
본 발명이 이루고자 하는 기술적 과제는, 몽고메리 모듈러 승산의 병렬성을 이용하여 최적의 시간내에 몽고메리 모듈러 승산을 병렬로 수행할 수 있는 몽고메리 모듈러 승산 장치를 제공하는 데 있다.An object of the present invention is to provide a Montgomery modular multiplication apparatus capable of performing the Montgomery modular multiplication in parallel in an optimal time using the parallelism of Montgomery modular multiplication.
제1도는 본 발명에 의한 몽고메리 모듈러 승산 장치의 블럭도이다.1 is a block diagram of the Montgomery modular multiplication apparatus according to the present invention.
제2도는 제1도에 도시된 각 프로세서의 본 발명에 의한 블럭도이다.2 is a block diagram according to the present invention of each processor shown in FIG.
제3도는 제1도에 도시된 장치의 몽고메리 모듈러 승산 동작을 설명하기 위한 플로우차트이다.FIG. 3 is a flowchart for explaining the Montgomery modular multiplication operation of the apparatus shown in FIG.
상기 과제를 이루기 위해, n+1개의 비트열로 구성되는 제1 데이타(Ai, 여기서 i는 비트 자리수)와 m+2개의 비트열로 구성되는 제2 데이타(Bi)를 몽고메리 모듈러 Ni(여기서, N은 m+2개의 비트열로 구성되는 제3 데이타임) 승산하는 본 발명에 의한 몽고메리 모듈러 승산 장치는, 제1~제n+1 프로세서들로 구성되고, 제p+1(여기서, 1≤ p(정수) ≤ n+1) 프로세서는 제p 프로세서로부터 입력한 제어 신호에 응답하여, 제p 프로세서로부터 입력한 상기 Ai, Bi, Ni 및 이전 결과값(Ti)을 이용하여 임시 변수(M) 및 제1 캐리(C=C1C0)를 다음 식에 따라 계산하고 상기 Ai를 A로서 저장하며 상기 M 및 상기 C를 저장하거나, 저장한 상기 A, M 및 C와 상기 제p 프로세서로부터 입력한 상기 Ai,Bi, Ni 및 상기 이전 결과값을 이용하여 제2 캐리(C'=C1'C0') 및 현재 결과값(Ti')를 다음 식에 따라 계산하며, 이전 결과값(Ti) 또는 현재 결과값(Ti')과 입력한 Ai를 제p+2 프로세서로 출력하고 상기 제어 신호, Bi 및 Ni들을 소정 시간 지연후에 상기 제p+2 프로세서로 출력하고, 상기 제1 프로세서로 입력되는 상기 이전 결과값(T)과 상기 제어 신호의 최하위 비트를 제외한 비트들은 모든 비트들은 "저" 논리 레벨이고, 상기 제1 프로세서는 상기 제어 신호를 외부로부터 입력하고, 상기 제n+1 프로세서로부터 출력되며 n+m+1 비트열로 구성되는 상기 현재 결과값들은 상기 제1 데이타와 상기 제2 데이타를 몽고메리 모듈러 N 승산한 결과인 것이 바람직하다.In order to achieve the above object, the Montgomery modular Ni (here, The Montgomery modular multiplication apparatus according to the present invention, in which N is the third data consisting of m + 2 bit strings, is composed of first to n + 1 processors, and p + 1 (where 1 ≦ 1). p (integer) ≤ n + 1) The processor uses the Ai, Bi, Ni, and the previous result value Ti input from the p processor in response to a control signal input from the p processor. And calculating a first carry (C = C 1 C 0 ) according to the following equation and storing Ai as A and storing the M and C, or input from the stored A, M and C and the p processor Using the Ai, Bi, Ni and the previous result value, the second carry (C '= C1'C0') and the current result value Ti 'are calculated according to the following equation. Outputting the previous result value Ti or the current result value Ti 'and the input Ai to the p + 2 processor and outputting the control signals Bi and Ni to the p + 2 processor after a predetermined time delay; The bits except for the previous result T and the least significant bit of the control signal are input to the first processor, all bits are at a "low" logic level, and the first processor inputs the control signal from the outside, and Preferably, the current result values output from the n + 1 processor and composed of n + m + 1 bit strings are a result of Montgomery modular N multiplication of the first data and the second data.
M=(Ti + Ai × Bi) MOD rM = (Ti + Ai × Bi) MOD r
(여기서, r은 소정수이다.)(Where r is a predetermined number)
C = Ti + Ai × Bi + M × NiC = Ti + Ai × Bi + M × Ni
(여기서, C0은 C DIV r MOD r이고, C1은 C DIV r DIV r이다.)Where C 0 is C DIV r MOD r and C 1 is C DIV r DIV r.
C'= Ti + A × Bi + M × Ni + C0+ C1× rC '= Ti + A × Bi + M × Ni + C 0 + C 1 × r
(여기서, C0'는 C' DIV r MOD r이고, C1'는 C' DIV r DIV r이다.)(Wherein C 0 'is C' DIV r MOD r and C 1 'is C' DIV r DIV r)
Ti' = (Ti + A × Bi + M × Ni + C0') MOD rTi '= (Ti + A × Bi + M × Ni + C 0 ') MOD r
여기서, 제p+1 프로세서는 상기 r, 상기 제p 프로세서로부터 상기 제1 및 상기 제2 데이타들과 상기 이전 결과값을 입력하여 상기 임시 변수를 계산하는 임시 변수 계산 수단과, 선택신호에 응답하여, 상기 임시 변수, 상기 제1 캐리 및 상기 A로서 제1 데이타를 저장 또는 독출하는 저장 수단과, 상기 r 및 상기 저장 수단에 저장된 상기 제1 캐리를 이용하여 제3 캐리(C")를 다음 식에 따라 계산하는 제1 캐리 계산 수단과,Herein, the p + 1 processor comprises temporary variable calculating means for calculating the temporary variable by inputting the first and second data and the previous result value from the r, the p processor, and in response to a selection signal. Storage means for storing or reading first data as the temporary variable, the first carry and the A, and a third carry C ″ using the first carry stored in the r and the storage means. First carry calculation means for calculating according to an expression,
C" = C0+ C1× rC "= C 0 + C 1 × r
상기 "저" 논리 레벨 및 상기 제3 캐리를 상기 선택 신호에 응답하여 선택적으로 출력하는 제1 선택 수단과, 상기 선택 신호에 응답하여, 상기 임시 변수, 상기 제1, 제2 및 제3 데이타들, 상기 이전 결과값 및 상기 제1 선택 수단의 출력을 이용하여 상기 제1 캐리를 계산하여 상기 저장수단으로 출력하거나, 저장된 상기 임시 변수와 상기 A 및 상기 제1 캐리, 상기 제2 및 제3 데이타들, 상기 이전 결과 값 및 상기 r을 이용하여 상기 제2 캐리를 계산하는 제2 캐리 계산 수단과, 상기 r, 상기 저장 수단에 저장된 상기 A 및 상기 임시 변수와, 상기 제p 프로세서로부터 출력되는 상기 이전 결과값과 상기 제2 및 상기 제3 데이타들, 상기 제2 캐리계산 수단으로부터 출력되는 상기 제2 캐리를 이용하여 상기 현재 결과값을 계산하는 결과값 계산 수단과, 상기 결과값 계산 수단으로부터 입력한 상기 현재 결과값 또는 상기 제p 프로세서로부터 입력한 상기 이전 결과값을 상기 선택 신호에 응답하여 선택적으로 출력하는 제2 선택 수단과, 입력한 상기 제어신호, 상기 제2 및 상기 제3 데이타를 버퍼링하여 상기 제p+2 프로세서로 출력하는 버퍼 및 상기 제어신호와 상기 "저" 논리 레벨을 비교하고, 비교된 결과에 응답하여 상기 선택 신호를 출력하는 비교 수단으로 구성되는 것이 바람직하다.First selection means for selectively outputting the "low" logic level and the third carry in response to the selection signal, and the temporary variable, the first, second and third data in response to the selection signal; Calculating the first carry using the previous result and the output of the first selecting means and outputting the first carry to the storing means, or storing the temporary variable and the A and the first carry, the second and third data. Second carry calculation means for calculating the second carry using the previous result value and the r, the r, the A and the temporary variables stored in the storage means, and the output from the p processor. Result value calculating means for calculating the current result value using a previous result value, the second and third data, and the second carry output from the second carry calculation means, and the result value system Second selection means for selectively outputting the current result value input from the calculation means or the previous result value input from the p processor in response to the selection signal, the control signal input, the second and the first input signal; And a buffer for buffering 3 data and outputting the control signal to the "low" logic level and outputting the selection signal in response to the result of the comparison. .
이하, 본 발명에 의한 몽고메리 모듈러 승산 장치의 구성 및 동작을 첨부한 도면을 참조하여 다음과 같이 설명한다.Hereinafter, with reference to the accompanying drawings, the configuration and operation of the Montgomery modular multiplication apparatus according to the present invention will be described.
제1도는 본 발명에 의한 몽고메리 모듈러 승산 장치의 블럭도로서, 제1, 제2, ..., 제p, ... 및 제n+1 프로세서들(10, 12, ..., 14, ... 및 16)로 구성된다.1 is a block diagram of a Montgomery modular multiplication apparatus according to the present invention, wherein the first, second, ..., p, ... and n + 1
제1도에 도시된 제1 프로세서(10)는 제1 데이타(Ai), 제2 데이타(Bi), 제3 데이타(Ni), 결과 데이타(Ti) 및 제어 데이타(CTi)를 입력하여 임시 변수(M) 및 제1 캐리(C=C1C0)를 계산한 후 A로서 제1 데이타(Ai)와 계산한 M 및 C를 저장하거나, 제2 캐리(C'=C1'C0') 및 현재 결과값(Ti')를 계산하며, 이전 결과값(Ti) 또는 현재 결과값(Ti')과 외부로부터 입력한 제1 데이타(Ai)를 제2 프로세서(12)로 출력하고 제어 데이타(CTi), 제2 및 제3 데이타들(Bi 및 Ni)들을 소정 시간 지연후에 제2 프로세서(12)로 출력한다. 이 때, 제어 데이타(CTi, 여기서 i는 비트 자리수)는 n+m+1개의 비트열 즉, CT0CT1CT2... CTn+mCTn+m+1로 구성되며, 최하위 비트(CT0)부터 최상위 비트(CTn+m+1) 순으로 제1 프로세서(10)로 입력된다. 본 발명의 바람직한 일실시예에서 제어 데이타는 1 0 0 ... 0 0 순으로 제1 프로세서(10)로 입력된다. 또한, 제1 프로세서(10)로 입력되는 결과 데이타(Ti)는 n+m+1 비트열 즉, T0T1T2… Tn+mTn+m+1로 구성되며, 최하위 비트(T0)부터 최상위 비트(Tn+m+1) 순으로 제1 프로세서(10)로 입력된다. 본 발명의 바람직한 일실시예에서 결과 데이타는 0 0 0 … 0 0 순으로 제1 프로세서(10)로 입력된다.The
제2 프로세서(12)는 외부로부터 제1 프로세서(10)로 입력되는 제1, 제2 및 제3 데이타들(Ai, Bi 및 Ni) 및 제어 데이타(CTi)들을 제1 프로세서(10)를 통해 입력하는 한편, 제1 프로세서(10)에서 계산된 현재 결과 데이타(CTi)를 결과 데이타로서 입력하여 제1 프로세서(10)와 동일한 동작을 수행한다. 제p 프로세서(14)는 제p-1 프로세서로부터 출력되는 제1, 2 및 제3 데이타들(Ai, Bi 및 Ni) 및 제어 데이타(CTi)들과, 제p-1 프로세서에서 계산된 현재 결과 데이타를 결과 데이타(Ti)로서 입력하여 제2 프로세서(12)와 동일한 동작을 수행한다.The
제n+1 프로세서(16)는 제n 프로세서로부터 입력한 제1, 2 및 제3 데이타 및 제어 데이타들과 결과 데이타를 이용하여 제1 프로세서(10)와 동일한 동작을 수행하며, 그 결과 계산된 현재 결과 데이타를 출력단자 OUT를 통해 출력한다. 이 때, 출력단자 OUT를 통해 출력된 결과 데이타들 즉, T0T1T2... TnTn+1은 n+1 비트열로 구성되는 제1 데이타와 m+2 비트열로 구성되는 제2 데이타의 몽고메리 모듈러 N 승산 결과이다.The n +
이하, 제1도에 도시된 각 프로세서의 세부적인 동작을 다음과 같이 설명한다. 제2도는 제1도에 도시된 각 프로세서의 본 발명에 의한 블럭도로서, 임시 변수 계산부(40), 제1 및 제2 캐리 계산부들(42 및 46), 제1 선택부(44), 저장부(50), 비교부(48), 결과값 계산부(52), 제2 선택부(54) 및 버퍼(56)로 구성된다.Hereinafter, the detailed operation of each processor shown in FIG. 1 will be described as follows. FIG. 2 is a block diagram according to the present invention of each processor shown in FIG. 1, wherein the
제2도에 도시된 임시 변수 계산부(40)는 소정값(r)과 이전 프로세서로부터 제1, 제2 및 제3 데이타들(Ai, Bi 및 Ni), 결과 데이타(Ti) 및 제어 데이타(CTi)들을 입력하여 다음 수학식 1과 같이 임시 변수(M)를 계산하고, 임시변수를 제2 캐리 계산부(46)로 출력한다.The
여기서, X는 (r-No)' MOD r로서, No는 제3 데이타의 최하위 비트를 나타낸다.Where X is (r-No) 'MOD r, where No represents the least significant bit of the third data.
임시 변수 계산부(40)는 r이 이진수일 때는 X를 이용하지 않고 M을 구하고, r이 16진수, 8진수등과 같이 2진수를 제외한 일반적인 진수일 때는 X를 이용하여 M을 구한다.The temporary
한편, 비교부(48)는 이전 프로세서로부터 입력한 제어 데이타(CTi)와 "저" 논리 레벨의 데이타를 비교하고, 비교된 결과에 응답하여 선택 신호(SC)를 저장부(50), 제1 및 제2 선택부들(44 및 54), 제2 캐리 계산부(46)로 각각 출력한다. 예를 들면, 비교부(48)는 제어 데이타(CTi)가 "저" 논리 레벨이면 "저" 논리 레벨의 선택 신호(SC)를 출력하고, 제어 데이타(CTi)가 "고" 논리 레벨이면 "고" 논리 레벨의 선택 신호(SC)를 출력한다.On the other hand, the
제1 캐리 계산부(42)는 소정값(r) 및 저장부(50)에 저장된 제1 캐리(C=C1C0)를 이용하여 제3 캐리(C")를 다음 수학식 2와 같이 계산하고, 계산된 제3 캐리(C")를 제1 선택부(44)로 출력한다.The first
제1 선택부(44)는 제1 캐리 계산부(42)로부터 출력되는 제3 캐리(C") 및 "저" 논리 레벨의 데이타들 중 하나를 선택 신호(SC)에 응답하여 제2 캐리 계산부(46)로 선택적으로 출력한다. 즉, "고" 레벨의 선택 신호(SC)가 입력되면 "저" 논리 레벨의 데이타를 선택하여 제2 캐리 계산부(46)로 출력하고, "저" 레벨의 선택신호(SC)가 입력되면 제1 캐리 계산부(42)로부터 입력한 제3 캐리(C")를 선택하여 제2 캐리 계산부(46)로 출력한다.The
제2 캐리 계산부(46)는 선택 신호(SC)에 응답하여, 임시 변수, 제1, 제2 및 제3 데이타들, 이전 결과값 및 제1 선택부(44)의 출력을 이용한 제1 캐리(C)를 계산하여 저장부(50)로 출력하거나, 제2 및 제3 데이타들(Bi 및 Ni), 결과 데이타(Ti), 소정값(r) 및 저장부(50)에 저장된 임시 변수(M), A 및 제1 캐리(C)를 이용한 제2 캐리(C')를 계산하는 역할을 수행한다. 즉, 제2 캐리 계산부(46)는 "고" 레벨의 선택 신호(SC)가 입력되면 다음 수학식 3과 같이 결과 데이타(Ti), 제1, 제2 및 제3 데이타들(Ai, Bi 및 Ni) 및 임시 변수 계산부(40)로부터 출력되는 임시 변수(M)를 이용하여 제1 캐리(C)를 계산하고, 계산된 제1 캐리(C)를 저장부(50)로 출력한다.In response to the selection signal SC, the second
여기서, C0은 C DIV r MOD r이고, C1은 D DIV r이다.Wherein C 0 is C DIV r MOD r and C 1 is D DIV r.
즉, C0는 제1 캐리(C)를 r로 나눈 몫을 다시 r로 나눈 나머지이고, C1은 제1 캐리(C)를 r로 나눈 몫을 다시 r로 나눈 몫이다.That is, C 0 is the remainder obtained by dividing the first carry C divided by r again by r, and C 1 is the share obtained by dividing the first carry C divided by r again by r.
그러나, 제2 캐리 계산부(46)는 "저" 레벨의 선택 신호가 입력되면, 다음 수학식 4와 같이, 결과 데이타(Ti), 제1 데이타(A), 임시 변수(M), 제2 및 제3 데이타들(Bi 및 Ni), 소정값(r) 및 저장부(50)에 저장된 제1 캐리(C)를 이용하여 제2 캐리(C')를 계산하고, 계산된 제2 캐리(C')를 결과값 계산부(52)로 출력한다.However, when the selection signal of the "low" level is input, the second
여기서, C0'는 C' DIV r MOD r이고, C1'는 C' DIV r DIV r이다.Here, C 0 ′ is C ′ DIV r MOD r and C 1 ′ is C ′ DIV r DIV r.
한편, 저장부(50)는 비교부(48)로부터 출력되는 선택신호(SC)에 응답하여, 임시 변수 계산부(40)로부터 출력되는 임시 변수(M), 제1 데이타(Ai) 및 제2 캐리 계산부(46)로부터 출력되는 제1 캐리(C)를 저장 또는 독출한다. 여기서, 제1 데이타(Ai)는 a로서 저장한다. 즉, "고" 레벨의 선택 신호(SC)가 입력되면 M, Ai 및 C를 저장하고, "저" 레벨의 선택 신호(SC)가 입력되면 저장한 M, Ai 및 C를 해당 블럭으로 독출한다.On the other hand, the
제2도에 도시된 결과값 계산부(52)는 소정값(r), 저장부(50)에 저장된 A 및 임시 변수(M)와, 이전 프로세서로부터 출력되는 결과 데이타(Ti)와 제2 및 제3 데이타들(Bi 및 Ni), 제2 캐리 계산부(46)로부터 출력되는 제2 캐리(C'=C1'C0)를 이용하여 다음 수학식 5와 같이 현재 결과 데이타(Ti)를 계산하고, 계산된 현재 결과 데이타를 제2 선택부(54)로 출력한다.The
제2 선택부(54)는 결과값 계산부(52)에서 계산된 현재 결과 데이타(Ti') 및 이전 프로세서로부터 입력한 결과 데이타(Ti)들중 하나를 선택 신호(SC)에 응답하여 출력단자 OUT1을 통해 다음 프로세서의 결과 데이타로서 선택적으로 출력한다. 즉, "고" 레벨의 선택 신호(SC)가 입력되면 이전 프로세서로부터 입력한 결과 데이타(Ti)를 다음 프로세서의 결과 데이타로서 출력단자 OUT1을 통해 출력하고, "저" 레벨의 선택 신호(SC)가 입력되면 결과값 계산부(52)에서 계산된 현재 결과 데이타를 다음 프로세서의 결과 데이타로서 출력단자 OUT1을 통해 출력한다.The
한편, 버퍼(56)는 이전 프로세서로부터 입력한 제어 데이타(CTi), 제2 및 제3 데이타들(Bi 및 Ni)를 버퍼링하고, 버퍼링된 제어 데이타, 제2 및 제3 데이타들을 다음 프로세서로 출력한다. 즉, 이전 프로세서로부터 입력한 제어 데이타, 제2 및 제3 데이타들을 소정 시간 지연 후에 출력하는 역할을 수행한다.Meanwhile, the
제3도는 제1도에 도시된 장치의 몽고메리 모듈러 승산 동작을 설명하기 위한 플로우차트로서, 제어 데이타에 따라 프로세서가 프로세싱하는 단계(제80~98단계) 및 몽고메리 모듈러 승산 결과를 결정하는 단계(제100 및 102단계)로 이루어진다.FIG. 3 is a flowchart for explaining the Montgomery modular multiplication operation of the apparatus shown in FIG. 1, in which the processor processes (
먼저, 이전 프로세서 또는 외부로부터 입력한 제어 데이타가 '1'인가를 판단한다(제80단계). 만일, 제어 데이타가 '1'이면, 이전 프로세서 또는 외부로부터 Ai, Bi, Ni 및 Ti를 가져온다(제82단계). 제82단계후에, 제1 및 제2 데이타들(Ai 및 Bi)과 결과 데이타(Ti)들을 이용하여 수학식 1과 같이 임시 변수를 계산한다(제84단계).First, it is determined whether the control data input from the previous processor or the external device is '1' (step 80). If the control data is '1', Ai, Bi, Ni and Ti are retrieved from the previous processor or the outside (step 82). After
제84단계후에, 임시 변수(M)와 제1, 제2 및 제3 데이타들(Ai, Bi 및 Ni)과 결과 데이타(Ti)를 이용하여 제1 캐리(C=C1C0)를 수학식 3과 같이 구한다 (제86단계). 제86단계후에, 계산된 임시 변수(M), 제1 캐리(C) 및 A로서 제1 데이타(Ai)를 저장한다(제88단계). 이는 제어 데이타가 "0"인 경우 제2 캐리(C')를 구할 때 사용하기 위해서이다.After
제88단계후에, 이전 프로세서로부터 입력한 제1 데이타(Ai) 및 결과 데이타(Ti)들을 다음 프로세서로 보내고, 제2 및 제3 데이타들(Bi 및 Ni)과 제어 데이타(CTi)를 소정 시간 지연후에 다음 프로세서로 보낸다(제90단계).After
그러나, 만일 제어 데이타가 '1'이 아니고 '0'이면, 제2도에 도시된 각 프로세서는, 제1, 제2 및 제3 데이타들(Ai, Bi 및 Ni)과 결과 데이타(Ti)를 이전 프로세서 또는 외부로부터 가져오고, 저장한 A, M 및 C를 독출한다(제92단계). 제92단계 후에, 제2 및 제3 데이타들(Bi 및 Ni)과 저장한 A, M 및 C 및 결과 데이타(Ti)를 이용하여 제2 캐리(C'=C1'C0)를 수학식 4와 같이 구한다(제94단계).However, if the control data is not '1' and '0', each processor shown in FIG. 2 is configured to collect the first, second and third data Ai, Bi and Ni and the result data Ti. The A, M, and C stored in the previous processor or external are read (step 92). After
제94단계후에, 저장한 A 및 M, 제2 캐리, 이전 프로세서로부터 입력한 제2 및 제3 데이타들(Bi 및 Ni) 및 결과 데이타(Ti)를 이용하여 현재 결과 데이타(Ti')를 수학식 5와 같이 구한다(제96단계). 제96단계후에, 이전 프로세서로부터 가져온 제1 데이타(Ai) 및 다음 프로세서의 결과 데이타로서 제96단계에서 구한 현재 결과 데이타를 다음 프로세서로 보내고, 제어 데이타(CTi), 제2 및 제3 데이타들(Bi 및 Ni)을 소정 시간 지연후에 다음 프로세서로 보낸다(제98단계).After
제90 또는 제98단계후에, 모든 결과 데이타가 구해졌는가를 판단한다(제100단계). 즉, 제1도에 도시된 제n+1 프로세서(16)로부터 모든 결과 데이타가 출력되었는가를 판단한다. 만일, 모든 결과 데이타가 구해지지 않았으며 제80단계로 진행하여 나머지 결과 데이타를 구하는 작업을 수행하고, 모든 결과 데이타가 구해졌으면, 제n+1 프로세서(16)로부터 출력된 모든 결과 데이타를 제1 데이타와 제2 데이타의 몽고메리 모듈러 N 승산된 결과로서 결정한다(제102단계).After
이상에서 설명한 바와 같이, 본 발명에 의한 몽고메리 모듈러 승산 장치는 몽고메리 모듈러 승산의 병렬성을 이용하여 몽고메리 모듈러 승산을 고속으로 수행할 수 있고, 프로세서의 갯수가 종래의 몽고메리 모듈러 승산장치에 비해 적으므로 하드웨어 설계 비용이 저렴한 효과가 있다.As described above, the Montgomery modular multiplication apparatus according to the present invention can perform the Montgomery modular multiplication at high speed by using the parallelism of the Montgomery modular multiplication, and the number of processors is smaller than that of the conventional Montgomery modular multiplier. It is cost effective.
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970027606A KR100256776B1 (en) | 1997-06-26 | 1997-06-26 | Montgomery modular multiflying apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970027606A KR100256776B1 (en) | 1997-06-26 | 1997-06-26 | Montgomery modular multiflying apparatus and method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990003678A KR19990003678A (en) | 1999-01-15 |
KR100256776B1 true KR100256776B1 (en) | 2000-05-15 |
Family
ID=19511362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970027606A KR100256776B1 (en) | 1997-06-26 | 1997-06-26 | Montgomery modular multiflying apparatus and method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100256776B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100442218B1 (en) * | 2001-01-30 | 2004-07-30 | 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 | Power-residue calculating unit using montgomery algorithm |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100586598B1 (en) * | 1999-12-18 | 2006-06-02 | 주식회사 케이티 | Modular Arithmetic Apparatus and Method for Finite Field |
-
1997
- 1997-06-26 KR KR1019970027606A patent/KR100256776B1/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100442218B1 (en) * | 2001-01-30 | 2004-07-30 | 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 | Power-residue calculating unit using montgomery algorithm |
Also Published As
Publication number | Publication date |
---|---|
KR19990003678A (en) | 1999-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0801345B1 (en) | Circuit for modulo multiplication and exponentiation arithmetic | |
Van Oorschot et al. | Parallel collision search with cryptanalytic applications | |
KR100659610B1 (en) | Method for Making Seed Value Used in Pseudo Random Number Generator and Device Therof | |
US4907275A (en) | Encryption apparatus | |
US4797936A (en) | Waveform sequence trigger system | |
EP0199620A2 (en) | Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer | |
US5936870A (en) | Arithmetic operating device for digital signal processing and method therefor | |
CN112070222A (en) | Processing architecture, accelerator and method for federal learning | |
KR102594656B1 (en) | Security Processor, Application Processor having the same and Operating Method of Security Processor | |
JP3532860B2 (en) | Arithmetic device, method, and program using remainder representation | |
JP2001505325A (en) | Method and apparatus for implementing a decoding mechanism by calculating a standardized modular exponentiation to thwart timing attacks | |
US5323338A (en) | Pseudo-random sequence generators | |
KR100256776B1 (en) | Montgomery modular multiflying apparatus and method | |
US3898626A (en) | Data processing apparatus | |
KR20050057010A (en) | Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies | |
KR100913467B1 (en) | System And Method For Generating Parallel Cyclic Redundancy Codes | |
US7590235B2 (en) | Reduction calculations in elliptic curve cryptography | |
KR100939356B1 (en) | Apparatus and method for modular multiplier | |
US6144979A (en) | Method and apparatus for performing multiply operation of floating point data in 2-cycle pipeline scheme | |
EP1039370A1 (en) | Modulo address generator and a method for implementing modulo addressing | |
US6067331A (en) | System and method for binary correlation | |
US8117507B2 (en) | Decompressing method and device for matrices | |
KR100586598B1 (en) | Modular Arithmetic Apparatus and Method for Finite Field | |
KR20030004925A (en) | RSA cipher device using modular exponentiation algorithm | |
JPH0946136A (en) | Gauss noise generator and its method |
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: 20100125 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |