KR20040037555A - 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템 - Google Patents

모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템 Download PDF

Info

Publication number
KR20040037555A
KR20040037555A KR1020020066100A KR20020066100A KR20040037555A KR 20040037555 A KR20040037555 A KR 20040037555A KR 1020020066100 A KR1020020066100 A KR 1020020066100A KR 20020066100 A KR20020066100 A KR 20020066100A KR 20040037555 A KR20040037555 A KR 20040037555A
Authority
KR
South Korea
Prior art keywords
data
value
bit
sum
carry
Prior art date
Application number
KR1020020066100A
Other languages
English (en)
Other versions
KR100484487B1 (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 KR10-2002-0066100A priority Critical patent/KR100484487B1/ko
Publication of KR20040037555A publication Critical patent/KR20040037555A/ko
Application granted granted Critical
Publication of KR100484487B1 publication Critical patent/KR100484487B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods 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/72Methods 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/722Modular multiplication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

모듈러 연산 장치 및 방법, 그리고 RSA 암호 연산 시스템이 개시된다. 제1데이터 선택기는 외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하여 출력한다. 제1캐리저장 덧셈기는 추출된 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 제1합을 출력하고, 합산과정에서 발생하는 캐리를 상위 비트쪽으로 1비트 이동시켜 제1캐리를 출력한다. 제2캐리저장 덧셈기는 제1합, 제1캐리, 및 제1연산값을 합산하여 산출한 합 및 캐리를 각각 하위 비트쪽으로 1비트 이동시킨 제2합 및 제2캐리를 출력한다. 제1 및 제2레지스터는 각각 n비트의 크기를 가지며, 하위 n/2비트에 제2합 및 제2캐리를 저장한다. 제2데이터는 최초의 제1합 연산과정의 수행시에는 외부로부터 입력되는 n비트의 데이터이고 이후의 제1합 연산과정의 수행시에는 제2레지스터에 저장되어 있는 n비트의 데이터이다. 또한, 제2연산값은 제1레지스터에 저장되어 있는 n비트의 데이터이다. 이로써, 시스템 클럭의 상승 모서리와 하강 모서리를 모두 데이터 처리에 사용할 수 있어 낮은 동작 주파수를 갖는 시스템에서 별도의 주파수 증가 장치를 사용하지 않고 효율적으로 RSA 암호 연산을 수행할 수 있다.

Description

모듈러 연산 장치 및 방법, 그리고 이를 이용한 RSA 암호 연산 시스템 {Apparatus and method for modular calculation, and system for calculating Rivest-Shamir-Adleman cryptograph using the apparatus}
본 발명은 모듈러 연산 장치 및 방법, 그리고 이를 이용한 RSA 암호 연산 시스템에 관한 것으로, 보다 상세하게는, 사용자의 개인 정보를 보호하고 시스템의 내부 정보를 도용하지 못하도록 보안성을 제공하기 위해 사용되는 공개키 암호 알고리즘 중 RSA 암호 알고리즘을 효율적으로 수행하는 모듈러 연산장치 및 방법, 그리고 이를 이용한 RSA 암호 연산 시스템에 관한 것이다.
공개키 암호 알고리즘 중 RSA(Rivest-Shamir-Adleman) 암호 알고리즘은 인증, 키 교환 및 전자 서명을 위해 가장 널리 쓰이는 비대칭키 암호 알고리즘이다. RSA 암호 알고리즘은 SET(Secure Electronic Transaction) 프로토콜과 같이 카드를 이용한 전자 상거래 및 각종 출입 통제 시스템등에 채택되어 사용되고 있다.
일반적으로 RSA 공개키 암호 장치는 RSA 암/복호 연산을 수행하기 위해 다음의 수학식과 같은 모듈러 멱승 연산을 수행한다.
수학식 1에서, X는 암호화할 데이터, C는 암호화 연산을 수행한 암호문, d는 비밀키, M은 모듈러스값을 각각 나타낸다.
수학식 1에서 알 수 있는 바와 같이, RSA 암호 알고리즘의 연산을 위한 모듈러 멱승을 위해서는 반복적인 모듈러 곱셈 연산이 필요하다. 두 수 A와 B 그리고 모듈러 값 M에 대하여, A와 B를 곱한 결과를 M으로 나누었을 때의 나머지를 C라고 했을 때 모듈러 곱셈은 다음과 같은 식으로 나타낼 수 있다.
수학식2의 모듈러 곱셈을 수행하는 여러 알고리즘 중 몽고메리 모듈러 곱셈 알고리즘이 널리 사용되고 있다. 몽고메리 모듈러 곱셈 알고리즘을 적용하면 데이터의 길이가 512비트 이상되는 대용량의 데이터에 대해 연산에 많은 시간이 걸리는 나눗셈 연산을 사용하지 않고 곱셈과 덧셈 및 쉬프트 연산만으로 모듈러 곱셈 연산을 수행할 수 있다.
몽고메리 모듈러 곱셈 알고리즘은 임의의 정수 A를 모듈러스 M에 의해 생성된 정수 R에 대한 정수 M의 잉여류 수 체계인 AR mod M으로 변환하여 정의하고, 새로 변환된 집합 내에서 모듈러 연산을 수행한다. 정수 R은 모듈러스 M 보다 크고, M과 서로 소인 정수가 선택된다.
수학식 3에 나타낸 몽고메리 모듈러 곱셈 연산은 값 S를 계산 할 때, 결과값에 대한 추정에 의한 연산을 수행한다. 연산의 결과값 S는 모듈러 곱셈 연산의 실제 결과값이거나 실제 결과값보다 모듈러스 M만큼 큰 경우로 나타날 수 있다. 따라서 몽고메리 모듈러 곱셈의 실제 결과값을 구하기 위해 S6에서와 같이 마지막 보정 단계가 필요하다.
수학식 3을 계산하는 몽고메리 모듈러 곱셈기는 일반적으로 512비트 이상의 긴 데이터의 처리를 위해 연산의 수행에 많은 시간이 필요한 나눗셈 연산을 사용하지 않고 S2에서 S5까지의 연산을 반복해서 수행한다. n비트 길이의 데이터의 경우 S2에서 S5까지를 n번 반복한다.
이러한 모듈러 곱셈 연산을 위한 회로들은 한 번에 처리되는 데이터가 512 ~ 1024비트 이상으로 그 연산 단위가 증가할수록 연산의 반복 회수 역시 많아 진다. 모듈러 곱셈 연산에서의 이러한 반복 연산은 다음의 수학식과 같이 몽고메리 모듈러 곱셈을 이용하여 RSA 암호 연산을 수행하기 위한 모듈러 멱승을 수행하는 경우에는 매우 많은 반복된 연산의 수행을 필요로 한다.
수학식 4는 수학식 3에서의 몽고메리 모듈러 곱셈을 이용하여 RSA 암호 연산에 필요한 모듈러 멱승 연산을 수행하며, 연산의 반복 회수는 입력되는 키(e)의 데이터 값에 따라 변화한다.
이러한 반복 연산을 고려하여, 일반적으로 RSA 공개키 암호 회로는 고속의 연산을 위해 보통 수십 MHz이상의 동작 주파수를 사용한다. 따라서 보통 20MHz 이하의 낮은 동작 주파수를 사용하면서도 시스템의 보안성을 필요로 하는 시스템에는 이러한 RSA 공개키 암호 알고리즘을 적용하기 어려우며, 낮은 동작 주파수를 갖는 시스템에 사용하려면 주파수 증가 장치와 같은 부가적인 요소를 사용해야 한다는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는 낮은 동작 주파수를 갖는 시스템에서 RSA 암호 연산을 위한 모듈러 연산을 효율적으로 수행하는 모듈러 연산 장치 및 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 낮은 동작 주파수를 갖는 시스템에서 RSA 암호 연산을 효율적으로 수행하는 RSA 암호 연산 시스템을 제공하는 데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는 낮은 동작 주파수를 갖는 시스템에서 RSA 암호 연산을 위한 모듈러 연산을 효율적으로 수행하는 모듈러 연산 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다.
도 1 은 본 발명에 따른 RSA 암호 연산 시스템의 구성을 도시한 블록도,
도 2 는 본 발명에 따른 RSA 암호 연산 시스템에 구비되는 RSA 연산부의 상세구성을 도시한 블록도,
도 3 은 본 발명에 따른 RSA 연산부에 구비되는 모듈러 곱셈기의 상세구성을 도시한 블록도,
도 4는 도 3에 도시된 모듈러 곱셈기의 동작 타이밍도, 그리고,
도 5는 본 발명에 따른 모듈러 연산 방법의 수행과정을 도시한 흐름도이다.
* 도면의 주요 부분에 대한 부호의 설명
100 : 입력 인터페이스부 110 : RSA 연산부
120 : 제어부130 : 데이터 저장부
140 : 출력 인터페이스부220 : 모듈러 곱셈부
230 : 모듈러 리덕션부 310, 320 : 캐리저장 덧셈기
330 : 결과 레지스터340 : 캐리 레지스터
350 : 덧셈기370 : 감산기
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 모듈러 연산 장치는,외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하여 출력하는 제1데이터 선택기; 상기 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 제1합을 출력하고, 상기 합산과정에서 발생하는 캐리를 상위 비트쪽으로 1비트 이동시켜 제1캐리를 출력하는 제1캐리저장 덧셈기; 상기 제1합, 상기 제1캐리, 및 제1연산값을 합산하여 산출된 합 및 캐리를 각각 하위 비트쪽으로 1비트 이동시킨 제2합 및 제2캐리를 출력하는 제2캐리저장 덧셈기; n비트의 크기를 가지며, 하위 n/2비트에 상기 제2합을 저장하는 제1레지스터; 및 n비트의 크기를 가지며, 하위 n/2비트에 상기 제2캐리를 저장하는 제2레지스터;를 포함하고, 상기 제2데이터는 제1캐리저장 덧셈기의 최초 덧셈연산시에는 외부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 n비트의 데이터이며, 상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터이다.
상기 다른 기술적 과제를 달성하기 위한, 본 발명에 따른 모듈러 연산 방법은, 외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하는 비트데이터 추출단계; 상기 추출된 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 산출한 제1합을 출력하는 제1합 산출단계; 상기 제1합 산출단계에서 발생하는 제1캐리를 상위 비트쪽으로 1비트 이동시켜 출력하는 제1캐리 출력단계; 상기 제1합, 상기 제1캐리, 및 제1연산값을 합산하여 산출한제2합을 하위 비트쪽으로 1비트 이동시켜 출력하는 제2합 산출단계; n비트의 크기를 가지는 제1레지스터의 하위 n/2비트에 상기 제2합을 저장하는 제2합 저장단계; 상기 제2합 산출단계에서 발생하는 제2캐리를 하위 비트쪽으로 1비트 이동시켜 출력하는 제2캐리 출력단계; 및 n비트의 크기를 가지는 제2레지스터의 하위 n/2비트에 상기 제2캐리를 저장하는 제2캐리 저장단계;를 포함하고, 상기 제2데이터는 상기 제1합 산출단계가 최초로 수행되는 경우에는 외부로부터 입력되는 데이터이고, 이후의 상기 제1합 산출단계의 수행시에는 상기 제2데이터는 상기 제1캐리저장 덧셈기의 최초 덧셈연산시에는 상기 제2데이터 선택부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 n비트의 데이터이고, 상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터이며, 상기 비트데이터 추출단계 내지 상기 제2캐리 저장단계는 상기 제1데이터의 모든 비트에 대해 반복적으로 수행된다.
상기 또 다른 기술적 과제를 달성하기 위한, 본 발명에 따른 RSA 암호 연산 시스템은, 복수의 n비트의 데이터가 저장되는 데이터 저장부; 데이터 선택을 지시하는 제어신호에 의해 상기 데이터 저장부에 저장되어 있는 데이터 중에서 제1데이터를 선택하여 출력하는 제1데이터 선택부; 상기 데이터 선택을 지시하는 제어신호에 의해 상기 데이터 저장부에 저장되어 있는 데이터 중에서 제2데이터를 선택하여 출력하는 제2데이터 선택부; 상기 제1 및 제2데이터를 입력받아 모듈러 곱셈을 수행하여 제1연산값과 제2연산값을 산출하는 모듈러 곱셈부; 상기 제1연산값과 상기 제2연산값을 합하여 제3연산값을 산출하고 상기 제3연산값에서 모듈러값을 감하여제4연산값을 산출하는 리덕션부; 및 상기 제4연산값 산출과정에서 캐리의 발생여부에 따라 상기 제3연산값 및 상기 제4연산값을 선택적으로 출력하는 제3데이터 선택부;를 구비한다.
본 발명에 따르면, 시스템 클럭의 상승 모서리와 하강 모서리를 모두 데이터 처리에 사용함으로써, 낮은 동작 주파수를 갖는 시스템에서 별도의 주파수 증가 장치를 사용하지 않고 효율적으로 RSA 암호 연산의 수행을 가능하게 할 수 있다.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 낮은 구동 주파수 시스템용 RSA 공개키 암호 장치 및 방법에 대해 상세하게 설명한다.
도 1은 본 발명에 따른 낮은 동작 주파수 시스템용 RSA 공개키 암호 장치의 구성을 도시한 블록도이다.
도 1을 참조하면, 낮은 동작 주파수 시스템용 RSA 공개키 암호 장치는, 입력 인터페이스부(100), RSA 연산부(110), 제어부(120), 데이터 저장부(130) 및 출력 인터페이스부(140)로 구성된다.
입력 인터페이스부(100)는 RSA 암호 연산을 위해 시스템 버스(미도시)를 통해 RSA 공개키 암호 회로로 전송되는 데이터와 제어 신호를 입력 받아 RSA 공개키 암호 장치의 내부로 전송하거나 처리한다.
RSA 연산부(110)는 데이터 저장부(130)에 저장되어 있는 데이터들을 독출하여 제어부(120)에서 인가되는 제어신호에 따라 수학식 1의 RSA 암호 연산을 수행한다. 즉, 도 1에 도시된 RSA 암호 장치의 구성에 따르면, RSA 연산부(110)는 수학식 4의 몽고메리 모듈러 멱승 연산을 위한 회로와 수학식 3의 몽고메리 모듈러 곱셈연산을 위한 회로가 포함되어 있다.
제어부(120)는 RSA 암호 연산을 수행하기 위한 제어신호를 생성하여 RSA 암호 장치의 각 구성요소들에 제공한다. 제어부(120)는 RSA 암호 연산을 수행하기 위해 데이터 저장부(130)로의 데이터 기록동작 및 데이터 저장부(130)로부터의 데이터 독출동작을 위한 제어신호, 입력 인터페이스부(100)를 통해 입력되는 동작 제어 신호에 대응되는 제어신호 등을 생성한다.
즉, 제어부(120)는 RSA 암호 연산의 수행을 위해 데이터 저장부(130)에서 필요한 데이터를 독출하기 위한 제어 신호들을 데이터 저장부(130)에 제공하며, 데이터 저장부(130)에서 RSA 연산부(110)로 입력되는 데이터들의 적절한 경로를 설정하는 제어신호를 생성한다. 또한, 제어부(120)는 RSA 암호 연산이 수행된 후 결과값을 데이터 저장부(130)에 쓰기 위한 제어신호를 생성하며, RSA 암호 연산이 종료되었음을 알리는 제어신호를 출력 인터페이스부(140)로 전송하는 일련의 작업을 수행한다.
데이터 저장부(130)는 RSA 암호 연산을 수행하기 위해 필요한 데이터 값과 키 값들을 저장한다. 또한, 데이터 저장부(130)는 제어부(120)에서 제공되는 제어신호에 의해 RSA 연산부(110)에서 수행하는 RSA 암호 연산을 위한 데이터 값들을 RSA 연산부(110)에 순차적으로 제공하며, RSA 연산부(110)에서 계산된 중간값과 결과값들을 저장한다.
출력 인터페이스부(140)는 RSA 암호 연산의 수행이 끝났음을 RSA 공개키 암호 회로외부에 알려주며, 데이터 저장부(130)의 결과값을 읽어서 순차적으로 외부시스템에 전송한다.
도2는 본 발명에 따른 낮은 동작 주파수 시스템용 RSA 공개키 암호 장치에 구비되는 RSA 연산부(110)의 상세한 구성을 도시한 블록도이다.
도 2를 참조하면, RSA 연산부(110)는 데이터 선택부(200,210), 모듈러 연산부(220), 및 경로 선택부(230)로 구성된다.
데이터 선택부(200, 210)는 제어부(120)로부터 인가되는 제어신호에 의해 입력 인터페이스부(100)로부터 제공되는 데이터와 경로 선택부(230)로부터 제공되는 데이터 중에서 하나의 데이터를 선택하여 모듈러 연산부(220)로 제공한다. 이 때, 참조번호가 200인 데이터 선택부에는 수학식 4의 S1단계에서 수행된 곱셈 결과인 A가 입력되며, 참조번호가 210인 데이터 선택부에는 수학식 4의 S1단계에서 수행된 곱셈 결과인 xp가 입력된다.
모듈러 연산부(220)는 모듈러 곱셈부(220-1) 및 리덕션부(220-2)로 구성된다. 모듈러 곱셈부(220-1)는 데이터 선택부(200, 210)에서 제공된 두 개의 곱셈 데이터와 모듈러 값을 입력받아 수학식 4의 MontMul()로 정의된 몽고메리 곱셈연산을 수행한다. 수학식 4에서 알 수 있듯이 모듈러 곱셈부(220-1)는 S3단계의 MontMul(A,A)로 정의된 모듈러 제곱연산과 S4단계의 MontMul(A, xp)로 정의된 모듈러 곱셈 연산, 그리고 S7단계의 MontMul(A,1)로 정의된 리덕션 연산을 각각 수행한다. S7단계의 MontMul(A,1) 연산은 원래의 결과값을 얻기 위해 수행된다. 이러한 각기 다른 연산을 수행하기 위한 데이터 선택부(200, 210)의 동작을 제어하는 제어신호는 제어부(120)로부터 인가된다.
리덕션부(220-2)는 몽고메리 모듈러 곱셈 알고리즘에 의해 계산된 결과값 S를 보정하는 구성요소으로 수학식 3의 S6단계를 수행한다. 리덕션부(220-2)는 모듈러 곱셈부(220-1)로부터 입력되는 결과값 S가 모듈러값 M보다 크면 결과값 S에서 모듈러값 M을 감한 값을 경로 선택부(230)로 출력하고, 결과값 S가 모듈러값 M보다 작으면 결과값 S를 경로 선택부(230)로 출력한다.
리덕션부(220-2)는 결과값 S에서 모듈러값 M을 최하위 워드에서부터 상위 워드로 32b비트씩 뺄셈을 수행하여 최상위 워드의 뺄셈 결과가 자리빌림(borrow)이 발생하면 모듈러 곱셈 연산의 결과값 S가 모듈러값 M보다 적은 것으로 판단하고, 자리빌림이 발생하지 않는 경우에는 큰 것으로 판단한다.
경로 선택부(230)는 모듈러 연산이 진행중인 경우에는 각각의 모듈러 연산의 결과값을 데이터 선택부(200, 210)로 제공한다. 또한, 경로 선택부(230)는 모듈러 연산이 종료되면 자리빌림의 발생여부에 따라 결정된 결과값을 출력한다. 도 2에 점선으로 표시된 부분은 모듈러 연산이 진행중인 경우에 경로 선택부(230)에서 데이터 선택부(200, 210)로 입력되는 데이터의 흐름을 나타낸다.
도 3은 모듈러 연산부(220)의 상세구성을 도시한 블록도이다.
도 3을 참조하면, 모듈러 연산부(220)는 모듈러 곱셈부(220-1) 및 리덕션부(220-2)로 구성된다.
모듈러 곱셈부(220-1)는 데이터 선택기(300), 캐리저장 덧셈기(310, 320), 결과 레지스터(330), 및 캐리 레지스터(340)로 구성된다.
데이터 선택기(300)는 입력되는 n비트의 데이터 A로부터 수학식 3의 S3 및S4단계에서 사용되는 Ai를 추출하여 제어부(120)로 전송한다. 여기서, Ai는 수학식 3의 루프연산과정인 S2 내지 S5단계에서의 곱셈연산을 위한 입력데이터 A의 i번째 비트값을 의미한다. 제어부(120)는 입력받은 Ai로부터 수학식 3의 S3단계를 수행하기 위해 모듈러 곱셈부(220-1)에 입력되는 데이터값들을 선택하도록 하는 제어신호를 데이터 선택부(200, 210)에 인가한다.
캐리저장 덧셈기A(310)는 수학식 3의 S4단계인 S=(S+AiB+QiM)/r에서 AiB+QiM의 연산을 수행한다. 여기서 2진연산을 수행하는 몽고메리 모듈러 곱셈의 경우, A 값의 i번째 자리의 값 Ai와 Qi는 각각 1비트의 데이터이므로 AiB+QiM연산은 결국 Ai와 Qi의 값에 따라서 B+M의 연산을 수행하게 된다. 한편, Qi는 수학식 3의 S3단계에 해당하는 식에 의해 계산되며, 별도의 연산장치(도면에는 도시되지 않음)에서 계산되어 캐리저장 덧셈기A(310)로 입력된다. 일반적으로, Qi=((S0+AiB0)(r-M0)-1) mod r에서 (r-M0)-1는 항상 1이다. 따라서, Qi는 연산데이터인 B0(즉, xp)의 최하위비트값과 Ai의 곱에 결과레지스터(330)의 최하위비트값인 S0를 더한 값이 된다.
이 때, 연산데이터 또는 모듈러값이 n비트의 값이라면 캐리저장 뎃셈기A(310)는 n/2비트의 합과 캐리값을 출력으로 갖는다. 도 3에 도시된 캐리 장 덧셈기A(310)의 캐리 데이터의 출력에 표시된 왼쪽방향의 화살표는 덧셈 연산에서 자리 올림을 고려하기 위해 출력되는 캐리 데이터가 1비트 왼쪽으로 자리 이동함을보이고 있다.
캐리저장 덧셈기A(310)는 n/2비트씩 데이터를 나누어서 덧셈연산을 수행한다. 캐리저장 덧셈기A(310)의 클럭과 데이터의 관계는 도 4에 도시되어 있다. 일반적으로 캐리저장 덧셈기는 처리하는 데이터 길이에 상관 없이 연산 속도가 전가산기 1개의 동작 속도와 동일하므로 빠른 연산이 가능하다. 이러한 캐리저장 덧셈기의 특성을 이용하면 시스템 클럭의 상승 모서리와 하강 모서리를 모두 연산에 사용 할 수 있어 낮은 동작 주파수를 갖는 시스템에서 고속 연산을 수행할 수 있다.
도 4를 참조하면, 시스템 클럭의 상승 모서리에서 연산할 데이터의 하위 n/2 비트의 데이터를 연산에 처리하고 하강 모서리에서 연산할 데이터의 상위 n/2를 연산한다. 이렇게 시스템 클럭의 상승과 하강 모서리를 모두 이용함으로써 본 발명에서의 RSA 암호 회로는 별도의 주파수 증가장치 없이 장치의 면적을 감소시키면서 고속의 연산이 가능하다.
캐리저장 덧셈기B(320)는 수학식 3의 S4단계의 S와 캐리저장 덧셈기A(310)의 결과인 합과 캐리를 이용하여 S를 n/2 비트씩 분할하여 더함으로써 S+AiB+QiM 연산을 수행하게 된다. 즉, 도 3에 도시된 구조에서, 수학식 3의 S4단계의 수행시 2개의 캐리저장 덧셈기(310, 320)를 사용하여, 첫 단에서는 AiB+QiM 연산을, 두 번째 단에서는 첫 번째 단의 결과에 S를 더하여 주는 방법이 사용된다. 캐리저장 덧셈기B(320)의 출력 결과들에 표시된 오른쪽방향의 화살표는 수학식 3의 S4단계에서 r로 나누어주는 연산을 고려하여 오른쪽으로 한 비트씩 자리를 이동함을 의미한다.
연산의 결과로 합과 캐리의 두 가지 값이 출력되는 캐리저장 덧셈기의 동작 특성상, 캐리저장 덧셈기B(320)의 S4단계에서 원하는 S값이 도출되나, 반복루프에서 n 비트의 긴 데이터를 더하는 작업은 많은 연산시간을 필요로 한다. 따라서, 연산의 효율성을 증가하시키기 위해 매번 반복되는 루프 과정에서 캐리 저장 덧셈기의 출력값들을 더하는 대신 합과 캐리 값을 바로 피드백(feedback)시켜 다음 루틴의 연산에서 바로 사용함으로써 연산의 속도를 증가시킬 수 있다.
결과 레지스터(330)는 수학식 3의 S4단계의 연산수행 후 발생하는 캐리저장 덧셈기B(320)의 합의 결과를 저장하는 레지스터이다. 결과 레지스터(330)는 한 번에 n/2 비트의 데이터를 저장하며, 연산수행 전에는 S1단계의 연산을 수행하기 위해 초기화된다. 캐리 레지스터(340)는 결과 레지스터(330)와 같이 수학식3의 S4단계의 연산수행 후 캐리저장 덧셈기B(320)의 출력결과 중 캐리값을 저장한다.
결과 레지스터(330)와 캐리 레지스터(340)의 크기는 n 비트의 크기를 가지며, 입력데이터는 모두 n/2 비트의 크기를 가지므로 경로를 설정해주는 데이터 선택장치(도면에는 도시되지 않음)와 함께 사용된다. 각각의 레지스터(330, 340)는 리덕션 연산을 수행하여 발생하는 결과값들을 저장하기 위해 한 워드 단위로 오른쪽으로 자리 이동이 가능하게 구성된다. 리덕션연산과 관련된 결과 레지스터(330)와 캐리 레지스터(340)의 동작은 후술한다.
리덕션부(220-2)는 덧셈기(350), 데이터 선택기(360), 및 감산기(370)로 구성된다. 도 3에서 리덕션부(220-2)에서의 연산과 관련하여 리덕션부(220-2)와 결과레지스터(330) 및 캐리 레지스터(340) 간의 데이터 흐름은 점선으로 표시되어 있다.
덧셈기(350)는 32비트 단위로 연산을 수행하는 덧셈 장치로서, 수학식 3의 S6단계를 수행하기 위해 사용된다. 캐리저장 덧셈기를 사용하는 경우 출력은 합과 캐리 2가지 종류가 나타나며, 이 두값으로부터 S≥M의 조건을 만족한다면 다시 뺄셈 연산을 추가로 수행하여야 하므로 회로의 성능이 감소하게 된다. 따라서, 보다 효율적인 연산을 위해 본 발명에서는 캐리 저장 덧셈기B(320)의 출력값을 더하여 S의 값을 구함과 동시에, S를 구하는 덧셈 연산의 결과에서 바로 모듈러 값 M을 빼서 다른 레지스터에 저장하여 한 번의 연산으로 S값과 S-M 값을 계산한 후, 출력을 선택적으로 구할 수 있는 방법을 사용하였다.
수학식 3의 S5단계까지의 연산이 완료되면, 결과 레지스터(330)와 캐리레지스터(340)의 결과를 이용해서 S≥M의 조건을 파악해야 한다. 먼저, 덧셈기(350)는 결과 레지스터(330)와 캐리 레지스터(340)의 하위에서부터 한 워드씩 데이터를 읽어와 덧셈연산을 수행한다. 이 때, 덧셈기(350)의 출력은 수학식 3의 S값의 최하위 워드값을 의미하며, 감산기(370)의 입력값과 결과 레지스터(330)의 최상위 워드값으로 입력된다. 이 때, 결과 레지스터(330)에 저장되어 있는 데이터는 한 워드씩 하위비트 쪽으로 자리이동한다.
데이터 선택기(360)는 덧셈기(360)로부터 감산기(370)로의 데이터 입력과 연동하여 n비트의 모듈러값 M을 하위비트부터 워드단위로 분리하여 감산기(370)로 제공한다.
감산기(370)는 덧셈기(350)로부터 입력받은 S값의 최하위 워드값에서 모듈러 값 M을 감하여 출력한다. 감산기(370)의 결과값은 캐리 레지스터(340)에 저장된다.결과 레지스터(330)와 동일하게 캐리 레지스터(340) 역시 하위비트 쪽으로 한 워드 자리 이동이 발생한다.
이상과 같이, 덧셈기(350)의 결과값 S의 최하위 워드값은 결과 레지스터(330)의 최상위 워드에 저장되며, 감산기(370)의 결과값 S-M의 최하위 워드값은 캐리 레지스터(340)의 최상위 워드에 저장된다.
상기한 방법으로 다시 결과 레지스터(330)와 캐리 레지스터(340)의 최하위 워드의 값에 대해 덧셈연산과 뺄셈연산을 수행하고 그 결과들을 각각 결과 레지스터(330)와 캐리 레지스터(340)의 최상위 워드의 위치에 저장하면서 각 레지스터들을 오른쪽으로 자리이동시킨다. 결과 레지스터(330)의 값과 캐리 레지스터(340)의 값들을 모두 이동시키면서 덧셈과 뺄셈 연산을 수행하면 감산기(370)의 출력으로 발생하는 자리빌림신호를 통해서 모듈러 연산의 결과값 S와 모듈러값 M의 크기를 판별할 수 있다.
상위 워드에서 하위 워드로 자리를 이동하면서 연산을 수행한 후, 감산기(370)의 연산결과로써 자리빌림신호가 발생하지 않았다면, 모듈러 곱셈의 결과값 S가 모듈러값 M보다 큰 경우이므로 경로 선택부(230)는 캐리 레지스터(340)에 저장되어 있는 S-M값을 출력 인터페이스부(140)로 출력한다. 반대로 감산기(370)의 출력으로 자리빌림이 발생하였다면 모듈러 곱셈의 결과값 S가 모듈러값 M보다 작다는 것을 의미하므로 경로 선택부(230)는 결과 레지스터(330)에 저장되어 있는 S값을 출력 인터페이스부(140)로 출력한다.
도 5는 본 발명에 따른 모듈러 연산 방법의 수행과정을 도시한 흐름도이다.
도 5를 참조하면, 데이터 선택기(300)는 입력되는 n비트의 데이터 A로부터 순차적으로 1비트의 데이터인 Ai를 추출한다(S500). 캐리저장 덧셈기A(310)는 Ai, Ai에 대응하는 Qi, 모듈러값 M, 및 입력되는 n비트의 데이터 B에 대해 AiB+QiM연산을 수행한다(S510). 데이터 B는 최초 연산시에는 데이터 선택부(210)로부터 입력되는 xp이며, 그 이후의 연산시에는 캐리 레지스터(340)로부터 입력되는 S-M이다. 캐리저장 덧셈기A(310)로부터 출력되는 값은 합과 캐리이며, 캐리는 상위 비트쪽으로 1비트 이동된 후 출력된다(S520). 캐리저장 덧셈기A(310)는 시스템 클럭의 상승모서리에서 연산할 데이터의 하위 n/2비트를 합산하고 하강모서리에서 상위 n/2비트를 합산한다.
캐리저장 덧셈기B(320)는 캐리저장 덧셈기A(310)로부터 입력받은 합과 캐리를 이용하여 결과 레지스터(330)에 저장되어 있는 결과값 S를 n/2비트씩 분할하여 합산함으로써 S+AiB+QiM연산을 수행한다(S530). 캐리저장 덧셈기B(320)로부터 출력되는 값 또한 합과 캐리이며, 합과 캐리 모두 하위 비트쪽으로 1비트 이동된 후 출력된다(S540). 캐리저장 덧셈기B(320)도 시스템 클럭의 상승모서리 및 하강모서리에서 각각 연산할 데이터의 하위 n/2비트 및 상위 n/2비트를 합산한다.
캐리저장 덧셈기B(320)로부터 출력되는 합과 캐리는 각각 n비트의 크기를 가지는 결과 레지스터(330) 및 캐리 레지스터(340)에 저장된다(S550).
S500단계 내지 S550단계는 데이터 A의 모든 비트에 대해 연산이 이루어질 때까지 반복적으로 수행된다(S560). 이러한 모듈러 곱셈이 종료되면 결과 레지스터(330)에는 결과값 S가 저장되게 되며, 캐리 레지스터(340)에는 결과값 S와 모듈러값 M의 차이값이 저장되게 된다.
모듈러 곱셈이 완료되면 이어서 리덕션 과정이 진행된다.
덧셈기(350)는 제1레지스터(330)에서 32비트단위로 결과값 S의 하위비트부터 독출한 데이터와 제2레지스터(340)에서 32비트단위로 차이값 S-M의 하위비트부터 독출한 데이터를 합산하여 합산값을 산출한다(S570). 합산값은 결과 레지스터(330)의 상위 32비트에 저장되며, 합산값이 결과 레지스터(330)에 저장되기 전에 결과 레지스터(330)에 저장되어 있는 데이터는 하위 비트쪽으로 32비트 이동된다(S580).
한편, 감산기(370)는 합산값에서 데이터 선택기(360)가 모듈러값을 하위비트부터 32비트씩 추출하여 제공한 피감산값을 감하여 감산값을 산출한다(S590). 감산값은 캐리 레지스터(330)의 상위 32비트에 저장되며, 감산값이 캐리 레지스터(330)에 저장되기 전에 캐리 레지스터(330)에 저장되어 있는 데이터는 하위 비트쪽으로 32비트 이동된다(S600).
S570단계 내지 S600단계는 결과 레지스터(330) 및 캐리 레지스터(340)에 저장되어 있는 데이터의 모든 비트에 대해 덧셈 및 뺄셈이 수행될 때까지 반복적으로 수행된다(S610).
한편, 캐리저장 덧셈기A(310) 및 캐리저장 덧셈기B(320)로 입력되는 데이터의 크기가 1024비트일 경우, 캐리저장 덧셈기A(310) 및 캐리저장 덧셈기B(320)는시스템 클럭의 상승모서리 및 하강모서리에 각각 하위 512바이트와 상위 512바이트에 대해 연산을 수행한다. 또한, 캐리저장 덧셈기A(310) 및 캐리저장 덧셈기B(320)로 입력되는 데이터의 크기가 1024비트일 경우, 덧셈기(350)과 감산기(370)은 32비트 단위로 연산을 수행하므로 결과 레지스터(330) 및 캐리 레지스터(330)에 저장되어 있는 데이터의 모든 비트에 대해 덧셈과 뺄셈을 수행하기 위해서는 S570단계 내지 S6000단계가 총 32회 수행된다.
경로 선택부(230)는 감산기(370)가 결과 레지스터(330) 및 캐리 레지스터(330)에 저장되어 있는 데이터에 대해 최종적으로 수행한 뺄셈연산과정에서 자리빌림이 발생하면(S620) 결과 레지스터(330)에 저장되어 있는 데이터를 결과값으로 출력하고(S630), 자리빌림이 발생하지 않으면(S620) 캐리 레지스터(340)에 저장되어 있는 데이터를 결과값으로 출력한다(S640).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
본 발명에 따른 모듈러 연산장치 및 방법, 그리고, RSA 암호 연산 장치에 따르면, 시스템 클럭의 상승 모서리와 하강 모서리를 모두 데이터 처리에 사용함으로써, 낮은 동작 주파수를 갖는 시스템에서 별도의 주파수 증가 장치를 사용하지 않고 효율적으로 RSA 암호 연산의 수행을 가능하게 할 수 있다. 또한, n 비트에 해당하는 긴 데이터를 적은 회로 면적에서 구현할 수 있도록 n/2비트씩 데이터를 분할하여 처리함으로써, 리덕션 과정을 효율적으로 수행하여 연산의 속도를 증가시킬 수 있다.
나아가, 낮은 동작 주파수를 갖는 시스템에서 사용자에게 보안성과 기밀성을 제공하는 RSA 공개키 암호 알고리즘을 별도의 주파수 증가 장치의 사용 없이 RSA 암호 연산의 효율적인 수행을 가능하게 함으로써, 시스템의 보안성을 향상 시킬 수 있으며, 암호 기능을 필요로 하는 많은 시스템에 적용할 수 있다. 또한, 동작 주파수가 낮은 시스템 뿐만 아니라 암호 프로세서 등의 소형 패키지나 스마트 카드 단말기 장치, 고가의 전자 제품 등과 같이 사용에 있어 사용자의 신원 확인이 필요하고 필요에 따라 타인의 접근을 제한하는 기능을 필요로 하는 모든 장치에 적용될 수 있다.

Claims (18)

  1. 외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하여 출력하는 제1데이터 선택기;
    상기 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 제1합을 출력하고, 상기 합산과정에서 발생하는 캐리를 상위 비트쪽으로 1비트 이동시켜 제1캐리를 출력하는 제1캐리저장 덧셈기;
    상기 제1합, 상기 제1캐리, 및 제1연산값을 합산하여 산출된 합 및 캐리를 각각 하위 비트쪽으로 1비트 이동시킨 제2합 및 제2캐리를 출력하는 제2캐리저장 덧셈기;
    n비트의 크기를 가지며, 하위 n/2비트에 상기 제2합을 저장하는 제1레지스터; 및
    n비트의 크기를 가지며, 하위 n/2비트에 상기 제2캐리를 저장하는 제2레지스터;를 포함하고,
    상기 제2데이터는 제1캐리저장 덧셈기의 최초 덧셈연산시에는 외부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 n비트의 데이터이며,
    상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터인 것을 특징으로 하는 모듈러 연산 장치.
  2. 제 1항에 있어서,
    상기 제1레지스터에서 소정 비트단위로 상기 제2합의 하위비트부터 독출한 데이터를 상기 제2레지스터에서 소정 비트단위로 상기 제2캐리의 하위비트부터 독출한 데이터와 합산하여 합산값을 출력하는 덧셈기;
    상기 덧셈기로부터 입력되는 상기 합산값에서 피감산값을 감하여 감산값을 출력하는 감산기; 및
    상기 감산기로의 상기 합산값의 입력동작과 연동하여 상기 모듈러값을 하위비트부터 소정 비트단위로 추출한 상기 피감산값을 상기 감산기에 제공하는 제2데이터 선택기;를 더 포함하고,
    상기 덧셈기로부터 출력되는 상기 합산값은 상기 제1레지스터의 상위 소정 비트에 저장되며, 상기 감산기로부터 출력되는 상기 감산값은 상기 제2레지스터의 상위 소정 비트에 저장되는 것을 특징으로 하는 모듈러 연산 장치.
  3. 제 2항에 있어서,
    상기 합산값 및 상기 감산값이 입력되기 전에 상기 제1 및 제2레지스터의 데이터는 하위비트 쪽으로 상기 소정 비트만큼 이동되는 것을 특징으로 하는 모듈러 연산 장치.
  4. 제 2항에 있어서,
    상기 덧셈기 및 상기 감산기는 32비트 단위로 연산을 수행하며, 상기 소정 비트단위는 32비트인 것을 특징으로 하는 모듈러 연산 장치.
  5. 제 1항 또는 제 2항에 있어서,
    상기 제1캐리저장 덧셈기 및 상기 제2캐리저장 덧셈기는 시스템 클럭의 상승모서리에서 하위 n/2비트에 대한 연산을 수행하고, 상기 시스템 클럭의 하강 모서리에서 상위 n/2비트에 대한 연산을 수행하는 것을 특징으로 하는 모듈러 연산 장치.
  6. 복수의 n비트의 데이터가 저장되는 데이터 저장부;
    데이터 선택을 지시하는 제어신호에 의해 상기 데이터 저장부에 저장되어 있는 데이터 중에서 제1데이터를 선택하여 출력하는 제1데이터 선택부;
    상기 데이터 선택을 지시하는 제어신호에 의해 상기 데이터 저장부에 저장되어 있는 데이터 중에서 제2데이터를 선택하여 출력하는 제2데이터 선택부;
    상기 제1 및 제2데이터를 입력받아 모듈러 곱셈을 수행하여 제1연산값과 제2연산값을 산출하는 모듈러 곱셈부;
    상기 제1연산값과 상기 제2연산값을 합하여 제3연산값을 산출하고 상기 제3연산값에서 모듈러값을 감하여 제4연산값을 산출하는 리덕션부; 및
    상기 제4연산값 산출과정에서 자리빌림신호의 발생여부에 따라 상기 제3연산값 및 상기 제4연산값을 선택적으로 출력하는 제3데이터 선택부;를 포함하는 것을특징으로 하는 RSA 암호 연산 시스템.
  7. 제 6항에 있어서,
    외부로부터 데이터를 입력받아 상기 데이터 저장부에 제공하는 입력 인터페이스부;
    상기 제3데이터 선택부로부터 입력받은 데이터를 외부로 출력하는 출력 인터페이스부; 및
    상기 데이터 저장부로부터 연산에 필요한 데이터의 선택을 지시하는 제어신호를 상기 제1 및 제2선택부로 출력하고, 상기 모듈러 곱셈부의 곱셈동작, 상기 리덕션부의 리덕션동작을 제어하는 제어신호를 출력하는 제어부;를 더 포함하는 것을 특징으로 하는 RSA 암호 연산 시스템.
  8. 제 6항 또는 제 7항에 있어서,
    상기 모듈러 곱셈부는,
    상기 제1데이터 선택부로부터 입력되는 상기 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하여 출력하는 제3데이터 선택부;
    상기 제1비트값에 대응하여 상기 모듈러값과 상기 제2데이터를상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 제1합을 출력하고, 상기 합산과정에서 발생하는 캐리를 상위 비트쪽으로 1비트 이동시켜 제1캐리를 출력하는 제1캐리저장 덧셈부;
    상기 제1합, 상기 제1캐리, 및 제2연산값을 합산하여 산출된 합 및 캐리를 각각 하위 비트쪽으로 1비트 이동시킨 제2합 및 제2캐리를 출력하는 제2캐리저장 덧셈부;
    n비트의 크기를 가지며, 하위 n/2비트에 상기 제2합을 저장하는 제1레지스터부; 및
    n비트의 크기를 가지며, 하위 n/2비트에 상기 제2캐리를 저장하는 제2레지스터부;를 포함하며,
    상기 제2데이터는 상기 제1캐리저장 덧셈기의 최초 덧셈연산시에는 상기 제2데이터 선택부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 상기 제2연산값이며,
    상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터인 것을 특징으로 하는 RSA 암호 연산 시스템.
  9. 제 6항 또는 제 7항에 있어서,
    상기 리덕션부는,
    상기 제1레지스터부에서 소정 비트단위로 상기 제2합의 하위비트부터 독출한 데이터를 상기 제2레지스터부에서 소정 비트단위로 상기 제2캐리의 하위비트부터 독출한 데이터와 합산하여 합산값을 출력하는 덧셈부;
    상기 덧셈부로부터 입력되는 상기 합산값에서 피감산값을 감하여 감산값을 출력하는 감산부; 및
    상기 감산부로의 상기 합산값의 입력동작과 연동하여 상기 모듈러값을 하위비트부터 소정 비트단위로 추출한 상기 피감산값을 상기 감산기에 제공하는 제4데이터 선택부;를 포함하고,
    상기 덧셈부로부터 출력되는 상기 합산값은 상기 제1레지스터부의 상위 소정 비트에 저장되며, 상기 감산부로부터 출력되는 상기 감산값은 상기 제2레지스터부의 상위 소정 비트에 저장되는 것을 특징으로 하는 RSA 암호 연산 시스템.
  10. 제 7항에 있어서,
    상기 합산값 및 상기 감산값이 입력되기 전에 상기 제1 및 제2레지스터의 데이터는 하위비트 쪽으로 상기 소정 비트만큼 이동되는 것을 특징으로 RSA 암호 연산 시스템.
  11. 제 7항에 있어서,
    상기 덧셈부 및 상기 감산부는 32비트 단위로 연산을 수행하며, 상기 소정 비트단위는 32비트인 것을 특징으로 하는 RSA 암호 연산 시스템.
  12. 제 6항에 있어서,
    상기 제1캐리저장 덧셈부 및 상기 제2캐리저장 덧셈부는 시스템 클럭의 상승모서리에서 상기 하위 n/2비트에 대한 연산을 수행하고, 상기 시스템 클럭의 하강 모서리에서 상기 상위 n/2비트에 대한 연산을 수행하는 것을 특징으로 하는 RSA 암호 연산 시스템.
  13. 외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하는 비트데이터 추출단계;
    상기 추출된 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 산출한 제1합을 출력하는 제1합 산출단계;
    상기 제1합 산출단계에서 발생하는 제1캐리를 상위 비트쪽으로 1비트 이동시켜 출력하는 제1캐리 출력단계;
    상기 제1합, 상기 제1캐리, 및 제1연산값을 합산하여 산출한 제2합을 하위 비트쪽으로 1비트 이동시켜 출력하는 제2합 산출단계;
    n비트의 크기를 가지는 제1레지스터의 하위 n/2비트에 상기 제2합을 저장하는 제2합 저장단계;
    상기 제2합 산출단계에서 발생하는 제2캐리를 하위 비트쪽으로 1비트 이동시켜 출력하는 제2캐리 출력단계; 및
    n비트의 크기를 가지는 제2레지스터의 하위 n/2비트에 상기 제2캐리를 저장하는 제2캐리 저장단계;를 포함하고,
    상기 제2데이터는 상기 제1합 산출단계가 최초로 수행되는 경우에는 외부로부터 입력되는 데이터이고, 이후의 상기 제1합 산출단계의 수행시에는 상기 제2데이터는 상기 제1캐리저장 덧셈기의 최초 덧셈연산시에는 상기 제2데이터 선택부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 n비트의 데이터이고,
    상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터이며,
    상기 비트데이터 추출단계 내지 상기 제2캐리 저장단계는 상기 제1데이터의 모든 비트에 대해 반복적으로 수행되는 것을 특징으로 하는 모듈러 연산 방법.
  14. 제 13항에 있어서,
    상기 제1레지스터에서 소정 비트단위로 상기 제2합의 하위비트부터 독출한 데이터를 상기 제2레지스터에서 소정 비트단위로 상기 제2캐리의 하위비트부터 독출한 데이터와 합산하여 합산값을 산출하는 합산값 산출단계;
    상기 합산값을 입력받아 상기 합산값에서 피감산값을 감하여 감산값을 산출하는 감산값 산출단계;
    상기 합산값을 상기 제1레지스터의 상위 소정 비트에 저장하는 합산값 저장단계; 및
    상기 감산값을 상기 제2레지스터의 상위 소정 비트에 저장하는 감산값 저장단계;를 더 포함하며,
    상기 피감산값은 상기 합산값 입력동작과 연동하여 상기 모듈러값을 하위비트부터 소정 비트단위로 추출한 데이터이고,
    상기 합산값 산출단계 내지 상기 감산값 저장단계는 상기 제1데이터의 모든 비트에 대해 상기 비트데이터 추출단계 내지 상기 제2캐리 저장단계가 수행된 후에반복적으로 수행되는 것을 특징으로 하는 모듈러 연산 방법.
  15. 제 14항에 있어서,
    상기 제1데이터의 모든 비트에 대해 상기 합산값 산출단계 내지 상기 감산값 저장단계가 수행되면, 상기 감산값 산출단계의 최종 수행과정에서 자리빌림이 발생하면 상기 제1레지스터에 저장되어 있는 데이터를 결과값으로 출력하고, 상기 자리빌림이 발생하지 않으면 상기 제2레지스터에 저장되어 있는 데이터를 상기 결과값으로 출력하는 단계를 더 포함하는 것을 특징으로 하는 모듈러 연산 방법.
  16. 제 13항 내지 제15항 중 어느 한 항에 있어서,
    상기 합산값 및 상기 감산값이 입력되기 전에 상기 제1 및 제2레지스터의 데이터는 하위비트 쪽으로 상기 소정 비트만큼 이동되는 것을 특징으로 하는 모듈러 연산 방법.
  17. 제 13항 내지 제15항 중 어느 한 항에 있어서,
    상기 합산값 산출단계 및 상기 감산값 산출단계는 시스템 클럭의 상승모서리에서 상기 하위 n/2비트에 대한 연산을 수행하고, 상기 시스템 클럭의 하강 모서리에서 상기 상위 n/2비트에 대한 연산을 수행하는 것을 특징으로 하는 모듈러 연산 방법.
  18. 외부로부터 입력되는 n비트의 제1데이터로부터 순차적으로 1비트의 데이터인 제1비트값을 추출하는 비트데이터 추출단계;
    상기 추출된 제1비트값에 대응하여 외부로부터 입력되는 모듈러값과 n비트의 제2데이터를 상기 제1비트값과 기저장되어 있는 제2비트값에 따라 합산하여 산출한 제1합을 출력하는 제1합 산출단계;
    상기 제1합 산출단계에서 발생하는 제1캐리를 상위 비트쪽으로 1비트 이동시켜 출력하는 제1캐리 출력단계;
    상기 제1합, 상기 제1캐리, 및 제1연산값을 합산하여 산출한 제2합을 하위 비트쪽으로 1비트 이동시켜 출력하는 제2합 산출단계;
    n비트의 크기를 가지는 제1레지스터의 하위 n/2비트에 상기 제2합을 저장하는 제2합 저장단계;
    상기 제2합 산출단계에서 발생하는 제2캐리를 하위 비트쪽으로 1비트 이동시켜 출력하는 제2캐리 출력단계; 및
    n비트의 크기를 가지는 제2레지스터의 하위 n/2비트에 상기 제2캐리를 저장하는 제2캐리 저장단계;를 포함하고,
    상기 제2데이터는 상기 제1합 산출단계가 최초로 수행되는 경우에는 외부로부터 입력되는 데이터이고, 이후의 상기 제1합 산출단계의 수행시에는 상기 제2데이터는 상기 제1캐리저장 덧셈기의 최초 덧셈연산시에는 상기 제2데이터 선택부로부터 입력되는 데이터이고, 이후의 덧셈연산시에는 상기 제2레지스터에 저장되어 있는 n비트의 데이터이고,
    상기 제1연산값은 상기 제1레지스터에 저장되어 있는 n비트의 데이터이며,
    상기 비트데이터 추출단계 내지 상기 제2캐리 저장단계는 상기 제1데이터의 모든 비트에 대해 반복적으로 수행되는 것을 특징으로 하는 모듈러 연산 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR10-2002-0066100A 2002-10-29 2002-10-29 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템 KR100484487B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0066100A KR100484487B1 (ko) 2002-10-29 2002-10-29 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0066100A KR100484487B1 (ko) 2002-10-29 2002-10-29 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템

Publications (2)

Publication Number Publication Date
KR20040037555A true KR20040037555A (ko) 2004-05-07
KR100484487B1 KR100484487B1 (ko) 2005-04-20

Family

ID=37335854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0066100A KR100484487B1 (ko) 2002-10-29 2002-10-29 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템

Country Status (1)

Country Link
KR (1) KR100484487B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008127444A3 (en) * 2006-12-18 2009-05-22 Microsoft Corp Fast rsa signature verification
KR20120038643A (ko) * 2010-10-14 2012-04-24 삼성전자주식회사 모듈러 연산기, 모듈러 연산 방법, 및 이를 포함하는 장치들

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI802095B (zh) 2021-11-22 2023-05-11 財團法人工業技術研究院 模數乘法電路與對應之計算模數乘法之方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493522A (en) * 1994-09-21 1996-02-20 Northrop Grumman Corporation Fast arithmetic modulo divider
US6009450A (en) * 1997-12-24 1999-12-28 Motorola, Inc. Finite field inverse circuit
JP3329440B2 (ja) * 1998-04-08 2002-09-30 日本電信電話株式会社 事前計算を用いた複数生成元に対する演算装置及びそのプログラム記録媒体
KR100428755B1 (ko) * 2001-08-31 2004-04-30 주식회사 현대시스콤 비트 슬라이스 모듈러 곱셈기

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008127444A3 (en) * 2006-12-18 2009-05-22 Microsoft Corp Fast rsa signature verification
US7774607B2 (en) 2006-12-18 2010-08-10 Microsoft Corporation Fast RSA signature verification
KR20120038643A (ko) * 2010-10-14 2012-04-24 삼성전자주식회사 모듈러 연산기, 모듈러 연산 방법, 및 이를 포함하는 장치들

Also Published As

Publication number Publication date
KR100484487B1 (ko) 2005-04-20

Similar Documents

Publication Publication Date Title
US8504602B2 (en) Modular multiplication processing apparatus
KR101154695B1 (ko) 암호 처리 연산 장치
US8209369B2 (en) Signal processing apparatus and method for performing modular multiplication in an electronic device, and smart card using the same
US6285760B1 (en) Method and apparatus for digital signature authentication
US7856101B2 (en) Method for elliptic curve scalar multiplication
KR101269737B1 (ko) 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
US8102998B2 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
KR100436814B1 (ko) 아이씨카드용 알에스에이 암호 연산 장치
EP1068565B1 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
JP2000010479A (ja) モンゴメリ・リダクション装置及び記録媒体
KR100484487B1 (ko) 모듈러 연산 장치 및 방법, 그리고 이를 이용한 rsa암호 연산 시스템
US20050201553A1 (en) Cryptography-processing method, cryptography-processing apparatus and computer program
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
JP4616169B2 (ja) モンゴメリ乗算剰余における変換パラメータの計算装置、方法およびそのプログラム
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
KR20170113268A (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
KR100974624B1 (ko) 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체
CN116522351A (zh) 降低成功率的方法、密码系统处理电路及电子装置
JP3842641B2 (ja) モンゴメリ乗算を用いるコプロセッサを使用する演算装置及び方法
JP2001194996A (ja) 多項式の除算装置
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
KR19980037406A (ko) 메모리를 사용하여 유한체상에서 역원을 구하는 방법
JP2004151234A (ja) べき乗演算装置

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: 20100401

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee