KR100449491B1 - 모듈러 곱셈 장치 - Google Patents

모듈러 곱셈 장치 Download PDF

Info

Publication number
KR100449491B1
KR100449491B1 KR10-2001-0078127A KR20010078127A KR100449491B1 KR 100449491 B1 KR100449491 B1 KR 100449491B1 KR 20010078127 A KR20010078127 A KR 20010078127A KR 100449491 B1 KR100449491 B1 KR 100449491B1
Authority
KR
South Korea
Prior art keywords
modular
data
value
register
memory
Prior art date
Application number
KR10-2001-0078127A
Other languages
English (en)
Other versions
KR20030048243A (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-2001-0078127A priority Critical patent/KR100449491B1/ko
Publication of KR20030048243A publication Critical patent/KR20030048243A/ko
Application granted granted Critical
Publication of KR100449491B1 publication Critical patent/KR100449491B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 모듈러 곱셈 장치에 관한 것으로, 정보를 모듈러 곱셈 연산하기 위한 데이터가 저장된 메모리로부터 모듈러 곱셈 연산에 필요한 데이터를 입력받아 저장하며 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 중간값을 저장하는 레지스터와, 소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하면서 중간값은 레지스터에 저장하고 결과값을 메모리에 저장하는 모듈러 회로와, 결과값과 모듈러 값과의 비교 결과에 따라 결과값을 선택적으로 보정하는 리덕션 회로와, 레지스터와 모듈러 회로 및 리덕션 회로에 각종 제어 신호를 출력하여 모듈러 곱셈 연산을 주관하는 컨트롤 회로를 포함하며, 모듈러 곱셈 연산을 적은 회로 면적에서 고속으로 수행하므로 스마트 카드 시스템과 암호 프로세서 등의 소형 패키지에 적용되어 보안성 및 기밀성을 향상시킬 수 있는 이점이 있다.

Description

모듈러 곱셈 장치{MODULAR MULTIPLY APPARATUS}
본 발명은 모듈러 곱셈 장치에 관한 것으로, 특히 스마트 카드에서 카드 사용자의 개인 정보를 보호하고 카드의 정보를 도용하지 못하도록 보안성을 제공하기 위해 사용하는 공개키 암호 알고리즘 중 RSA 암호 알고리즘의 수행에 핵심적인 연산을 수행하는 모듈러 곱셈을 위한 몽고메리 모듈러 곱셈 장치에 관한 것이다.
근래에 각종 보안목적이나 화폐 지불수단의 대용으로서 스마트 카드의 사용은 날로 급증하는 추세이다.
스마트 카드는 일반적인 신용카드와 동일한 재질과 사이즈인 플라스틱카드의 표면에 자체 연산 기능이 있는 8비트 또는 32비트 마이크로 프로세서(Microprocessor)와 운영체제, 그리고 안전한 저장영역으로서의 EEPROM이 내장되어 있는 집적회로(IC) 칩(Chip)이 표면에 부착된 전자식 카드이다. IC 카드, 칩 카드, 마이크로프로세서 카드, CPU 카드라고도 한다.
이러한 스마트 카드는 기존의 마그네틱 스트립(Magnetic Strip) 카드나 메모리 카드에서 제공하지 못하였던 우수한 보안 특성으로 각종 금융 어플리케이션(application)뿐만 아니라 컴퓨터, 자동판매기, 통행제어기, 휴대폰 등 다양한 목적의 카드 리더(Card Reader)와 함께 사용되어 정보 자원에 대한 사용자 접근 통제에 사용되고 있으며, 전자 상거래, 교통 및 방송통신 분야 등과 같은 다양한 정보통신 서비스에 응용되고 있다.
스마트 카드는 이렇게 다양한 응용분야에서의 사용 조건에 적합한 보안성을 제공하기 위해 암호기능을 제공하고 있다. 스마트 카드에서 많이 사용되는 공개키 암호 알고리즘 중 RSA 암호 알고리즘은 암호화 연산 또는 전자 서명을 위해 가장 널리 쓰이는 비대칭키 암호 알고리즘이며, SET(Secure Electronic Transaction) 프로토콜과 같이 카드를 이용한 거래 등에서 안전성을 제공하기 위하여 다수의 카드 시스템(Visa, Mastercard, EMV 등)에 채택 및 사용되고 있다.
일반적으로 RSA 암호 모듈 연산 장치는 필요한 암호 연산을 모듈러 곱셈기라고 하는 연산회로를 사용하여 반복적인 모듈러 연산을 수행하여 처리한다. RSA 알고리즘의 기본 연산은 일반적으로 512∼1024비트(bit) 이상의 큰 수 A, B, M에 대해 두 수 A와 B의 곱에서 M을 나눈 나머지(AB mod M)를 구하는 연산을 수행하는 모듈러 곱셈 연산이다.
두 수 A와 B 그리고 모듈러 값 M에 대하여, A와 B를 곱한 결과를 M으로 나누었을 때의 나머지를 C라고 했을 때, 모듈러 곱셈은 다음과 같은 수학식 1로 나타낼 수 있다.
수학식 1의 모듈러 곱셈을 수행하는 여러 알고리즘 중 몽고메리 알고리즘은,나눗셈을 구하기 위해 연산에 많은 시간이 걸리는 나눗셈 연산을 사용하지 않고 곱셈과 덧셈만으로 모듈러 연산을 수행 할 수 있으므로 가장 널리 사용되어지고 있다.
몽고메리 알고리즘은 임의의 정수 A를 모듈러스 M에 의해 생성된 정수 R에 대한 정수 M의 잉여류 수 체계인 AR mod M으로 변환하여 정의하고, 새로 변환된 집합 내에서 모듈러 연산을 수행한다. 정수 R은 모듈러스 M 보다 크고, M과 서로 소인 정수로 선택된다. 몽고메리 모듈러 곱셈은 다음과 같은 수학식 2로 나타낼 수 있다.
이를 위한 몽고메리 모듈러 곱셈 알고리즘을 단계별로 나타내면 다음과 같다.
단계 1 : S = 0
단계 2 : 0에서부터 (n-1)까지 i에 대해 단계 3 내지 단계 6을 반복
단계 3 : 시작
단계 4 : Qi= ((S0+ AiB0)( r - M0)-1) mod r
단계 5 : S = (S + AiB + QiM) div r
단계 6 : 끝
단계 7 : 만일 S ≥M인 경우, S = S - M을 계산
상기와 같은 몽고메리 모듈러 연산은 값 S를 계산 할 때, 결과값에 대한 추정에 의한 연산을 수행하므로 연산의 결과값 S는 모듈러 곱셈 연산의 실제 결과값이거나 또는 실제 결과값보다 모듈러스 M만큼 큰 경우로 나타날 수 있다. 따라서 몽고메리 모듈러 곱셈의 실제 결과값을 구하기 위해 단계 7에서와 같이 마지막 보정 단계가 필요하다.
이러한 모듈러 곱셈 연산을 위하여 제안된 종래 기술들을 살펴보면 다음과 같다.
한국특허공개번호 제10-1998-0019040호에는 모듈러 곱셈 또는 모듈러 멱승을 계산하기 위한 회로를 간단하게 구현한 모듈러 연산장치 및 그 방법이 개시되어 있다. 쉬프트 기능이 있는 저장수단, 곱셈기, 덧셈기 및 데이터의 저장을 위한 누산기 및 여러 개의 연산 구동을 위한 데이터 선택 장치로 구성되어, 디지털 서명기기 및 암호화 회로의 제작에 요구되는 비용을 줄일 수 있다.
한국특허출원번호 제10-1998-0020592호에는 몽고메리 알고리즘을 바탕으로 하여 파이프라인 기능을 통해 전체 수행에 필요한 클럭수를 줄이고, RB(Redundant Binary)연산을 통해 클럭수를 줄인 모듈러 곱셈장치가 개시되어 있다. 모듈러 곱셈의 내부값을 저장하기 위한 어레이 저장기, 역수를 구하기 위한 역 계산기, 파이프라인 곱셈기, 파이프라인 순환기, 직렬 곱셈기, 몫 처리기와 다수의 데이터 선택기 및 보상기로 구성되어, 잉여 이진 연산과 파이프라인 구조를 이용하여 전체 연산 수행에 필요한 시간을 줄임으로써 고속의 연산이 가능하도록 한다.
한국특허출원번호 제10-1998-0030386호에는 모듈러 곱셈 연산을 위해 몽고메리 알고리즘을 사용하며, 모듈러 곱셈시 한 클럭에 피승수 가산, 모듈러스 가산, 및 쉬프트 된 결과를 얻을 수 있는 회로 구성을 갖는 모듈러 곱셈기가 개시되어 있다. 두 수의 곱을 가산하는 캐리저장 가산기, 연산값을 저장하는 레지스터, 캐리저장 가산기의 출력에서 마지막 비트는 버리고 출력하는 캐리전파 가산기로 구성되어, 캐리저장 가산기와 레지스터의 효율적인 조절에 따른 연산 수행 회로구성이 간단하고, 고속이면서 사용메모리가 적어 물리적 회로 용적이 제한된 저 메모리 환경에 적합한 회로 구현이 가능하다.
한편, 상기와 같은 모듈러 곱셈 연산을 위한 회로들은 한번에 처리되는 데이터가 512∼1024비트 이상으로 그 연산단위가 크므로 연산 과정에서 발생하는 중간값을 저장하기 위한 레지스터 또는 메모리 영역 또한 512∼1024비트 이상 되는 큰 저장 공간을 사용하여야 한다.
이러한 경우, 모듈러 곱셈 연산을 위해 입력되는 데이터와 모듈러 값을 저장하기 위해 사용되는 레지스터들이 증가할수록 회로의 면적은 증가하게 되며, 사용하는 메모리가 많을수록 메모리에 데이터를 저장하거나 읽기 위한 메모리의 액세스(Access) 횟수가 증가하여 모듈러 곱셈을 수행하는 연산 속도를 저하시키게 된다.
따라서, 저 면적이면서 고속의 연산속도를 요구하는 스마트 카드에 적용하기에는 부적합하다는 문제점이 있다.
본 발명은 이와 같은 종래의 문제점을 해결하기 위하여 제안한 것으로, 소정비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하도록 하여 모듈러 곱셈 장치의 회로 면적으로 줄이고 중간값을 저장하는 레지스터를 사용하여 메모리에 액세스하는 횟수를 줄임으로서 고속의 모듈러 곱셈 연산을 가능하도록 하는데 그 목적이 있다.
이와 같은 목적을 실현하기 위한 본 발명에 따른 모듈러 곱셈 장치는, 정보를 모듈러 곱셈 연산하기 위한 데이터가 저장된 메모리와, 모듈러 곱셈 연산을 요청하며 그 연산 결과를 상기 메모리로부터 로드하여 사용하는 프로세서를 포함하는 특정 시스템에서 모듈러 곱셈 연산을 수행하는 모듈러 곱셈 장치에 있어서, 상기 메모리로부터 모듈러 곱셈 연산에 필요한 데이터를 입력받아 저장하며 상기 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 중간값을 저장하는 레지스터와, 소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하면서 중간값은 상기 레지스터에 저장하고 결과값을 상기 메모리에 저장하는 모듈러 회로와, 상기 결과값과 모듈러 값과의 비교 결과에 따라 상기 결과값을 선택적으로 보정하는 리덕션 회로와, 상기 레지스터와 모듈러 회로 및 리덕션 회로에 각종 제어 신호를 출력하여 모듈러 곱셈 연산을 주관하는 컨트롤 회로를 포함한다.
도 1 은 본 발명에 따른 모듈러 곱셈 장치가 적용되는 스마트 카드의 칩 블록 구성도,
도 2 는 본 발명에 따른 모듈러 곱셈 장치의 구성도,
도 3 은 본 발명에 따른 모듈러 곱셈 장치의 부분적인 세부 구성도,
도 4는 본 발명에 따른 모듈러 곱셈 장치에 적용 가능한 곱셈기의 구성 일예도.
<도면의 주요 부분에 대한 부호의 설명>
150 : 프로세서 155 : 데이터 버스
160 : 메모리 170 : 암호 프로세서
210 : 인터페이스 회로 220 : 컨트롤 회로
230 : 레지스터 블록 231 : 레지스터 A
232 : 레지스터 B 233 : 레지스터 Rn'
234 : 레지스터 M 240 : 모듈러 회로
241 : 제 1 데이터 선택 회로 242 : 제 2 데이터 선택 회로
243 : 곱셈기 244 : 덧셈기
245 : 제 3 데이터 선택 회로 246 : 레지스터 U
250 : 리덕션 회로 251 : 뺄셈기
252 : 레지스터 S 253 : 출력신호 선택 회로
본 발명의 실시예로는 다수개가 존재할 수 있으며, 이하에서는 첨부한 도면을 참조하여 바람직한 실시예에 대하여 상세히 설명하기로 한다. 이 실시예를 통해 본 발명의 목적, 특징 및 이점들을 보다 잘 이해할 수 있게 된다.
이하에서 설명하는 본 발명의 실시 예에서는, 스마트 카드 시스템을 일례로들어 설명하였으나, 본 발명은 스마트 카드 시스템 뿐만 아니라 암호 프로세서 등의 소형 패키지나 고가의 전자 제품 등과 같이 사용에 있어 사용자의 신원 확인이 필요하고 필요에 따라 타인의 접근을 제한하는 기능을 필요로 하는 모든 장치에 적용될 수 있다.
도 1은 본 발명에 따른 모듈러 곱셈 장치가 적용되는 스마트 카드의 칩 블록 구성도로서, 전원 공급단(100), 보안 센서 회로(110), 리셋 신호 발생부(120), 난수 발생 회로(130), 인터럽터 발생부(140), 프로세서(150), 데이터 버스(155), 메모리(160), 암호 프로세서(170), 타이밍 회로(180), 인터페이스(190)로 구성된다.
프로세서(150)는 스마트 카드의 전반적인 제어(즉, 스마트 카드 표준에 따른 프로토콜의 제어)를 수행한다.
메모리(160)는 카드의 실행에 따른 내용을 읽어 들여 읽고 쓰는 기능을 수행하고, 카드의 O/S 프로그램이 저장되며, 각종 스마트 카드의 응용 프로그램이 저장된다.
데이터 버스(155)는 프로세서(150), 메모리(160), 암호 프로세서(170), 타이밍 회로(180), 인터페이스(190)를 상호 물리적으로 연결한다.
타이밍 회로(180)는 시스템 제어를 위해 필요한 타이밍을 발생하고, 인터럽트 발생부(140)는 시스템 제어 시에 필요로 하는 인터럽트 신호를 발생하며, 암호 프로세서(170)는 각 응용분야에 따른 보안성을 고려하여 암호 알고리즘을 하드웨어 모듈로 구현하여 데이터를 암호화한다.
난수 발생 회로(130)는 카드 리더와의 상호 인증을 위한 난수를 발생하며,인터페이스(190)는 카드 리더와의 비접촉 또는 접촉식 통신을 인터페이스 한다.
도 2는 전술한 수학식 2의 몽고메리 곱셈 알고리즘을 효율적으로 구현하기 위한 본 발명에 따른 모듈러 곱셈 장치의 구성도로서, 데이터 버스(155), 메모리(160), 인터페이스 회로(210), 컨트롤 회로(220), 레지스터 블록(230), 모듈러 회로(240), 리덕션 회로(250)로 구성된다.
데이터 버스(155)는 메모리(160)와 모듈러 연산을 위한 데이터를 저장하는 레지스터 블록(230)에 연결되어 모듈러 곱셈에 필요한 데이터나 모듈러 값을 읽어 들이고 모듈러 연산의 결과값을 메모리(160)에 저장하는 데이터의 경로로 사용된다.
메모리(160)는 모듈러 곱셈에 필요한 데이터와 모듈러 값 및 모듈러 연산에 필요한 데이터를 저장하며, 모듈러 곱셈 연산이 수행됨에 따라 컨트롤 회로(220)에서 발생하는 제어 신호에 의해 순차적으로 곱셈에 필요한 데이터를 32비트씩 연산 모듈로 제공하며, 최종적으로 모듈러 곱셈의 결과값을 데이터 버스(155)를 통해 32비트씩 읽어서 저장한다.
인터페이스 회로(210)는 프로세서(150)에서 전송되는 제어 신호나 데이터를 송수신하며, 모듈러 곱셈 회로와 프로세서(140)와의 통신을 수행한다.
컨트롤 회로(220)는 모듈러 곱셈 연산 수행에 필요한 컨트롤 신호를 생성하여 상기 회로들에 제공하며, 모듈러 곱셈 연산 수행을 위해 메모리(160)에서의 데이터 로드(load)를 위한 제어신호와 모듈러 연산을 수행하기 위해 모듈러 곱셈 연산을 수행하는데 필요한 모든 제어신호를 제공한다.
다시 말해서, 컨트롤 회로(220)는 모듈러 곱셈 수행을 위해 메모리(160)로부터 모듈러 회로(240)로 필요한 데이터를 순차적으로 읽어 들이기 위해 필요한 메모리(160)의 주소와 메모리(160)의 데이터를 읽고 쓰기 위한 메모리 제어 신호들을 메모리(160)에 제공한다. 아울러 메모리(160)에서 모듈러 회로(240)로 입력되는 데이터들을 32비트 레지스터 블록(230)에 선택적으로 저장하기 위한 레지스터 제어신호를 생성하고, 32비트 레지스터 블록(230)에 순차적으로 저장되는 데이터들을 이용하여 모듈러 곱셈을 수행하는 과정에 필요한 제어 신호들을 생성한다. 또한 모듈러 곱셈 연산이 수행된 후 결과값을 메모리(160)에 저장하는데 필요한 제어신호와 메모리 주소 및 메모리 제어 신호를 생성하고, 모듈러 곱셈 연산이 종료되었음을 알리는 제어 신호를 프로세서(150)에 전송한다.
32비트 레지스터 블록(230)은 모듈러 곱셈 연산을 수행하기 위한 입력 값인 승수 A, 피승수 B 그리고 모듈러 M 및 몽고메리 모듈러 곱셈을 위해 사전 계산된 값을 각각 32비트 단위로 읽어서 저장한다. 이때 메모리(160)의 데이터를 각 레지스터에 저장하는 레지스터 제어신호는 컨트롤 회로(220)에서 제공되어진다.
모듈러 회로(240)는 모듈러 곱셈 연산을 수행하며, 기본적으로 32비트 곱셈 연산을 수행하는 곱셈기와 32비트 덧셈 연산을 수행하는 덧셈기 및 연산의 중간값을 저장하기 위한 레지스터, 그리고 덧셈기와 곱셈기의 연산에 필요한 데이터를 선택적으로 설정해 주는 데이터 선택기로 구성된다. 수학식 2의 몽고메리 모듈러 곱셈 알고리즘을 32비트 단위로 반복 연산하여 내부의 중간값 저장 레지스터에 연산 결과를 저장한다. 이때 모듈러 회로(240)는 모듈러 연산의 수행에 필요한 각 과정에서 필요한 모든 제어 신호를 컨트롤 회로(220)로부터 제공받는다.
리덕션 회로(250)는 몽고메리 모듈러 곱셈 알고리즘에 의해 계산된 결과값을 보정하는 부분으로 수학식 2의 단계 7의 과정을 수행하며, 모듈러 회로(240)에서 수행된 결과를 모듈러 값과 비교하여 모듈러 값보다 큰 경우에는 모듈러 회로(240)의 결과값에서 모듈러 값을 뺀 후 그 결과를 메모리(160)에 저장하고, 그렇지 않은 경우에는 모듈러 회로(240)의 연산 결과를 메모리(160)에 저장한다. 이때 모듈러 곱셈의 결과가 모듈러 값보다 큰 가의 판단은 모듈러 회로(240)의 결과값에서 모듈러 값을 최하위 워드에서부터 상위 워드로 32비트씩 뺄셈을 수행하여 최상위 워드의 뺄셈 결과가 버로우(borrow)를 발생하면, 모듈러 곱셈 연산의 결과가 모듈러 값보다 적으므로 모듈러 곱셈 연산의 결과를 메모리(160)에 저장하고, 버로우가 발생하지 않는 경우에는 뺄셈의 결과를 메모리(160)에 저장한다.
도 3은 도 2에 도시된 레지스터 블록(230)과 모듈러 회로(240) 및 리덕션 회로(250)를 세부적으로 나타낸 도면이다.
레지스터 블록(230)은 레지스터 A(231), 레지스터 B(232), 레지스터 Rn'(233), 레지스터 M(234)으로 구성된다.
레지스터 A(231)는 수학식 1, 2에 나타낸 승수 값 A를 저장하기 위한 레지스터로써, 32비트의 데이터를 저장하며, 컨트롤 회로(220)에서 메모리(160)에 제공하는 메모리 제어 신호에 의해 메모리(160)의 데이터가 데이터 버스(155)에 전송되면 컨트롤 회로(220)에서 제공하는 레지스터 제어신호에 의해 데이터 버스(155)의 데이터를 저장한다.
레지스터 B(232)와 레지스터 M(234)은 레지스터 A(231)와 같이 32비트로 구성되며, 모듈러 곱셈을 위한 피승수 데이터 B와 모듈러 값 M을 데이터 버스(155)로부터 각각 로드하고, 컨트롤 회로(220)에서 제공되는 레지스터 제어신호에 의해 동작한다.
레지스터 Rn'(233)은 수학식 2의 단계 4에서 (r - M0)-1값을 저장하는 레지스터로써, (r - M0)-1값은 모듈러 M에 대해 상수값을 가지며, 사전에 계산되어 메모리(160)에 저장된 값이다. 레지스터 Rn'(233)에 데이터를 로드하는 레지스터 제어신호 역시 컨트롤 회로(220)에서 입력받는다.
모듈러 회로(240)는 제 1 데이터 선택 회로(241), 제 2 데이터 선택 회로(242), 곱셈기(243), 덧셈기(244), 제 3 데이터 선택 회로(245), 레지스터 U(246)로 구성된다.
제 1 데이터 선택 회로(241)는 32비트의 곱셈 연산을 수행하는 곱셈기(243)의 입력 데이터들을 선택적으로 공급하며, 순차적 데이터의 선택을 위한 제어신호는 컨트롤 회로(220)에서 제공된다. 또한 제 1 데이터 선택 회로(241)는 연산 과정에서 곱셈 연산의 결과를 사용하여 다음 연산에서 사용하기 위해 곱셈 연산의 결과를 레지스터에 저장하기 위한 경로를 설정한다.
제 2 데이터 선택 회로(242)는 수학식 2의 몽고메리 곱셈 알고리즘을 위한 덧셈 연산을 수행하는 덧셈기(244)에 입력되는 데이터를 순차적으로 선택하며, 덧셈 연산을 위한 데이터의 경로를 설정하는 제어신호는 컨트롤 회로(224)에서 제공된다.
32비트의 곱셈 연산을 수행하는 곱셈기(243)는 모듈러 곱셈 연산 수행을 위해 32비트 데이터를 입력으로 받아서 64비트의 곱셈 출력을 갖는 조합회로로써, 수학식 2에서 단계 4의 Qi= ((S0+ AiB0)( r - M0)-1) mod r에서 AiB0의 곱셈 연산과 단계 5의 (S + AiB + QiM) div r에서 AiB와 QiM의 곱셈 연산을 32비트씩 순차적으로 수행한다. 이때, 곱셈 연산의 반복적이고 순차적 수행은 컨트롤 회로(220)에서 제공되는 제어신호에 의해 제 1 데이터 선택 회로(241)가 입력 레지스터 또는 중간값을 저장한 레지스터의 데이터를 선택하여 공급함으로써 수행된다.
여기서, 곱셈기(243)는 곱셈 연산을 빨리 수행하기 위하여 곱셈 연산과 덧셈 연산을 한 번에 수행할 수 있게 애디티브(additive) 덧셈기를 사용하여 구성 할 수도 있다.
또한, 도 4에 나타낸 바와 같이 두 개의 32비트 입력 데이터 곱에 두 개의 32비트 데이터를 더해서 64비트의 출력을 갖는 곱셈기를 사용할 수도 있다. 32비트 곱셈을 위하여 승수는 32비트데이터를 이용하고 피승수는 8비트 또는 16비트씩 나누어서 반복적인 곱셈을 수행하면서 32비트의 데이터를 더하는 연산을 수행함으로써 수학식 2의 알고리즘을 수행하기 위한 연산의 속도를 증가시킬 수 있다.
덧셈기(244)는 수학식 2에서 덧셈 연산뿐 아니라 32비트 곱셈기(243)의 출력 중 상위 32비트 결과를 다음 곱셈의 결과와 더하여 연산하여 순차적인 곱셈 과정을수행하는 과정에서 사용되어지며, 전체 데이터의 곱셈 연산의 결과를 저장하는 레지스터 U(246)에 결과값을 저장하기 전에 최상위 워드의 캐리 값을 계산하기 위해 사용된다.
제 3 데이터 선택 회로(245)는 512∼1024비트 이상의 큰 데이터를 32비트 곱셈기(243)와 32비트 덧셈기(244)를 이용하여 반복적으로 계산할 때 발생하는 결과값을 레지스터 U(246)의 적절한 위치에 저장하기 위한 워드의 위치를 지정하며, 레지스터 U(246)에 저장하기 위한 레지스터 제어신호는 컨트롤 회로(220)에서 제공받는다.
레지스터 U(246)는 수학식 2에 따른 모듈러 곱셈 연산을 반복하여 수행할 때 각 단계의 결과값 S를 저장한다. 모듈러 곱셈 연산의 중간값을 메모리(160)에 직접 저장하는 경우에 연산을 수행할 때마다 필요한 데이터를 메모리(160)에서 직접 로드하는 경우 메모리(160)에 액세스하는 시간이 증가하므로 중간값을 메모리(160)에 저장하는 대신 빠른 시간에 데이터를 로드할 수 있는 레지스터에 저장하여 메모리(160)에 액세스하는 횟수를 줄임으로써 모듈러 곱셈의 연산에 걸리는 시간을 줄이기 위해 사용한다.
레지스터 U(246)는 32비트로 이루어진 레지스터의 조합으로 이루어지며, 그 크기는 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 캐리(carry)를 고려하여 모듈러 곱셈을 계산하는 데이터의 길이보다 1워드 더 크게 사용한다. 즉, 512비트의 모듈러 곱셈 연산을 수행하는 경우에는 544비트의 크기를 사용하며, 1024비트의 모듈러 곱셈을 사용하는 경우에는 1056비트의 길이를 갖는다. 또한 레지스터U(246)의 각 워드의 값은 32비트 곱셈기를 이용한 모듈러 곱셈 연산의 결과를 순차적으로 하위 워드에서 상위 워드로 저장하며, 이때 곱셈기(243)의 결과를 저장하기 위한 레지스터 U(246)의 워드 위치는 컨트롤 회로(220)에서 제공한다.
레지스터 U(246)의 최상위 워드는 실제로 최하위의 1비트만 사용하므로 레지스터 U(246)의 크기는 계산하는 데이터의 길이보다 1비트만 더 길게 사용할 수도 있다. 32비트씩 곱셈 연산을 이용하여 모듈러 곱셈 연산을 수행하여 모든 곱셈 과정이 끝난 후 레지스터 U(246)에 저장된 값은 몽고메리 모듈러 곱셈의 결과일 수도 있고, 결과보다 모듈러 값만큼 클 수도 있다. 만일 레지스터 U(246)의 값이 모듈러 값보다 큰 경우, 레지스터 U(246)의 값에서 다시 모듈러 값을 빼 주는 연산을 수행하여야 한다. 레지스터 U(246)에 저장된 값과 모듈러 값의 비교를 통한 모듈러 곱셈 값의 보정은 도 2의 리덕션 회로(250)에서 수행하게 된다.
리덕션 회로(250)는 뺄셈기(251), 레지스터 S(252), 출력신호 선택 회로(253)로 구성된다.
뺄셈기(251)는 모듈러 곱셈 연산이 끝난 후 결과값을 보정하기 위해 32비트 데이터의 뺄셈 연산을 수행하는 조합회로로써, 레지스터 U(246)의 값과 모듈러 값을 하위 워드에서부터 32비트씩 차례로 입력받아 뺄셈 연산을 수행한다. 이때 레지스터 U(246)의 값과 메모리(160)로부터 모듈러 값을 순차적으로 읽어 들이는 제어신호는 컨트롤 회로(220)에서 제공한다. 32비트씩 수행되는 뺄셈 연산의 값은 레지스터 S(252)에 저장되며, 레지스터 S(252)에 저장된 32비트의 뺄셈 결과는 다음 상위 워드의 뺄셈 연산 과정에서 메모리(160)에 저장되고, 뺄셈 과정에서 발생하는버로우 신호는 다음 상위 워드의 뺄셈 연산에 사용되기 위해 다시 뺄셈기(251)에 입력되어진다. 하위 워드에서 최상위 워드까지 뺄셈 연산의 수행이 끝나면, 메모리(160)에는 레지스터 U(246)의 결과에서 모듈러 값을 뺀 결과가 저장되어 있고, 레지스터 U(246)에는 모듈러 곱셈의 결과가 저장되어 있다.
레지스터 S(252)는 32비트로 구성되어 모듈러 곱셈이 끝난 후 결과값을 보정할 때 사용하는 32비트 뺄셈기(251)의 연산 결과와 버로우값을 저장한다. 이때 레지스터 S(252)에 데이터를 로드하기 위한 레지스터 제어신호는 컨트롤 회로(220)에서 제공 받는다. 또한 레지스터 S(252)의 데이터는 뺄셈 연산 수행 중에 메모리(160)에 저장된다.
출력신호 선택 회로(253)는 몽고메리 모듈러 곱셈의 연산이 끝난 후 모듈러 곱셈의 결과값에 대해 보정을 위한 뺄셈 연산이 끝난 후에 뺄셈기(251)의 버로우를 검사하여 메모리(160)에 저장되어질 결과값을 레지스터 U(246)의 값으로 다시 저장할 것인지 아니면 결과값 보정을 위한 뺄셈 과정을 수행하면서 메모리(160)에 저장된 값을 그냥 둘 것인지를 결정한다. 즉, 모듈러 회로(240)에서 몽고메리 모듈러 곱셈 연산이 끝난 후에 리덕션 회로(250)에서 32비트씩 뺄셈 연산을 순차적으로 수행하면서 레지스터 S(252)에 저장되는 뺄셈의 결과는 다음 상위 워드의 뺄셈 과정에서 메모리(160)에 저장되며, 이러한 순서를 반복하여 뺄셈 연산이 끝나면 메모리(160)에는 모듈러 회로(240)에서 모듈러 곱셈 연산을 수행 한 값에서 모듈러 값을 뺀 결과가 레지스터 U(246)에는 모듈러 회로(240)에서 모듈러 곱셈 연산을 수행한 결과가 각각 저장되어 있다. 출력신호 선택 회로(253)는 레지스터 U(246)와모듈러 값 M의 최상위 워드 데이터의 뺄셈 연산이 끝난 후에 뺄셈기(251)에서 발생한 버로우 신호가 있으면 레지스터 U(246)의 결과가 모듈러 값보다 적으므로 레지스터 U(246)의 값이 모듈러 곱셈 연산의 결과로 출력되도록 레지스터 U(246)의 값을 다시 메모리(160)에 저장한다. 이때 레지스터 U(246)의 값을 메모리(160)에 순차적으로 저장하기 위해 레지스터 U(246)에서 32비트씩 순차적으로 데이터를 읽어서 데이터 버스(155)에 로드하는 레지스터 제어신호와 데이터 버스(155)에 있는 데이터를 메모리(160)의 해당 번지에 저장하기 위한 메모리 주소 및 메모리에 데이터를 쓰기 위한 메모리 제어신호는 컨트롤 회로(220)에 의해 제공된다. 레지스터 U(246)의 값들이 메모리(160)에 순차적으로 저장되면 컨트롤 회로(220)는 모듈러 곱셈 연산이 끝났음을 알려주는 제어신호를 프로세서(150)에 전송한다.
만일, 모듈러 곱셈 연산이 수행된 후, 뺄셈기(251)에서 발생한 버로우 신호가 없으면 레지스터 U(246)에서 모듈러 값 M을 뺀 결과가 모듈러 곱셈의 결과이며, 뺄셈 과정에서 이 결과값들은 이미 메모리(160)에 순차적으로 저장되어 있으므로 컨트롤 회로(220)에서 모듈러 곱셈의 연산이 끝났음을 알려주는 제어 신호를 생성한다.
상기와 같은 구성을 갖는 모듈러 곱셈 장치의 구체적인 동작을 살펴보기 위하여 본 발명에 따른 모듈러 곱셈 장치가 1024비트의 모듈러 곱셈 연산을 수행하는 과정을 예로서 설명하기로 한다.
먼저, 메모리(160)에는 모듈러 곱셈을 위한 1024비트 데이터 값인 승수 값 A와 피승수 값 B, 그리고 모듈러 값 M 및 몽고메리 알고리즘을 이용하여 모듈러 곱셈을 수행하기 위한 32비트 값인 사전 계산 값 R이 저장되어 있다.
프로세서(150)는 모듈러 곱셈의 연산이 필요하여 암호 프로세서(170) 내의 모듈러 곱셈 회로를 구동시키고자 하면 데이터 버스(155)를 통해서 제어 신호를 암호 프로세서(170)로 보내게 된다. 암호 프로세서(170)로 보내진 제어신호는 모듈러 곱셈 회로의 인터페이스 회로(210)에 전달되어 모듈러 곱셈 연산의 시작을 알린다.
인터페이스 회로(210)를 통해 모듈러 곱셈 연산의 시작을 탐지한 컨트롤 회로(220)는 먼저 모듈러 곱셈 회로 내의 모든 블럭들을 초기화 한 후, 모듈러 곱셈 연산을 수행하기 위하여 초기 데이터 값인 승수 A와 피승수 B 및 모듈러 M의 최하위 워드의 값을 순차적으로 읽어서 레지스터 A(231), B(232), M(234)에 저장하도록 메모리 제어신호와 레지스터 제어신호를 발생한다.
수학식 2의 단계 2에서 i는 단계 4와 단계 5의 연산을 반복하는 횟수를 나타내는 인수로써, 1024비트 데이터의 모듈러 곱셈 연산을 수행하기 위해서는 n값이 32이므로, i값은 0에서 31까지 32번의 반복 과정을 가진다.
단계 4의 Qi는 단계 2의 i값이 0, 1, ...., 31까지 증가하는 과정에서 각 반복 과정에서 일정한 값을 가지게 된다. 단계 4의 Qi= ((S0+ AiB0)( r - M0)-1) mod r 연산은 다시 두 번의 곱셈 과정을 거치게 된다. 먼저 (r - M0)-1값은 사전 계산 값으로 메모리(160)에 저장되어 초기 데이터로써 레지스터 Rn'(233)에 저장되어 있으며, (S0+ AiB0) 값은 i번째 반복 루틴에서의 승수 A의 i번째 워드 데이터와 피승수 B의 최하위 워드의 곱과 중간값을 저장하는 레지스터 U(246)의 최하위 워드의 합으로 구해지며, 다시 이 값들은 레지스터 Rn'(233)에 저장된 값과 곱셈 연산을 수행 후 mod r연산에 의해 하위 32비트 데이터만 Qi의 값으로 취하게 된다. 단계 4의 연산 과정은 2번의 곱셈 연산에 의해 이루어지므로 연산의 수행 시간을 줄이기 위해 곱셈 연산 과정 중에 다음 곱셈을 위한 데이터를 메모리(160)에서 읽어서 해당 레지스터에 저장하도록 컨트롤 회로(220)에서 제어신호를 발생한다.
단계 5의 S=(S + AiB + QiM) div r의 연산은 모듈러 곱셈 연산을 수행하기 위해 가장 많은 수행 시간이 소요되는 부분으로써, S와 B, M은 모두 1024비트 길이를 갖는 데이터이다. 따라서 32비트 곱셈기와 32비트 덧셈기를 이용하여 연산을 수행하는 경우 모두 32번의 반복적인 연산이 수행되어진다.
단계 5의 연산을 수행하기 위하여 S와 B, M 데이터들은 각각 32비트씩 메모리(160)로부터 입력되어지며, S0+AiB0+QiM0, S1+AiB1+QiM1,...., S31+AiB31+QiM31의 순서로 하위 워드에서 상위 워드로 연산을 수행하며 그 값들은 레지스터 U(246)에 순차적으로 저장된다. 만일 단계 5의 각 연산의 결과값들을 레지스터 U(246)가 아니라 메모리에 직접 저장하는 경우, 단계 5를 수행하기 위해 승수와 피승수값을 읽어 들이는 시간 뿐 아니라 결과값을 메모리에 쓰기 위한 시간까지 고려되어 모듈러 곱셈을 수행하기 위한 연산 시간이 증가하게 되어 고속의 모듈러 곱셈 연산을 수행할 수 없다.
루틴 i에 대해 각 덧셈들은 Sj+AiBj+QiMj로 표시되며 여기서 j는 단계 5를 0에서 31까지 반복 수행하는 내부 루틴의 횟수를 나타내는 인수이다. 각 j번째 연산은 다시 Sj+AiBj연산과 그 결과에 QiMj의 결과를 더하는 단계로 나누어지며, 연산에서 발생하는 64비트데이터 중 하위 32비트데이터는 레지스터 U(246)의 j번째 워드 위치에 저장되며, 상위 32비트데이터는 j+1번째 루틴의 연산에서 고려되어 더해지게 된다. 단계 5의 j가 32번의 반복 연산을 수행하면 레지스터 U(246)에는 루틴 i에 대한 S값인 1024비트데이터가 저장되고, 레지스터 U(246)의 최상위 워드에는 단계 5에서 발생한 캐리 데이터가 저장된다.
루틴 i에 대해 단계 4와 단계 5의 반복 연산이 모두 끝나면 인수 i값을 1증가시킨 후, 다시 단계 4와 단계 5의 반복 연산을 수행하며 이러한 연산은 인수 i가 32번 반복할 때까지 계속된다. 위의 반복 과정을 위해서 메모리에서 i번째 승수 값 Ai와 j번째 피승수 값 Bj, 그리고 모듈러값 Mj는 연산의 수행 속도를 높이기 위하여 현재 곱셈 연산 중에 다음 루틴의 데이터를 미리 읽어서 저장함으로써 메모리(160)로부터 데이터를 로드하는데 걸리는 시간을 감소할 수 있다.
상기와 같은 방법으로 루틴 값을 증가하면서 연산을 수행하여, 최상위 워드까지 모듈러 곱셈 연산을 수행하면, 레지스터 U(246)에는 모듈러 곱셈 연산의 결과값이 저장되어 있다. 몽고메리 모듈러 곱셈 알고리즘은 결과값에 대한 어떠한 추정에 의해 승수와 피승수 값을 다른 잉여류 수 체계로 변환하여 연산을 수행하므로, 그 결과 역시 정확한 값이 아닐 수 있다. 따라서 모듈러 곱셈을 수행 한 후의 값이 정확한 값인지 검토하여 결과값을 보정해주는 작업이 필요하다.
이러한 보정 작업은 몽고메리 모듈러 곱셈의 결과값이 원래 원하는 출력 값이거나 또는 원래 출력 값보다 모듈러 M만큼 크다는 몽고메리 알고리즘의 가정을 이용한다.
몽고메리 곱셈 연산의 결과값을 보정하기 위하여 먼저, 출력신호 선택 회로(253)는 레지스터 U(246)의 최상위 워드 값이 1인지 검사한다. 만일 레지스터 U(246)의 최상위 워드가 1이면, 몽고메리 모듈러 곱셈 연산의 값이 원래 원하는 값보다 모듈러 M만큼 큰 경우이므로, 레지스터 U(246)의 데이터에서 모듈러 M을 빼는 연산을 수행해야 한다. 뺄셈은 레지스터 U(246)의 최하위 워드와 메모리(160)에 저장된 모듈러 값 M의 최하위 워드에서 상위 워드로 뺄셈이 수행되며, 뺄셈의 결과는 레지스터 S(252)에 저장된 후 다시 메모리(160)에 저장된다. 이때 레지스터 U(246)에는 모듈러 곱셈 연산의 결과가 그대로 저장되어 있다.
모듈러 곱셈 연산의 결과값 보정을 위한 뺄셈 연산을 수행 할 때, 메모리(160)에서 모듈러 M을 순차적으로 읽어와서 레지스터 M(234)에 저장하기 위한 메모리와 레지스터 제어신호는 컨트롤 회로(220)에서 공급되며, 뺄셈 연산이 수행되는 동안 다음 상위 워드의 뺄셈을 위해서 미리 상위 워드의 모듈러 값을 메모리(160)에서 읽어와서 레지스터에 저장 할 수 있게 제어신호를 발생한다.
레지스터 U(246)의 최상위 워드가 1인 경우에는 레지스터 U(246)의 데이터는 1024비트데이터인 모듈러 M보다 크므로 뺄셈 연산을 32개 워드의 데이터만 뺄셈에 사용하고, 최상위 워드 데이터의 뺄셈 결과 발생하는 버로우 신호는 무시하고 연산을 종료하도록 컨트롤 회로(220)에 제어신호를 보낸다.
만일 레지스터 U(246)의 최상위 워드의 데이터가 0이라면 모듈러 곱셈 연산의 결과로 저장된 레지스터 U(246)의 값과 모듈러 M값 중 어느 값이 큰지 알 수 없게 된다. 따라서 이 경우에는 레지스터 U(246)의 값에서 모듈러 M을 빼서 나오는 버로우 신호를 이용하여 크기를 판단할 수 있다.
레지스터 U(246)의 최상위 워드의 값이 0인 경우 모듈러 곱셈의 결과를 보정하기 위하여 레지스터 U(246)의 최하위 워드 값과 메모리(160)에 저장된 모듈러 M의 최하위 워드를 로드하여 32비트 뺄셈 연산을 수행하여 발생하는 결과값은 레지스터 S(252)에 저장한 후 다시 메모리(160)에 저장하고, 뺄셈 과정에서 발생하는 버로우 신호는 다음 상위 워드 데이터의 뺄셈 연산을 위하여 다시 제공되어 진다. 이때 다음 상위 워드의 데이터는 빠른 연산 수행을 위해 뺄셈 연산을 수행하는 과정에서 메모리(160)에서 레지스터 M(234)에 저장할 수 있도록 레지스터 제어신호를 컨트롤 회로(220)에서 제공한다.
이렇게 하위 워드에서 최상위 워드까지 순차적으로 뺄셈 연산을 수행하면, 레지스터 U(246)에는 여전히 몽고메리 모듈러 곱셈 연산의 결과가 저장되어 있고, 메모리(160)에는 몽고메리 모듈러 곱셈 연산의 결과인 레지스터 U(246)의 값에서 모듈러 M을 뺀 결과가 저장되어 있다. 뺄셈 연산이 모두 끝난 후 모듈러 곱셈의 결과값 선택은 최상위 워드의 뺄셈을 수행하고 발생한 버로우 신호를 이용하여 결정할 수 있다.
만일 버로우 신호가 1이면 레지스터 U(246)의 데이터가 모듈러 값 M보다 작으므로 레지스터 U(246)의 값을 메모리(160)에 다시 저장하도록 제어신호를 컨트롤회로(220)에서 공급하며 레지스터 U(246)의 데이터가 메모리(160)에 저장되면 컨트롤 회로(220)는 연산이 끝났음을 지시하는 제어신호를 프로세서(150)에 제공한다. 만일 버로우 신호가 0이면 레지스터 U(246)의 값이 모듈러 M보다 큰 경우이므로 뺄셈 연산이 수행되어 현재 메모리(160)에 저장된 값이 모듈러 곱셈의 결과이므로 컨트롤 회로(220)는 프로세서(140)에 연산이 끝났음을 알려준다.
컨트롤 회로(220)로부터 연산이 끝났음을 알리는 제어신호를 받은 프로세서(150)는 모듈러 곱셈 연산의 결과를 메모리(160)로부터 데이터 버스(155)를 통해 로드하여 사용한다.
결국 본 발명에 따른 모듈러 곱셈 회로는 512∼1024비트 이상의 큰 데이터에 대해 모듈러 곱셈 연산을 수행하는 경우에 연산에 필요한 회로를 32비트 데이터 곱셈기와 32비트 덧셈기를 이용하여 적은 면적으로 효율적으로 구현하며, 메모리에 액세스하는 횟수를 줄여서 빠른 연산을 수행하기 위하여 내부에 레지스터를 사용하여 중간값을 저장한 후, 최종적으로 모든 연산이 끝난 후에 결과값을 저장하기 위해 메모리에 한 번만 액세스함으로써 모듈러 곱셈기의 속도를 증가시키는 것이다.
상기에서는 본 발명의 일 실시예에 국한하여 설명하였으나 본 발명의 기술이 당업자에 의하여 용이하게 변형 실시될 가능성이 자명하다. 이러한 변형된 실시예들은 본 발명의 특허청구범위에 기재된 기술사상에 포함된다고 하여야 할 것이다.
전술한 바와 같은 본 발명은 소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하며 중간값을 저장하는 레지스터를 사용함으로써모듈러 곱셈 연산을 적은 회로 면적에서 고속으로 수행할 수 있다. 따라서 고가의 전자 제품 등과 같이 사용에 있어 사용자의 신원 확인이 필요하고 필요에 따라 타인의 접근을 제한하는 기능을 필요로 하는 모든 장치, 특히 스마트 카드 시스템과 암호 프로세서 등의 소형 패키지에 적용되어 보안성 및 기밀성을 향상시킬 수 있는 효과가 있다.

Claims (20)

  1. 삭제
  2. 정보를 모듈러 곱셈 연산하기 위한 데이터가 저장된 메모리와, 모듈러 곱셈 연산을 요청하며 그 연산 결과를 상기 메모리로부터 로드하여 사용하는 프로세서를 포함하는 특정 시스템에서 모듈러 곱셈 연산을 수행하는 모듈러 곱셈 장치에 있어서,
    상기 메모리로부터 모듈러 곱셈 연산에 필요한 데이터를 입력받아 저장하며 상기 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 중간값을 저장하는 레지스터와,
    소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하면서 중간값은 상기 레지스터에 저장하고 결과값을 상기 메모리에 저장하는 모듈러 회로와,
    상기 결과값과 모듈러 값과의 비교 결과에 따라 상기 결과값을 선택적으로 보정하는 리덕션 회로와,
    상기 레지스터와 모듈러 회로 및 리덕션 회로에 각종 제어 신호를 출력하여 모듈러 곱셈 연산을 주관하는 컨트롤 회로를 포함하며,
    상기 모듈러 회로는
    상기 레지스터에서 곱셈 연산을 위한 데이터를 선택하며 상기 곱셈 연산의 결과를 상기 레지스터에 저장하기 위한 경로를 설정하는 제 1 데이터 선택 회로와,
    상기 레지스터에서 덧셈 연산을 위한 데이터를 선택하는 제 2 데이터 선택 회로와,
    상기 제 1 데이터 선택 회로에 의하여 공급된 데이터를 입력받아 특정 비트이상 데이터를 소정 비트씩 반복하여 곱셈 연산을 수행하는 곱셈기와,
    상기 제 2 데이터 선택 회로에 의하여 공급된 데이터를 입력받아 덧셈 연산을 수행하며 상기 곱셈기의 출력 중 상위 소정 비트 결과를 다음 곱셈의 결과와 더하여 연산하는 덧셈기와,
    특정 비트 이상의 큰 데이터를 상기 곱셈기와 덧셈기를 이용하여 반복적으로 계산할 때 발생하는 각 중간값을 적정 위치에 저장하기 위한 위치를 지정하는 제 3 데이터 선택 회로와,
    상기 곱셈기와 덧셈기에 의한 연산 중간값을 상기 제 3 데이터 선택 회로에 의하여 지정된 위치에 저장하는 레지스터 U를 포함하는 모듈러 곱셈 장치.
  3. 제 2 항에 있어서, 상기 덧셈기는
    전체 데이터의 곱셈 연산의 결과를 저장하는 상기 레지스터 U에 결과값을 저장하기 전에 최상위 워드의 캐리 값을 계산하기 위해 사용되는 것을 특징으로 한 모듈러 곱셈 장치.
  4. 제 2 항에 있어서, 상기 레지스터 U는
    모듈러 곱셈 연산을 수행하는 모듈러 값보다 1워드 더 큰 크기를 갖는 것을특징으로 한 모듈러 곱셈 장치.
  5. 제 2 항에 있어서, 상기 레지스터 U는
    최상위 워드를 최하위의 1비트만 사용하며, 모듈러 곱셈 연산을 수행하는 모듈러 값보다 모듈러 곱셈 연산하는 데이터의 길이보다 1비트 더 긴 것을 사용하는 것을 특징으로 한 모듈러 곱셈 장치.
  6. 제 2 항에 있어서, 상기 레지스터 U는
    상기 곱셈기를 이용한 모듈러 곱셈 연산의 결과를 순차적으로 하위 워드에서 상위 워드로 저장하는 것을 특징으로 한 모듈러 곱셈 장치.
  7. 제 2 항에 있어서, 상기 곱셈기는
    곱셈 연산과 덧셈 연산을 한 번에 수행할 수 있는 애디티브(additive) 덧셈기를 사용하며, 상기 제 1 데이터 선택 회로는 상기 컨트롤 회로의 제어 신호에 따라 입력 레지스터 또는 중간값을 저장하는 레지스터의 해당 데이터를 선택하여 상기 애디티브 덧셈기로 공급하는 것을 특징으로 한 모듈러 곱셈 장치.
  8. 제 2 항에 있어서, 상기 곱셈기는
    두 개의 32비트 입력 데이터 곱에 두 개의 32비트 데이터를 더해서 64비트의 출력을 갖는 곱셈기를 사용하여 32비트 곱셈을 위하여 승수는 32비트 데이터를 이용하고 피승수는 8비트 또는 16비트씩 나누어서 반복적인 곱셈을 수행하면서 32비트의 데이터를 더하는 연산을 수행하는 것을 특징으로 한 모듈러 곱셈 장치.
  9. 정보를 모듈러 곱셈 연산하기 위한 데이터가 저장된 메모리와, 모듈러 곱셈 연산을 요청하며 그 연산 결과를 상기 메모리로부터 로드하여 사용하는 프로세서를 포함하는 특정 시스템에서 모듈러 곱셈 연산을 수행하는 모듈러 곱셈 장치에 있어서,
    상기 메모리로부터 모듈러 곱셈 연산에 필요한 데이터를 입력받아 저장하며 상기 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 중간값을 저장하는 레지스터와,
    소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하면서 중간값은 상기 레지스터에 저장하고 결과값을 상기 메모리에 저장하는 모듈러 회로와,
    상기 결과값과 모듈러 값과의 비교 결과에 따라 상기 결과값을 선택적으로 보정하는 리덕션 회로와,
    상기 레지스터와 모듈러 회로 및 리덕션 회로에 각종 제어 신호를 출력하여 모듈러 곱셈 연산을 주관하는 컨트롤 회로를 포함하며,
    상기 리덕션 회로는
    상기 모듈러 곱셈 연산이 끝난 후 상기 각 중간값과 모듈러 값을 하위 워드에서부터 소정 비트씩 차례로 입력받아 뺄셈 연산을 수행하는 뺄셈기와,
    상기 뺄셈 연산의 값과 버로우(Borrow)값을 저장하는 레지스터 S와,
    상기 뺄셈기의 버로우값을 검사하여 상기 연산 결과값을 상기 중간값으로 다시 저장할 것인지 아니면 결과값 보정을 위한 뺄셈 연산을 수행하면서 상기 메모리에 저장된 값을 그냥 둘 것인지를 결정하는 출력신호 선택 회로를 포함하는 모듈러 곱셈 장치.
  10. 제 9 항에 있어서,
    상기 레지스터 S에 저장된 뺄셈 연산의 값은 다음 상위 워드의 뺄셈 연산 과정에서 상기 메모리에 저장되는 것을 특징으로 한 모듈러 곱셈 장치.
  11. 제 9 항에 있어서,
    상기 레지스터 S에 저장된 버로우값은 다음 상위 워드의 뺄셈 연산에 사용되기 위해 다시 상기 뺄셈기에 입력되는 것을 특징으로 한 모듈러 곱셈 장치.
  12. 제 9 항에 있어서,
    상기 뺄셈기에 의한 하위 워드에서 최상위 워드까지 뺄셈 연산의 수행이 끝나면 상기 메모리에는 모듈러 곱셈의 결과에서 모듈러 값을 뺀 결과가 저장되는 것을 특징으로 한 모듈러 곱셈 장치.
  13. 제 9 항에 있어서, 상기 출력신호 선택 회로는
    상기 모듈러 회로에 의한 중간값과 모듈러 값의 최상위 워드 데이터의 뺄셈 연산이 끝난 후에 상기 뺄셈기에서 발생한 버로우 신호가 있으면 상기 중간값이 모듈러 곱셈 연산의 결과값으로 출력되도록 상기 메모리에 저장하는 것을 특징으로 한 모듈러 곱셈 장치.
  14. 제 13 항에 있어서,
    상기 모듈러 곱셈 연산의 결과값은 상기 메모리에 순차적으로 저장되는 것을 특징으로 한 모듈러 곱셈 장치.
  15. 제 13 항에 있어서,
    상기 모듈러 곱셈 연산의 결과값이 상기 메모리에 저장되면 상기 컨트롤 회로는 모듈러 곱셈 연산이 끝났음을 알려주는 제어신호를 상기 프로세서로 전송하는 것을 특징으로 한 모듈러 곱셈 장치.
  16. 제 9 항에 있어서, 상기 출력신호 선택 회로는
    상기 모듈러 회로에 의한 중간값과 모듈러 값의 최상위 워드 데이터의 뺄셈 연산이 끝난 후에 상기 뺄셈기에서 발생한 버로우 신호가 없으면 상기 컨트롤 회로가 모듈러 곱셈 연산이 끝났음을 알려주는 제어신호를 상기 프로세서로 전송하는 것을 특징으로 한 모듈러 곱셈 장치.
  17. 정보를 모듈러 곱셈 연산하기 위한 데이터가 저장된 메모리와, 모듈러 곱셈 연산을 요청하며 그 연산 결과를 상기 메모리로부터 로드하여 사용하는 프로세서를 포함하는 특정 시스템에서 모듈러 곱셈 연산을 수행하는 모듈러 곱셈 장치에 있어서,
    상기 메모리로부터 모듈러 곱셈 연산에 필요한 데이터를 입력받아 저장하며 상기 모듈러 곱셈 연산을 수행하는 과정에서 발생하는 중간값을 저장하는 레지스터와,
    소정 비트 곱셈 연산을 반복하여 특정 비트 이상 데이터의 모듈러 곱셈을 수행하면서 중간값은 상기 레지스터에 저장하고 결과값을 상기 메모리에 저장하는 모듈러 회로와,
    상기 결과값과 모듈러 값과의 비교 결과에 따라 상기 결과값을 선택적으로 보정하는 리덕션 회로와,
    상기 레지스터와 모듈러 회로 및 리덕션 회로에 각종 제어 신호를 출력하여 모듈러 곱셈 연산을 주관하는 컨트롤 회로를 포함하며,
    상기 컨트롤 회로는
    모듈러 곱셈 연산 수행을 위해 상기 메모리에서의 데이터 로드(load)를 위한 제어신호와 모듈러 연산을 수행하기 위해 모듈러 곱셈 연산을 수행하는데 필요한 모든 제어신호를 제공하는 것을 특징으로 한 모듈러 곱셈 장치.
  18. 제 17 항에 있어서, 상기 컨트롤 회로는
    모듈러 곱셈 수행을 위해 상기 메모리로부터 상기 모듈러 회로로 필요한 데이터를 순차적으로 읽어 들이기 위해 필요한 메모리 주소와 데이터를 읽고 쓰기 위한 메모리 제어 신호들을 상기 메모리에 제공하는 것을 특징으로 한 모듈러 곱셈 장치.
  19. 제 17 항에 있어서, 상기 컨트롤 회로는
    상기 메모리에서 상기 모듈러 회로로 입력되는 데이터들을 상기 레지스터에 선택적으로 저장하기 위한 레지스터 제어신호를 생성하고, 상기 레지스터에 순차적으로 저장되는 데이터들을 이용하여 모듈러 곱셈을 수행하는 과정에 필요한 제어 신호들을 생성하는 것을 특징으로 한 모듈러 곱셈 장치.
  20. 제 17 항에 있어서, 상기 컨트롤 회로는
    모듈러 곱셈 연산이 수행된 후 결과값을 상기 메모리에 저장하는데 필요한 제어신호와 메모리 주소 및 메모리 제어 신호를 생성하고, 상기 모듈러 곱셈 연산이 종료되었음을 알리는 제어 신호를 상기 프로세서에 전송하는 것을 특징으로 한 모듈러 곱셈 장치.
KR10-2001-0078127A 2001-12-11 2001-12-11 모듈러 곱셈 장치 KR100449491B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0078127A KR100449491B1 (ko) 2001-12-11 2001-12-11 모듈러 곱셈 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0078127A KR100449491B1 (ko) 2001-12-11 2001-12-11 모듈러 곱셈 장치

Publications (2)

Publication Number Publication Date
KR20030048243A KR20030048243A (ko) 2003-06-19
KR100449491B1 true KR100449491B1 (ko) 2004-09-21

Family

ID=29574197

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0078127A KR100449491B1 (ko) 2001-12-11 2001-12-11 모듈러 곱셈 장치

Country Status (1)

Country Link
KR (1) KR100449491B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102214836B1 (ko) * 2020-07-24 2021-02-09 한양대학교 에리카산학협력단 효율적인 양자 모듈러 곱셈기 및 양자 모듈러 곱셈 방법
US20230316121A1 (en) * 2020-07-24 2023-10-05 Industry-University Cooperation Foundation Hanyang University Erica Campus Efficient quantum modular multiplier and quantum modular multiplication method
CN112685003B (zh) * 2021-01-05 2024-05-28 南京大学 一种用于获取同源密码的模乘结果的运算装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
KR19990064878A (ko) * 1999-05-18 1999-08-05 최돈익 고속의 모듈라 멱승 연산기
KR19990086179A (ko) * 1998-05-26 1999-12-15 윤종용 모듈러 연산장치 및 그 방법
KR20000000770A (ko) * 1998-06-03 2000-01-15 정선종 모듈러 곱셈장치
KR20000008153A (ko) * 1998-07-10 2000-02-07 윤종용 모듈러 연산장치 및 그 방법
KR20000009252A (ko) * 1998-07-22 2000-02-15 윤종용 모듈러 연산장치 및 모듈러 연산기능을 갖는 ic 카드

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
KR19990086179A (ko) * 1998-05-26 1999-12-15 윤종용 모듈러 연산장치 및 그 방법
KR20000000770A (ko) * 1998-06-03 2000-01-15 정선종 모듈러 곱셈장치
KR20000008153A (ko) * 1998-07-10 2000-02-07 윤종용 모듈러 연산장치 및 그 방법
KR20000009252A (ko) * 1998-07-22 2000-02-15 윤종용 모듈러 연산장치 및 모듈러 연산기능을 갖는 ic 카드
KR19990064878A (ko) * 1999-05-18 1999-08-05 최돈익 고속의 모듈라 멱승 연산기

Also Published As

Publication number Publication date
KR20030048243A (ko) 2003-06-19

Similar Documents

Publication Publication Date Title
EP1320027B1 (en) Elliptic curve cryptosystem apparatus, method and program
EP0933695B1 (en) IC card equipped with elliptic curve encryption processing facility
US6397241B1 (en) Multiplier cell and method of computing
US6748410B1 (en) Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
US6434585B2 (en) Computationally efficient modular multiplication method and apparatus
US6820105B2 (en) Accelerated montgomery exponentiation using plural multipliers
US6356636B1 (en) Circuit and method for fast modular multiplication
US20040105541A1 (en) Cryptography processor
US6182104B1 (en) Circuit and method of modulo multiplication
KR100436814B1 (ko) 아이씨카드용 알에스에이 암호 연산 장치
EP1808762B1 (en) Encryption processing apparatus, encryption processing method, and computer program
US8291223B2 (en) Arithmetic circuit for montgomery multiplication and encryption circuit
EP1068565A2 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
US20210226789A1 (en) Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product
US7225335B2 (en) Encryption apparatus
KR100449491B1 (ko) 모듈러 곱셈 장치
KR100416291B1 (ko) 타원곡선암호화의 유한체 역원과 승산 장치 및 그 방법
EP1818810A2 (en) Circuit and method for multiplying long integer values
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
KR100481586B1 (ko) 모듈러 곱셈 장치
CN114510217A (zh) 处理数据的方法、装置和设备
Fischer et al. Scalable rsa processor in reconfigurable hardware-A soc building block
US8135129B2 (en) Protection of a modular exponentiation calculation performed by an integrated circuit
KR100399048B1 (ko) 타원곡선 암호화 장치
JP2001147639A (ja) 公開鍵暗号鍵対生成装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20080905

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee