KR100848412B1 - 정수연산필드의 범위를 확장하는 장치 및 방법 - Google Patents

정수연산필드의 범위를 확장하는 장치 및 방법 Download PDF

Info

Publication number
KR100848412B1
KR100848412B1 KR1020027015396A KR20027015396A KR100848412B1 KR 100848412 B1 KR100848412 B1 KR 100848412B1 KR 1020027015396 A KR1020027015396 A KR 1020027015396A KR 20027015396 A KR20027015396 A KR 20027015396A KR 100848412 B1 KR100848412 B1 KR 100848412B1
Authority
KR
South Korea
Prior art keywords
character
multiplier
register
characters
accumulator
Prior art date
Application number
KR1020027015396A
Other languages
English (en)
Other versions
KR20030093905A (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
Priority claimed from IL13615100A external-priority patent/IL136151A0/xx
Priority claimed from IL13967400A external-priority patent/IL139674A/en
Application filed by 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 filed Critical 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드
Publication of KR20030093905A publication Critical patent/KR20030093905A/ko
Application granted granted Critical
Publication of KR100848412B1 publication Critical patent/KR100848412B1/ko

Links

Images

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
    • 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/724Finite field arithmetic
    • 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/728Methods 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

Landscapes

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

Abstract

직/병렬 몽고메리 모듈러 곱셈방법의 확장은 출원인에 의해 먼저 시행된 동시에 일어나는 약분에 의해 가능하며, 소수 및 GF(2q) 다항식에 근거한 숫자필드에서 혁신적으로 수행하도록 적합화된다. 따라서, 본 장치는 다수의 예측함수를 수행하여 전의 모듈러 곱셈 과정들을 강화하여 피연산자들의 흐름을 단순화한다.

Description

정수연산필드의 범위를 확장하는 장치 및 방법{Extending the range of computational fields of integers}
본 발명은 암호보조처리장치를 가속화시키도록 동작하는 조작장치에 관한 것으로, 부가적이긴 하나 그에 전속되는 것은 아니지만 다항식에 근거한 소수 필드 계산용 가속처리장치에 관한 것이며, 특히 타원형 곡선과 RSA형 연산을 위해 설계된 모듈러 연산 공용키 암호 보조처리기들(modular arithmetic public key cryptographic coprocessors)내에서 정수 연산필드들의 범위 및 직렬입력피연산자들의 폭을 확장해주는 장치에 관한 것이다.
연산장치들의 보안강화 및 성능가속화에 관한 기술들이 출원인의 미국특허 5,742,530 (이하 "P1"이라 함), 5,513,133, 5,448,639, 5,261,001; 및 5,206,824 및 공개된 PCT 특허출원 PCT/IL98/00148(WO98/50851); 및 대응 미국특허출원 09/050958 (이하 "P2"라 함), Onyszchuk 등의 미국특허 4,745,568; Omura 등의 미국특허 4,5877,627 및, 출원인의 미국특허출원 09/480,102들에 나타나 있으며, 이들의 개시내용들은 참고로 본 출원내용으로 통합된다. 출원인의 미국특허 5,206,824는 다항식에 근거한 곱셈과 제곱을 실행 동작하는 초기의 장치를 보여주는데, 그것은 소수필드에서는 연산을 수행할 수 없고, 다항식에 근거한 연산에서는 인터리빙(Interleaving)되도록 설계되지 못한다. 다항식에 근거한 계산에서 확장필드를 사용하는 접근에 관한 추가적인 분석이 Parr,C.,F.Fleischmann 및 P.Soria-Rodriguez의 "합성지수를 가진 갈로아 필드내의 공용키 알고리즘용 빠른 연산 (Fast Arithmetic for Public-Key Algorithms in Galois fields with Composite Exponent)", 컴퓨터 관련 IEEE 보고서, 48권, 10번, 1999.10.10 (이하 "Paar"라 함)에서 이루어졌다. W.Wesley Peterson과 E.J. Weld on Jr.는 "에러정정 부호들(Error-Correcting Codes)"의 제 2판, 캠브리지, 매스의 MIT출판사에 의해 1972년 출간된 174-179쪽에서, 다항식에 근거한 나머지수 시스템 GF(2q)에서 나눗셈을 실행하기 위한 회로를 실증하였다, (이하 "피터슨"이라 함). 피터슨의 회로는 승수(multiplier)가 정확히 모듈러스(modulus)의 길이인 장치에서만 사용될 수 있다. 통상적으로, 그것은 현 장치들보다 2배나 더 긴 장치를 요구하고, 간결한 실행(Compact implementation)을 위한 비용의 측면에서도 효과적이지 않다. 그것은 인터리브 실행(interleaved implementations)에 사용될 수 없고, ℓ이 1보다 더 긴 곳에는 유용하지 않으며, 때문에 그는 멀티비트 문자(multibit character)의 Yo를 결정하기 위한 예측장치(anticipatory device)를 제공하지 못한다.
반면에 Knuth [D. Knuth, The art of computer programming, vol. 2: Seminumerical algorithms, Addison-Wesley, Reading Mass., 1981] 407쪽은, 다항식에 근거한 나눗셈에서 싱글 ℓ비트 문자(single ℓbit character)에 관한 통상적인 나눗셈처리의 그러한 사용을 암시하며, 이 내용에서, 우리는 몫(quotient)에서 다음 문자를 예상하는 방법을 추측할 수 있고, 이 발명은 논리구성을 결정론적으로 사용함으로써 몫의 다음 문자를 예측하기 위한 방법을 공개하고 있다.

본 발명의 목적은 다항식과 소수(prime integer)에 근거한 숫자 필드 내에서 대수(large number) 연산을 실행하도록 작동하고, 변경된 근승수들(varied radix multipliers)에 관한 인터리브 모듈러(interleaved modular) 곱셈 및 약분을 동시에 실행하기 위한 동일한 예측 방법을 사용하는 마이크로전자 전용의 계산유닛을 제공하는 데 있다.
또한 본 발명의 다른 목적은 소형의 마이크로전자 전용 계산논리유닛에 관한 것으로, 그것은 매우 큰 정수의 모듈러 및 통상(자연수, 정수들의 비음수 영역)의 곱셈, 나눗셈, 덧셈, 뺄셈 및 지수계산을 실행하도록 하는 데 있다. 단순화된 다항식에 근거한 곱셈 및 제곱을 위한 몽고메리(Montgomery) 방법들 및 역포맷방법을 사용하는 모듈러 곱셈 및 제곱을 언급할 때, 슈퍼스칼라(Superscalar) 모듈러 계산 코프로세서(Coprocessor), SMAP, MAP 혹은 SuperMAPTM과 같은 장치의 특정부분들이 참조되고, 또한 본 출원인의 1998년 3월 31일자로 출원하여 계류 중인 미국특허출원번호 09/050,958 및 이의 일부계속출원인 2000년 1월 10일자 미국특허 출원번호 09/480,102내에 있는 개량에 관련된다.
여기에 기술된 본 발명의 바람직한 실시예들은 휴대용 스마트카드에서 공용키 암호 응용을 위한 모듈러 계산 연산자를 제공하고, 상기 스마트카드는 통상적으로는 유행하는 마그네틱 스트라이프(stripe) 신용 및 은행 카드들과 형태 및 크기에서 동일하다. 미국특허 5,513,133과 5,742,530 및 위에 언급된 출원계류중인 출원인의 기술과 유사한 스마트카드들은 새로운 세대의 공용키 암호 장치들에 사용되어, 컴퓨터, 데이터베이스 및 정밀기기에의 액세스를 제어하게 될 것이며; 그로 인하여 상업적, 군사적 및 가정적 트랜잭션에 있어서의 데이터 흐름을 조정하고 보장하며; 스크램블드 페이 텔레비젼(scrambled pay television) 프로그램 기타 등등의 암호를 해독하고, 유사응용기기의 단말기에서도 같은 기능을 할 것이다. 통상적으로, 이러한 장치들은 또한 컴퓨터, 팩시밀리, 도어잠금장치 및 자동판매기 등에 통합된다.
이 장치의 바람직한 구성은 다수의 마이크로콘트롤러 및 디지털신호 처리장치들 그리고 축약명령어세트 연산설계(reduced instruction set computational designs)에 통합되어 작동되는 장치로서, 한편으로는 이 장치가 호스트의 처리유닛과 병렬적으로 동작한다.
바람직하게는 본 장치는 단지 하나의 곱셈기를 사용하고, 그것은 본질적으로 두개 혹은 세 개의 곱셈기들의 기능을 수행하며, 기본적으로는 출원인의 미국특허 5,513,133 및 더 강화된 미국특허 출원번호 09/050,958 및 PCT출원 PCT/IL98/0048내에 개시된 구조와 비슷하다. 현재의 통상적인 마이크로전자학 기술들을 사용하면, 본 발명의 장치는 스마트카드 마이크로전자회로 상의 메모리를 가진 제어유닛과 통합되어질 수 있다.
다항식에 근거한 필드와 소수필드에서의 하드웨어 실행에서의 주요한 차이는 다항식에 근거한 덧셈 및 뺄셈이 LS로부터 MS까지의 올림 신호 전달이 없는 단순한 XOR 논리 연산이다는 것이다. 결과적으로, 하드웨어 실행에 있어 인접한 셀들 사이의 상호작용은 없고, 뺄셈과 덧셈은 동일한 과정들이다. 저자들이 알게 된 최초의 공용 기록은 이태리 페루지아 내의 Eurocrypt Conference Rump Session에서 행한 Fondazione Ugo bordoni의 Marco Bucci에 의한 짧은 강의였고, 그때 이 구성은 이 기술을 실시하고 있는 기술자들에게 잘 알려져 있었다.
P1 및 P2에 개시된 전 출원인의 장치는 일반적으로 GF(p)필드에서 효율적으로 타원형 곡선 암호 프로토콜들을 계산하도록 마련되었다. GF(2 q )필드에서 사용을 위해, 이 발명에서 우리는 다항식 필드에서 인접한 이진 비트들 사이에 상호작용이 없기 때문에, 계산은 몽고메리 함수들 및 몽고메리 기생자들을 삽입하지 않고 슈퍼스칼라 곱셈기상에서 약분 및 곱셈을 동시에 수행하면서 효율적으로 처리될 수 있다는 것을 보여준다. GF(2 q )에서의 곱셈은 계산기가 바람직하게는 최대유효부분곱(most significant partial products)으로부터 출발함에 따라 수행된다. 약분은 MS 1들을 0으로 리셋(Reset)하는데 필요한 만큼의 많은 모듈리(moduli)를 가산함으로써 수행된다. 이 가산에 있어 올림(carry out)이 없다면, 결과는 자동적으로 모듈리하게(modularly) 감소된다. 이 발명에 있어 다항식 계산은 동일한 구성을 사용함으로써 수행되어지고, GF(2 q )에서 피연산자는 MS문자에 먼저 공급되고, 모든 내부 올림(carry) 신호들은 강제적으로 0으로 된다. GF(p)계산은 바람직하게는 P1 및 P2에서처럼 실행되고, 이때 LS문자들은 맨 처음에 처리되고 마지막으로 MS 문자들이 처리된다.
상기 구성은 잠재적으로 보다 빠른 진행을 허락하도록 연장되는데, 그것은 시리얼 승수들이 ℓ비트폭 문자들이고, 각각의 클럭(clock)에서 ℓ비트 문자는 올림저장누산기(carry save accumulator), 즉 CSA로부터 보내지기 때문이다. 이것은 예측 처리(Yo)를 다소 복잡하게 하는데, 그것은 싱글 비트폭 버스의 경우 모드 2x 베이스(mod 2x base) 분의 홀수의 역수도 또한 홀수이고, 피승수(Jo)의 최소유효비트(Least significant bit)는 항상 1 이었기 때문이다. 그러나 양쪽의 숫자필드들의 경우, 약분처리는 동일하고, 가령 올림(의 감추기)으로부터 전환을 가정하다면, 우리는 우리의 유일한 목적이 k문자 제로스트링을 출력하기 위한 것이라는 것을 기억한다면, 우리는 Yo 함수를 단지 제로화 벡터(zero forcing vector)로 간주할 것이다.
본 발명은 또한 디지털 장치용 구성을 제공하는데, 그것은 통상적인 디지털 프로세서의 주변기기로, 미국특허 5,513,133에 공개된 처리들에 관련하여 계산적, 논리적 및 구조적인 신규한 특징들을 가진다.
동시처리 및 하드웨어 구성이 제공되는데, 이는 나눗셈 없이 계수의 지수화(modular exponentiation)를 바람직하게는 일반적으로 고전적인 곱셈/나눗셈 장치로 수행되는 것과 동일한 수의 조작으로 수행하기 위한 것이며, 특히 고전적인 장치는 일반적으로 큰 스케일의 곱셈과 나눗셈을 함께 각 연산에서 수행하기 위한 것이다. 본 발명의 바람직한 장치의 독특한 특징은 보다 큰 스케일의 예상 제로화 함수의 동시성, 숫자필드의 확장 그리고, 안전한 교신을 위하여 이러한 형식의 유닛을 통합하는 능력이다.
본 발명의 바람직한 실시예에 의해 실현되는 장점들은 결과적으로 일련의 처리들의 동기화된 시퀀스로부터 온다. 이 처리들은 병합되어 n문자 피연산자들에 대한 세 개의 곱셈 연산들을 동시에(병행하여) 달성하며, 하나의 멀티플렉스된 K문자 직렬/병렬 승수를 n 유효 클럭 사이클 내에서 이용하고, 그 결과의 왼편 최종 k 문자들이 상기 곱셈기의 출력버퍼내에 존재한다. 이러한 절차는 등가의 세 개의 곱셈연산들을 두개의 필드들내에서, 몽고메리에 의해 공개된 것처럼, 소수필드와 GF(2 q )내의 등가의 두개의 곱셈 및 하나의 나눗셈 처리를 위해서 수행된다.
피연산자들을 슈퍼 맵(SuperMAP) 내부로 로딩하는 것과 작동 중에 피연산자들의 값들을 검출하는 것을 동기화화고, 그리고 작동 중에 선로딩(preloading)과 다음에 사용될 피연산자들의 동시적인 덧셈을 동기화함으로써, 본 장치는 계산들을 결정론적인 방식으로 실행하도록 동작한다. 모든 곱셈 및 지수 회로가 바람직하게 추가되어 작동 중에 세 개의 제 1 k 문자변수들을 다음번 반복 제곱 시퀀스를 위 하여 사전 로드한다. 감지기가 제공되어 바람직하게는, 세 개의 피연산자들 중의 단지 두 개가 다음번 반복 피승수들로서 선택되고, k 유효 클럭 사이클 대기상태를 제거한다. 조건부 브랜치들은 국부검출과 보상 장치들로 대체되고, 그럼으로써 단순한 제어 메카니즘의 기초를 마련하게 된다. 여기에 서술된 상기 기본 연산들은 일반적으로 결정론적인 시간내에 GF(p)에서 실행되는데 Gressel 등의 미국특허 5,513,133에 개시된 장치 혹은 거래명 ST19-CF58하의 프랑스 루셋내의 STMicroelectronics에 의한 장치를 사용한다.
본 발명의 장치는 특히 최상의 연산을 위하여 외부의 휘발성 메모리상에 적은 요구사항들을 가지며, 그것은 피연산자들이 연산의 전체 길이를 위해 장치내로 로드 되어져 내부에 저장되기 때문이다. 본 장치는 바람직하게는 부속되어 있는 CPU를 이용하여, 단순한 로드와 언로드 그리고, 본 장치에 대한 순차적인 명령들을 수행하게 하는 반면, 상기 MAP은 자신의 대수(large number) 계산을 수행한다. 현재 스마트카드 응용에 이행되고 있는 대수들은 128비트로부터 2048비트 자연수 영역의 범위를 갖는다. 상기 지수 처리 시간은 실질적으로 그것을 제어하는 CPU로부터 독립적이다. 실제에 있어서, 본 장치를 어떤 CPU에 추가시킬 때 구조적 변경들이 일반적으로 필요한 것은 아니다. 상기 하드웨드 장치는 자체적으로 포함되고, 바람직하게는 어떤 CPU 버스에 부속되어져 있다.
일반적으로, 본 발명은 또한 큰 정수들의 계산처리에 관련된다. 이러한 큰 수(대수)들은 일반적으로(비 음수의) 정수들의 자연수 필드 내에 혹은 소수들, GF(p), 합성소수 모듈리(moduli) 및 GF(2 q )내의 다항식에 근거한 수들의 갈루아(Galois) 필드내에 존재한다. 보다 상세하게는, 본 발명의 바람직한 실시예는 모듈러 계산 및 대수들의 지수계산을 실행할 수 있는 장치를 제공하는 데 있다. 그런 장치들은 공용키 암호 인증 및 부호화 프로토콜의 연산들을 실행하기에 적합하고, 부호화 프로토콜들은 소수 필드에서 점점 큰 피연산자에 대하여 다시 계산하고, 현세대의 모듈러 계산 코프로세서들과 함께 효과적으로 실행될 수 없으며, 소프트웨어 실행에 있어 안정적으로 실행될 수도 없다. 바람직하게는, 상기 동일한 일반적인 구조가 타원곡선 실행에서 보다 작은 크기의 차수인 정수들에 관하여 이용된다. 신규의 역모드 곱셈법을 사용함으로써, 제로들을 발생시키는 것이 기생요소 2-n을 가진 계산을 방해하지 않기 때문에 다항식 계산이 유리하다.
상기 구성은 큰 피연산자 정수 계산의 모듈러 실행을 제공하고, 한편으로 직렬 단일 문자 버스를 넓힘으로써, 즉 더 큰 레이딕스(radix)의 사용에 의해 정상적이며 보다 작은 피연산자 계산을 가능하게 한다. 일반적으로, 이것은 계산을 가속화하고, SuperMAP를 실행하기 위한 실리콘 영역을 감소시키고, 대중적인 디지털신호처리기(DSP)와 호환성이 있는 길이의 장치를 생성하는 데 유용하다.
소수 및 홀수의 합성필드에서 모듈러스(modulus; 계수) 곱셈을 위하여, A 및 B는 피승수 및 승수로 각각 정의되고, N은 모듈러 계산에서 모듈러스로서 정의된다. N은 일반적으로 A 또는 B보다 크다. N은 또한 계수값이 저장된 합성수 레지스터를 나타낸다. 어떤 경우에는, N은 일반적으로 A보다 작다. A, B 및 N은 일반적으로 1에서 8비트 길이인 n 문자 길이이다. 그 군의 크기에서 ℓ비트문자들의 수 k는 곱셈기의 크기(셀들의 수)에 의해 정의된다. 유사하게, 다항식에 근거한 GF(2 q )계산에서, 계수 N은 MS비트가 1(a monic)인 n비트 길이이고, A, S 및 B 피연산자는 또한 적당하게 약분된 경우 n비트 길이이다. GF(2 q ) 연산의 결과가 1이라면, 상기 결과값을 계수로 XOR 연산함에 의해 MS 제로의 값으로 바람직하게 약분된다. 바람직한 실시예에 있어, GF(2 q )의 제1 유효비트가 역모드내에 형성됨에 따라, 상기 MAP는 상기 비트가 1인지를 감지할 수 있고 적절한 약분을 수행한다.
소수 필드에서, ≡ 혹은 어떤 예에서는 = 이 모듈러 수들의 합동을 의미하는데 사용되며, 예를 들어 16 ≡2 모드(mod) 7이다. 16은 16이 7로 나누어질 때 2가 나머지로서 7을 법으로 하여(modulo) 2에 "합동한다"고 칭한다. Y 모드 N ≡X 모드 N일 때; Y 및 X 둘은 N보다 크다; 하지만, 양(positive)의 X 및 Y에서는 나머지는 동일하다. 음의 정수 Y의 합동식은 Y+u·N이고, 여기서 N은 계수이고, Y의 합동식이 N보다 작은 것이라면, u는 양의 결과치로 주어지는 가장 작은 정수이다.
GF(2 q ) 합동식이 더 단순한 경우에는, 덧셈 및 뺄셈이 동일하기 때문에, 통상의 계산은 일반적으로 실제적 오버플로우(substantial overflow)를 남기지 않는다. 예를 들어, N=1101이고, A=1001이고, A의 좌측 MS비트가 1이다면, 모듈로 2 연산을 사용하여 A로부터 N을 약분("뺄셈")하여야 한다. 즉, A XOR N = 1001 XOR 1101 = 0100이 된다.
엔기호 ¥는 제한된 의미에서 합동을 표시하기 위해 사용되며, 특히 GF(p)에서 유용하다. 여기 개시된 처리과정 동안에, 값은 종종 원하는 값이거나 혹은 상기 원하는 값에 계수가 더해진 값과 같다. 예를 들어, X¥2 모드 7. X는 2 혹은 9와 동일할 수 있다. X는 2 모드 7에 제한된 합동을 갖도록 정의되어져 있다. 엔기호가 B그리고 0 ≤B< 2N 에서처럼 혹은 다르게 명시되어 위첨자로 사용될 때, B은 B에 합동하는 가장 작은 양수의 B와 동일하거나 혹은 N이 더해진 가장 작은 양수의 합동하는 B와 N 계수의 합과 동일하다. 본 발명에 명시된 다음 기호들은 이 요약내의 뒷부분에 개시되어 있다.
X=A 모드 N의 경우, X는 A를 N으로 나눌 때의 나머지로서 정의되고; 예를 들어, 3=45 모드 7, GF(2 q )에서 더 단순화하면 1111 모드 1001 ≡0110이다.
수이론(number theory)에 의하면, X의 모듈러 곱셈의 역은 X-1로 표현되어지고, 그것은 X·X-1 모드 N=1로 정의된다. X=3이고, N=13이면 X-1=9이고, 즉, 13으로 나누어진 3·9의 나머지는 GF(2 q )에서 1이다.
양 숫자필드들에서, 우리는 일반적으로 지수함수를 사용하여 A의 곱셈역을 선택적으로 계산할 수 있고, 예를 들어, A-1 모드 q ≡Aq-2 모드 q이다.
약어 MS 및 LS는 "most significant" 및 "least significant"를 각각 의미하기 위해서 사용되고, 비트, 문자 및 완전 피연산자 값들을 참조할 때, 디지털 용어 에서 보편적이나, 역모드 다항식 기수(base)에서 피연산자들은 첫째 MS데이터를 로드하고 나서 마지막으로 LS를 로드하며, 데이터워드(data word)의 비트순서는 로드될 때 역전된다.
이 명세서 전반에 걸쳐서, N은 값 N 및 N을 저장하는 시프트 레지스터의 이름으로 지칭된다. 어떤 값의 에스테리스크(asterisk) 위첨자는 그 상태로서 값은 잠재적으로 불완전하거나 변하게 되는 것을 의미한다. A는 지수화 될 수치이고, n은 N 피연산자의 비트길이이다. 초기화후 A가 A*의 형태로 "몽고메리 P필드 정규화될" 때 (A*=2nA- P1내에 설명됨), A* 및 N은 일반적으로 지수화에서 중간 단계를 거친 일정한 값들이다. 연산이 비트의 통상의 비역전 위치화로 실행되는 GF(2 q )연산에서, 우리는 이와 동일한 프로토콜에 의해 구속된다. 그러나, 역전 포맷을 사용하면, 우리의 연산은 최대 유효 제로들을 생성하는데, 이들은 무시되고, 올림이 없으므로 곱셈 시프트(shift)를 표시하지 않는다.
첫 번째 반복(iteration) 동안에, 지수의 초기화후에, B는 A*와 동일하다. B는 또한 레지스터의 이름으로, 그것에는 결국 지수의 요구결과와 같은 누적된 값이 존재한다. S 혹은 S*는 임시값을 나타낸다.; 그리고 S는 레지스터 혹은 레지스터들을 가리키며, 그 GF(p) S내의 어떤 수의 싱글 MS비트를 제외한 모든 비트가 저 장된다.(이 MS비트와 연결된 S*는 S와 동일하다.) S(i-1)은 i번째 반복의 시작 시점에서 S값을 의미한다. 이러한 다항식 연산에서, S에 대한 모듈러 약분을 수행할 필요가 없다.
일반적으로, 소수필드에서의 X와 Y의 몽고메리 곱셈은 실제로 (X·Y·2-n) 모드 N의 실행이고, 여기서 n은 일반적으로 계수내의 문자수이다. 이것은 P (A·B)N으로 기재되고, P필드에서 MM 혹은 곱셈을 의미한다. 몽고메리 수학과 관련해서, 우리는 P필드 및 다항식에 근거한 필드에서 곱셈 및 제곱을 곱셈 및 제곱 연산으로 언급한다.
우리는 GF(2 q )에서 몽고메리형 계산의 이 혁신적인 확장을 역전된 포맷 데이터 차수를 의미하도록 재 정의할 것이고, MS 제로화는 합동을 변화시키지 않거나, 짐이 되는 기생요소를 초기화 하지 않는다. 그래서 우리는 새로운 기호 집합을 도입하여 계산확장의 편의를 도모하고, 더 넓은 직렬 승수 버스들을 갖는 구조를 가능하게 한다. 그런 1 비트 이상의 직렬 승수 스트림(serial multiplier stream)은 자연정수 슈퍼스칼라 승수를 가능하게 하는 데 바람직하다. 그런 승수기(multiplier device)는 32비트 피승수와 4비트 승수를 모듈러 계산 곱셈과 약분을 동시에 수행할 수 있는 장치 내로 받아들일 수도 있다.
직렬/병렬 슈퍼 스칼라 모듈러 승수 증진에 있어서의 기호들
ℓ: 어떤 문자내의 비트수(digit)
r : 승수 문자의 레이딕스(radix; 근), r=2
n : 문자에 있어 피연산자(승수, 피승수 및 계수)의 크기. 몽고메리 계 산의 GF(p)필드에서의 연산의 논증에 있어, ℓ은 1과 동일하고, n 은 계수 피연산자의 비트 길이이다.
k : 문자에서의 직-병렬 승수의 길이
m : 피승수의 인터리브드 슬라이스(interleaved slices)(세그멘트)의 수: m=n/k
Si : i번째 MM 반복의 부분곱 결과; 0 ≤i ≤m-1; So=0
Sio : Z의 첫 번째 k문자 오른편 제로들을 무시한 후의 i번째 반복 결과 의 오른편 문자
S i : i번째 결과의 왼편 n-k 문자들
Sij : Si의 j번째 문자
A : m-k 문자들로 구성된 병렬 피승수
Ai : A의 i번째 k문자 슬라이스, (및/또는 Ai를 저장하는 레지스터)
Ait : Ai의 t번째 문자
B : A 직렬 승수(및/또는 B의 레지스터 저장)
Bo : B의 첫번째 오른편 k문자들
B : B의 마지막 왼편 (n-k)문자들
Boj : Bo의 j 번째 문자
B j : B의 j 번째 문자
N : 계수 피연산자(및/또는 상기 승수를 저장하는 레지스터)
No : N의 오른편 k문자들{GF(p)에서의 LS문자들; GF(2q)에서의 MS문 자들}
N : N의 (n-k) 오른편 문자들{GF(p)에서의 MS문자들; GF(2q)에서의 LS 문자들}
Noj : No의 j 번째 문자
N j : N의 j 번째 문자
Yo : GF(p)에서의 몽고메리 곱셈 및 약분에 요구되는 제로화 변수.
Yo는 k문자들 길이이다.
Yoj : Yo의 j 번째 문자
R : 자리올림 보류 누산기에 존재하는 값의 합계, (풀리지 않은 내부 carry ins를 포함)및 최종 직렬 합산기 460으로부터 온 자리올림비트
Joo : "작동 중에" 한정필드 곱셈 및 약분을 위한 계수 N의 제로화 문자 함수. 예를 들어, ℓ=1이면, Joo는 항상 1과 같다.
Carryj : 근 r 직-병렬 승수의 j 번째 내부 자리올림 문자
Carrya : GF(p) 연산을 위한 출력 직렬 가산기의 근 r 자리올림
Sumj : 근 r 직-병렬 승수의 j 번째 내부 합계 문자
LS : 최소 유효
MS : 최대 유효
∥ : 연결자(concatenation), 예를 들어, A=110, B=1101; A∥B=1101101
오른편(Right Hand) : 모든 GF(p) 연산 데이터 블록들의 최소유효부 분 및 역 GF(2q) 포맷의 MS부분
왼편(Left Hand) : 모든 GF(p) 연산 데이터 블록들의 최대유효부분 및 역 GF(2q) 포맷의 LS부분
GF(p) : 갈루아 필드, 엄밀하게 말하면 덧셈, 뺄셈, 곱셈 및 가나눗셈을 허용하는 합성정수들(두개의 매우 큰 소수들의 곱)을 사용하는 소수 들로 나눈 한정 필드들
GF(2q) : 모듈로(modulo) 2계산을 사용하는 필드들에 한정되는 갈루아 필드들
Figure 112002037761370-pct00001
: 특정 수체계에 걸맞게, 자리올림이 있거나 없이 정수들을 더하거나 빼도록 외부적으로 전환되는 연산자 또는 수단
Figure 112002037761370-pct00002
: GF(p)에 의해 곱셈을 수행하거나 또는 GF(2q)에 의해 곱셈을 수행 하도록 전환되는 연산자 또는 수단
Figure 112002037761370-pct00003
: 숫자필드 스위치, 만약:
Figure 112002037761370-pct00004
=1, 스위치는 모든 자림올림 입/출력을 GF(p)연산에서 가능하게 동작한 다;
Figure 112002037761370-pct00005
=0, 스위치는 모든 자림올림 입/출력을 GF(2q)연산에서 불가능하게 동 작한다;
SuperMAP : 소유권이 있는 슈퍼스칼라 모듈러 계산 프로세서 (Superscalar Modular Arithmetic)의 소속중의 하나로, 본 발명의 주 체이다. 상기 SuperMAP 상표는 유럽에 등록되어 있고, 미국에서는 출원계류중이다.
본 발명의 제 1측면에 따르면, 다항식에 근거한 GF(2q) 및 GF(p)필드 계산에서
Figure 112002037761370-pct00006
곱셈 및 제곱을 수행하고, 직렬공급반복 2승수 B를 사용하면서 k 문자 피승수 세그먼트 Ai 및 k 문자
Figure 112002037761370-pct00007
누산기를 가지고 제곱 및 약분을 수행하기 위한 마이크로전자 장치로서,
특히 한정된 합동에서의 약분은 "작동 중(on the fly)" 시스토릭(systolic) 방식으로, 피승수 Ai 곱하기 승수 B를 계수 N에 관하여 수행되며, 결과는 길어야 2K+1 문자들 정도의 길이이고, 첫 번째 방출되어 무시되는 k개의 제로문자들을 포 함하며, 그것들은 저장되지 않으며, k 문자들은 계수보다 적지 않은 비트를 가지는 것을 특징으로 하며,
각 레지스터가 적어도 n비트 길이의 피연산자들을 보유하도록 동작하고, 각기 B로 지칭된 승수값 및 N으로 표시되는 계수(modulus)를 저장하도록 동작하며, 상기 계수는 2n보다 작은 것을 특징으로 하는 제 1(B) 및 제 2(N) 메인 메모리 레지스터 수단;
계수값이
Figure 112002037761370-pct00008
가산 누산기내의 값에
Figure 112002037761370-pct00009
가산되어, 상기 누산기로부터 나오는 모든 첫 번째 k 문자들이 제로화되도록 하는 때를 "작동 중(on the fly)" 임을 예측하도록 동작하는 디지털 로직 감지기(Yo);
단지 하나의 적어도 k 문자 길이의
Figure 112002037761370-pct00010
가산기, k문자 피승수들을 받아들이도록 동작하는
Figure 112002037761370-pct00011
합산기,
Figure 112002037761370-pct00012
누산기, 피승수값들로 차례로 전환되고 차례로 승수값들을 B레지스터로부터 받아들이도록 동작하며, "작동 중에" 동시에 발생된 예상값을 제 1단계에서 첫 번째 k 방출제로출력문자들화 하도록 동작하는 승수로서 받아들이도록 동작되는
Figure 112002037761370-pct00013
곱셈기를 구비하며, 각 유효기계 사이클에서 적어도 하나의 지정된 피연산자는
Figure 112002037761370-pct00014
누산기내로
Figure 112002037761370-pct00015
가산되는 것을 특징으로 하는, 적어도 하나의 k문자 입력 피승수들용 모듈러 곱셈기;
다음의 세 개의 피승수들 중에 하나 또는 두개로 구성된
Figure 112002037761370-pct00016
누산기로 차례로 전환되며, 제1 피승수는 전부-제로 스트링 값이고, 제2값은 피승수 Ai이고, 제3 값은 상기 계수의 N0 세그먼트인 것을 특징으로 하는 상기 피승수값들;
상기 ℓ비트 k문자 시리얼 입력 Y0 승수값들을 예측하는 예측기;
상기 제 1단계에서 차례로 상기 곱셈기 내부로 입력되고, 첫번째 상기 B피연산자임과 동시에 "작동 중에" 예측된 k문자 스트링 Y0로 구성되어 된 상기 제2승수값이며, 출력에서 제1 방출제로(fisrt emitting zeros)로 강제하는 상기 승수값들;
피승수들이
Figure 112002037761370-pct00017
누산기내로
Figure 112002037761370-pct00018
가산될 때 동시에 값들을 출력하도록 동작하는
Figure 112002037761370-pct00019
누산기;
제 2단계에서 동작하여 최종 모듈러
Figure 112002037761370-pct00020
곱셈결과를 상기
Figure 112002037761370-pct00021
누산기로부터 출력하는 출력 전송 메카니즘을 포함하는 것을 특징으로 하는 마이크로전자 장치가 제공된다.
바람직한 실시예에 따르면, 상기
Figure 112002037761370-pct00022
누산기내로의
Figure 112002037761370-pct00023
합산들은 각각 새롭게 연속적으로 로드된 더 높은 차수의 승수 문자들에 의해 활성화된다.
바람직하게는 상기 승수 문자들은, 만약 상기 입력 B문자와 상기 대응입력 Y0문자 둘 다 0 이라면,
Figure 112002037761370-pct00024
합산이 상기
Figure 112002037761370-pct00025
누산기 속으로 야기되지 않도록 동작하며;
만약 상기 입력 B문자가 1이고 상기 대응입력 Y0문자가 0이라면, 단지 상기 Ai 피승수 내에
Figure 112002037761370-pct00026
가산하도록 동작하고;
만약 상기 B문자가 0이고 상기 대응 Y0문자가 1이라면, 단지 상기 N 계수 내에서
Figure 112002037761370-pct00027
가산하도록 동작하고;
만약 상기 B입력문자 및 상기 대응 Y0문자 둘 다 1이라면, 상기 계수 N의 상기
Figure 112002037761370-pct00028
합산에서 상기 피승수 Ai
Figure 112002037761370-pct00029
가산하도록 동작한다.
바람직하게는, 상기 장치는 피승수값들 Ai와 N을 두개의 지정 프리로드 버퍼들(preload buffers)내로 사전로드(preload)하고, 이러한 값들을 제 3피승수 프리로드 버퍼내로
Figure 112002037761370-pct00030
합산하도록 조작되어, 각각의 피승수값에서 별도로
Figure 112002037761370-pct00031
가산해야 할 필요성을 제거한 것을 특징으로 한다.
바람직하게는, 상기 승수값들은 입력에 있어 직렬 싱글 문자이고
Figure 112002037761370-pct00032
누산기의 상기 출력은 직렬 싱글 문자 출력이고, 상기 Y0 감지기는 단지 하나의 문자를 클럭 전환 시에(in a clocked turn) 예측하도록 동작한다.
바람직한 실시예에서, 상기
Figure 112002037761370-pct00033
누산기는 모듈로(modulo) 2, XOR 덧셈/뺄셈을 수행하며, 덧셈 및 뺄셈 구성요소들에서 모든 올림 비트들(carry bits)은 무시되어서, 이에 의해 오버플로우용 유보를 막아주고 더욱이 계산에서 합동을 제한한 다.
바람직하게는, 모든 올림 입력들은 제로로 디스에이블 되고, 이것은
Figure 112002037761370-pct00034
=0으로 표시되고, 일반적으로 다항식에 근거한 곱셈을 실행하도록 동작한다.
바람직하게는
Figure 112002037761370-pct00035
는 GF(2q)에서 계산하는 회로방정식내의 요소에 대하여 작용하는 제로와 동일하고,
Figure 112002037761370-pct00036
는 삭제된 회로 및 모든 가산기들과 감산기들을 나타내며, 지정된
Figure 112002037761370-pct00037
는 XOR, 모듈로 2 덧셈/뺄셈 요소들로 줄어든다.
바람직한 실시예는 k개의 제 1 방출 제로들은 다음에 차례로 Yo문자를 예측하는 데 있어서 다음 네 개의 양들(quantities)에 의해 제어되도록 적합화 된다.
ⅰ. 상기 Ai 레지스터의 오른편 문자 곱하기 상기 B스트림의 상기 Bd 문자의 ℓ비트 모드 2
Figure 112002037761370-pct00038
곱셈에 의한 ℓ비트 결과의 상기 ℓ비트 Sout 비트, A0
Figure 112002037761370-pct00039
Bd 모드 2;
ⅱ.
Figure 112002037761370-pct00040
누산기로부터의 제 1방출 올림 문자,
Figure 112002037761370-pct00041
(CO0);
ⅲ. 상기
Figure 112002037761370-pct00042
누산기의 상기 오른쪽 문자 방출셀로부터 상기 두번째로부터의 ℓ비트 Sout 문자, SO1;
ⅳ. ℓ비트 Jo값, 그것은 No계수 피승수 레지스터내의 오른편 문자의 음의 곱셈역수이다.
여기서, 값들, A0 ·Bd 모드 2,
Figure 112002037761370-pct00043
(CO0) 및 SO1은 문자에 함께
Figure 112002037761370-pct00044
가산되고, "작동 중에" J0문자로 곱해져서 유효한 Y0 제로화 예측문자를 출력하여 제로들의 ℓ비트 탈출스트링화를 강제한다.
상기 장치는 바람직하게는, 다항식에 근거한 피연산자들에 관한
Figure 112002037761370-pct00045
곱셈은 오른편 MS문자들로부터 왼편 LS문자들까지 곱셈하도록 역모드에서 수행되고, 몽고메리식 기식함수들 없이 모듈러 약분된
Figure 112002037761370-pct00046
곱셈을 수행하도록 동작한다.
바람직하게는, 본 장치는 프리로드 버퍼들을 더 포함하고, 그것은 직렬로 공급되고 그곳에서는 피승수값들이 하나 혹은 두개의 메모리수단들로부터 작동 중에 프리로드 버퍼들내부로 사전로드된다.
본 장치는 바람직하게는 추가적인 n 비트 레지스터 S로부터 방출하는 사전 값은 ℓ비트
Figure 112002037761370-pct00047
가산기 회로를 경유하여
Figure 112002037761370-pct00048
누산기의 출력값으로
Figure 112002037761370-pct00049
합산되고, 그 결과 제 1 방출 출력 문자들은 제로로 되고, 그 때 상기 Y0 감지기는 상기
Figure 112002037761370-pct00050
누산 기내에서 상기
Figure 112002037761370-pct00051
합산에 상기 모듈리(moduli)를 추가할 필요성을 감지하도록 조작하고, 여기서 Y0 감지기는 다음에 차례로
Figure 112002037761370-pct00052
추가된 문자들 A0
Figure 112002037761370-pct00053
Bd 모드 2,
Figure 112002037761370-pct00054
(CO0), SO1, Sd
Figure 112002037761370-pct00055
(COz)를 사용함으로써 감지하도록 조작하고, 한정 필드인
Figure 112002037761370-pct00056
합산된 합성 문자들은 작동 중에 상기 ℓ비트 Jo값에 의해
Figure 112002037761370-pct00057
곱셈되고, 이때
Figure 112002037761370-pct00058
는 덧셈을 그리고
Figure 112002037761370-pct00059
은 곱셈을 상기 공정에서 사용된 한정 필드에 적합하게 정의하는 것을 특징으로 한다.
바람직하게는, 가령 ℓ=1이면, J0는 무조건적으로 1이고, 상기 J0
Figure 112002037761370-pct00060
곱셈은 추가적인 하드와이어(hardwire) 없이 무조건적이다.
바람직하게는, 비교자는 GF(p)에서 작업하는 동안 상기
Figure 112002037761370-pct00061
모듈러 곱셈기로부터의 한정필드출력을 감지하도록 조작되고, 여기서 상기 첫 번째 오른편 방출 k 제로 문자들은 무시되고, 상기 출력은 상기 계수 N보다 더 크고, 그럼으로써 모듈러 약분을 제어하도록 조작되는데, 이것은 상기 값이 상기 곱셈기로부터 상기 출력스트림이 예정된 메모리 레지스터로부터 출력될 때이고, 그 결과 제 2메모리 스토리지 수단에 더 작은 곱값들을 할당하는 것을 사전에 억제한다.
바람직하게는, GF(2q)내의
Figure 112002037761370-pct00062
모듈러 곱셈의 경우, 본 장치는 외부의 사전연 산되는 ℓ비트 이상의 제로화 요소 없이 곱해지도록 조작한다.
바람직한 실시예는 A 피연산자값 혹은 B 연산자값의 어느 것을 0으로 리셋(reset)하고 부분 결과값 So을 1로 셋팅(setting)함으로써 Jo 상수를 계산하도록 조작한다.
본 발명의 제 2측면에 따르면, 계수 피연산자 레지스터내의 문자들의 수 n는 k보다 크고, 상기
Figure 112002037761370-pct00063
곱셈 처리는 복수의 인터리브된 반복들내에서 수행되고, 각각의 인터리브된 반복에서
Figure 112002037761370-pct00064
곱셈기로의 피연산자들의 입력으로는, N 계수, B 승수, 사전 연산된 부분결과 S 및, A 피승수의 k문자 스트링 세그멘트로 구성되고, 상기 A0 스트링 세그멘트로부터 상기 Am-1 스트링 세그멘트까지 진척되는 세그멘트들은 각 반복 결과가 다음 차례로 S 임시 결과내로
Figure 112002037761370-pct00065
합산되고, 반복 결과들의 제 1방출 문자들은 0인 것을 특징으로 하며, A 곱하기 B 계수 N의 출력스트림을 생성시키도록 조작하여, 정수들 A 및 B의 인터리브된 한정 필드 모듈러 곱셈을 수행하는 마이크로전자 장치로서,
각 레지스터는 피연산들을 저장 및 출력가능하고, 각각 승수값, 부분결과값 및 N으로 표시된 계수를 저장하도록 동작하는 제 1(B), 제 2(S) 및 제 3(N) 메인 메모리 레지스터들;
상기
Figure 112002037761370-pct00066
누산기내로 차례로 하나 혹은 두개의 복수의 피승수값들을 반복되 는
Figure 112002037761370-pct00067
곱셈처리의 단계들 동안에
Figure 112002037761370-pct00068
합산하도록 조작하며, 차례로 승수들로서 B레지스터의 첫번째 값으로부터, 두번째는 "작동 중에" 예측값 Y0으로부터 입력을 받아들여 각 단계에서 제 1방출 오른편 제로 출력문자들로 하고, 계수 N 레지스터로부터 세번째 값들을 받아들이는 모듈러 곱셈기;
A, B 및 N 레지스터 소스들(sources)로부터 적어도 차례로 값들을 받으며, 다음으로 피승수 제로화 Y0값을 받도록 동작하는 피승수 병렬 레지스터들;
제 1단계동안 승수가 되게 조작하고 제 2단계에서 피승수가 되게 동작하는 이진 스트링을 생성시키도록 동작하는 제 1 방출 제로화 Yo 감지기;
제 1제로값, 피승수 A의 k 문자 스트링 세그먼트인 제 2값 Ai 및, 계수 N의 첫 번째 방출 k문자들인 제 3값 N0로 구성되는 제 1단계용 상기 누산기로 전환되는 피승수 값들;
다음번 반복동안 부분결과를 발생시키는 누산기로부터 나온 값과 합산되도록 동작하는 전의 반복의 결과로부터 얻은 임시결과값 S;
제 2곱셈단계가 진행되는 동안 누산기내로 차례로 입력되며, 제 1제로값, 제 1단계로부터 제위치로 유지된 제 2 Ai 피연산자 및, 제 1단계에서 예측된 제 3Y0값인 피승수값들;
B피연산자의 제 1방출 스트링 세그멘트인 동시에 예측된 Y0 스트링으로 구성된 제 2승수값과 동시에 곱해지는 제 1단계내에서 곱셈기내로 입력되는 제 1 방출 스트링 B0이며, 상기 Y0스트링은 동시에 문자단위로 로드되고 제 2단계동안 프리로드 피승수 버퍼내로 생성되는 것을 특징으로 하는 승수값들;
제 2단계가 진행되는 동안에 본 장치내로 입력되고, 각각 B로 표기된 B피연산자의 왼편 n-k 문자값들 및, N으로 표기된 N계수의 왼편 n-k 문자들인 두개의 승수값들; 및
마지막 단계에서 누산기내에 존재하는 결과값의 왼편 세그멘트를 결과 레지스터내로 전송하도록 동작하는 곱셈 플러쉬 아웃수단(flush out device)를 구비하는 것을 특징으로 하는 마이크로전자 장치가 제공된다.
바람직하게는, 본 장치는 다항식에 피연산자들에서 곱셈을 수행하도록 조작되고, MS 문자들로부터 LS문자들까지 곱셈하여, 역모드에서 수행되며, 출원인의 미국특허 5,742,530에서처럼 몽고메리형 기생함수들 없이도 모듈러 약분을 수행하도록 조작된다.
본 발명의 제 3측면에 따르면, 피승수의 제 1방출값들 및 B 승수의 현 입력들, 상기
Figure 112002037761370-pct00069
누산기로부터의 자리올림값들(carry out value), 상기
Figure 112002037761370-pct00070
누산기로부터의
Figure 112002037761370-pct00071
합산값들, 사전 계산된 부분 결과로부터의 현재값들, 상기
Figure 112002037761370-pct00072
누산기로부터 사전 부분 결과를 가지고서 결과를
Figure 112002037761370-pct00073
합산한
Figure 112002037761370-pct00074
가산기로부터의 자리올림값을 사용하여 Yo값을 예측하도록 동작하는 마이크로전자 장치가 제공된다.
바람직하게는, 본 발명은 상기 장치로부터의 k 첫 번째 방출값들이 제로문자들이다는 것을 보증하도록 적합화되고, 상기 적합화는 다음 기호들을 사용하여 다음의 순서로 Yo문자의 예측을 포함한다.
ⅰ. Ai 레지스터의 오른편 문자 곱하기 B 스트림의 Bd 문자의 ℓ비트 모드 2곱셈에 의한 ℓ비트의 결과의 ℓ비트 Sout, A0 ·Bd 모드 2;
ⅱ. 누산기로부터의 제 1방출 실행문자,
Figure 112002037761370-pct00075
(CO0);
ⅲ. 누산기의 오른편 문자 방출셀로부터 두 번째로부터의 ℓ비트 Sout, SOl;
ⅳ. S 스트림으로부터의 다음 순서의 문자값, Sd;
ⅴ. ℓ비트는 Z 출력 풀(Full) 가산기로부터 문자를 실행한다,
Figure 112002037761370-pct00076
(COz);
ⅵ. ℓ비트 Jo값, 그것은 No 계수 피승수 레지스터에서 오른편 문자의 음의 곱셈역수(negative multiplicative inverse)이다;
여기서, 값들, A0 ·Bd 모드 2,
Figure 112002037761370-pct00077
(CO0), SOl, Sd는 문자와 함께 문자에 가산되고, "작동 중은" 제로의 ℓ비트 출력 문자스트링을 출력하게 하는 유효한 Y0 제로화 예측 문자를 출력하는 J0문자로 곱해진다.
다른 실시예에서는, 출력값을 N 계수와 비교하도록 조작되는 적어도 하나의 센서 및, 결과 레지스터의 출력시 제 2뺄셈기를 활성화시키도록 조작되는 메카니즘을 제공하며, 그럼으로써 모듈러 약분값을 출력하고 그것은 더 작은 결과를 위해 제 2메모리 스토리지(storage)를 할당할 필요성을 배제하므로 출력 결과값에 제한되어 합치된다.
다른 실시예에서는, 두개의 피승수들의
Figure 112002037761370-pct00078
합산인 값은 프리로드 문자 버퍼내로 적어도 하나의 k 문자들 메모리 수단 레지스터와 공동으로 첫 번째 값들중 하나가 다른 프리로드 버퍼내부로 로드되는 동안에 로드된다.
본 발명의 제 4면에 따르면,
하나의
Figure 112002037761370-pct00079
누산기 및, 일련의 인터리브된
Figure 112002037761370-pct00080
모듈러 곱셈들과 제곱들을 수행하도록 조작되며, 동시에 동치의 세 개의 자연정수 곱셈연산들을 수행하도록 적합화되고, 그 결과가 지수가 되게 하는 예측 제로화 메카니즘을 가진 장치를 제공한다.
실시예에서, 다음 순서에 사용되는 피승수들은 프리로드 레지스터 버퍼내로 작동 중에 사전 로드된다.
다른 실시예에서, 장치 버퍼들과 레지스터들은 값들이 외부 메모리원들로부 터 로드되도록 조작되고, 상기 버퍼들과 레지스터들은 연산동안 외부 메모리원들로 언로드 되도록 조작되어서, 피연산자들의 최대 크기가 이용가능한 메모리 수단에 의존된다.
다른 실시예에서는, 또한 메모리 레지스터 수단을 제공하며, 상기 메모리 수단은 일반적으로 직렬 싱글 문자 입력/직렬 싱글 문자 출력, 병렬의 적어도 k 문자 입력/병렬의 적어도 k 문자 출력, 직렬 싱글 문자 입력/병렬의 적어도 k 문자 출력 및, 병렬 k 문자 입력/직렬 싱글 문자 출력이다.
바람직하게는, 본 장치는 곱셈형 반복의 마지막 단계 동안에, 승수 입력값들은 제로 문자들이고 그것은 자리올림 보류
Figure 112002037761370-pct00081
누산기 메모리(carry save accumulator memory)의 왼편 세그멘트를 플러쉬 아웃(flush out)하도록 조작한다.
바람직하게는, 본 장치는 다음 순서로 피승수들을 프리로드 메모리 버퍼들내로 급한 경우 사전 로드되게 조작가능하고, 그것은 반복시 그들이 요청되는 것에 앞서 이루어진다.
바람직하게는, 본 장치는 피승수 값들을 프리로드 버퍼들내로 급한 경우 중앙 스토리지 메모리 수단으로부터 사전 로드하도록 조작가능하다.
동일한 장치는 A와 B 둘을 0으로 리셋하고 So=1로 셋팅함으로써 계수의 오른편 k 문자 세그멘트에 관하여, k 문자 몽고메리 상수 Jo를 계산하도록 조작가능하며, 이것은 계속해서 k비트 곱셈을 수행하는 동안에 이루어진다. 그 결과는 Yo 레지스터내에 존재하게 된다.
몽고메리식 계산을 사용하는 모듈러 곱셈 시퀀스
k 문자 자리올림 보류 가산기, 즉 CSA는 다항식 필드 및 소수 필드내에서 직/병렬 슈퍼스칼라 모듈러 곱셈을 위하여 기본이다. 다항식 GF(2q)에 근거한 연산은 바람직하게는 전환된 모든 자리올림 메카니즘으로 실행된다.
상기 직-병렬 슈퍼스칼라 몽고메리 승수는 세 개의 단계들에서 몽고메리 모듈러 결과를 계산하고, 하나의 바람직한 실시예에서 마지막 단계는 상기 CSA(보통 곱셈을 위한 MS, 역모드 다항식 연산을 위한 LS)의 자리올림과 함께 모든 왼편 k 문자 세그멘트의 싱글 클럭 덤프(Single clock dump)이고, 보다 소형의 실시예에서 마지막 단계는 CSA의 내용들의 k 효과적 클럭 시리얼 플러쉬 아웃이다.
전술한 P2 공개에 의하면, Yo 요소는 비트 단위씩 계산되었고, 결과적으로 Jo의 단지 오른편 비트는 1로 정의되어 계수의 오른편 비트의 함수를 정의한다. 이 러한 강화된 장치에서, 상기 장치는 문자열이고, ℓ비트 문자 Yo는 각각의 클럭 사이클에서 발생된다. 전술한 P1 공개에 따르면, Yo는 제 1단계 제로화함수로, 계수값에서 필요한 배수를 누적된 결과에 가산하고, 그래서 관련된 답이 합동하고 mk+1 문자들 보다 결코 더 길지 않으며, 첫 번째 오른편 방출된 문자들이 모두 제로였다. QN ≡0 모드 N 일 때, X+QN ≡X
모듈러 곱셈 시퀀스
연산 초기화에 앞서, 우리는 사전 임시 혹은 랜덤(random) 값들이 장치내에는 존재하지 않고, 왜냐하면 피연산자들 N, B 및 적어도 A의 첫 번째 세그멘트 값은 장치의 레지스터들 내에서 이용가능하기 때문이라고 추정한다. So=0; 초기화에서 부분 곱은 일반적으로 제로이다. 일반적으로, 모듈러 계산은 두개 또는 그 이상의 k 문자 세그멘트들로 구성된 피연산자들상에서 일반적으로 세 개의 구분된 단계들로 실행된다. 계수의 m 세그멘트들이 존재하는 통상의 완전 곱셈의 경우, 일반적으로 m 슈퍼스칼라 곱셈 인터리브된 반복들이 있으므로, 피승수의 각 세그멘트는 총합 승수, 일반적으로 B로 곱해진다.
제 1단계의 과정은 각각의 인터리브된 슈퍼스칼라 곱셈의 (i=0번째 세그멘트)에서 일반적인 슈퍼스칼라 곱셈 누산 상호작용이다.:
Si
Figure 112002037761370-pct00082
Ai·Bo
Figure 112002037761370-pct00083
Yo·No
(Bo 및 Yo는 일련적으로 문자단위로 피연산자의 제 1세그멘트로부터 승수내로 공급되고, Ai 및 No는 병렬 싱글 슬라이스 피연산자들이고, Si는 사전의 반복/연산으로부터의 부분 곱이다. 0번째 제 1반복에서 Si=0)
제 1단계 처리는 두개의 슈퍼스칼라 곱들의
Figure 112002037761370-pct00084
합산을 사전 결과의 오른편 세그멘트로부터 수행한다. 제로의 k문자 스트링은 곱셈기로부터 방출되고, 무시된다.; 즉, 부분의 제 1세그멘트 결과는 장치 버퍼내에 존재하고, 그것은 제 2단계 결과로 합산된다.
제 1단계 결과는 일반적으로 모든 제로들의 직렬 출력된 오른편 세그멘트와 연결된 CSA의 내용들인 R로 구성된다.(GF(p) 연산에 있어서 R에는 추가적인 LS 입력 자리올림 비트가 있다.)
제 2단계의 과정은 일반적인 슈퍼스칼라 곱셈 누적 상호작용이다.:
R
Figure 112002037761370-pct00085
Si
Figure 112002037761370-pct00086
Ai·B
Figure 112002037761370-pct00087
Yo·N
(상기하라, 밑줄쳐진 변수, 예를 들어 B는 피연산자의 잔여 오른편 값이다. 그것은 일반적으로 하나 또는 그 이상의 세그멘트들, 즉 m-1 세그멘트들이다. BN은 연속적으로 문자단위로 승수내로 투입되고, 제 1단계로부터 남아있는 Ai 및 제 1단계에서 승수였고 제 1단계에서 기기내로 로드되어 다음의 반복들에서 피연산자로 되었던 Yo는 병렬 피연산자들이다.)
제 2단계의 끝에서, 일반적으로 m-1 반복들이 이루어진다면, Si의 오른편 세그멘트는 전송되도록 준비된 CSA내에 존재하고, 오른편 슬라이스(k 문자 세그멘트)는 장치로부터 나와 일반적으로 S 레지스터 내로 들어간다. 소수필드에서 곱셈은 통상적인 자리올림 보류 합산 방법에서 수행된다는 것을 주목하라. GF(2q) 역 포맷 모드에서 곱셈은 최대유효문자들로부터 최소유효문자까지 진행된다. Yo 함수는 계수값이 누산기내로 가산되지 않으면 안되는 때를 예측한다. 장치내에서 디스에이블된 자리올림 비트들을 제외하고, 기계적인 과정은 일반적으로 두개의 수 시스템에서와 동일하다.
우리는 한정된 필드에서 제로화 벡터의 Yoj 문자들을 제거하기 위해 사용되는 방법을 공개한다.
계산 : Joj ≡-Noo -1 모드 2
계수에 비교적 중요한 모든 자연 정수들은 양 숫자필드들에서 곱셈 역들을 가지고 있다. Noo는 홀수이고, 그러므로 2의 요소는 가지지 않는다. 모드 2의 모 든 요소들은 2이고, 그래서 최소유효 1 및 유일한 요소가 2인 계수를 가진 수는 비교적 중요하고, Joj는 항상 존재한다. 공식적으로, 홀수 Noo 및 2에서, gcd(Noo,2)=1이다.
상기 함수의 이러한 싱글 문자는 랜덤 로직(random logic), 단순 회로 혹은, 단순 룩업테이블(look up table)로 이행되는 배선(hardwire)일 수 있다. 역모드 포맷에서, 다항식 계수는 오른쪽 자리맞춤을 하고, 명목상 홀수이다. 전형적 지수함수들에서, 두 숫자필드들, 계수 비트의 오른편 비트는 하나이고, 명목상 홀수이며, 홀수 모드 2k의 곱셈 역은 항상 홀수이지 않으면 안된다.
만약, ℓ=1이면, Joo 승수는 명백히 1과 같고, 계산될 필요가 없다.
제 1단계동안 Yo함수에 의해 수행된 문자 출력 결과는 항상 0이고, 결과적으로 SuperMAP의 j 번째 문자 출력 Sij는 다음과 같다:
0=(2R
Figure 112002037761370-pct00088
Sij
Figure 112002037761370-pct00089
Aio·Boj
Figure 112002037761370-pct00090
Yoj·Noo) 모드 2=Zij; 그러므로,
(R
Figure 112002037761370-pct00091
Sij
Figure 112002037761370-pct00092
Aio·Boj) ≡-Yoj·Noo; 및
Yoj ≡-Noo -1(R
Figure 112002037761370-pct00093
Sij
Figure 112002037761370-pct00094
Aio·Boj) 모드 r.
상기 등식으로부터, 우리는 Joo가 두 수시스템에서 바람직하게는 계수의 오른 편 k문자의 모듈러 곱셈 역의 음수값이다는 것을 알고, 모듈로 2 계산에 있어서, 양수 및 음수 값들은 동일하다라는 것을 알 수 있다.
R은 도 2에서의 최종 직렬 가산기, 460으로부터 자리올림 비트에 합산된 CSA에 남아 있는 값의 합계이다. Sij는 i 번째 반복에서 부분곱의 j 번째 비트이다. Aio는 A의 i 번째 슬라이스의 오른편 문자(GF(p)내의 LS)이다. Boj는 B의 j 번째 문자이다. Bo는 몽고메리 연산의 모든 반복들 동안의 상수(승수)이다. Yo는 각 (i 번째) 반복에서 생성된 k 문자 인자이다. Yoj는 반복의 제 1단계의 j 번째 클럭에서 생성된 j 번째 문자이다. N은 m 슬라이스드(sliced) 계수이다. No는 계수의 오른편 슬라이스이다. Noo는 No의 오른편 문자이다.
양 필드들에 있어 슈퍼스칼라 모듈러 곱셈 방법의 공식화
So=0;
For i=0 to m-1(인터리브 반복들)
제 1단계: (각 인터리브의)
R=0
For j=0 to k-1(제 1단계의 각 문자)
Yoj=(Joo(R
Figure 112002037761370-pct00095
Soj
Figure 112002037761370-pct00096
Aio
Figure 112002037761370-pct00097
Boj)) 모드 2
Zij=(R
Figure 112002037761370-pct00098
Sij
Figure 112002037761370-pct00099
Aio
Figure 112002037761370-pct00100
Boj
Figure 112002037761370-pct00101
Yoj
Figure 112002037761370-pct00102
No) 모드 2; 및
R=[(2R
Figure 112002037761370-pct00103
Sij
Figure 112002037761370-pct00104
Aio
Figure 112002037761370-pct00105
Boj
Figure 112002037761370-pct00106
Yoj
Figure 112002037761370-pct00107
No)]/2
k 효과 클럭 사이클 후, Z 스트림의 제 1세그멘트는 모두 제로이고, 무시되었다. 즉, 관련한 Yo, k문자 인자는 새로 준비되어 다음 단계에서 피연산자가 되고, 합산된 R값은 다음 단계에서 사용될 것이다.
제 2단계:
For j=k to n-1
Z ij=(R
Figure 112002037761370-pct00108
S iJ
Figure 112002037761370-pct00109
Aio
Figure 112002037761370-pct00110
B oj
Figure 112002037761370-pct00111
Yoj
Figure 112002037761370-pct00112
N oj) 모드 2;
R=[(2R
Figure 112002037761370-pct00113
S ij
Figure 112002037761370-pct00114
Aio·B oj
Figure 112002037761370-pct00115
Yoj·N oj)]/2
문자에 근거한 직-병렬 승수를 가진 상기 알고리즘의 실행은 상기 프로토콜의 단순한 확장이다.:
(몫(x,y)는 나머지없는 정수분할함수다. 예를 들어, x=10101b고 y=10000b이면, 몫(x,y)=1이다.)
So=0
For i=0 to m-1(인터리브드 루프)
제 1단계 :
For j=0 to k-1
Yoj=
(Joo·Sio
Figure 112002037761370-pct00116
Aio
Figure 112002037761370-pct00117
Boj
Figure 112002037761370-pct00118
Figure 112002037761370-pct00119
·Carryo
Figure 112002037761370-pct00120
Sum1
Figure 112002037761370-pct00121
Quotient(Sio
Figure 112002037761370-pct00122
Sumo,r)))모드 r
For t=0 to k-1(1클럭 플러스로 전 루프)
Sumt=(Sumt+1
Figure 112002037761370-pct00123
Figure 112002037761370-pct00124
·Carryt
Figure 112002037761370-pct00125
Ait
Figure 112002037761370-pct00126
Boj
Figure 112002037761370-pct00127
Yoj
Figure 112002037761370-pct00128
Not) 모드 r
Carryt=(Quotient((Sumt+1
Figure 112002037761370-pct00129
Carryt
Figure 112002037761370-pct00130
Ait
Figure 112002037761370-pct00131
Boj
Figure 112002037761370-pct00132
Yoj
Figure 112002037761370-pct00133
Not), r)
(이 단계에서 승수기의 출력은 '0'이다)
제 2단계:
주요부분
Carrya=0
For j=k to n-1
For t=0 to k-1(1클럭 플러스로 전 루프)
Sumt=(Sumt+1
Figure 112002037761370-pct00134
Figure 112002037761370-pct00135
·Carryt
Figure 112002037761370-pct00136
Ait
Figure 112002037761370-pct00137
Bj
Figure 112002037761370-pct00138
Yot
Figure 112002037761370-pct00139
Nj) 모드 r
Carryt=Quotient((Sumt+1
Figure 112002037761370-pct00140
Carryt
Figure 112002037761370-pct00141
Ait
Figure 112002037761370-pct00142
Bj
Figure 112002037761370-pct00143
Yot
Figure 112002037761370-pct00144
Nj), r)
Si,j-k=(Si,j-2k
Figure 112002037761370-pct00145
Sumo
Figure 112002037761370-pct00146
Figure 112002037761370-pct00147
·Carrya) 모드 r
Carrya=Quotient((Si,j-2k
Figure 112002037761370-pct00148
Sumo
Figure 112002037761370-pct00149
Carrya),r)
승수의 플러싱(flushing)
For j=n to (n+k-1)
For t=0 to k-1(1클럭 플러스로 전 루프)
Sumt=(Sumt+1
Figure 112002037761370-pct00150
Figure 112002037761370-pct00151
·Carryt) 모드 r
Carryt=Quotient((Sumt+1
Figure 112002037761370-pct00152
Carryt), r)
Si,j-k=(Si,j-2k
Figure 112002037761370-pct00153
Sumo
Figure 112002037761370-pct00154
Figure 112002037761370-pct00155
·Carrya) 모드 r
Carrya=Quotient((Si,j-2k
Figure 112002037761370-pct00156
Sumo
Figure 112002037761370-pct00157
Carrya),r)
GF(p) 필드에서 ℓ=1 인 특별한 경우의 예들에 대한 공식적인 설명은 P1을 보기 바란다.
위에서는 정수 A 및 B의 인터리브된 한정 필드 모듈러 곱셈을 수행하되, A 곱하기 B 계수 N의 출력 스트림을 생성하도록 조작하기 위한 마이크로전자 방법 및 장치를 설명하며, 여기서 n은 계수 피연산자 레지스터내의 문자들의 수이고,
Figure 112002037761370-pct00158
곱셈 처리는 반복과정들에서 수행되고, 피연산자들을 가진 각각의 인터리브된 반복에서
Figure 112002037761370-pct00159
곱셈기로의 입력은 N 계수, B 승수, 사전 계산된 부분 결과치 S 및, A의 k 문자 스트링 세그멘트, 피승수, Ao스트링 세그멘트로부터 Am-1 스트링 세그멘트까지 의 진행된 세그멘트들로 구성되며, 각 반복 결과는 다음 순서의 S 임시 결과로 순서적으로
Figure 112002037761370-pct00160
합산되고, 반복 결과들의 제 1방출하는 문자들은 제로들이고, 본 장치는:
일반적으로, 곱셈기를 공급하는 4개의 직렬 ℓ비트 문자 레지스터들이 있는데, 이것은 승수를 효과적으로 로드하기 위해 구성된 제 1(B), 제 2(S), 제 3(N) 및 바람직하게는 (A)들이다. 일반적으로 MAP의 내부 레지스터들에 수용되지 않는 긴 피연산자들에서의 연산을 위해서, CPU는 그것의 접근가능한 메모리로부터 피연산자들을 로드할 수 있다.
일반적으로, 이러한 메인 메모리 레지스터들은 피연산자들을 저장하고 출력하며, 각각 승수값, 부분 결과값 및 계수 N을 저장하도록 조작한다.
모듈러 곱셈기는 하나 혹은 두개의 복수의 피승수 값들을 차례로 반복적인
Figure 112002037761370-pct00161
곱셈 처리의 단계들 동안에
Figure 112002037761370-pct00162
누산기로
Figure 112002037761370-pct00163
합산하도록 조작하고, 다음에 승수들로서 제 1값 B 레지스터로부터 그리고, 두번째로 "작동 중에" 예측값 Yo로부터 입력값을 받아들이고, 최초 방출하는 오른편 제로 출력 문자들을 각 반복에 있게 하는 승수로서 계수 N레지스터로부터의 제 3값들을 받아들인다.
피승수 병렬 레지스터들은 A,B 및 N 레지스터원들(register sources)로부터, 그 다음으로 피승수 제로화 값 Yo로부터 값들을 차례로 받도록 조작된다.
제로화(Yo) 감지기는 승수가 되게 동작하는 이진 스트링을 연산의 제 1단계동안 발생시키고, 피승수가 되도록 각 반복적인 곱셈의 제 2단계에서 조작한다.
제 1단계를 위해
Figure 112002037761370-pct00164
누산기내로 전환되는 승수 값들은 네 개의 값들, 제 1제로값, 피승수 A의 k 문자 스트링 세그멘트인 제 2값 Ai 및, 계수 N의 제 1방출 k 문자들인 제 3값 No상에 존재한다. 만약 도 6에서처럼 제 4프리로드 버퍼가 존재하다면, No값은 일반적으로 곱셈 시작시 내부에서 전환된다. 그리고나서, A의 k문자 슬라이스가 입력될 때, Ai값은 No값과 연속적으로 합산되서 제 4버퍼내에 저장된다.
가령 연산이 일반적으로 싱글 k문자 계수에 관한 것이라면, S 레지스터 혹은 임시 결과값 S가 필요없다. 피연산자가 2k 문자들 혹은 더 길다면, 조작이 Ai 슬라이스를 진전시키도록 반복적이어야 한다. 제곱연산을 위해서 B의 슬라이스들은 일반적으로 작동 중에 B스트림으로부터 유도되어 Ai 프리로드 버퍼 내에 사전 로드된다.
곱셈 과정의 제 1반복에서, 임시 결과는 제로이다.
전번의 반복들로부터의 다음의 임시 결과들은
Figure 112002037761370-pct00165
누산기로부터 나온 값으로
Figure 112002037761370-pct00166
합산되도록 조작되어, 다음의 반복을 위해 부분 결과를 생성한다.
피승수 값들은 제 2단계를 위하여
Figure 112002037761370-pct00167
누산기내로 차례로 입력되는데, 그것은 가레지스터값(pseudo register)인 제 1제로값, 제 1단계로부터 제자리 존재하는 제 2 Ai 피연산자 및, N계수의 남은 문자들을 계속 곱셈하도록 동작하는 제 1단계에서 예측되는 제 3Yo 값이다.
승수 값들은 제 1단계에서 곱셈기내로 입력되며, B 피연산자의 제 1방출 스트링 세그멘트인 제 1방출 스트링 Bo으로, 동시에 예측된 Yo 스트링으로 구성된 제 2
Figure 112002037761370-pct00168
승수값과
Figure 112002037761370-pct00169
곱해지고, 제 2단계를 위해 프리로드 피승수 버퍼내로 발생된 상태로 동시에 문자단위로 로드된다.
두개의 곱셈 값들은 제 2단계동안에 본 장치내로 입력되고, 그것은 각각 B로 표시된 B 피연산자로부터 오른편 n-k 문자 값들 및, N으로 표시된 N 계수의 오른편 n-k 문자들이다.
제 3단계는
Figure 112002037761370-pct00170
누산기내에 남아 있는 결과값의 오른편 세그멘트를 전송하도록 동작하는 장치로부터 플러쉬아웃(flush out)된다. 이것은 싱글 클럭 데이터 덤프이든지 혹은 단순 시리얼 언로드일 수 있고, 승수 입력들로 공급되는 제로 문자들로 구동된다.
상기 덤프(dump)가 병렬 덤프이면, 그 결과가 계수에 의해 추가적인 약분을 요구하는지를 결정하도록 비교하는 것을 의미한다.
본 발명의 보다 혁신적인 증강 중에 하나는 GF(2q)에서의 역모드 곱셈이다. 이 계산에서 가산기 셀들 사이의 상호작용의 결핍 때문에, 곱의 MS 단으로부터 시작하는 곱셈 및 약분을 수행하는 것이 가능하고, 그럼으로써 모듈러 약분된 답인 곱을 통상적인 몽고메리 곱셈에서 오른쪽 시프트(shift)를 수행하는 것과 같은 무시된 제로들에 의해 일어나는 무담되는 기식자 없이 얻을 수 있다.
자동적 제로화를 허락하는 제 2혁신은 특허 출원 P2의 Yo 함수의 확장이고, 그것은 단지 하나의 비트만이 한번에 예측된 것을 특징으로 하는 장치를 개시한다. 거기서 Joo 비트는 단지 싱글 비트 XOR 된 값들을 곱하였다. 홀수의 곱셈 역과 그것의 음수값 모두는 홀수이다. 이것은 룩업테이블이나 랜덤 로직 회로를 이행하여 ℓ=1의 경우 Jo값을 계산하여 저장한다. 주의, Jo는 비유사한 수체계들에서 다른 기호이다. 우리는 두개의 관련 숫자필드들에서 이 확장에서는 어떻게 Yo값이 삭제될 수 있는 지를 보여준다.
다음은 피승수의 제 1방출값들 및 B승수의 현 입력들을 사용함으로써 Yo값을 예측하도록 동작하는 회로의 요소들을 개시하며,
Figure 112002037761370-pct00171
누산기로부터의 값,
Figure 112002037761370-pct00172
누산기로부터의
Figure 112002037761370-pct00173
합산 값들, 사전 계산된 부분결과로부터 현 값들을 수행하고,
Figure 112002037761370-pct00174
가산기로부터 값들을 수행하여 사전 부분 결과를 가지고
Figure 112002037761370-pct00175
누산기로부터 결과를
Figure 112002037761370-pct00176
합산한다.
제로화 함수를 제어하도록 동작하는 6개의 값들이 다르게 표시되어 있다:
ⅰ. Ai 레지스터의 오른편 문자 곱하기 B 스트림의 Bd 문자의 ℓ비트 모 드 2
Figure 112002037761370-pct00177
곱셈에 의한 ℓ비트의 결과의 ℓ비트 Sout 비트, Ao
Figure 112002037761370-pct00178
Bd 모 드 2;
ⅱ. 상기
Figure 112002037761370-pct00179
누산기로부터의 제 1방출 자리올림 출력 문자,
Figure 112002037761370-pct00180
(COo);
ⅲ. 상기
Figure 112002037761370-pct00181
누산기의 오른편 문자 방출 셀로부터 두 번째로부터의 ℓ비 트 Sout 문자, SO1;
ⅳ. 상기 S 스트림으로부터 다음 순서의 문자값, Sd;
ⅴ. 상기 Z 출력 완전 가산기로부터 ℓ비트 자리올림 출력 문자,
Figure 112002037761370-pct00182
(COz);
ⅵ. No 계수 피승수 레지스터에서 오른편 문자의 음의 곱역인 ℓ비트 Jo 값;
여기서, 값들, Ao
Figure 112002037761370-pct00183
Bd 모드 2,
Figure 112002037761370-pct00184
(COo), SO1, Sd는 문자에 문자를
Figure 112002037761370-pct00185
추가하고, "작동 중에" Jo문자에 의해 제로들의 ℓ비트 탈출 문자 스트링화하는 유효한 Yo 제로화 예측 문자를 출력하기 위하여
Figure 112002037761370-pct00186
곱셈된다. P1에서처럼, 출력이 모듈러 감소됨에 틀림없는 지를 결정하기 위해서, 센서는 출력결과를 N 계수와 비교하도록 조작하고, 그 메카니즘은 결과 레지스터의 출력에 대하여 제 2뺄셈기를 활성화하도록 조작하며, 그럼으로써 더 작은 결과를 위하여 제 2메모리 스토리지를 할당할 필요성을 제거하여 출력 결과값에 한정된 합동이 되는 모듈러 감소값을 출력하도록 한다.
싱글
Figure 112002037761370-pct00187
누산기는 곱셈을 수행하도록 구성되고, 예측 제로화 메카니즘과 함께 일련의 인터리브된
Figure 112002037761370-pct00188
모듈러 곱셈들 및 제곱들을 수행하도록 조작된다. 총합기(total device)는 동등한 세 개의 정수 곱셈들을 수행하고, 통상적인 몽고메리 방법에서, Jo는 Bo
Figure 112002037761370-pct00189
Ai 및 Si의 첫 번째 k 문자 합계를 곱하는 k 문자 수단이고, 결과적으로 N를 곱하기 위해 Yo를 사용한다.
SuperMAP는 곱셈의 마지막 반복을 계산하는 동안에, 다음 곱셈의 제 1슬라이스는 프리로드 레지스터 버퍼 수단으로 급한 경우 사전 로드될 수 있다. 이 값은 사전 곱셈의 결과이거나 도 1 또는 도 5의 레지스터 뱅크(bank)내의 레지스터 세그멘트들 중의 하나에 존재하는 피승수의 슬라이스일 수 있다.
두 피승수들의
Figure 112002037761370-pct00190
합산인 사전로드된 값은 단지 GF(2q) 연산에서 k 문자 레지스터내로
Figure 112002037761370-pct00191
합산되고, GF(p) 연산에서 공급은 추가적인 자리올림 비트로 이루어진다.
특히, 매우 긴 모듈리의 경우에는, SuperMAP에 인접한 버퍼들 및 레지스터들은 일반적으로 불충분한 메모리 자원들을 가지고 있다. 프리로드 버퍼들 내로 직접 피연산자들을 로드하기 위한 수단이 제공되고, 피연산자들을 CPU의 메모리 맵내에 저장하도록 조작한다. 역포맷 곱셈의 경우, CPU로부터의 입력 문자들의 비트 차수는 일반적으로 데이터 입력 및 데이터 출력 장치들에서 역전된다.
도면에서;
두꺼운 선들은 k 문자(kl 비트)폭 병렬 버스 선들을 나타낸다. 더 얇은 합동 신호 선들은 ℓ비트폭 선들을 나타낸다. 대부분의 제어선들은 묘사되지 않았다; 포함된 것들은 일반적으로 과정들을 이해하는 데 필요하고 일반적으로 일점쇄선들로서 도시되어 있다.
도 1은 본 발명의 실시예에 따른 장치의 블록도이고, 여기서 네 개의 메인 레지스터들은 묘사되고 연산유닛으로의 직렬 데이터 흐름 경로가 나타나 있으며, 도 3의 호스트 CPU로의 입력 및 출력 데이터 경로도 함께 나타나 있으며;
도 2는 도 1에서 데이터를 조종하도록 동작하는 연산 유닛의 실시예의 블록도이며;
도 3은 스마트 카드에서 일반적으로 완전 싱글 칩, 모노리딕 암호컴퓨터의 바람직한 실시예의 단순화된 블록도이며;
도 4는 완전 싱글 칩 모노리딕 크립토컴퓨터(complete single chip monolithic cryptocomputer)의 바람직한 실시예의 단순화된 블록도이고, 여기서 데이터 디스에이블(disabel) 스위치는 연산유닛으로부터 가속화된 언로딩을 제공하도록 제공되는 것을 특징으로 하며;
도 5는 Jo를 생성하도록 조작되는 데이터 레지스터 뱅크의 단순화된 블록도이며;
도 6은 연산유닛의 단순화된 블록도이고, 여기서 Yo 감지는 제 1단계 출력을 제로화하도록 동작하는 수단인 것을 특징으로 하며;
도 7A는 도 6의 메인 연산부분의 블록도로, 원형 번호의 시퀀스 아이콘들을 가지며 그들은 도 7B, 도 7C 및 도 7D의 타이밍 다이아그램들(timing diagrams) 및 흐름도와 관련되어 있으며;
도 7B는 제곱연산의 제 1반복을 안내하고 포함하는 과정을 순차적으로 보여주는 이벤트 타이밍 포인터 다이아그램(event timing pointer diagram)이며;
도 7C는 도 7A, 도 7B 및 도 7D에 관련한 포인터들을 아이콘화된 제곱시퀀스의 제 1반복에서의 "다음 몽고메리 제곱" 지연을 제거하기 위한 상세한 이벤트 시퀀스이며;
도 7D는 도 7A, 도 7B 및 도 7C에 관련하여, 연산 출력의 타이밍을 도시한 것이며;
도 8A 및 도 8B는 GF(2q) 및 GF(p)에서의 Yo 인자의 산출을 나타내고 있는데, 특히 도 8A는 ℓ=2 및 ℓ=4의 경우 No의 오른편 문자의 음의 곱역을 결정하는 한 세트의 룩업테이블이고, 도 8B는 단순화된 블록형태로 양 숫자필드들에서 ℓ=2 및 ℓ=4의 경우 Yo 함수를 발생시키는 신호들을 묘사하고 있다.
[바람직한 실시예들의 상세한 설명]
도면들에 있어:
두꺼운 선들은 k 문자(kℓ비트)폭 병렬 버스선들을 나타낸다. 더 얇은 연속 접속신호선들은 ℓ비트폭 선들을 의미한다. 일반적으로, 제어선들은 도시되지 않 았고, 과정들을 이해하는 데 되도록 필요한 것들만 일반적으로 일점쇄선(dash-dot-dash)들로서 도시되었다.
도 1 및 도 2는 직-병렬 계산 로직유닛(ALU)의 단순화된 블록도를 나타내고, ALU는 본 발명의 바람직한 실시예에 따라서 구성되고 조작된다. 도 1 및 도 2의 본 장치는 일반적으로 다음 구성요소들을 포함한다:
싱글 멀티프렉서들(Single Multiplexers), 이것은 하나의 신호 혹은 문자 스트림을 다수의 신호들의 입력들로부터 선택하고, 이 선택된 신호를 싱글 입력으로 동작하는 제어되는 스위칭 요소들이다. 멀티프렉서들은 M1에서부터 M13까지 기록되고, 더 큰 요소들의 본질적인 부분들이다.
멀티플렉서 및 전가산기(390)는 kℓ+1 멀티플렉서들의 배열이고, 네 개의 k 혹은 k+1문자 입력들 중에서 CSA (410)내로 추가되는 것을 선택한다.
B(70 및 80), SA(130), SB(180) 및 N(200 및 210)은 바람직한 실시예에서 네 개의 메인 시리얼 메인 레지스터들이다. SA는 개념적 및 실질적으로 중복이나, 매우 긴 수연산들을 상당히 가속화할 수 있고, 특히 계수의 길이가 2·k·m 문자들의 길이인 경우에 휘발성 메모리 자원들을 절약한다.
직렬 가산기들 및 직렬 감산기들은 두개의 직렬 문자입력들 및 하나의 직렬 문자입력을 가진 논리요소들이고, 문자들의 두개의 긴 스트링들을 합산하거나 뺄셈을 수행한다. 구성요소들 90 및 500은 감산기들이고, 330 및 460은 직렬 가산기들 이다. 입력으로 출력까지의 전달시간은 매우 작다. 직렬 감산기들(90 및 500)은 일반적으로 B*가 N보다 크거나 같을 경우 B*에서부터 B까지 감소시키고, S*가 N보다 크거나 같을 경우 S*에서부터 S까지 감소시킨다. 직렬 감산기(480)는 비교자 구성요소의 부분으로 사용되어, B*가 N보다 크거나 같은 지를 감지한다. 완전(full)가산기(330)는 두개 문자 스트림들을 가산하는데, 그 스트림은 로드버퍼(Load Buffer;340)에 로드버퍼들(290 및 320)에서의 값들의 합계와 같은 값을 공급한다.
패스트 로더들(Fast Loaders) 및 언로더들(Unloaders)(10,20,30 및 40)은 각각 CPU 콘트롤러로부터 데이터 흐름을 가속화하는 장치들이다. 일반적으로, 이러한 장치들은 다른 직접 메모리 접근 구성요소들의 필요성을 제거한다. 20 및 40은 역형식 GF(2q) 곱셈들을 위해 데이터 문자들을 역변환하기 위한 필요가 있을 때, 데이터 문자를 역변환하기 위한 것들이다.
데이터입력기(Data In; 50)는 직렬출력장치(Serial out device)에 평행하고, 그 때 현재의 ALU장치는 직렬 공급 수축 프로세서(serial fed systolic processor)이고, 데이터는 병렬로 공급되어, 직렬로 처리된다.
데이터출력기(Data Out; 60)는 코프로세서(coprocessor)로부터 결과를 출력하기 위한 병렬출력장치(Parallel out device)에 직렬이다. 몫발생기는 몫문자를 나눗셈하는 메카니즘의 각 반복에서 발생시키는 도 2의 부분이다.
Bd(240), S*d(250) 및 Nd(260)에 관한 플러시(Flush) 신호들은 확실히 마지 막 k+1 문자들이 CSA 밖으로 분출할(flush out) 수 있게 한다. 제 2실시예는 R 데이터를 제 2단계의 끝에 일치시키고(reconcile), 싱글 병렬 데이터 덤프(dump)를 CSA로부터 분출하도록(flush out) 수행한다.
로드 버퍼들 R1(290), R2(320) 및 R3(340)는 병렬출력 시프트 레지스터들에 직렬이고, 상기 시프트 레지스터들은 제로 피승수 결합들보다 가능한 세 개보다 더 많이 받도록 적합화된다.
래치들(Latches) L1(360), L2(370) 및 L3(380)는 로드 버퍼들로부터 출력들을 받도록 구성되며, 그럼으로써 로드 버퍼들이 다음 단계의 데이터를 처리하도록 이러한 데이터가 바람직하게는 L1,L2 및 L3내로 래치되기(latched) 전에 잠시 가능화(enablement)한다. 래치 L0는 일반적으로 390내로의 "가상의" 상수 모든 제로 입력이고, 그것은 일반적으로 래치된(latched) 로직내에서는 실행되지 않는다.
Yo 감지(430)는 논리장치이고, 그것은 계수가 누산되는 배수를 결정하여, LS 제로들의 k 문자 스트링이
Figure 112002037761370-pct00192
곱셈들에서 Z에 존재하게 한다.
한 문자 지연장치들(100,220 및 230)은 각각의 데이터 스트림들내에 삽입되어 연산동기화를 위해 도 1에 도시된 데이터 준비장치들과 데이터 처리장치들 사이에 수용된다.
k 문자 지연 시프트 레지스터(470)는 N를 동시에 발생시키고, 가산기는 N을 비교시 N보다 더 큰 오른편 출력 제로 문자 스트링을 무시한 후의 결과값으로부터 감산한다.
자리올림 보류 누산기(Carry Save Accumulator)는 통상적으로 직/병렬 승수 의 입력상으로 래치된 싱글 값 대신에, 제로값들보다 더 큰 세 개의 다른 값들이 합산될 수 있다는 사실을 제외하면, 직/병렬 승수와 대략 동일하다. 다항식에 근거한 계산들에 사용될 때 "모든 자리올림 의존"(all carry dependent) 함수들은 디스에이블(disabled)된다.
삽입 최후 자리올림(Insert Last Carry;440)은 S스트림의 (m ·k ·ι+1)번째 비트를 삽입하기 위해 사용되고, 이것은 S레지스터가 단지 m ·k 문자들의 길이이기 때문이다.
빌림/넘침(borrow/overflow) 감지(490)는 일반적으로 결과가 (N으로부터) 혹은 GF(p) 계산에서의 계수보다 크거나 같은 지를 감지한다. 다항식에 근거한 계산에 있어, 넘침은 제 1유효 결과 비트가 1인지로 감지된다.
제어 메카니즘은 도시되지 않았으나, 한 세트의 층계형(cascaded) 계수장치들로, GF(p) 및 GF(2q)에서 시스토릭(systolic) 데이터 흐름을 위한 스위치 세트를 가진 특정 함수의 한정 상태 기기들을 구비하는 것으로 이해하는 것이 바람직하다.
소수 및 합성소수 필드에서의 모듈러 곱셈의 경우, 우리는 A 및 B를 피승수 및 승수로 정의하고, N은 일반적으로 A 혹은 B 보다 더 큰 계수라고 정의한다. N은 또한 계수값이 저장되는 레지스터를 의미한다. 어떤 경우에 있어서는, N은 A보다 작다. 우리는 A,B 및 N을 m ·k=n 문자 길이의 피연산자들로서 정의한다. 각각의 k 문자군은 세그멘트라고 불리워지며, 그 군의 크기는 곱셈기의 크기에 의해 정의된다. 그럼, A,B 및 N은 각각의 m문자들 길이가 된다. 다음의 예를 들어, 한 단계씩 공정을 설명하면, A,B 및 N이 512비트 길이(n=512)라고 가정하고; k가 64문자 길이라고 가정하고, 이것은 그런 승수의 현재에 요구하는 효과적인 길이와, 단순한 CPU의 데이터 조작 속도를 고려하여야 하기 때문이며; m=8은 피연산자에서 세그멘트들의 수이고 또한 512 비트 피연산자를 가진 제곱 또는 곱셈 루프(loop)에서의 반복수이기도 하다. 더욱더 보편적으로는, A,B,N,n,k 및 m은 어떤 적합한 값들로 가정할 수 있다.
비모듈러 함수들에서, N 및 S 레지스터들은 다른 계산 피연산자들의 임시 저장을 위해 사용될 수 있다.
우리는 기호 ≡를 모듈러 수들의 합동을 표시하기 위해서 사용한다. 예를 들어, 16 ≡2 모드 7, 여기서 우리는 16이 7에 의해 나누어질 때 16은 2 모듈러 7에 합동한다고 말한다. 우리가 Y 모드 X ≡N으로 표기할 때; Y 및 X는 N보다 크다; 그러나, X 및 Y가 양수이면, 나머지는 동일한 것이다. 또한, 음의 정수 Y의 합동은 Y+μ·N이고, 여기서 N은 계수이고, Y의 합동이 N보다 적게 된다면, μ는 양수의 결과로 주어지는 가장 작은 정수가 될 것이다.
우리는 기호 ¥를 더 제한된 의미에서의 합동을 의미하도록 사용한다. 여기에 기술된 처리들 동안에, 값은 종종 요구된 값이거나 혹은 계수가 더해진 요구된 값과 동일하다. 예를 들어, X¥2 모드 7이면, X는 2 또는 9에 동일할 수 있다. 우리는 X가 2 모드 7에 한정된 합동을 가진다고 말한다. 다항식에 근거한 필드에서, 아날로그는 모닉(molic) 값이고, 그것은 우리가 N보다 크다고 말하며, 계수에 XOR 함으로써 감소된다. GF(2q)에서 넘침이 없을 때는, 이 엔값은 일반적으로 무시된다.
우리가 X=A 모드 N으로 표기할 때, 우리는 X를 N으로 나눈 A의 나머지로서 정의하고, 예를 들면 3=45 모드 7이다.
수이론에 있어 모듈러 곱셈의 역은 기본 개념이다. 예를 들어, X의 모듈러 곱셈의 역은 X-1로 표기되고, 그것은 X·X-1 모드 N=1에 의해 정의된다. X=3이고 N=13이면, X-1=9이다. 즉, 13으로 나눈 3·9의 나머지는 1이다.
약어들 MS 및 LS는 비트들, 문자들, 세그멘트들 및 완전(full)피연산자값들을 참조할 때 최대유효 및 최소유효를 나타내기 위하여 사용되고, 그것은 디지털 명명법에 있어 보편적이다.
본 명세서를 통하여, N은 값 N 및 N을 포함하는 시프트 레지스터의 이름으로 지칭된다. 값상의 별표(*) 윗첨자는 값 그 자체가 잠재적으로 불완전하거나 변화하는 주체라는 것을 의미한다. A는 지수화된 수치이고, n은 N피연산자의 문자 길이이다. A가 A*로 몽고메리 표준화되어 초기화된 후(A*=2n·A -후에 설명됨), A* 및 N은 지수화에서 중간단계를 거친 상수값들이 된다. 제 1반복 동안에, 지수화의 초기설정 후, B는 A*와 동일하다. B는 또한 레지스터의 이름이며, 여기에는 결국 지수의 요구된 결과와 같은 누산된 값이 존재한다는 것이 특징이다. S*는 임시값을 나타내고, S, SA 및 SB는 또한 레지스터 혹은 레지스터들을 나타내는데, 그들에는 S의 싱글 MS비트를 제외하고는 모두가 저장된다.(이 MS비트와 연결된 S*는 S와 동일하다.) S(i-1)은 i 번째 반복의 출력에서의 S의 값을 의미한다; So는 S(i) 번째 값의 LS 세그멘트를 의미한다.
우리는 GF(p) 필드(후에 정의됨)에서의 처리에서 P (A·B)N을 P필드 혹은 때로는 단순 곱셈 연산에서의 곱셈으로서 언급한다.
우리가 직/병렬 승수의 표준 구조를 두개로 작용하는 직렬 병렬 승수를 구성하기 위한 기초로서 사용할 때, 우리는 자리올림 보류 누산의 기초가 된 승수의 합산부분 사이를 식별하고, (올림형 전가산기, 혹은 니플(ripple) 가산기, 상당히 많이 복잡한 첫 번째 및 매우 느린 두 번째에 대항하는 경우) 그것을 자리올림 보류 가산기 혹은 누산기에 불러들이고, 프리로딩 메카니즘와 멀티플렉서 및 래치들을 개별적으로 처리하고, 그것은 우리가 동시에 A 곱하기 B 및 C 곱하기 D를 곱셈하도록 허락하고, 연속해서 두개의 결과들을 전결과에 합산하고, 따라서 예를 들면, A·B+C·D+S이 되며, 누산기를 더 다용도의 엔진으로 변환시킨다. 추가적인 로직은 모듈러 약분을 위한 예측 판단 연산 및 매우 큰 수들에 관한 모듈러 계산과 일반적인 정수 계산을 제공하는 데 필요한 시리얼 가산을 제공하기 위하여 이러한 승수에 가산된다.
GF(p)에서의 몽고메리 모듈러 곱셈
다음 설명은 수의 GF(p)에서의 몽고메리 계산에 관한 것이다. 본 장치는 GF(2q)에서 다항식에 근거한 수에 관한 몽고메리 계산에 사용될 수 있으나, 모든 실행가능한 피연산자들이 2n의 요소에 의해 곱해지는 P필드내에서 연산이 실행될 때, 실행에 있어 성능이 떨어진다.
모듈러 곱셈을 계산하기 위한 고전적인 접근에서는, A·B 모드 N, 곱A·B의 나머지는 나눗셈 처리에 의해 계산된다. 큰 피연산자들의 통상적인 나눗셈을 실행하는 것은 직/병렬 곱셈들을 수행하는 것보다 더 어렵다.
몽고메리의 모듈러 약분 방법을 사용하는 경우, 나눗셈은 필연적으로 두개의 사전계산된 상수들을 사용하여 곱셈으로 대체된다. 여기에서 실시된 처리에서는, 계수의 함수를 갖는 단지 하나의 사전계산된 상수가 존재한다. 이러한 상수는 ALU장치를 사용하여 계산되거나 계산될 수 있다.
본 장치에 사용된 몽고메리 처리의 단순화된 소개가 이제 완전히 바람직한 설명에 의해 다음과 같이 제공된다.
우리가 홀수(LS비트 1), 예를 들어 1010001(=8110)를 가진다면, 우리는 항상 이 홀수를 짝수(0의 싱글 LS비트)로 전환할 수 있는데, 그것은 홀수에 홀수를 보상하는 조정수, 예를 들어 1111(=1510)를 가산함으로써 가능하다.; 즉 1111+1010001=1100000(9610)에서 보는 바와 같다. 이 특별한 경우에 있어, 우리는 다섯 개 LS 0들을 생산하는 수를 찾을 수 있는데, 이것은 우리가 미리 모든 스트링(81)을 알고, 쉽게 우리가 81에 추가할 수 있는 이진수를 결정하고, 우리가 필요로 하는 만큼의 LS 0들을 가진 새로운 이진수를 생성하게 한다. 이러한 조정수는 오른편 것을 가지지 않으면 안되고, 그 결과의 진보적인 LS 문자들에서는 효과가 없다.
우리의 처리가 클럭된(clocked) 직/병렬 자리올림 보류 처리이고, 여기에 연속적인 수의 LS 0들을 가지기를 요구된다면, 각 클럭 사이클에서 우리는 단지 다음 비트를 고정하지 않으면 안되고, 다음 비트가 1이 된다면 각 클럭에서 고정수를 더하는 것으로 충분하고, 예상 비트가 0이 된다면 고정수를 추가하는 것으로 충분하지 않다. 하지만, 인터빗(interbit) 넘침(이중 자리올림)을 유발하지 않기 위하여, 이러한 조정수는 사전에 피승수와 합산되어, 관련된 승수 비트가 1이고 Y의미도 또한 1로 예상될 때 누산기로 가산되는 것이 바람직하다.
이제, 모듈러 계산에서처럼, 우리는 단지 계수로 나눠진 값의 나머지에 관심을 가지고 있고, 우리는 우리가 계수를 어떤 수의 배수값에 가산할 수 있으며, 그래도 여전히 동일한 나머지를 갖는 값을 갖는다는 것을 안다. 이것은 우리가 Y·N=
Figure 112002037761370-pct00193
yi·ri·N을 어떤 정수에 가산할 수 있고, 그 결과 동일한 나머지를 갖는다는 것을 의미한다.; 여기서, Y는 우리가 계수 N에 추가한 곱의 수가 되고, 그것은 요구된 ㎘ 오른편 0들을 생산한다. 상술한 바와 같이, 우리가 가산한 계수는 단지 홀수이다.(방법들은 짝수 모듈리(moduli)가 ri 곱 홀수로서 정의되고 그 결과는 i가 짝수에서 LS 0의 수일 때에 존재한다.)
몽고메리 인터리브드 약분들은 일반적으로 스토리지 요구량 및 곱셈기들의 요구되는 효과적 크기를 줄인다. 이것은 특히 공용키 암호화 함수들을 수행할 때 유용하고, 여기에서 우리는 하나의 큰 정수, 예를 들어 n=1024비트를 다른 동일한 길이의 큰 정수와 곱셈하고; 그것은 보편적으로 두배 길이의 정수를 생성하게 처리한다.
우리는 Ns(계수)에 곱셈 혹은 제곱의 처리 과정동안 A·B=X 혹은 A·B+S=X의 충분한 배수를 가산할 수 있고, 그 결과 우리는 n LS 제로들 및 많아야 n+1 MS 문자들을 갖는 수 Z를 얻을 수 있다.
우리가 이러한 제로들을 무시함으로써 그것을 기억하고, 우리가 요구된 결과를 rn으로 나눈다면, 우리는 LS n 문자들을 무시하고서, 그런 수들을 계속 사용할 수 있다.
LS n문자들이 무시될 때, 우리는 단지 최대 유효 n(혹은 n+1) 문자들을 사용하고, 그럼으로써 우리는 효과적으로 결과에 rn의 모듈러 역수인 r-n을 곱셈한다. 만약 우리가 계속해서 이 결과를 rn 모드 N(혹은 rn)으로 재곱셈하면, 우리는 A·B+S 모드 N과 같이 동일한 나머지를 가진 요구된 결과에 합치하는 값을 얻을 수 있다. 아는 바와 같이, MM을 사용하면, 결과는 r2n으로 곱해지는 것이 바람직하며, 그 결과 MM에 의해 재도입되는 r-n 기생요소를 극복가능하다.
예 :
A·B+S 모드 N=(12·11+10) 모드 13=(1100·1011+1010)2 모드 10112
ℓ=1, r=2
우리는 조정이 n LS 비트들중 어느 하나에 필요하든지 간에 2iN내에 가산할 것이다.
B 1011
× A 1100
add S 1010
add A(0)·B 0000
---- LS비트의 합계=0 (N을 가산하지 않음)
add 20(N ·0) 0000
sum and shift 0101 →0 LS 비트 올림 저장을 떠남
adder
add A(1)·B 0000
---- LS비트의 합계=0 - N을 가산
add 21(N·1) 1101
sum and shift 1001 →0 LS 비트는 CS 가산기를 떠남
add A(2)·B 1011
--- 합계 LS비트 =0 (N을 가산하지 않음)
add 22(N·0) 0000
sum and shift 1010 →0 LS 비트는 CS 가산기를 떠남
add A(3)·B 1011
--- 합계 LS비트 =1 (N을 가산)
add 23(N·1) 1101
sum and shift 10001 →0 LS 비트는 CS 가산기를 떠남
그리고 그 결과는 10001 00002 모드 13=17·24 모드 13이다.
17이 13보다 크다면 우리는 13을 빼고, 그 결과는 :
17·24 ≡4·24 모드 13.
공식으로 2-n(A·B+S) 모드 N=9(12·11+10) 모드 13 ≡4
몽고메리 계산에 있어 우리는 단지 MS 비제로 결과, 4를 사용하고, 효과적으 로 그 진짜 결과는 2n으로 나누어진다는 것을 기억하며, n 제로들은 MM 결과 위로 귀결되는 특징이 있다.
우리는 효과적으로 결과를 24 모드 13 ≡3으로 곱한 (8+2) ·13=10 ·13으로 가산한다. 효과적으로, 우리가 잉여의 제로들을 사용한다면, 우리는 우리가 한 처리로 A·B+Y·N+S-(12·11+10·13+10)를 실행한다라고 말할 수 있고, 이것은 바람직한 실시예에서 가능한 설명될 것이다.
체크(Check)-(12·11+10) 모드 13=12; 4·3=12.
요약하면, 몽고메리 곱셈의 결과는 2-n으로 곱해진 요구된 결과이다.
전의 결과를 요구된 결과로 동일한 곱셈방법을 사용하여 복귀시키기 위하여, 우리는 전의 결과를 22n으로 몽고메리 곱셈하지 않으면 안되고, 이것을 각 MM이 기생요소 2-n과 함께 우리를 떠날 때, 우리는 H를 호출할 것이다.
몽고메리 곱셈 함수 P (A·B)N은 A·B곱의 곱셈 모듈로를 P필드내로 실행한다. (상기 예에서, 우리는 4를 얻었다.) 보통의 모듈러 필드로부터 P필드로의 복귀는 기계산된 상수 H를 사용하여 P (A·B)N의 결과상에서 P를 행하여 수행된다. 이제, P ≡ P (A ·B)N이다면, 그것은 P (P ·H) ≡A ·B 모드 N의 결과를 낳는다. 그럼으로써, 보통의 모듈러 곱셈을 두개의 P필드 곱셈들에서 실행한다.
몽고메리 모듈러 약분은 n 혹은 n+1 문자들 길이인 피연산자들에 관한 일련의 곱셈, 덧셈, 뺄셈을 수행함으로써 n 및 2n 문자들 길이인 피연산자들에 관한 일 련의 곱셈 및 나눗셈 연산들을 피한다. 완전한 처리는 N보다 작거나 또는 같은 결과를 가져온다. A, B 및 홀수 N이 주어진다면, 항상 Q가 존재하고, 그래서 A·B+Q·N는 결과적으로 n LS 문자들이 제로인 수가 되고, 혹은 :
P·2n=A·B+Q·N
이것은 우리가 (가능한 한 비트 넘침을 가진) 2n 문자 길이가 존재하고, 그것의 n LS 문자들은 제로라고 표현한 것을 의미한다.
이제, 근 r=2이면; I·rn ≡1 모드 N 되게 한다.(I는 모든 홀수 N을 위해 존재한다) 앞의 방정식의 양측을 I로 곱하면 다음의 합동을 가져온다:
방정식의 오른편으로부터:
P·I·rn ≡P 모드 N;(I·rn ≡1 모드 N이라는 것을 기억하라)
그리고 왼편으로부터
A·B·I+Q·N·I ≡A·B·I 모드 N;(Q·N·I ≡0 모드 N이라는 것을 기억하라)
그러므로:
P ≡A ·B ·I 모드 N.
이것은 또한 기생요소 I=r-n 모드 N이 P필드 곱셈이 수행될 때마다 삽입된다는 것을 의미한다.
우리는 다음과 같이 P 연산자를 정의한다:
P ≡A ·B ·I 모드 N ≡ P (A ·B)N.
그리고 우리는 이것을 " P 필드에서 A 곱하기 B의 곱셈" 혹은 몽고메리 곱셈으로 부른다.
P 필드로부터의 보상(retrieval)은 P ·H에 대해 P 연산함으로써 계산될 수 있고, 다음과 같이 식을 세울 수 있다. :
P (P ·H)N ≡A ·B 모드 N;
우리는 앞의 합동에서 P를 감산함으로써 H의 값을 끌어낼 수 있다.
우리는 안다:
P (P ·H)N ≡(A ·B ·I)(H)(I) 모드 N;
(A ·B ·I ←P; H ←H; I ← 및 어떤 곱셈 함수는 함수자 I를 삽입한다라는 것을 알아라)
H가 I2의 배수의 역에 합동이라면, 합동은 유효하고, 그러므로:
H=I-2 모드 N ≡r2n 모드 N
(H는 N의 함수고 우리는 그것을 H 매개변수라고 부른다)
A·B에 관한 P 연산자를 규정한 통상적인 몽고메리 방법에 있어서, 다음의 처리는 기계산된 상수 J를 이용하여 수행될 수 있다:
1) X=A ·B
2) Y=(X ·J) 모드 rn (단 n LS 문자들이 필요하다)
3) Z=X+Y ·N
4) S=Z/rn (J에 관한 요구는 Z가 rn으로 나누어질 수 있도록 하는 것이 다)
5) P¥S 모드 N (S ≥N다면, N이 S로부터 감산될 것이다)
결국, 단계 5)에서:
P¥ P (A ·B)N,
[N의 뺄셈후, 필요하다면:
P= P (A ·B)N]
위에 따르면:
Y=A·B·J 모드 rn (단지 n LS 문자들을 사용하여);
및:
Z=A ·B+(A ·B ·J 모드 rn)·N.
Z가 rn으로 나누어 떨어지고 (Z의 n LS 문자들은 바람직하게는 제로이 다) 다음의 합동이 존재하도록 하기 위하여:
[A·B+(A ·B ·J 모드 rn)·N] 모드 rn ≡0
이 합동이 존재하기 위해서는, N ·J 모드 rn은 -1에 합동이고, 또는:
J ≡-N-1 모드 rn.
그리고 우리는 상수 J를 얻는다.
그러므로, J는 단지 N 함수가 있는 기계산된 상수이다. 그러나, MM 결과를 문자단위로 출력하는 기기에서, 규정은 LS 스트링에서 출력문자가 제로인 각 경우 Ns에 가산되도록 만들어지고, 그럼으로써 J를 기계산하고 다음으로 Y=A ·B ·J 모드 rn를 계산할 필요성이 제거되는데, 이것은 Y가 배선에 의한 로직을 사용하여 문자단위로 감지될 수 있기 때문이다. 우리는 또한 이 방법이 단지 홀수 Ns를 위해 동작할 수 있다는 것을 설명한다.
그러므로, 보이는 것처럼, 개시된 공정은 세 개의 곱셈들, 하나의 합산 및, 하나의 뺄셈의 최대를 사용하여 주어진 A, B, N 및 기계산된 상수에서 P (A·B)N를 얻는다. 이 결과, 동일한 처리 및 기계산된 상수 H (모듈 N의 함수)를 사용하여, 우리는 A·B 모드 N을 이끌어낼 수 있다. A는 또한 B와 동일하므로, 이 기본 연산자는 모듈러 계산에서 제곱하거나 곱셈하는 장치로 사용될 수 있다.
인터리브드 몽고메리 모듈러 곱셈
앞 부분에서는 모듈러 곱셈을 위한 방법을 설명하는데, 이것은 모두 n 문자들 길이인 피연산자들 및 2n+1 문자의 저장공간을 요구하는 결과들의 곱셈들에 관련된다.
P1에 개시된 것과 같은 몽고메리의 인터리브드 약분을 사용하면, 더 짧은 피연산자들, 레지스터들 및 배선에 의한(hardwire) 승수들을 가진 곱셈 연산들을 수 행할 수 있고, 상대적으로 적은 로직 게이트(gate)들을 가진 전자기기의 완성을 가능하게 한다.
첫째로, 우리는 장치가 어떻게 작동할 수 있는 지를 설명할 것이고, 인터리브의 각 반복에서, 우리는 N이 가산되는 배수의 수를 Jo 상수를 사용하여 계산한다. 그런 후에, 우리는 인터리브의 방법을 Yo의 배선에 의한 도출을 사용하여 설명하고, 각 곱셈의 J0+단계를 제거할 것이고{다음 예에서의 (2)}, 우리가 두개의 분리된 직렬/승수들의 함수들을 A ·B+C ·N+S를 유사 실리콘 자원들을 사용하여 두배의 속도 이상으로 수행하는 새로운 싱글 통합 승수내로 통합하는 것을 가능하게 한다.
k 문자 승수를 사용하면, k 문자 길이의 세그멘트들을 정하는 데 편리하고; n 문자들내에는 m 세그멘트들이 존재한다.; 즉, m·k=n.
Jo는 J의 LS 세그멘트가 될 것이다.
그러므로:
Jo ≡-No -1 모드 rk (Jo는 N이 홀수일 때 존재한다)
주의하라, J 및 Jo 상수들은 보상수들인데, 비약분된 출력에서 실행될 때, 최소유효 제로들의 기정의된 수를 갖기 위하여 우리가 얼마나 여러번 계수를 가산하는 지를 나타낸다. 우리는 후에 본 시리얼 장치에서의 추가적인 이점을 설명할 것이다; 출력의 다음 시리얼 비트는 쉽게 결정될 수 있고, 우리는 항상 계수(항상 홀수)를 다음의 중간 결과에 가산할 수 있다. 이것은 이 가산없이, 출력 문자, CSA를 나가는 LS 시리얼 비트는 "1"이고, 그것에 의해 계수내에 전의 짝수 중간 결과로 가산되고, 그것에 의해 다른 LS 제로를 출력 스트링내로 기약한다. 합동은 유지된다는 것을 기억하라, 그것은 아무리 여러번 계수가 결과에 가산되든지 간에, 나머지는 상수이기 때문이다.
몽고메리의 인터리브드 약분의 통상적인 사용에서, P (A ·B)N는 단계 (1)에서 (5)까지에 서술된 것처럼 m 반복들로 일어난다.
초기화 S(0)=0 (제 1반복의 최초에 S의 ¥값)
For i=1,2 m:
1) X=S(i-1)+Ai-1·B (Ai-1은 A의 i-1번째 문자이고; S(i-1)은 i번째 반복의 최초에 S의 값이다)
2) Yo=Xo·Jo 모드 rk ( Xo·Jo 곱의 LS k 문자들)
(위의 처리는 단지 k LS 문자들, 예를 들어 최소유효 64 문자들을 사용하여 계산한다.) 바람직한 실행에 있어, 이 단계는 제거되는데, 그것은 시리얼 기계에서 Yo는 문자단위로 예측될 수 있기 때문이다.
3) Z=X+Yo·N
4) S(i)=Z/rk (Z의 k LS 문자들은 항상 0이고, 그러므로 Z는 항상 rk로 나누어 떨어진다. 이 나눗셈은 Z의 LS k 문자들이 모두 제로일 때 k 문자 오른쪽 이동(shift)과 같거나; 혹은 회로에서 보여지는 것처럼, Z의 LS k 문자들은 단순히 무시된다.
5) S(i)=S(i) 모드 N (N은 N보다 큰 S(i)로부터 감산되는 것이다.) 결국, 마지막 반복에서(N의 감산후, 필요시), C=S(m)= P (A ·B)N이다.
F=A·B 모드 N를 끌어내기 위해, P 필드 계산, P (C ·H)N이 수행된다.
바람직한 실시예에서, 모든 S(i) 동안, S(i)는 2N보다 작다는 것을 알기 바란다. 이것은 또한 마지막 결과(S(m))이 기껏해야 N의 하나의 뺄셈으로 항상 N보다 적은 양으로 감소될 수 있다.
우리는 처리에서 사용되는 피연산자들을 위해 다음을 설명한다:
S(i-1)〈rn+1 (임시 레지스터는 B 또는 N 레지스터 보다 1비트 길어질 수 있다),
B〈N〈rn 및 Ai-1〈rk.
설명에 의하면:
S(i)=Z/rk (처리의 끝에서 가능한 뺄셈 전의 S의 값)
모두 Z의 경우, Z(i)〈r n +k+1.
Xmax=Smax+Ai·B〈rn+1-1+(rk-1)(rn-1)
Qmax=YoN〈(rk-1)(rn-1)
그러므로:
Zmax〈rk+n+1-rk+1+1〈rk+n+1-1.
그리고 Zmax가 rk로 나누어질 경우:
S(m)〈rn+1-r1.
왜냐하면 Nmin〉rn-r, S(m)max가 항상 2·Nmin보다 작고, 그러므로 하나의 뺄셈은 마지막 결과에 필요한 모든 것이기 때문이다.
S(m)max-Nmin=(rn+1-r1-1)-(rn-1)=rn-4〈N min.
몽고메리 인터리브드 모듈러 곱셈의 예:
16진법 형식에서 다음 계산들은 인터리브드 방법의 의미를 분명하게 한다.
N=a59(모듈로), A=99b(승수), B=5c3(피승수), n=12, r=2(N의 문자 길이), k=4(승수의 문자들에서의 크기 및 세그멘트의 크기), 및 n=k·m의 경우 m=3이다.
7 ·9 ≡-1 모드 16 및 H ≡22·12 모드 a59 ≡44b인 경우 Jo=7이다.
예상되는 결과는 F ≡A·B 모두 N ≡99b·5c3 모드 a59 ≡375811 모드 a59=22016이다.
초기화: S(0)=0
단계 1 X=S(0)+Ao·B=0+b·5c3=3f61
Yo=Xo·Jo 모드 rk=7 (Yo-SuperMAP에서 예측된 하드와이어)
Z=X+Yo·N=3f61+7·a59=87d0
S(1)=Z/rk=87d
단계 2 X=S(1)+A1·B=87d+9·5c3=3c58
Yo=Xo·Jo 모드 rk=8·7 모드 24=8 (예측된 하드와이어)
Z=X+Yo·N=3c58+52c8=8f20
S(2)=Z/rk=8f2
단계 3 X=S(2)+A2·B=8f2+9·5c3=3ccd
Yo=d·7 모드 24=b (예측된 하드와이어)
Z=X+Yo·N=3ccd+b·a59=aea0
S(3)=Z/rk=aea,
S(3)〉N 다면,
S(m)=S(3)-N=aea-a59=91
그러므로 C= P (A ·B)N=9116.
P 필드로부터 보상은 P (C ·H)N을 계산함으로써 수행된다:
다시 초기화 : S(0)=0
단계 1 X=S(0)+Co·H=0+1·44b=44b
Yo=d (슈퍼MAP에서 예측된 하드와이어)
Z=X+Yo·N=44b+8685=8ad0
S(1)=Z/rk=8ad
단계 2 X=S(1)+C1·H=8ad+9·44b=2f50
Yo=0 (슈퍼MAP에서 예측된 하드와이어)
Z=X+Yo·N=2f50+0=2f50
S(2)=Z/rk=2f5
단계 3 X=S(2)+C2·H=2f5+0·44b=2f5
Yo=3 (슈퍼MAP에서 예측된 하드와이어)
Z=X+Yo·N=2f5+3·a59=2200
S(3)=Z/rk=22016
99b·5c3 모드 a59의 예측값이다.
각 단계에서 우리가 k LS 제로들을 무시한다면, 우리는 n MS 문자들에 rk를 본질적으로 곱하는 것이다. 이처럼, 각 단계에서, 승수의 i 번째 세그멘트는 또한 rik로 곱해진 수이고, 그것은 S(i)처럼 동일한 순위로 주어진다.
다른 바람직한 실시예에서, 어떤 잠재적인 가치로서 Jo상수를 알게 되고, Ai·B+S=1이면, Yo=-No -1=Jo이다는 것에 주목할 수 있다.
지수:
시퀀스의 다음의 도출[D. Knuth, The art of computer programming, vol 2: Seminumerical algorithms, Addison-Wesley, Reading Mass., 1981] (이하 "Knuth"로 언급됨)은 모듈러 지수를 실행하는 제곱들과 곱셈들의 시퀀스를 설명한다.
본 장치가 P 필드내에서 제곱하고 곱셈할 수 있는 경우, 몽고메리 상수 H=22n을 사전 계산한 후, 우리는 다음을 계산한다:
C=AE 모드 N.
E(j)는 지수 E의 이진 표현에서의 j 비트를 의미하고, 그것은 지수가 1인 MS 비트로 시작하고, 지수가 q인 LS 비트를 포함하며, 우리는 홀수 지수로 다음처럼 지수화할 수 있다:
A* P (A ·B)N A*는 이제 A ·2n과 같다.
B=A*
FOR j=2 TO q-1
B¥ P (B ·B)N
IF E(j)=1 THEN
B¥ P (B ·A*)N
ENDFOR
B¥ P (B ·A)N E(0)=1; B는 2n으로 곱해된 마지막 요구 임시 결과이고, A는 본래의 A이다.
C=B
C=C-N if C ≥N.
마지막 반복후, 값 B는 AE 모드 N에서의 ¥이고, C는 마지막 값이다.
분명하게 하기 위하여, 우리는 다음의 예를 사용할 것이다:
E=1011--→E(1)=1; E(2)=0; E(3)=1; E(4)=1;
A1011 모드 N; q=4를 끌어내기 위해
A*= P (A ·B)N=A ·I-2I=A ·I-1 모드 N
B=A*
FOR j=2 to q
B= P (B ·B)N which produces: A2(I-1)2 ·I=A2·I-1
E(2)=0; B=A2·I-1
j=3 B= P (B ·B)N=A2(I-1)2 ·I=A4·I-1
E(3)=1 B= P (B ·A*)N=(A4·I-1)·I=A5·I-1
j=4 B= P (B·B)N=A10·I-2·I=A10·I-1
E(4)가 홀수이었다면, 마지막 곱셈은 기식자 I-1를 제거하기 위하여 A로 될 것이다.
B= P (B·A)N=A10·I-1·A·I=A11
C=B
H 매개변수를 역수처리로 계산하는 방법은 미국특허 5,513,133에 개시되어 있다.
도 3를 참조하면, 그것은 본 발명이 스마트 카드들 및 다른 보안 장치들에서 어떻게 실행되는 지를 보여주는 단순화된 블록도이다. 내부 버스(bus;500)는 CPU(502), RAM(504), 비휘발성 메모리(506), 제어되는 액세스 EEPROM(508) 및 모듈러 계산 코프로세서(510)을 포함한 구성요소들과 연결되어 있다. 여기에서 보여지는 바와 같이, 코프로세서(500)는 내부 버스(500)로 데이터 및 제어 레지스터들(512,514)을 통하여 연결되어 있다.
제어되는 액세스 ROM(508)은 주소 및 데이터 래치 수단(516) 및 제어 및 테스트 레지스터(518)를 통하여 연결되어 있다. 다양한 다른 장치들이 버스에 부가될 수 있는데, 예를 들면 물리적 시퀀스 랜덤 발생기(520), 보안 로직(522), 스마 트 카드 및 외부 포트 인터페이싱 회로(524 및 526) 각각과 같은 것들이 있다.
RSA 서명을 검증하는 것과 같은 암호 프로그램이 실행될 때, 모듈러 지수화와 같은 모듈러 계산 함수들이 요구된다. 암호화 함수로 불리는 암호 프로그램은 CPU(502)상에서 운용되는 것이 바람직하다.
도 4를 참조하면, 이 도면은 스마트 카드에 적용되는 본 발명의 다른 실시예를 보여주는 단순화된 블록도이다. 도 3에 도시된 것과 같은 부분들에는 동일한 참조번호들이 부여되고, 본 실시예의 이해에 필요하지 않다면 다시 설명하지는 않는다. 도 4에서, CPU(502)는 외부 누산기(7350)와 함께 도시되어 있다. 계산 코프로세서로부터 언로드되는 데이터가 SMAP로부터 메모리로 데이터의 직접 전송을 가능하게 하는 동안에, 데이터 디스에이블 스위치(7340)는 CPU 누산기와 데이터 버스(500)를 분리한다.
도 5는 코프로세서(6075)내의 데이터 레지스터 뱅크(6205)의 바람직한 실시예의 단순화된 블록도로, 여기서 코프로세서는 도 2, 도 6 및 도 7에서 도시된 코프로세서들과 같으며, Jo발생기를 가지며, 이 Jo발생기는 일반적으로 ℓ비트 최초 제로화함수를 수행한다.
코프로세서(6075)는 데이터버스로 전 도면들에서와 같이 CPU와 연결되어 있다. 레지스터 뱅크(6205)는 B레지스터(6070), A레지스터(6130), S레지스터(6180) 및 N레지스터(6200)를 포함한다. 레지스터들의 각각의 출력들은 모듈러 계산 연산 을 수행하는 연산유닛(6206)에 차례로 연결된 시리얼 데이터 스위치 및 시리얼 프로세스 콘디셔너(conditioner;6020)와 연결된다. N레지스터(6200) 및 연산유닛(6206) 사이에 연결된 것은 Jo 발생기(552)이다.
실시예에서, Jo 발생기는 상술한 모듈러 계산 함수에서 사용시 ℓ비트 초기 제로화함수를 수행한다.
도 6은 도 5의 연산유닛의 단순화된 내부 블록도이다. 상기 유닛은 바람직하게는 제곱연산들을 가속화하도록 지원되고, 그래서 추가적인 YoBo 시리얼 버퍼는 제 1단계에서 Yo를 받아들이고, 제 2단계에서는 다음의 제곱연산을 위하여 모듈러 약분된 Bo를 받아들이며, 여기서 B는 N보다 크다는 것이 도출된다.
참고로, 도 7A는 도 6의 연산유닛의 주계산부분의 블록도이다. 원안에 나타낸 수들은 도 7B 및 도 7D의 공정도들에 관련된다.
참고로, 도 7B는 처리를 진행순서적으로 보여주는 이벤트 타이머 포인터 도면으로, 제곱연산의 제 1반복을 안내하고 포함한다.
참고로, 도 7C는 다음 몽고메리 제곱 지연들을 제곱시퀀스의 제 1반복에서 제거하는 방법을 보여주는 일반화된 이벤트 시퀀스이다. 원번호들은 도 7A, 도 7B 및 도 7D에 관련한다.
참고로, 도 7D는 제곱연산의 제 1반복의 계산 출력의 타이밍을 표현하는 일 반화된 이벤트 타이머 포인터 도면이다.
참고로, 도 8A는 한 세트의 룩업테이블들로, 이것은 No의 오른편 문자의 계수 2ℓ로 음의 곱셈역인 Jo의 선택들을 일반적으로 보여주고 있다. No가 항상 GF(2q)용 모닉(monic)이든지 혹은 GF(p)용 홀수이면, Jo는 항상 존재한다.
도 8A 및 도 8B에서, 우리는 계수의 오른편 문자를 No로서 언급한다. 우리는 Noj를 지역적으로 정의된 No문자의 j 번째 비트로서 언급한다.
도 8B는 4비트 또는 2비트 Yo 제로화 함수 문자를 설계하는 개략도이다. 강압함수내로의 변수입력들은 No비트(곱셈을 통한 상수), ℓSo비트 및 ℓ승수와 피승수 비트의 곱의 ℓ오른편 비트(Aio 와 Boj) 및, 자리올림 스위치(
Figure 112002037761370-pct00194
)이고, 함수들이 GF(2q) 혹은 GF(p)내에서 동작할 지를 결정한다. A 및 B 비트는
Figure 112002037761370-pct00195
승수내로 입력되고 So
Figure 112002037761370-pct00196
가산된다.
Figure 112002037761370-pct00197
=0일 때, 모든 자리올림들은 디스에이블된다.
상세하게 단독의 실시예들의 내용에 설명된 본 발명의 다양한 특징들은 하나의 장치에서 결합하여 제공될 수 있다. 역으로, 요약하여 하나의 실시예의 내용에서 설명한 본 발명의 다양한 특징들은 또한 단독으로 혹은 어떤 적합한 반결합상태로 제공될 수 있다.
당업자에 의해, 본 발명은 여기에서 보여지고 설명된 것에 제한되지 않는다. 차라리, 본 발명의 보호범위는 여기에 개시된 다양한 특징들의 결합 및 반결합 뿐만 아니라 선행기술에 존재하지 않은 전술한 설명을 읽고서 당업자가 행한 그로부터의 변경이나 변화들을 포함한다.
다음의 청구항들에 있어, 기호들은 전술한 설명에서 주어진 의미를 갖는다.

Claims (30)

  1. 피승수 A와 승수 B의 곱셈 값을 모듈러스(modulus) N에 대하여 모듈러 곱셈을 수행하고, 여기서 B는 k개 문자 승수 세그먼트들(no more than k character multiplier segments)을 포함하는 직렬공급되는 레이딕스(radix) 2 승수이고, A는 k개 문자 피승수 세그먼트들(no more than k character multiplicand segments)을 포함하고, N은 각 문자가 ℓ비트를 갖는 k개 문자들(no more than k characters)을 갖는 것을 특징으로 하는, 모듈러 곱셈, 제곱 및 약분을 수행하기 위한 마이크로전자 장치로서,
    상기 승수 B를 저장하도록 동작하는 제1(B) 레지스터;
    k개 문자들을 갖는 피승수들을 받아들이며, 적어도 k개 문자 길이인 단일 누산기를 포함하고 반복적으로 피승수를 받아들이는 동시에 문자를 출력하도록 동작하는 모듈러 곱셈기(a modular multiplicand device);
    비제로(non-zero) 문자가 상기 단일 누산기로부터 지금 막 출력될 것을 예상하고, 비제로 문자를 제로화하기 위해 모듈러스 N이 상기 단일 누산기 안으로 부가되어야 하는 횟수 Yo를 결정하도록 동작하는 디지털 로직 감지기(a digital logic sensing detector);
    제1단계(a first phase) 동안에, 피승수 값들을 상기 단일 누산기 안으로 차례로 바꾸어 넣고, 상기 제1(B) 레지스터의 콘텐츠와 Yo 값을 상기 디지털 로직 감지기로부터 한 문자씩 받아들이도록 동작하며, 이에 의해 제로인 제1출력 문자들을 k개까지 강제하고, 상기 누산기로 차례로 바꾸어 넣는 피승수 값들은 다음 3개의 피승수들 즉, (a) 모두 제로인 스트링(string) 값; (b) 피승수 A의 일부; 및 (c) 모듈러스 N의 적어도 일부 중에서 3개 미만을 포함하는 상기 모듈러 곱셈기; 및
    마지막 단계에서(in a last phase) 동작하여, 최종 모듈러 곱셈 결과의 적어도 일부를 상기 누산기로부터 언로드(unload)하는 출력 전송부를 포함하는 것을 특징으로 하는 마이크로전자 장치.
  2. 제 1항에 있어서, 상기 모듈러 곱셈기는 복수의 인터리브드(interleaved) 반복들로 인터리브드 모듈러 곱셈 및 약분을 수행하도록 작동되고, 여기서 제1단계에서 사용되는 Yo 값은 저장되고, 상기 모듈러스 N의 일부는 그 모듈러스 N의 최하위 k-문자 부분(a k-character least significant portion)을 포함하며,
    상기 장치는 또한, 후속되는 i+1 번째의 반복 동안 사용하기 위하여 i번째 반복으로부터의 임시결과 S를 저장하도록 동작하는 제2(S) 레지스터와, 상기 모듈러스 N을 저장하도록 동작하는 제3(N) 레지스터 및 상기 피승수 A를 저장하도록 동작하는제4(A)레지스터를 더 포함하고, 상기 제3(N) 레지스터 내의 문자들의 수 n은 k개 보다 큰 것을 특징으로 하며,
    상기 모듈러 곱셈기는 제1단계에서, 복수의 인터리브드 반복들의 각각 동안에, A의 여러 슬라이스들(slices)에 B를 곱하도록 동작하며,
    상기 모듈러 곱셈기는, 제1단계와 마지막 단계 사이의 제2단계 동안에, 상기 단일 누산기 안으로 피승수 값들을 차례로 바꾸어 넣고 상기 제1(B) 및 제3(N) 레지스터들로부터 승수 값들을 받도록 동작하며, 상기 누산기 안으로 차례로 바꾸어 넣어지는 상기 피승수 값들은 다음 3개의 피승수들 즉, (a) 모두 제로인 스트링(string) 값 (b) 피승수 A의 일부 및 (c) 상기 제1단계로부터 저장된 Yo 값 중에서 3개 미만을 포함하며,
    상기 장치는, 각 반복 동안, 상기 제2(S) 레지스터 내의 임시결과값 S를 상기 누산기에 의해 출력된 문자와 합산하여, 새로운 임시결과의 n-k개의 최하위 문자들을 생성하고, 그 문자들은 다음 차례의 반복을 위해 상기 제2(S) 레지스터에 저장되게 하는 직렬 가산기를 더 포함하는 것을 특징으로 하는 마이크로전자 장치.
  3. 제 1항 또는 제 2항에 있어서, 모든 덧셈, 누산 및 곱셈 동작들은 갈루아 필드 GF(p) 또는 갈루아 필드 GF(2q)에서 올림이 있거나 올림이 없이 수행되도록 전환될 수 있는 것을 특징으로 하는 마이크로전자 장치.
  4. 삭제
  5. 제 2항에 있어서, 상기 디지털 로직 감지기는 다음 4개의 입력들을 받아들이도록 동작하는 것을 특징으로 하는 마이크로전자 장치.
    ⅰ. 모듈러스 2에서, 상기 제4(A) 레지스터 내의 최소유효 문자와 상기 제1(B) 레지스터로부터의 현재값의 곱;
    ⅱ. 상기 누산기로부터 방출되는 제 1올림 문자(carry out character);
    ⅲ. 상기 누산기의 오른쪽 문자로부터 두번째의 내용들;
    ⅳ. 상기 제3(N) 레지스터 내의 오른편 문자의 음의 곱셈역수(negative multiplicative inverse).
  6. 제 2항에 있어서, 상기 디지털 로직 감지기는 다음 6개의 입력들을 받아들이도록 동작하는 것을 특징으로 하는 마이크로전자 장치.
    ⅰ. 모듈러스 2에서, 상기 제4(A) 레지스터 내의 최소유효 문자와 상기 제1(B) 레지스터로부터의 현재값의 곱;
    ⅱ. 상기 누산기로부터 방출되는 제1올림 문자;
    ⅲ. 상기 누산기의 오른쪽 문자로부터 두 번째의 콘텐츠들;
    ⅳ. 상기 제3(N) 레지스터 내의 오른편 문자의 음의 곱셈역수(negative multiplicative inverse);
    ⅴ. 상기 제2(S) 레지스터 내의 다음 차례의 문자; 및
    ⅵ. 상기 직렬 가산기로부터의 올림 문자.
  7. 모듈러스(modulus) N에 대하여 피승수 A와 승수 B의 모듈러 곱셈을 수행하고, 여기서 B는 k개 문자 승수 세그먼트들을 포함하는 직렬공급되는 레이딕스 2 승수이고, A는 k개 문자 피승수 세그먼트들을 포함하고, N은 각 문자가 ℓ비트를 갖는 k개 문자들을 갖는 것을 특징으로 하는, 모듈러 곱셈, 제곱 및 약분을 수행하기 위한 방법으로서,
    승수 B를 제1(B) 레지스터에 저장하는 것;
    k개 문자들을 갖는 피승수들을 받아들이며, 적어도 k개 문자 길이인 단일 누산기를 포함하고반복적으로 피승수를 받아들이는 동시에 문자를 출력하도록 동작하는 모듈러 곱셈기를 제공하는 것;
    비제로(zero) 문자가 상기 단일 누산기로부터 지금 막 출력될 것을 예상하고, 비제로 문자를 제로화하기 위해 모듈러스 N이 상기 단일 누산기에 가산되어야 하는 횟수 Yo를 결정하는 것을 포함하고,
    제1단계 동안, 상기 단일 누산기로 차례로 피승수 값들을 바꾸어 넣고, 상기 제1(B) 레지스터의 콘텐츠와 Yo 값을 상기 디지털 로직 감지기로부터 한 문자씩 받아들이도록 동작하며, 제로인 k개 제1출력 문자까지 밀고나아가고 상기 누산기로 차례로 바꾸어 넣어진 피승수 값들은 다음 3개의 피승수들 즉, (a) 모두 제로인 스트링(string) 값 (b) 피승수 A의 일부 및 (c) 모듈러스 N의 적어도 일부의 피승수들중에서 3개 미만을 포함하며,
    마지막 단계에서, 마지막 모듈러 곱셈 결과를 상기 누산기로부터 언로드(unload)하는 것을 포함하는 것을 특징으로 하는 방법.
  8. 제 7항에 있어서, 상기 모듈러 곱셈기는 복수의 인터리브드(interleaved) 반복들로 인터리브드 모듈러 곱셈 및 약분을 수행하도록 동작하고, 여기서 제1단계에서 사용되는 Yo 값은 저장되고, 상기 모듈러스 N의 일부는 그것의 k개 문자의 최소유효 부분을 포함하며,
    후속의 반복 i+1 동안 사용하기 위하여 반복 i로부터의 임시결과 S를 저장하도록 동작하는 제2(S) 레지스터와, 상기 모듈러스 N을 저장하도록 동작하는 제3(N) 레지스터를 제공하는 것을 포함하며, 상기 제3(N) 레지스터의 문자들의 수 n은 k개 보다 크고,
    상기 모듈러 곱셈기는 제1단계에서, 복수의 인터리브드 반복들의 각각 동안에, A의 여러 슬라이스들(slices)에 B를 곱하도록 동작하며,
    상기 모듈러 곱셈기는 제1단계와 마지막 단계 사이의 제2단계 동안에, 상기 단일 누산기로 차례로 피승수 값들을 바꾸어 넣고 상기 제1(B) 및 제3(N) 레지스터들로부터 승수 값들을 받도록 동작하며, 상기 누산기로 차례로 바꾸어 넣어지는 상기 피승수 값들은 다음 3개의 피승수들 즉, (a) 모두 제로인 스트링(string) 값; (b) 피승수 A의 일부; 및 (c) 상기 제1단계로부터 저장된 Yo 값 중에서 3개 미만을 포함하며,
    상기 방법은 또한, 각 반복 동안, 상기 제2(S) 레지스터 내의 임시결과값 S를 상기 누산기에 의해 출력된 문자와 합산하여, 다음 차례의 반복을 위해 새로운 임시결과를 생성하는 것을 포함하는 것을 특징으로 하는 방법.
  9. 제 7항 또는 제 8항에 있어서, 모든 덧셈, 누산 및 곱셈 동작들은 갈루아 필드 GF(p) 또는 갈루아 필드 GF(2q)에서 올림이 있거나 올림이 없이 수행되도록 전환될 수 있는 것을 특징으로 하는 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020027015396A 2000-05-15 2001-05-14 정수연산필드의 범위를 확장하는 장치 및 방법 KR100848412B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IL136151 2000-05-15
IL13615100A IL136151A0 (en) 2000-05-15 2000-05-15 Method and apparatus for acceleration of cryptographic co-processing peripherals
IL139674 2000-11-14
IL13967400A IL139674A (en) 2000-11-14 2000-11-14 Extending the range of computational fields of integers and width of serial input operands in modular arithmetic public key cryptographic co-processors designed for elliptic curve and rsa type computations

Publications (2)

Publication Number Publication Date
KR20030093905A KR20030093905A (ko) 2003-12-11
KR100848412B1 true KR100848412B1 (ko) 2008-07-28

Family

ID=26323947

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027015396A KR100848412B1 (ko) 2000-05-15 2001-05-14 정수연산필드의 범위를 확장하는 장치 및 방법

Country Status (8)

Country Link
US (2) US7111166B2 (ko)
EP (1) EP1299797B1 (ko)
JP (1) JP4955182B2 (ko)
KR (1) KR100848412B1 (ko)
CN (1) CN1265280C (ko)
AU (1) AU5871201A (ko)
DE (1) DE60139401D1 (ko)
WO (1) WO2001089129A2 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5869415A (en) * 1995-06-12 1999-02-09 Sud-Chemie Ag Process for activating layered silicates
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
US7194088B2 (en) * 2001-06-08 2007-03-20 Corrent Corporation Method and system for a full-adder post processor for modulo arithmetic
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations
IL143951A0 (en) * 2001-06-21 2003-09-17 Discretix Technologies Ltd A method and apparatus for carrying out efficiently arithmetic computations in hardware
US6917956B2 (en) * 2001-08-14 2005-07-12 Sun Microsystems, Inc. Apparatus and method for efficient modular exponentiation
US7027597B1 (en) * 2001-09-18 2006-04-11 Cisco Technologies, Inc. Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7027598B1 (en) * 2001-09-19 2006-04-11 Cisco Technology, Inc. Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
US7372960B2 (en) * 2001-12-31 2008-05-13 Certicom Corp. Method and apparatus for performing finite field calculations
DE10223853B4 (de) * 2002-05-28 2005-06-23 Technische Universität Braunschweig Carolo-Wilhelmina Verfahren und integrierte Schaltung zur Durchführung einer Multiplikation modulo M
US7401109B2 (en) * 2002-08-06 2008-07-15 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Multiplication of multi-precision numbers having a size of a power of two
US7447310B2 (en) * 2002-08-06 2008-11-04 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Lean multiplication of multi-precision numbers over GF(2m)
US7627114B2 (en) * 2002-10-02 2009-12-01 International Business Machines Corporation Efficient modular reduction and modular multiplication
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US7191341B2 (en) * 2002-12-18 2007-03-13 Broadcom Corporation Methods and apparatus for ordering data in a cryptography accelerator
US7568110B2 (en) * 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
FR2862454A1 (fr) * 2003-11-18 2005-05-20 Atmel Corp Methode de reduction modulaire aleatoire et equipement associe
US7853632B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Architectural floorplan for a digital signal processing circuit
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7865542B2 (en) 2003-12-29 2011-01-04 Xilinx, Inc. Digital signal processing block having a wide multiplexer
US7853634B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US7882165B2 (en) 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7840627B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7844653B2 (en) 2003-12-29 2010-11-30 Xilinx, Inc. Digital signal processing circuit having a pre-adder circuit
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7840630B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US7853636B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit for convergent rounding
US7702105B1 (en) * 2004-04-23 2010-04-20 Oracle America, Inc. Accelerating elliptic curve point multiplication through batched inversions
US7801937B1 (en) * 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
FR2885711B1 (fr) * 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
US8913739B2 (en) * 2005-10-18 2014-12-16 Telecom Italia S.P.A. Method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
US8024391B2 (en) * 2006-11-06 2011-09-20 Atmel Rousset S.A.S. Modular multiplication method with precomputation using one known operand
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
CN100517214C (zh) * 2007-05-30 2009-07-22 北京天碁科技有限公司 一种实现二进制多项式运算的硬件配置方法及硬件***
US8144864B2 (en) * 2007-12-28 2012-03-27 Intel Corporation Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
US8479133B2 (en) 2009-01-27 2013-07-02 Xilinx, Inc. Method of and circuit for implementing a filter in an integrated circuit
US8543635B2 (en) 2009-01-27 2013-09-24 Xilinx, Inc. Digital signal processing block with preadder stage
KR101590322B1 (ko) * 2009-05-15 2016-02-19 삼성전자주식회사 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
US9383966B2 (en) 2011-09-06 2016-07-05 Intel Corporation Number squaring computer-implemented method and apparatus
US9355068B2 (en) 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
US10095516B2 (en) 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
CN103207770B (zh) * 2013-04-16 2016-09-28 飞天诚信科技股份有限公司 一种在嵌入式***中实现大数预计算的方法
CN103699357B (zh) * 2013-12-05 2016-11-23 西安交通大学 一种用于模乘和模平方的快速模约简算法电路
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
KR101626743B1 (ko) * 2014-03-26 2016-06-07 금오공과대학교 산학협력단 유한체상의 몽고메리 알고리즘을 이용한 곱셉기 및 곱셈 방법
US10924276B2 (en) * 2018-05-17 2021-02-16 Intel Corporation System, apparatus and method for performing a plurality of cryptographic operations
US11508263B2 (en) * 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
US11468797B2 (en) 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
CN112230883B (zh) * 2020-10-14 2021-06-01 上海芯旺微电子技术有限公司 一种用于乘法器零标志位的产生电路、乘法器和检测方法
TR2021012485A2 (tr) * 2021-08-06 2022-07-21 Elektra Elektronik Sanayi Ve Ticaret Anonim Sirketi Evi̇ri̇ci̇ ve güç çevi̇ri̇ci̇si̇ uygulamalarinda hizli ve yüksek doğruluklu bi̇r hesaplama yöntemi̇ ve söz konusu yönteme göre çalişan bi̇r ci̇haz
CN116830076A (zh) * 2022-01-28 2023-09-29 辉达公司 用于高效模除法和模求逆的技术、设备和指令集架构
WO2023141935A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations
WO2023141934A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073870A (en) 1989-01-30 1991-12-17 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5144574A (en) 1989-01-30 1992-09-01 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5513133A (en) 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0080528A1 (en) * 1981-11-30 1983-06-08 Omnet Associates Computational method and apparatus for finite field arithmetic
US4745568A (en) * 1986-12-16 1988-05-17 Onyszchuk Ivan M Computational method and apparatus for finite field multiplication
JPH02199532A (ja) * 1989-01-30 1990-08-07 Nippon Telegr & Teleph Corp <Ntt> 剰余乗算の方法および回路
US5065429A (en) * 1989-04-03 1991-11-12 Lang Gerald S Method and apparatus for protecting material on storage media
IL94449A (en) * 1990-05-20 1994-06-24 Fortress U & T 2000 Ltd Method and apparatus for exponentiation over gf(2")
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
JP3406914B2 (ja) * 1991-09-05 2003-05-19 キヤノン株式会社 演算装置及びこれを備えた暗号化装置、復号装置
JP3302043B2 (ja) * 1992-05-18 2002-07-15 キヤノン株式会社 暗号通信方法及びそのシステム
GB9121995D0 (en) 1991-10-16 1991-11-27 Jonhig Ltd Value transfer system
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US5349551A (en) * 1993-07-30 1994-09-20 The United States Of America As Represented By The Director Of National Security Agency Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps
US5544246A (en) * 1993-09-17 1996-08-06 At&T Corp. Smartcard adapted for a plurality of service providers and for remote installation of same
JP3614480B2 (ja) 1994-11-18 2005-01-26 株式会社日立製作所 電子チケット販売・払戻システム及びその販売・払戻方法
JPH0944576A (ja) 1995-08-02 1997-02-14 Hitachi Ltd 電子財布貸付システム
ES2193247T3 (es) 1996-05-24 2003-11-01 Jong Eduard Karel De Sistema y metodo de proteccion criptografica de comunicaciones.
EP0818761A1 (en) * 1996-07-12 1998-01-14 Koninklijke KPN N.V. Integrated circuit card, secure application module, system comprising a secure application module and a terminal and a method for controlling service actions to be carried out by the secure application module on the integrated circuit card
GB2321979B (en) * 1997-01-30 2002-11-13 Motorola Ltd Modular multiplication circuit
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
ES2293677T3 (es) 1997-05-04 2008-03-16 Sandisk Il Ltd Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery.
US6366940B1 (en) * 1998-03-02 2002-04-02 Matsushita Electric Industrial Co., Ltd. High-speed modular multiplication apparatus achieved in small circuit

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5073870A (en) 1989-01-30 1991-12-17 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5144574A (en) 1989-01-30 1992-09-01 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5513133A (en) 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers

Also Published As

Publication number Publication date
US20060269054A1 (en) 2006-11-30
CN1449519A (zh) 2003-10-15
EP1299797B1 (en) 2009-07-29
US7111166B2 (en) 2006-09-19
US20020039418A1 (en) 2002-04-04
JP4955182B2 (ja) 2012-06-20
WO2001089129A2 (en) 2001-11-22
US7904719B2 (en) 2011-03-08
AU5871201A (en) 2001-11-26
JP2004501396A (ja) 2004-01-15
EP1299797A4 (en) 2008-04-02
KR20030093905A (ko) 2003-12-11
CN1265280C (zh) 2006-07-19
DE60139401D1 (de) 2009-09-10
WO2001089129A3 (en) 2002-03-28
EP1299797A2 (en) 2003-04-09

Similar Documents

Publication Publication Date Title
KR100848412B1 (ko) 정수연산필드의 범위를 확장하는 장치 및 방법
US7277540B1 (en) Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography
US5513133A (en) Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
US6185596B1 (en) Apparatus &amp; method for modular multiplication &amp; exponentiation based on Montgomery multiplication
US6209016B1 (en) Co-processor for performing modular multiplication
Savas et al. Multiplier architectures for GF (p) and GF (2n)
US7046800B1 (en) Scalable methods and apparatus for Montgomery multiplication
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
KR101925868B1 (ko) 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템
US7627114B2 (en) Efficient modular reduction and modular multiplication
Hasan Double-basis multiplicative inversion over GF (2/sup m/)
Großschädl High-speed RSA hardware based on Barret’s modular reduction method
JP2001034167A (ja) 演算装置及び暗号処理装置
Tenca et al. A design framework for scalable and unified multipliers in GF (p) and GF (2m)
US20020114449A1 (en) Modular multiplier and an encryption/decryption processor using the modular multiplier
JP2000207387A (ja) 演算装置及び暗号処理装置
EP0877979A1 (en) Co-processor for performing modular multiplication
KR100297110B1 (ko) 모듈러곱셈기
WO2003096182A1 (en) “emod” a fast modulus calculation for computer systems
Sandoval et al. Novel algorithms and hardware architectures for montgomery multiplication over GF (p)
Pinckney et al. Public key cryptography
Großschädl A new serial/parallel architecture for a low power modular multiplier
Großschädl High-Speed RSA Hardware Based on
GB2318890A (en) Co-processor for performing modular multiplication

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee