KR20050057010A - 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법 - Google Patents

유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20050057010A
KR20050057010A KR1020057003398A KR20057003398A KR20050057010A KR 20050057010 A KR20050057010 A KR 20050057010A KR 1020057003398 A KR1020057003398 A KR 1020057003398A KR 20057003398 A KR20057003398 A KR 20057003398A KR 20050057010 A KR20050057010 A KR 20050057010A
Authority
KR
South Korea
Prior art keywords
processing
processing element
processor
data
final
Prior art date
Application number
KR1020057003398A
Other languages
English (en)
Other versions
KR100950117B1 (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 모사이드 테크놀로지스 인코포레이티드
Publication of KR20050057010A publication Critical patent/KR20050057010A/ko
Application granted granted Critical
Publication of KR100950117B1 publication Critical patent/KR100950117B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

파이프라인 배열과 같은 다수의 단계를 갖는 연산 장치 또는 시스템은 상기 단계를 따라 위치된 클로킹 레일 또는 컨덕터를 갖는다. 평행한 하위 배열에 정열된 다수의 즉, 수백의 상태에서, 상기 클로킹 컨덕터는 상기 하위 배열을 따라 정열된다. 개별의 상태에 있어서, 어느 하나의 상태에서 발생하는 상기 두 연산기의 최단 거리는 되돌아 오는 경로에서 발생한다. 하나의 배열은 독립적인 프로세싱을 위해 별도 섹션으로 분리된다.

Description

유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법{Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies}
본 발명은 일반적인 병렬 프로세서(parallel processors)에 관한 것으로, 보다 상세하게는 동일한 프로세서를 사용하여 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작 프로세싱이 가능한 병렬 프로세서에 관한 것이다.
예를 들어, 월드 와이드 웹(World Wide Web)의 인터넷과 같은 넓게 분포된 정보 네트워크를 통한 거래에서 당사자 사이에 전자적으로 축적된 문서를 교환하는 것이 상대적으로 일반화되고 있다. 인터넷이 갖는 일반적인 문제는 안전한 통신 채널의 부족이다. 따라서, 인터넷을 사용하는 병원, 정부, 은행, 증권 및 신용 카드 회사에 있어서, 개인 보호(privacy) 및 보안(security)이 보장되어야 한다. 전술된 문제를 해결하는 하나의 접근은 전송 전에 데이터 암호화를 사용한다. 이전의 기술 시스템에 있어서, 호스트 컴퓨터 시스템은 예를 들면, 최소한의 개인(private) 암호화 키를 저장하기 위한 최소한의 메모리 회로를 갖는 전자 통신에서 암호화 프로세서인 암호화 유닛을 제공받는다. 정보가 호스트 컴퓨터 시스템으로부터 인터넷을 통해 수신자에게까지 전송되고 기밀의 성질일 때, 정보는 저장된 개인 키를 사용하는 암호화를 위한 암호화 프로세서로 처음 보내진다. 통상적으로, 같은 개인 키는 데이터 암호화 작용이 실행될 때마다 사용된다. 택일적으로, 암호화 키는 암호화 프로세서를 갖는 전자 통신에서 최소한의 메모리 회로에 저장된 개인 암호화 키의 한정된 세트(유한 집합)로부터 선택된다.
물론, 암호화 프로세서에 의해 실행되는 데이터 암호화 작용은 수학적인 연산 방식(algorithms)이 있고, 연산 방식에서, 예를 들면 전자 문서의 해쉬 버전(hash version) 같은, 입력 데이터 값은 단지 변하기 쉬운 값이다. 따라서, 최소량의 프로세서 자원을 사용하는 입증된 암호화 함수를 실행하는 암호화 프로세서를 최적화하는 것이 가능하다. 추가적으로, 이전 암호화 유닛 기술에서, 최적화된 암호화 프로세서는 호스트 컴퓨터 시스템의 마이크로 프로세서로부터 통상적으로 분리되고, 왜냐하면 그것이 이러한 방법에서 최상의 최적화가 되기 때문이다.
몇몇의 표준이 암호화/복호화를 통한 인터넷상에서 개인 보호 및 강력한 인증에 대해 오늘날 존재한다. 통상적으로, 실행된 암호화/복호화는 메시지 내용의 개인 보호를 유지하는 동안 당사자 사이에 열린 채널을 통해 데이터 전송을 허용할 의도의 연산 방식에 기초한다. 이것은 송신자에 의해 암호화 키를 사용하는 데이터를 암호화하는 것에 의해 그리고 수신자에 의해 복호화 키를 사용하는 데이터를 복호화하는 것에 의해 수행된다. 대칭 키 암호법에서, 암호화 및 복호화 키는 같다.
암호화 연산 방식은 공개-키 및 비밀-키 연산 방식속에서 통상적으로 분류된다. 비밀-키 연산방식에서, 키는 비밀이고 반면에 공개-키 연산 방식에서, 하나의 키는 일반 대중에 널리 알려져있다. 일반적으로, 블록 암호에 대해, 대칭 키가 사용된다. 블록 암호는 입력 데이터로써 통상적으로 32-128 비트의 데이터 블록을 발생시키고, 출력 데이터로써 같은 비트의 수를 생산한다. 실행된 암호화 및 복호화 작용은 키를 사용하여 56-128 비트의 범위에서 통상적으로 길이를 갖는다. 암호화 연산 방식이 디자인되면 아는 키 없이 메시지를 복호화하기 매우 어렵다.
블록 암호 이외에, 인터넷 보안 프로토콜은 또한 연산 방식에 기초된 공개-키에 의존한다. 포그(Pogue) 및 리베스트(Rivest)에 의해 발행된 미국 특허 5,144,667호에 기술된 RSA(Rivest-Shamir-Adelman) 암호법과 같은 공개 키 암호화시스템은 두 개의 키를 사용하는데, 그중 하나는 비밀-개인-이고, 다른 하나는 공개적으로 이용할 수 있다. 이전의 누군가가 공개 키를 생성하고, 어떤이가 그 누군가에게 그 공개 키를 사용하는 암호화된 비밀 메시지를 보낸다 하더라도, 메시지의 복호화는 개인 키의 사용에 의해 오직 이루어질 수 있다. 그러한 공개-키 암호화의 이점은 개인 키가 이전 대화의 모든 당사자들에게 분배되지 않는다는 것이다. 대조적으로, 대칭 암호화가 사용되었을 때, 복합 비밀 키는 메시지를 수신할 의도의 각 당사자에 대해 하나가 생성되고, 각 비밀 키는 개별적으로 소통된다. 보안 방식에서 비밀 키를 분배하려는 시도는 오직 비밀-키 암호화를 사용하는 메시지를 보내서 직면하는 유사한 문제를 발생시키고; 이것은 키 분배 문제로써 통상적으로 언급된다.
키 교환은 공개-키 기술의 다른 응용이다. 키 교환 프로토콜에 있어서, 두 당사자들은 심지어 세 번째 당사자가 그들의 대화를 방해한다 하더라도 비밀 키에대해 의견을 같이한다. 미국 특허 4,200,770호에 기술된 디피-헬만(Diffie-Hellman)의 지수 키 변화 방법은 그러한 프로토콜의 하나의 예이다.
RSA 및 디피-헬만 키 교환과 같은 대부분의 공개-키 연산 방식은 αx mod p의 연산인 모듈러 지수화에 기초가 된다. 이러한 표현은 α를 x 번 곱하고, p에 의해 그 값을 나누고, 그 나머지 값을 취한다"를 의미한다. 이것은, 다음의 이유E때문에, 실행하는데 있어서 연산적으로 고가이다. 이러한 동작을 실행하는데 있어서, 많은 반복된 곱하기 동작 및 나누기 동작이 요구된다. 1985년 4월의 볼륨 번호 44, 넘버 170호인 연산의 수학으로부터 "나눗셈 시행이 없는 모듈러 곱셈"(Modular Multiplication Without Trial Division)에 기술된 몽고메리의(Montgomery's) 방법과 같은 기술은 요구된 나눗셈 동작 수를 감소시키나 이러한 전반적인 연산 비용을 극복하지 못한다. 추가적으로, 현재 데이터 암호화 시스템에서 사용된 수는 매우 크고(통상적으로 1024 비트 또는 이상의), 따라서 일반적인 CPU에서 찾게되는 곱하기 및 나누기 명령은 직접 사용될 수 없다. 대신에, CPU에서 실행되기 충분한 동작속에서 큰수의 곱하기 동작 및 나누기 동작이 무너진 특별한 연산 방식이 사용된다. 이러한 연산 방식은 포함된 다수의 기계어의 제곱에 비례하는 동작 클럭(clock)을 갖는다. 이러한 요소는 매우 천천히 동작하여 큰 수의 곱셈 결과를 가져온다. 예를 들면, 펜티엄?프로세서는 10시간 주기에 32x32 비트 곱하기를 실행할 수 있다. 2048 비트수는 32 비트어 64개로 표현된다. 2048x2048 비트 곱하기는 64x64와 별도의 32x32 비트 곱하기 동작을 요구하고, 펜티엄?프로세서에서 40960 시간이 걸린다. 2048 비트 지수를 갖는 지수화는 4096 곱하기 동작을 요구하고, 만약 똑같은 방법에서 실행한다면, 약 167 밀리온 시간 주기를 요구한다. 만약 펜티엄 프로세서가 166MHZ에서 실행된다면, 모든 동작은 대략 1초를 요구한다. 물론, 나누기 동작은 전반적인 연산 시간에 훨씬 더 시간이 더해진다. 분명하게는, 펜티엄과 같은 일반적인 CPU는 일반 키로 실행하는 것을 기대할 수 없고 어쨌든 교환한다.
연속 배열 및 특히 다수의 프로세싱 요소에 정열된 다수의 분리 프로세싱 요소를 포함하는 파이프라인 프로세서는 이전 기술에 알려져 있고 특히 데이터 암호화 연산 방식을 실행하기에 매우 적합하다.
두가지 타입의 파이프라인 프로세서가 알려져 있다. 단일 프로세싱 방향인, 내부에 하나의 목적 및 외부에 다른 성질의 프로세서, 및 포워드(forward) 프로세싱 방향 및 리턴(return) 프로세싱 방향인 내부와 외부가 같은 목적 성질인 양방향의 프로세서이다. 양방향의 파이프라인 프로세서의 특정한 실시예를 고려할 때, 제1 데이터 블록은 연속 배열의 제1 프로세싱 요소속으로 버퍼(buffer)하는 메모리로부터 읽혀지고 요소가 제1 프로세싱 단계를 실행하고, 제2 프로세싱 요소로 제1 데이터 블록이 전달된다. 병렬에서 제1 프로세싱 요소가 메모리 버퍼로부터 제2 데이터 블록을 읽는동안 제2 프로세싱 요소는 제2 프로세싱 단계를 실행하고, 제2 데이터 블록에서와 같은 제1 프로세싱 단계를 실행한다. 순서대로, 각각의 데이터 블록은 하나의 프로세싱 요소로부터 연속 배열의 포워드 프로세싱 방향을 따라 다음 프로세싱 요소로 단계적으로 전달된다. 각 단계에서, 거기서 제공되는 각각의 데이터 블록상에 같은 수학적 동작을 수행하는 프로세싱 단계가 있다. 동시에, 각 프로세싱 요소에서 연산된 결과는 리턴 프로세싱 방향에 관한 연속 배열의 이전의 프로세싱 요소에 제공되고, 결과는 암호화 프로세서에 의해 되돌아오는 프로세스된 데이터 합산을 포함한다. 다수의 프로세싱 요소를 사용함으로써, 데이터 프로세싱에 이러한 조립-라인 접근은 이전에 기술된 연산적으로 고가의 암호화 연산 방식을 실행하는 매우 효과적인 방법이다. 물론, 연산적으로 고가의 프로세싱 동작을 실행하기 위한 파이프라인 프로세서의 응용은 실시예의 방법에 의해 상세히 토론된 데이터 암호화 연산 방식에 엄격히 제한된 것과 다른 것이다.
이전의 암호화 프로세서 기술의 불편함이 있는데 상기 프로세서가 키 크기를 고정시키거나 양자택일적으로 실행을 고정시키는데 제한되는 것이다. 따라서, 예를 들면, 128 비트의 키를 갖는 프로세서 단어 또는 상기 프로세서는 40 비트 암호화 동작을 프로세싱하는 것에 관해서 128 비트 암호화 동작을 프로세싱하는 동일한 시간이 요구된다. 통상적으로, 이러한 두 디자인 필요조건은 상기 프로세서의 최상의 실행을 허용한다.
같은 프로세서를 사용하는 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱이 가능한 파이프라인 프로세서를 제공하기에 유리하다.
본 발명은 다음 도면과 관련하여 적합한 실시예의 다음 상세한 설명에 의해 쉽게 이해될 것이다.
도 1은 이전 기술에 따른 파이프라인 프로세서의 한 실시예의 간략화된 블록도다.
도 2는 이전 기술에 따른 파이프라인 프로세서의 다른 실시예의 간략화된 블록도다.
도 3a는 본 발명의 제1 실시예에 따른 분배된 감소하는 회로를 갖는 파이프라인 프로세서의 간략화된 블록도다.
도 3b는 분배된 감소하는 회로와 접촉하는 도 3a의 파이프라인 프로세서의 연속의 프로세서 배열의 간략화된 블록도다.
도 4a는 본 발명의 제2 실시예에 따른 회로를 갖는 파이프라인 프로세서의 간략화된 블록도다.
도 4b는 상기 회로와 접촉하는 도 4a의 파이프라인 프로세서의 연속 프로세서 배열의 간략화된 블록도다.
도 5a는 본 발명의 제3 실시예에 따른 파이프라인 프로세서의 간략화된 블록도다.
도 5b는 도 4a의 파이프라인 프로세서의 연속 프로세서 배열의 간략화된 블록도고, 도 4a에서, 각각의 프로세싱 요소는 내부의 감소 회로다.
도 6은 본 발명에 따른 파이프라인 프로세서의 적합한 제4 실시예의 간략화된 블록도다.
도 7은 본 발명에 따른 파이프라인 프로세서의 적합한 제5 실시예의 간략화된 블록도다.
도 8은 암호화 함수를 실행하기 위한 파이프라인 배열 브로세서에서의 사용을 위한 효과적인 자원 프로세싱 요소 디자인의 블록도다.
도 9는 모듈러 곱셈에 대한 수축성 배열의 블록도다.
도 10은 도시된 입력 경로를 갖는 단일 유닛의 블록도다.
도 11은 DP RAM Z 유닛의 블록도다.
도 12는 Exp RAM 유닛의 블록도다.
도 13은 Prec RAM 유닛의 블록도다.
도 14는 암호화 함수를 실행하기 위한 파이프라인 배열 프로세서에서의 사용을 위한 효과적인 스피드 프로세싱 요소 디자인의 블록도다.
도 15는 모듈러 곱셈에 대한 수축성 배열의 블록도다.
도 16은 도시된 입력 경로를 갖는 단일 유닛의 블록도다.
도 17은 DP RAM Z 유닛의 블록도다.
-발명의 목적
유사한 효율을 갖는 다른 비트 길이의 키를 사용하는 암호화 조작의 프로세싱이 가능한 파이프라인 프로세서를 제공하는 본 발명의 목적이다.
- 발명의 요약
본 발명에 따르면
a) 연속 배열에 정열된 개별의 프로세싱 요소 n을 포함하는 파이프라인을 제공하여 제1 프로세싱 요소가 n번째 프로세싱 요소를 선행하는 제2 프로세싱 요소를 선행하는 단계;
b) m-비트 암호화 키를 상기 파이프라인 프로세서로 제공하는 단계;
c) 상기 암호화 키 길이를 나타내는 데이터를 상기 파이프라인 프로세서로 제공하는 단계;
d) 프로세싱을 위한 제1 처리 요소로 데이터를 제공하는 단계;
e) 상기 암호화 키 길이를 나타내는 최소한의 상기 데이터에 따른 최종의 처리 요소를 결정하는 단계;
f) 상기 최종의 처리 요소에 있는 상기 처리 요소를 나타내는 상기 최종의 처리 요소로 신호를 제공하는 단계;
g) 상기 최종의 처리 요소까지 오직 제1 처리 요소로부터 단계식의 전진하는 연속 방법에서 더 처리를 위한 데이터를 보급하고, 여기서, 같은 파이프라인 프로세서 내의 상기 최소 두 개의 상기 처리 요소가 상기 최종의 처리 요소로써 결정되는 단계를 포함하는 처리 데이터에대한 방법이 제공된다.
본 발명에 따르면
제1 처리 요소는 n번째 처리 요소를 선행하는 제2 처리 요소를 선행하는 연속 배열에 정열된 다수의 개별 처리 요소;
처리를 위한 상기 연속 배열로 데이터를 제공하기 위한 연속 배열의 최소한의 처리 요소를 갖는 전기 통신에서의 포트; 및
사용에 있어서, 상기 연속 배열의 최종 처리 요소를 결정하는 암호화 키 길이를 나타내는 데이터를 처리하기 위한 및 암호화 키 길이를 나타내는 상기 데이터에 의존하는 연속 배열의 프로세서 요소로 결정되는 최소 두 개의 처리 요소중 하나에 신호를 제공하기 위한 상기 연속 배열의 최소한 두 개의 처리 요소 및 상기 포트를 갖는 전기 통신에서의 논리 회로를 포함하는 데이터를 처리하기 위한 장치가 제공된다.
본 발명에 따르면
제1 처리 요소는 n번째 처리 요소를 선행하는 제2 처리 요소를 선행하는 연속 배열에 정열된 다수의 개별 처리 요소;
사용에 있어서, 암호화 키 길이를 나타내는 데이터를 처리하기 위한 및 최종의 처리 요소 상황을 나타내는 처리 요소로 내부 신호를 제공하기 위한 각 개별의 처리 요소에서의 논리 회로, 상기 신호는 암호화 키 길이를 나타내는 데이터에 의존하여 제공된 것을 포함하는 데이터를 처리하기 위한 장치가 제공된다.
본 발명은 암호화 동작에서의 사용을 위한 병렬 프로세서의 실행에 관한 것으로, 실행에 있어서 병렬 프로세서는 대체로 효율을 포함하지 않는 변화하는 길이 암호화 키를 유지한다.
도 1에 따르면, 도면은 이전 기술에 따른 파이프라인 프로세서(1)의 간략화된 블록도이다. 프로세서(1)는 다수의 프로세서 요소, 예를 들면, 256 비트 암호화를 유지하는 연속 배열(2)을 포함한다. 입/출력 포트(3)는 프로세서(1)에 의해 프로세싱하는 데이터를 수신하기 위해, 예를 들면, 포트(3)를 가지고 동작하는 통신에서 또한 클라이언트(client) 지역(나타내지 않음)으로부터 배열(2)의 제1 프로세싱 요소(나타내지 않음)를 가지고 통신한다.
암호화 동작을 실행하기 위해, 소정 길이의 암호화 키는 프로세서(1)에 의해 제공되고 암호화 동작은 실행된다. 택일적으로, 만약 암호화 키가 소정의 길이보다 작다면, 소정의 길이를 가지고와서 채워지고 동작이 실행된다. 그럴 경우에는, 동작은 대략 같은 소정량의 시간이 걸린다. 불행히도, 키 길이가 크게 증가 할수록, 프로세싱하기 위한 이전 프로세서(1) 기술의 효율은 노쇄해져서, 짧은 키는 감소된다. 예를 들면, 256 비트 키를 수용하기 위해 디자인 된 프로세서는 40-비트 키를 오직 프로세싱하는 동안 "충분한" 시간의 대략 1/6th에서 256 비트로 채워진 40-비트 키를 프로세싱할 것이다. 이것은 자원의 빈약한 배치이다. 보다나은 자원을 배치하기 위해, 일부 프로세서는 도2에 나타낸 것처럼 다른 길이 암호화 키를 프로세싱하기 위해 각각 다수의 프로세서 배열을 포함한다. 따라서, 프로세서(4)는 40 비트 암호화 프로세서 배열(2a), 128 비트 암호화 프로세서 배열(2b), 및 256 비트 암호화 프로세서 배열(2c)를 포함한다. 입/출력 포트(3)는 프로세서(4)에 의해 프로세싱하는 데이터를 수신하기 위해, 예를 들면, 포트(3)를 가지고 동작하는 통신에서 클라이언트 지역(도시되지 않음)으로부터, 각 배열(2a, 2b 및 2c)의 제1 프로세싱 요소를 가지고 따로따로 통신된다. 그러한 효과적인 실행은 자원 사용에 있어서는 비효율적이고 그 자체가 불합리적이다.
도 3a에 따르면, 도면은 본 발명의 제1 실시예에 따른 유사한 효율을 갖는 무작위 키 비트 길이 암호화 동작을 프로세싱하기 위한 파이프라인 프로세서(5)의 간략화된 블록도이다. 파이프라인 프로세서(5)는 최소한 아나의 배열을 포함하고, 도 3a에 있어서, 다수의 프로세서 요소(프로세서 요소는 도시되지 않음) 배열(6a, 6b 및 6c)은, 예를 들면, 6a 및 6b는 256 비트 암호화를 각각 유지하고 배열 6c는 512 비트 암호화를 유지하는 것을 나타낸다. 입/출력 포트(3)는 포트(3)를 가지고 동작하는 통신에서 클라이언트 지역(도시되지 않음)으로부터 파이프라인 프로세서(5)에 의해 프로세싱하는 데이터를 수신하기 위한 각각의 배열(6a, 6b, 6c)의 제1 프로세싱 요소를 가지고 각각 통신한다. 논리 회로(7)는 입/출력 포트(3) 및 최종-비트 신호 컨덕터(conductor)(9)를 가지고 전기적 통신을 하고, 컨덕터는 각 배열(6a, 6b, 6c)내에 각 요소와 나란히 꾸불꾸불한 형태에서 확장한다. 논리 회로(7)는 암호화 키 길이를 나타내는 데이터를 수신하고, 데이터에 의존하는 각 배열(6a, 6b, 6c)내에 각 요소로 컨덕터(9)를 통해 신호를 제공한다.
도 3b에 대해 지금 언급하면, 도면은 프로세서 요소 81, 82, 83, ...,8n-1 및 8n을 포함하는 연속 배열(6a)의(배열 6b 및 6c는 명확성을 위해 생략된다.) 간략화된 블록도이다. 각 프로세서 요소(8)는 커넥션(11)을 통해 최종-비트 신호 컨덕터(9)를 가지고 전기적으로 따로따로 통신된다. 특정한 실시예의 방법에 의해, 각 프로세서 요소는 8 비트 프로세서 요소이고, 연속 배열(6a)은 256 비트 암호화를 유지하기 위한 32개의 개별 프로세싱 요소를 포함한다. 따라서, 프로세서의 최고 효율 배치는 40 비트 암호화 동작을 실행하는 5개의 개별 프로세서 요소, 64 비트 암호화 동작을 실행하는 8개의 개별 프로세서 요소 및 128 비트 암호화 동작을 실행하는 16개의 프로세서 요소, 등을 요구한다. 임의적으로, 8-비트 프로세서 요소보다 다른 프로세서 요소가 사용된다.
예를 들면, 완전하게 적어도 5개의 개별 8 비트 프로세서 요소를 요구하는 40 비트 암호화 동작과 같은 특정한 실시예를 고려하여 예시한다. 사용에 있어서, 예를 들면, 완전한 데이터 파일 집합을 포함하는 개별의 데이터 블록의 흐름과 같이, 데이터는 포트(3)를 통해 클라이언트 위치(도시되지 않음)에 의한 암호화를 위해 제공된다. 제1 프로세싱 주기의 시작부에서 배열(6a)의 제1 프로세서 요소(81)는 메모리 버퍼(도시되지 않음)로부터 제1 데이터 블록을 수신하고, 즉시 소정의 제1 프로세싱 단계를 실행한다. 현 실시예에서, 제1 프로세싱 단계는 암호화 키의 8-비트 세그먼트(segment)를 사용하는 암호화 동작에 대응한다. 물론, 제1 프로세서 요소(81)는 포트(3)의 메모리 버퍼(도시되지 않음) 및 논리 회로(7)를 가지고 같은 시간에 있으며 데이터 블록의 흐름은 같은 시간에서 제1 프로세서 요소(81)로 게이트(gate)된다. 제2 프로세싱 주기의 시작부에서, 제1 프로세서 요소(81)는 포트(3)을 통해 제2 데이터 블록을 수신한다. 대략 동시에, 제1 프로세싱 요소(81)은 제2 프로세싱 요소(82)로 포워드 프로세싱 통로를 따라 제1 데이터 블록의 형태(form)에서 출력을 제공한다.
추가적으로, 제1 프로세서 요소(81)은 포트(3)의 메모리 버퍼로 리턴 프로세싱 통로를 따라 그속에서 연산된 제1 결과를 제공한다. 데이터를 프로세싱하는 이러한 조립 라인 접근은 최종 결과가 리턴 프로세싱 통로를 따라 포트(3)의 메모리 버퍼로 제공될 때까지 지속된다.
바람직하게는, 이전에 기술된 것처럼, 데이터 블록의 흐름은 같은 시간에서 제1 프로세서 요소(81)에 게이트된다. 각 프로세싱 주기의 초반부에서, 논리 회로(7)는 소정량에 의해 암호화 키 길이를 나타내는 데이터를 감소시킨다. 현 실시예에 있어서, 암호화 키 길이는 암호화 동작을 완전하게 하는 5개의 프로세서 요소를 요구하는 40 비트이고, 암호화 키 길이를 나타내는 데이터는 값 5를 대표한다. 그 다음에, 제1 프로세싱 주기의 시작부에서 논리 회로(7)는 4개의 프로세싱 주기이 남은 것을 나타내는 값 5로 하나만큼 감소한다. 값은 5번째 프로세싱 주기로 제2 시작부에서 감소되고, 그때 논리 회로(7)는 제로 값으로 되돌아간다. 만약 제로 값이 암호화 데이터의 끝이 도달되는 것을 나타내는 결과를 가져오면, 그 다음 논리 회로(7)는 모든 프로세서 요소로 최종의 비트 신호 컨덕터(9)를 통해 최종 비트 신호를 전송한다. 포워드 프로세싱 통로를 따라 최종 비트 신호로 수신된 것을 갖는 프로세서 요소, 이러한 경우에는 5번째 프로세서 요소는 최종 프로세싱 요소이고 데이터를 돌린다는 것을 즉시 알 수 있고, 데이터는 포워드 프로세싱 통로를 따라 전달된 과거 프로세서 요소보다 다른 것이다. 최종 프로세서 요소를 선행하는 각 프로세서 요소는 최종 비트 신호가 전송된 시간에 포워드 프로세싱 통로 및 리턴 프로세싱 통로 양쪽을 따라 데이터를 수신하고, 최종 요소 상태보다 다른 것을 지시한다.
물론, 만약 논리 회로(7)의 값이 특별한 프로세싱 주기동안 제로보다 다른 값에 도달한다면, 그 다음 프로세싱은 정상적으로 지속된다. 예를 들어, 제2 프로세싱 주기동안, 제1 프로세싱 요소(81)는 제2 데이터 블록에서 같은 제1 프로세싱 동작을 실행하고, 제2 프로세싱 요소(82)는 제1 데이터 블록에서 제2 프로세싱 동작을 실행한다. 제2 프로세싱 주기의 끝에서, 제1 데이터 블록은 제2 프로세서 요소(82) 및 제3 프로세서 요소(83) 사이에 포워드 프로세싱 통로를 따라 각각 보급된다. 동시에, 제2 데이터 블록은 제1 프로세서 요소(81) 및 제2 프로세서 요소(82) 사이에 포워드 프로세싱 통로를 따라 보급된다. 추가적으로, 제2 프로세서 요소(82)는 제1 프로세서 요소(81)에서 리턴 프로세싱 통로를 따라 그 속에서 연산된 결과를 제공한다. 물론, 인접한 프로세서 요소 사이의 포워드 프로세싱 통로 및 리턴 프로세싱 통로를 따라 데이터 블록을 동시에 게이팅(gating)하는 것은 통상적으로 동시의 타이밍(timing)을 포함한다.
도시된 비-방향적인 파이프라인 디자인을 사용함으로써, 결과는 키 길이에 관심없이 효율적으로 연산되고 추가적인 프로세싱 주기을 피할 수 있다. 장치내의 다른 길이의 키를 지탱하기 위한 프로세서의 사용은 동시에 최대 키 크기를 갖는 각 프로세스인 하나의 효율적인 암호화 프로세싱보다 이상을 지원한다. 일반적인 암호화 프로세싱 시스템에서, 통계치는 주어진 자원 사용을 위한 최상의 실행을 통계적으로 제공되는 프로세서 크기를 선택하도록 쉽게 사용된다. 양자 택일적으로, 최종-비트 신호 컨덕터(9)는 프로세서 요소(8)의 서브셋(subset)을 갖는 전기적인 커넥션에 있다. 예를 들면, 연속 배열(6a)에서, 최종-비트 신호 컨덕터(9)는 모든 4번째 프로세서 요소와 임의로 연결된다. 8비트 프로세서 요소를 가지고, 프로세서(5)는 일종의 32비트 세그먼트로써 암호화 데이터를 프로세싱한다. 32비트 세그먼트에 의해 프로세스된 256비트 암호화를 지원하는 프로세서에 대해, 8개의 가능한 프로세싱 길이가 지원된다. 논리 회로(7)로부터 프로세서 요소까지 최종 비트 신호를 수행하기 위한 이로운 다수의 데이터 통로는 프로세서(5) 제조의 편이를 용이하게하는 데이터 통로를 8개로 분리하는 32로부터 감소된다. 불행히도, 프로세싱 자원은 32비트에 의해 나눌수 있는 것보다 다른, 예를 들면, 프로세싱 이전의 최소한 64 비트로 채워진 40비트 암호화 키와 같은, 암호화 키 길이를 위한 낮은 효율을 가지고 정열된다. 따라서, 데이터는 위에서 토론된 것처럼 5번째 프로세서 요소 대신에 8번째 프로세서 요소에서 돌려진다.
도 4a 및 도 4b에 따르면, 도면은 본 발명의 제2 실시예에 따른, 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작을 프로세싱하기 위한 파이프라인 프로세서(20)의 간략화된 블록도이다. 도 3a 및 3b에 관하여 이전에 기술된 것과 동일한 요소는 여기서 동일한 수를 구비하고, 그 토론은 간결함 때문에 생략된다. 예를 들면, 일종의 게이트를 포함하는 스위칭 네트워크(21)는 추가적으로 입/출력 포트(3) 및 일종의 데이터통로(22)를 불러오는 고정배선(hardwired)을 갖는 전기적인 통신에 있다. 스위칭 네트워크(21)는 암호화 키 길이를 나타내는 데이터를 수신하고 데이터통로를 불러오는 일종의 고정배선을 통해 결정된 프로세싱 요소로 신호를 제공한다. 사용에 있어서, 암호화 키 길이를 나타내는 데이터는 스위칭 네트워크(21)로 제공되고, 일종의 게이트는 보내진 최종 프로세싱 요소 상태를 나타내는 프로세싱 요소 신호를 결정한다. 스위칭 네트워크(21)는 데이터통로(22)를 불러오는 고정배선의 선택된 데이터경로를 통해서 결정된 프로세싱 요소로 신호를 전송한다. 예를 들면, 신호는 최종 프로세싱 요소 상태를 나타내는 값에 약간의 결정된 프로세싱 요소를 세팅하기 위해 사용된다. 바람직하게는, 결정된 프로세싱 요소가 암호화를 위한 데이터를 프로세싱을 끝마쳤을 때, 프로세싱 요소는 즉시 데이터를 돌리고 데이터는 포트(3)의 메모리 버퍼(도시하지 않음)에 의해 출력이 읽혀진다. 물론, 임의적으로 데이터통로는 예를 들면, 4번째 프로세싱 요소 모두와 같이, 스위칭 네트워크(21) 및 프로세싱 요소의 소정의 서브셋 사이에 제공된다. 바람직하게는 전체의 데이터통로 및 스위칭 네트워크의 복잡성은 감소된다. 불행하게는, 프로세싱 자원은, 예를 들면 프로세싱 이전에 최소한 64 비트에서 채워지는 40비트 암호화 키와 같은, 암호화 키 길이를 위해 낮은 효율을 가지고 정열된다.
도 5a 및 도 5b에 따르면, 도면은 본 발명의 제3 실시예에 따른, 유사한 효율을 갖는 무작위 키 비트 길이 암호화 동작을 프로세싱하기 위한 파이프라인 프로세서(12)의 간략화된 블록도이다. 도 3a 및 도 3b에 관하여 이전에 기술된 것과 동일한 요소는 여기서 동일한 수를 갖고, 그 토론은 간략함 때문에 생략된다. 본 발명의 제3 실시예에 따르면, 각 개별의 프로세싱 요소(14)는 전용 논리 회로(15)를 포함한다. 사용에 있어서, 암호화 키 길이를 나타내는 데이터는 암호화를 위해 데이터에 따른 제1 프로세서 요소(141)가 제공된다. 제1 프로세서 요소는 제1 데이터 블록에서 소정의 제1 프로세싱 단계를 실행하고, 추가적으로 소정량에 의해 암호화 키 길이를 나타내는 데이터를 감소시킨다. 암호화 키 길이를 나타내는 감소된 데이터는 제1 데이터 블록에 따른 제2 프로세서 요소(142)로 제공된다. 제2 프로세서 요소(142)의 논리 회로는 암호화 키 길이를 나타내는 감소된 데이터를 수신하고, 추가적인 소정량에 의해 데이터를 감소시킨다. 만약 제2 프로세서 요소(142)의 논리 회로가 제로 값으로 연산한다면, 그 다음 제2 프로세서 요소(142)의 논리 회로는 최종 프로세싱 요소 상태를 나타내는 제2 프로세서 요소(142)에 내부 신호를 일반화시킨다. 대체로 그 시간에 제2 프로세서 요소(142)는 소정의 제2 프로세싱 단계를 완료하고, 제2 프로세서 요소(142)는 데이터를 돌리고, 프로세스된 데이터는 연속 배열(13a)의 출력으로 포트(3)의 메모리 버퍼(도시되지 않음)로 읽혀진다.
도 6에 따르면, 도면은 본 발명의 4번째 적합한 실시예에 따른 파이프라인 프로세서(16)의 간략화된 블록도이다. 파이프라인 프로세서(16)는, 예를 들면, 256비트 암호화 동작을 유지하는 각 배열(6a, 6b) 및 512비트 암호화 동작을 유지하는 배열(6c)와 같은, 다수의 프로세서 요소(프로세서 요소는 도시하지 않음) 배열(6a, 6b 및 6c)을 포함한다. 점선(17a, 17b)는 배열(16a)의 최종 프로세싱 요소 및 배열(6b)의 최종 요소 사이 및 각각의 배열(6b)의 제1 요소 및 배열(6c)의 제1 요소 사이에 전기적인 통신을 제공하기 위한 임의적인 전기적 연결(coupling)을 지시한다. 각 배열(6a, 6b 및 6c)의 제1 프로세싱 요소를 갖는 통신에서 입/출력 포트(3)는 클라이언트 지역(도시하지 않음)에 의해 제공된 데이터를 수신하기 위한 것이고, 입/출력 포트(3)를 갖는 동작하는 통신에서 또한 배열(6a, 6b 및 6c)의 지시된 하나에 의해 프로세싱하기 위한 데이터를 수신하는 것이다. 여기서, 3개의 프로세서는 지원된 최대 암호화 키 크기를 갖는 각각이 제공되나, 여기서 3개의 프로세서는 단일 1024 비트 프로세서를 형성하기 위해 임의적으로 연결된다. 물론, 무작위 길이의 프로세서를 설계(set up)하는 것이 가능하나, 이것은 바람직하지 않은 실질적인 어드레싱(addressing) 총경비를 발생시킨다. 물론, 최대 융통성이 바래졌을 때, 예를 들면, 64비트 키를 프로세싱하는 것과 같은 많은 작은 프로세싱 배열은 이러한 실시예에 따라 연결된다.
왜냐하면, 키 길이를 나타내는 데이터는 프로세싱 및 암호화 키를 위한 데이터에 따라 프로세서에 제공되고, 프로세서는 일을 할 때까지 충분한 프로세싱을 배치시키고, 그것에 의해 충분히 자원을 배치시킨다. 프로세서(16)는 도 3a 및 도 3b에 따라 이전에 드러난 논리 회로(7)를 가지고 도시된다. 따라서, 현 실시예에서, 논리 회로는 프로세서(16)에 의해 프로세스된 비트수를 연산하고, 암호화 키 길이를 나타내는 데이터 연산과 비교하고, 암호화 데이터의 결과를 나타내는 비교에 의존하는 최종 프로세서 신호 컨덕터(9)를 통해 보편적인 신호를 전송한다. 임의적으로, 최종 프로세서 요소 상태를 지시하기 위한 다른 시스템은 예를 들면, 본 발명의 제2 및 제3 실시예중 하나에 따라 기술된 시스템이 사용된다.
도 7에 따르면, 도면은 본 발명의 5번째 바람직한 실시예에 따른 파이프라인 프로세서(18)의 간략화된 블록도이다. 파이프라인 프로세서(18)는, 예를 들면, 256비트 암호화 동작을 지원하는 각 배열(6a 및 6b) 및 512비트 암호화 동작을 지원하는 배열(6c)과 같은, 다수의 프로세서 요소(프로세서 요소는 도시하지 않음)의 배열(6a, 6b 및 6c)을 포함한다. 배열(6a)의 최종 프로세싱 요소 및 배열(6b)의 최종 요소는 하드웨어 커넥션(19a)을 통해 전기적 통신에 있고, 배열(6b)의 제1 요소 및 배열(6c)의 제1 요소는 각각 하드웨어 커넥션(19b)을 통해 전기적 통신에 있다. 배열(6a)의 제1 프로세싱 요소를 갖는 통신에서 입/출력 포트(3)는 클라이언트 지역(도시되지 않음)에 의해 제공된 데이터를 수신하기 위해 있고, 입/출력 포트(3)를 가지고 동작하는 통신에서 또한, 배열(6a, 6b 및 6c)의 연속 배열에의해 프로세싱하기 위한 데이터를 수신하기 위해 있다. 임의적으로, 갈라진 입력(도시하지 않음)은 배열(6a)의 제1 요소보다 다른 최소한의 프로세서 요소로 직접 데이터를 게이팅하기 위해 제공된다.
여기서, 배열(6b)은 양방향적이고, 파이프라인의 실행은 양방향적인 파이프라인 프로세서로써 프로세싱하기 때문에, 배열(6b)의 최종 요소를 사용하기 시작하는 것이 가능하고, 동시에 다른 방향에서 발생하는 동작을 위한 프로세싱가 완료된다. 그에 따라, 효율성에서 의미있는 실행이 결과를 가져온다. 키 길이를 나타내는 데이터는 프로세싱를 위한 데이터 및 암호화 키에 따라 프로세서가 제공되고, 프로세서는 일을 할 때까지 충분한 프로세싱을 배치시키고, 그것에 의해 충분히 자원을 배치시킨다. 프로세서(18)는 도 3a 및 도 3b에 따라 이전에 드러난 논리회로(7)를 가지고 도시된다. 따라서, 현 실시예에서, 논리회로는 프로세서(18)에 의해 프로세스된 비트수를 연산하고, 암호화 키 길이를 나타내는 데이터 연산과 비교하고, 암호화 데이터의 결과를 나타내는 비교에 의존하는 최종 프로세서 신호 컨덕터(9)를 통해 보편적인 신호를 전송한다. 임의적으로, 최종 프로세서 요소 상태를 지시하기 위한 다른 시스템은 예를 들면, 본 발명의 제2 및 제3 실시예 중 하나에 따라 기술된 시스템이 사용된다.
도 6 및 도 7의 파이프라인 프로세서(16 및 18)는 mod에서 각각 동작하고, 여기서, 데이터는 배열(6b)의 최종 프로세서 요소를 이용할 수 있게 만들어지는 배열(6a)의 최종 프로세서 요소로 게이트된다. 예를 들면, 256 프로세서 요소보다 이상이 특별한 프로세싱 동작을 위해 요구된다면, 프로세서 배열의 유효 길이는 제2 다른 배열내에 프로세싱 동작을 지속시키기 위해 증가된다. 물론, 512 프로세서 요소보다 이상이 특별한 프로세싱 동작을 위해 요구된다면, 프로세서 배열의 유효 길이는 제3 다른 배열내에 프로세싱 동작을 지속시키기 위해 증가된다. 예를 들면, 도 6 및 도 7에 도시된 어느 하나의 파이프라인 프로세서는 단일 배열을 사용하는 256비트 암호화; 두 개의 다른 배열을 사용하는 512비트 암호화; 및 세 개의 다른 배열을 사용하는 1024비트 암호화를 실행하기 위해 동작할 수 있다.
바람직하게는, 프로세서가 프로세싱을 완료할 때가 알려진 이후로, 다른 프로세서의 하위에서 프로세싱하는 프로세서를 배치하는 것이 가능하다. 예를 들면, 프로세서(6a)가 256비트 암호화 동작을 프로세싱하기위해 프로세싱 요소를 갖는다고 가정하면, 256비트 암호화 동작 프로세싱을 시작한다. 6b는 유사한 프로세서라고 가정한다. 만약, 때로는, 프로세싱 요소(6a)가 프로세싱을 시작한 후 완료되기 전에 512비트 동작을 위한 프로세싱 요구가 도착한다면, 그 때, 데이터가 프로세싱 배열(6a)의 최종 요소로 전달되는 것을 인지하여 프로세싱 배열(6b)에서 동작을 시작하는 것이 가능하고, 요소는 현 프로세싱에서 프로세싱 잡(job)의 프로세싱가 완료된다. 이것은 연결된 배열 프로세싱을 유지하기 위해 이용할 수 있는 다른 프로세서를 기다리는 동안 프로세서의 다운타임(downtime)을 감소시켜서 전반적인 시스템 프로세싱을 향상시킨다.
암호화 데이터의 파이프라인 프로세싱에 기초한 몽고메리
몽고메리의 연산 방식을 적용시키면, 모듈러 지수화는 일종의 매우 긴 정수의 덧셈을 감소시킨다. 곱셈/덧셈 구조에서 운반 증식을 피하기 위한 몇가지 해결책이 알려져있다. 이것은 여분의 근 시스템 또는 나머지 시스템을 갖는 조합에서 몽고메리의 연산 방식을 사용한다.
1993년 7월, 42(6):693-699, 컴퓨터에서 몽고메리의 모듈러 곱셈 연산 방식. IEEE 거래의 S.E. Eldridge 및 C.D.Walter.하드웨어 실행에서, 몽고메리의 모듈러 곱셈 연산 방식은 효과적인 하드웨어 실행을 위해 적용된다. 단순한 결합의 논리 때문에, 스피드에서 이익은 높은 클럭 주파수로부터 결과를 가져온다. 브릭켈(Brickell)의 연산 방식에 기초한 이전의 기술과 비교할 때, 두 개의 스피드업 요소가 보도되었다.
디지털 장비 협회(Digital Equipment Corp.)의 조사 실험실은 J.E. Vuillemin, P.Bertin, D.Roncin, M.Shand, H.H. Touati, 및 P.Boucard의 '프로그래머블 활동 메모리: 모양이 바뀐 시스템은 성년이 된다'. 1996년 3월, M.Shand의 'VLSI 시스템상에서 IEEE 거래'. 및 J.Vuillemin의 4(1): 56-69. 'RSA 암호법의 빠른 실행'에 보도된다. 1993년, 252-259페이지, 컴퓨터 연산에서 11번째 IEEE 심포지움 진행에서, 중국인들의 리마인더 이론을 포함하는 몇몇의 스피드업 방법을 사용한 16 XILINX 3090FPGA의 배열, 비동시성의 운반 완료 가산기 및 지수화를 윈도윙(windowing)하는 방법은 모듈러 지수화를 실행하기위해 사용되었다. 실행은 185kb/s(970비트당 5.2ms 암호화) 비율에서 970비트 RSA 암호화 및 300kb/s(512비트당 1.7ms 암호화) 초과에서 512비트 RSA 암호화를 연산한다. 이러한 해결책의 결점은 모듈러스의 바이너리(binary) 표현이 논리 표현으로 고정배선되서 구조는 모든 새로운 모듈러스를 가지고 모양이 바뀌게 될 것이다.
몽고메리의 모듈러 곱셈 연산 방식에서 큰 기수를 사용하는 문제는 몫의 훨씬 복잡한 결정이다. 이러한 행위는 똑바른 것보다 다른 연산 방식의 파이프라인된 실행을 제공한다. H.Orup에서, 큰 기수 모듈러 곱셈에서 몫 결정을 단순화하는 것이다. 1995년, 193-199페이지, 컴퓨터 연산에서 12번째 심포지움을 진행하면서, 연산 방식은 몫 결정에서 포함된 어떤 동작을 피하기위해 다시쓰여진다. 필수적인 이전 연산은 주어진 모듈러스를 위해 오직 이전에 실행된다.
RSA 공개키 암호화 시스템의 새로운 VLSI 구조 기사에서 P.A. Wang. 회로 및 시스템상의 1997년 IEEE 심포지움의 진행에서, 1997년, 2040-2043 페이지, 3권은 몽고메리의 모듈러 곱셈 연산 방식을 위한 새로운 VLSI 구조를 제안한다. 클럭 스피드를 결정하는 중요한 통로는 파이프라인이다. 이것은 연산 방식의 각 반향을 끼워넣기에의해 행해진다. 이전의 제안을 고려해볼 때, 두 요소의 시간-지역 제품의 곱의 실행은 보고된다.
1998년 7월, 47(7): 766-76, 컴퓨터에서 RNS 몽고메리 모듈러 곱셈 연산 방식. IEEE 거래 기사에서 J.Bajard, L.Didier, 및 P.Kornerup은 나머지 수 시스템(Residue Number System; RNS)을 사용하는 새로운 접근을 기술한다. 연산 방식은 합리적인 단순화 프로세서 n상에서 RNS에서 모듀리 n을 가지고 실행된다. 결과 프로세싱 시간은 O(n)이다.
물론, 위에 인용된 대부분의 참조는 유연성을 거의 또는 전혀 같지 않는 프로세서의 하드웨어 실행에 관한 것이다.
모듈러 연산에 대한 수축성 배열 구조를 위한 다수의 제한이 있어왔다. 이것은 복잡성 및 유연성의 관점에서 변한다.
E.F. Brickell에 의해서. RSA의 하드웨어 실행의 조사. 1990년 스프링어 출판사. 368-370페이지, 암호학-암호'89에서 이전에, E.F. Brickell은 RSA 암호화를 실행하기 위해 1990년에 이용가능한 칩을 요약한다.
N. Takagi에 의해서. 반복적인 모듈러 곱셈 동작을 위한 효력있는 4 모듈러 곱셈 하드웨어 연산 방식. 1991년, 35-42페이지, 컴퓨터 연산상의 10번째 IEEE 심포지움의 진행에서, 작가는 기수-4 하드웨어 연산 방식을 제안한다. 여분 수 표현은 사용되고 덧셈에서 운반의 전달은 따라서 피할 수 있다. 이전 작업과 비교하여 약 6배의 프로세싱 스피드업이 보고된다.
더욱 최근에는, 접근은 모듈러스의 미리 연산된 보충을 이용하고 J.Yong-Yin 및 W.P. Burleson의 반복하는 Horner의 규칙에 기초된 것으로 소개된다. 1997년 6월, 5(2):211-17, VLSI 시스템에서 RSA 모듈러 곱셈. IEEE 거래를 위한 VLSI 배열 언산 방식 및 구조. 몽고메리의 연산 방식과 비교할 때, 이러한 접근은 감산하기 위한 모듈러스의 곱을 결정하기 위한 중간 결과의 가장 중요한 비트를 사용한다. 이러한 해결책의 결점은 충분한 저장 공간을 필요로 하거나 또는 모듈러 곱셈을 완료하기 위한 많은 클럭 주기을 필요로 하는 것이다.
모듈러 지수화를 위한 대부분의 인기있는 연산 방식은 제곱 및 곱셈 연산 방식이다. 공개-키 암호화 시스템은 통상적으로 모듈러 지수화 또는 되풀이된 포인트(point) 추가에 추가에 기초된다. 양쪽의 동작은 제곱 및 곱셈 연산 방식에 의해 행해지는 그 대부분의 기초 형태에 있다.
방법 1.1은 최악의 경우에 2(n-1)번, 평균 1.5(n-1)번 동작이 걸린다. 병렬에서 제곱 및 곱하기를 연산하기위해, 다음 제곱 및 곱하기 방법의 버전이 사용된다.
방법 1.2는 최악의 경우에 2n번, 평균 1.5n번 동작이 걸린다. 스피드-업은 방법 1.1의 일반화인 1981년, 2판, 메사츄세츠, 기록, Addison-Wesley, 반정수의 연산 방식, 2권, 컴퓨터 프로그래밍의 기술, D.E. Knuth에 배포된 것과 같은 1항 방법을 응용하기 위해 이루어진다. 1항 방법은 동시에 1 지수 비트를 프로세싱한다. 여기서 결점은 X의 (2-2)곱이 피리 연산되고 저장되는 것이다. 결과의 복잡성은 개략적으로 n/1곱 동작 및 n 제곱 동작이다.
위에서 나타낸 것처럼, 모듈러 지수화는 몽고메리 방법을 사용하여 일종의 모듈러 곱 동작 및 제곱 상태가 감소된다. 후술된 모듈러 곱을 위한 방법은 1985년 4월, 44(170):519-521, 연산의 수학에서 나누기의 시도 없이 P.L. 몽고메리. 모듈러 곱셈에서 P.L. 몽고메리에 의해 제안되었다. M에의한 나누기를 피하는동안 두 정수의 모듈로 M을 곱하기 위한 방법이다. 아이디어는 나누기m에서 정수를 변형하는 것이고 이러한 나머지를 가지고 곱셈을 연산한다. 결과에서, 표현은 그것에 관한 보통의 표현으로 다시 바뀌어진다. 이러한 접근은 바뀌는 영역에서 일종의 곱셈 동작이 연산될 때, (예를 들면, 모듈러 지수화)오직 이익이된다.
몽고메리 곱셈을 연산하기 위해, gcd(M, R)=1을 갖는 기수 R>M는 선택된다. R에의한 나누기는 바람직하게는 저가이고, 따라서 만약 M=mi2i이면, 임의의 선택은 R=2m 이다. x의 나머지 m은 xR mod M이다. M'=M-1 mod R은 또한 연산된다. 함수 MRED(T)는 TR-1 mod M을 연산한 것을 제공한다. 이 함수는 T가 나머지가 m이라 주어진 T의 보통의 표현을 연산한다.
MRED(T)의 결과는 t=TR-1 mod M이다.
바꾸는 지역에서 두 정수 a 및 b를 곱하면, 그 상대적인 표현은 (aR mod M) 및 (bR mod M)이고, 두 표현의 곱은 MRED((aR mod M)ㆍ(bR mod M))=abR2R-1=abR mod M인 MRED(T)로 제공된다.
모듈러 지수화에 대한, 이러한 단계는 최종 결과 ZR mod M 또는 PnR mod M을 얻기위한 1.1 또는 1.2 방법에 따라 다수배가 반복된다. 어느 하나의 이러한 값은 결과 Z mod M 또는 Pn mod M을 얻기위해 MRED(T)로 제공된다.
초기의 변형 단계는 값비싼 모듈러 감소를 요구한다. 포함된 나누기를 피하기 위해, 나누기를 사용하는 R2 mod M을 연산해라. 이 상태는 주어진 암호화를 위해 이전에 오직 실행될 필요가 있다. 변형 지역 MRED(aㆍR2 mod M) 및 MRED(bㆍR2 mod M)에서 a 및 b를 얻는 것은 aR mod M 및 bR mod M을 얻기위해 실행된다. 분명하게는, 어떤 변수는 이러한 방법에서 변형되지 않는다.
방법 1.3의 하드웨어 실행에서, m×m-비트 곱하기 및 2m-비트 덧셈은 단계2를 연산하기위해 사용된다. 중간 결과는 2m비트만큼 갖는다. 즉시 U를 연산하는 대신에, 나머지 r표현의 하나의 수는 즉시 연산된다. 나머지 r을 선택하는데 있어서, gcd(M, r)=1이 바람직하다. r에의한 나누기는 바람직하게는 저가이고, 따라서, 임의의 선택은 r=2k이다. 모든 변수는 기초-r 표현에서 표현된다. 다른 실행은 연산 방식에서 A×B곱을 포함할 것이다.
방법 1.4 AㆍB mod M을 연산하기 위한 몽고메리 모듈러 곱셈, 여기서
방법 1.4.를 응용한 것의 결과는 Sm=ABR-1 mod M이다. 대부분 두 개의 k×k-비트 곱 동작에서, k-비트 덧셈은 반지름 2k를 위해 3단계를 연산하는 것이 요구된다. 4단계에 있어서, 두 개의 k×m-비트 곱 동작 및 두 개의 m+k-비트 덧셈이 요구된다. 방법 1.3의 2m 비트와 비교되서, S의 최대 비트 길이는 m+k+2로 감소된다.
방법 1.5는 나머지r=2에 대한 방법 1.4의 단순화이다. 나머지r=2에 대해서, 방법 1.4의 3단계에서 동작은 모듈로 2로 실행된다. 모듈러스 M은 조건 gcd(M, 2k)=1 조건때문에 오드(odd)이다. 그것은 M=1 mod 2를 즉시 따른다. 그러므로, M'=-M-1 mod 2는 또한 M'=1로 떨어진다. 따라서, 스텝 3에서 M' mod 2에의한 곱은 임의적으로 생략된다.
방법 1.5의 단계 6에서 최종 비교 및 감산은 m비트 비교가 매우 느리고 자원 사용의 관점에서 고가인 것처럼, 실행하기에는 고가이다. 그것은 연산 방식의 파이프라인된 실행을 불가능하게 만든다. 만약 A, B<M이면, Si+1<2M은 항상 고정된다는 것을 쉽게 입증할 것이다. 그러나, Sm은 다음 모듈러 곱셈을 위한 입력 A 또는 B로써 재사용될 수 없다. 만약 루프(loop)의 두 개의 실행이 am+1=0 및 입력 A,B<2M을 가지고 실행된다면, 부등식 Sm+2<2M은 만족될 것이다. 지금, Sm+2는 다음 모듈러 곱셈을 위한 입력 B로써 사용될 것이다.
방법 1.5의 복잡성을 더 감소시키기 위해, B는 즉, 두 개에 의해 곱해진, 하나의 위치에 의해 이동된다. 이것은 aiㆍB mod 2=0의 결과를 낳고 스텝 3에서 덧셈은 피하게 된다. Si+1의 업데이트에서, (S+qiM+aiB)/2는 (Si+qiM)/2+aiB에 의해 교체된다. 이러한 단순화의 비용은 am+2=0를 갖는 루프의 하나의 실행이다. 아래 방법은 이러한 최적화를 포함한다.
위의 연산 방식은 Sm+3=(2-(m+2)AB)mod M을 연산한다. 올바른 결과를 얻기위해, 22(m+2)mod M에 의한 여분의 몽고메리 모듈러 곱셈은 실행된다. 그러나, 만약 지수화 연산 방식에서 더 곱셈 동작이 요구된다면, 요소 22(m+2)mod M에 의해 모든 입력을 미리 곱하는 것이 좋다. 따라서, 모든 중간 결과값은 요소 2m+2를 이동시킨다. 1에 의한 몽고메리 곱셈 결과는 이러한 요소를 제거시킨다.
1을 갖는 최종 몽고메리 곱셈은 최종 결과가 M보다 작다는 것을 보증한다.
높은-근 몽고메리 연산 방식
단계 6의 고사의 비교 및 감산을 피하기 위해 및 4M<2km 및 A,B<2M의 조건을 변화시키기 위해, 일부 최적화는 하드웨어에서 방법 1.4를 실행시키는 결과를 가지고 온다. 페널티(penalty)는 루프의 두 개의 실행이 있다. 방법의 결과는 다음과 같다.
몫qi 결정의 복잡성이 Bㆍ2k에 의해 B를 대신함으로서 더욱 감소될 수 있다. aiB mod 2k=0이기 때문에, 단계 3은 qi=Si mod 2k로 감소된다. 단계 3의 추가는 B에서 여분 요소 2k를 보상하기 위해, 루프의 추가적인 반복의 비용을 피할 수 있다. 하드웨어 실행을 위해 최적화된 몽고메리 방법은 아래에 도시된다.
최종 결과는 여기서 전술된 바와 같이, 그 속에서 요소를 제거하기 위해 1에 의해 곱해진 몽고메리이다.
재형성할 수 있는 하드웨어상에 모듈러 지수화로 명칭된 우스터 폴리테크닉 연구소(Worcester Polytechnic Institute) 재단에 제출된 논문에서 및 참조에 의해 첨부된 1999년 4월 8일에 Thomas Blum에 의해 제출된 논문에서, Thomas Blum은 모듈러 곱 및 몽고메리 공간을 사용한 암호화 함수를 실행하기 위한 두 가지 다른 파이프라인 구조를 제안했다. 구조의 유효 영역은 방법 16 및 유효한 스피드 구조에 기반한다. 타겟(target) 장치로써 Xilinx XC4000 집합 장치가 사용된다.
일반적인 기수 2 수축성 배열은 m×m 프로세싱 요소를 사용하는데, 여기서 m은 모듈러스의 비트 수이고 각 요소는 단일 비트를 프로세싱한다. 2m 모듈러 곱 동작은 시간 주기당 하나의 모듈러 곱의 프로세싱량 및 2m 주기의 잠재성을 특징으로 하면서, 동시에 프로세싱한다. 이러한 접근은 현대의 공개-키 설계에서 요구되는 통상적인 비트 길이에 대한 비현실적인 거대한 CLB산출을 나타내기 때문에, 오직 프로세싱 요소의 하나의 열이 실행된다. 이러한 접근을 가지고 두 개의 모듈러 곱 동작은 동시에 프로세싱되고 실행에의해 2m 주기당 두 개의 모듈러 곱 동작의 프로세싱량이 감소된다. 잠재성은 2m 주기에 남아있다.
두 번째 고려는 나머지 r=2k의 선택에 있다. 증가하는 k값은 방법1.8에서 실행된 총 단계 수를 감소시킨다. 그러나, 이런 접근은 많은 자원을 요구한다. 주요 비용은 M 및 B의 2k 곱의 연산에 있다. 이러한 것들은 미리 연산되서 RAM에 저장되거나 다중 채널 네트워크에 의해 연산된다. 분명하게는, M 또는 B의 어떠한 곱도 연산되거나 미리 연산될 수 없는 것처럼, CLB산출은 r=2에서 가장 작게 산출된다.
나머지 r=2를 사용하면, 1.6방법에 따른 방정식이 연산된다. 요구되는 CLB산출수를 더 감소시키기 위해서, 다음 측정이 임의로 사용된다. 각 유닛은 단일 비트 이상을 프로세싱한다. 단일 연산자는 B+M을 미리 연산하고 일반적인 프로세싱동안 다른 추가 동작을 실행하기 위해 사용된다. 제곱 및 곱 동작은 병렬로 프로세스된다. 이러한 디자인은 세 가지 레벨로 조직적으로 나누어진다.
모듈러 곱의 u비트 프로세싱 요소 연산.
프로세싱 요소의 모듈러 곱 배열은 모듈러 곱을 연산시킨다.
모듈러 지수화는 연산 방식 1.2에 따라 모듈러 곱 동작을 모듈러 지수화로 결합시킨다.
프로세싱 요소
도 8은 프로세싱 요소의 실행을 나타낸다.
프로세싱 요소에서, 다음 레지스터(레지스터)이 존재한다.
ㆍ M-Reg(u 비트): 모듈러스의 저장
ㆍ B-Reg(u 비트): B 곱의 저장
ㆍ B+M-Reg(u 비트): 중간 결과 B+M의 저장
ㆍ S-Reg(u+1 비트): 중간 결과(운반 포함)의 저장
ㆍ S-Reg-2(u-1 비트): 중간 결과의 저장
ㆍ 제어-Reg(3 비트): 다중 채널 및 시각의 조절 가능
ㆍ ai,qi(2 비트): 곱 A, 몫 Q
ㆍ Result-Reg(u 비트): 곱셈의 끝에서 결과의 저장
레지스터는 (6u+5)/2 CLBs의 전체, 연산자 u/2+2 CLBs, 다중 채널 4ㆍu/2 CLBs, 및 복호기 2 CLBs가 필요하다. 논리 결합을 위한 가능성 있는 레지스터의 재사용은 CLBs의 일부 저장을 고려한다. MuxB 및 MuxRes는 M-Reg 및 B+M-Reg에서 부분적으로 B-Reg 및 Result-Reg, Mux1 및 Mux2의 CLB에서 실행된다. 결과 비용은 대략 u-비트 프로세싱 유닛당 3u+4 CLBs이다. 그것은 유닛 크기 u에 의존하는 비트당 3에서 4의 CLBs이다.
유닛이 모듈러 곱을 연산하기 전에, 시스템 매개변수는 로드(load)된다. M은 유닛의 M-Reg로 저장된다. 모듈러 곱의 시작부에서, 다중 채널 B-Mux의 선택 선에 따라, 연산수 B는 B-in 또는 S-Reg로 로드된다. 다음 단계는 M+B를 연산하고 B+M-Reg의 결과를 저장시킨다. 이런 동작은 2 개의 클럭 주기을 필요로 하고, 그 결과는 S-Reg로 처음 클럭된다. Mux1 및 Mux2의 선택선은 ai 또는 제어 워드에 의해 각각 제어된다.
다음 2(m+2) 주기에서, 모듈러 곱은 방법 1.6에 따라 연산된다. 다중 채널 Mux1은 바이너리 변수 ai 및 qi의 값에 따라 연산자에서 공급된 입력 0, M, B, B+M 중 어느 하나를 선택한다. Mux2는 이전의 결과 S-Reg2의 가장 의미있는 u-1비트를 다음 유닛(둘/우향 자리 이동에 의한 분할)의 최소 의미의 결과 비트와 합해서 연산자의 제2 입력부로 공급한다. 결과는 한 주기동안 S-Reg에 저장된다. 최소 의미의 비트는 우향(둘/우향 자리 이동에 의한 분할)의 유닛으로 이동하고 운반은 좌향의 유닛으로 이동한다. 이러한 주기에서, 제2 모듈러 곱은 S-Reg2, ai 및 qi의 업데이트된 값을 갖는 연산자에의해 연산된다. 제2 곱은 다른 연산자 A를 제외한 같은 연산자 B를 사용한다.
모듈러 곱의 결과에서, Sm+3은 연산자의 출력부에서 한 주기동안 유효하다. 이러한 값은 B-Reg속에서 S-Reg를 통해 공급된 Result-Reg속에서 저장된다. 제2 곱의 결과는 한 주기 이후에 Result-Reg속으로 공급된다.
도 9는 프로세싱 요소가 m-비트 모듈러 곱을 연산하기 위해 어떻게 배열과 연결되어야 하는가를 나타낸다. 유닛당 프로세스된 u비트를 갖는 m 비트에 관한 방법을 실행하기 위해, m/u+1유닛이 사용된다. 유닛0는 u-1 B입력을 갖고, B0는 이동된 값Si+qiM으로 연산된다. S-Reg0인 결과비트는 몽고메리의 연산방식 특성에 따라 항상 제로이다. 유닛m/u는 B의 가장 의미있는 비트 및 중간 결과Si+1의 임시 오버플로우(overflow)를 프로세싱한다. 이러한 유닛속에는 어떠한 입력M도 없다.
유닛의 입력 및 출력은 다음 방법에 의해 서로서로 연결된다. 제어 워드인 qi 및 ai는 유닛을 통해 오른쪽에서 왼쪽으로 퍼올려진다. 그 결과는 왼쪽에서 오른쪽으로 퍼올려진다. 실행된 신호는 오른쪽에서 이동 입력부로 공급된다. 출력 S_0_Out는 오른쪽에서 유닛의 입력 S_0_In과 항상 연결된다. 이것은 2에의한 나구셈 방정식을 표현한다.
제1 모듈러스에서 M은 유닛속으로 공급된다. 신호가 모든 유닛으로 전달되는 동안 충분한 시간을 허용하기 위해, M은 두 개의 클럭 주기동안 유효화된다. 우리는 모두 짝수화된 유닛으로 연결된 M-even-Bus 및 모두 홀수화된 유닛으로 연결된 M-odd-Bus인 두 개의 M-Buses를 사용하고, 이러한 접근은 클럭 주기당 유닛으로 u비트를 공급하도록 허용한다. 따라서, 충분한 모듈러스 M을 로드하는 것은 m/u 주기이 걸린다.
피연산자 B는 똑같이 로드된다. 두 개의 클럭 주기동안 유효하다. 피연산자 B가 로드된 후, 방법 1.6 단계의 실행이 시작된다.
양모서리의 유닛 및 유닛0에서 시작한 후, 제어 워드인 ai 및 qi는 레지스터속으로 공급된다. 연산자는 ai 및 qi에 따라 하나의 클럭 주기에서 S-Reg-2와 B, M의 덧셈 또는 B+M을 연산한다. 최종 의미있는 비트의 결과는 다음 연산동안 qi+1로써 다시 읽혀진다. 이동 비트 결과와 제어 워드인 ai 및 qi는 왼쪽의 유닛속으로 퍼올려지고, 같은 연산이 다음 클럭 주기에서 발생한다.
그러한 수축성 방식에서, 제어 워드인 ai, qi 및 이동 비트는 모든 유닛 배열을 통해 오른쪽에서 왼쪽으로 퍼올려진다. 최소 의미있는 비트의 유닛 연산(S0)는 오른쪽에서 유닛속으로 되돌아 공급된다. 모듈러 곱이 완료된 후에, 그 결과는 유닛을 통해 왼쪽에서 오른쪽으로 퍼올려지고 더욱 프로세싱을 위해 RAM에 일련적으로 저장된다.
단일 프로세싱 요소는 Si+1=(Si+qiㆍM)/2+aiㆍB의 u비트를 연산한다. 클럭 주기 i에서, 유닛0는 Si의 0...n-1 비트를 연산한다. 주기 i+1에서, 유닛1은 이동 결과를 사용하고 Si의 0...2u-1 비트를 연산한다. 유닛0는 클럭 주기 i+2에서 Si+1의 0...u-1 비트를 연산하기위해 Si(S0)의 오른쪽으로 이동된(2에 의한 분할)u 비트를 사용한다. 클럭 주기 i+1은 유닛1의 결과를 기다리는 동안 유닛0에서 비생산적에 있다. 이러한 비효율은 방법 1.2.에 따른 병렬에서 제곱 및 곱 동작을 연산함으로써 피하게 된다. pi+1 및 zi+1은 zi에 의존한다. 따라서, 중간 결과 zi는 B-레지스터에 저장되고 제곱 및 곱셈동안 유닛의 ai입력 속으로 pi를 가지고 공급된다.
도 10은 유닛 배열이 모듈러 지수화를 위해 어떻게 이용되는가를 나타낸다. 도면 중심에 17개의 스테이트를 갖는 유한 스테이트 머신(Finite State Machine)이 있다. 시스템 매개 변수를 로딩하기위해서는 4개의 스테이트가 및 모듈러 지수화를 연산하기위해서는 4곱하기3의 스테이트가 쉬는 상태이다. 실제 모듈러 지수화는 이전-연산1, 이전-연산2, 연산, 및 이후-연산인 4개의 주요 스테이트가 실행된다. 이런 각각의 주요 스테이트는 3개의 하위-스테이트, 로드-B, B+M, 및 곱하기 연산에 의해 다시 나누어진다. 제어-in속으로 공급된 제어 워드는 스테이트에 따라 암호화된다. FSM은 30분 비율로 클럭화된다. 동일한 것은 RAM 및 DP RAM 요소를 로딩하고 리딩에 대해 정확하다. 이러한 기준은 최대 전달 시간이 유닛에 있도록 확실하게 만든다. 따라서, 최소 클럭 주기 시간 및 모듈러 지수화의 스피드 결과는 유닛의 유효 연산 시간에 관한 것이고 전반적인 연산이 아니다.
모듈러 지수화가 연산되기 전에, 시스템 매개 변수는 로드된다. 모듈러스 M은 M-Reg속에서 입력/출력으로부터 동시에 2u 비트가 읽혀진다. 낮은 명령 비트로부터 높은 명령 비트로 읽기가 시작된다. M은 M-Reg u 비트로부터 M-even-Bus 및 M-odd-Bus로 택일적으로 동시에 공급된다. 신호는 동시에 두 개의 주기가 유요하다된다. 지수 E는 입력/출력으로부터 동시에 16비트로 읽히고, Exp-RAM속에서 저장된다. 넓게는 제1 16비트는 입력/출력으로부터 비트에서 지수 길이를 명확하게 나타낸다. 64까지 다음 용어는 실제 지수를 포함한다. 이전-연산 요소인 22(m+2) mod M은 동시에 입력/출력 2u 비트로부터 읽혀진다. 그것은 Prec-RAM속에 저장된다.
이전-연산1 스테이트에서, 우리는 입력/출력으로부터 X값, 클럭 주기당 u 비트를 읽고, DP RAM Z속에서 저장된다. 동시에 이전-연산 요소인 22(m+2) mod M은 Prec RAM으로부터 읽히고 유닛의 B-레지스터에 B-even-Bus 및 B-odd-Bus를 통해 택일적으로 클럭 주기당 u 비트로 공급된다. 다음 두 개의 클럭 주기에서, B+M은 유닛에서 계산된다.
방법 1.2의 초기 값은 이용할 수 있다. 양쪽 값은 2에 의해 곱해지고, B에 저장된 일반적인 피연산함수 22(m+2) mod M을 사용함으로써 병렬에서 실행된다. 시분할다중화(TDM: The time-division-multiplexing)유닛은 DP RAM Z 및 다중의 X 및 1로부터 X를 읽는다. 2(m+3) 클럭 주기 후에, 낮은 명령 비트의 다음 결과는 결과-Out에서 나타나고 DP RAM P에 저장된다. 이러한 프로세스는 2m 주기동안 반복되고, 두 결과의 모든 수는 DP RAM Z 및 DP RAM P에 저장된다. Xㆍ2m+2 mod M의 결과는 유닛의 B-레지스터s에 저장된다.
이전-연산2 스테이트에서, 방법 1.2의 실제 단계가 시작된다. Z1 및 P1의 양쪽 계산동안 Z0는 피연산함수로 사용된다. 이러한 값은 B-레지스터s에 저장된다. 제2 피연산함수 Z0 또는 P0는 상대적으로 DP RAM Z 및 DP RAM P로부터 읽히고, 유닛속의 ai같은 TDM을 통해 "펌프드(pumped)"된다. 다른 2(m+3) 클럭 주기 후에, Result-Out에서 나타나는 Z1 및 P1의 낮은 명령 비트의 결과는 DP RAM Z에 저장된다. P1은 만약 제1 비트 지수 e0가 1과 같다면 필요하다. e0에 따르면, P1은 DP RAM P에 저장되거나 또는 버려진다. 이러한 방법에 있어서 항상 최종 저장된 P는 유닛속에서 다시 펌프드된다.
en-1의 프로세싱 후에, FSM은 이전-연산 스테이트로 들어간다. 결과Pn으로부터 요소2m+2를 제거하여, 1에의한 몽고메리 곱은 연산된다. 제1 벡터 0, 0,...0,1은 유닛의 B-레지스터s속에서 B-even-Bus 및 B-odd-Bus를 통해 택일적으로 공급된다. Pn은 유닛속의 ai로써 DP RAM P로부터 펌프드된다. 이전-연산 스테이트가 실행된 후, Pn=XE mod M결과 u 비트는 입력/출력 포트에서 유요화된다. 모든 두 클럭 주기의 다른 u 비트는 입력/출력에서 나타난다. 이전-연산1 스테이트는 다른 X값의 계산을 위해 지금 즉시 다시 입력되야된다.
충분한 모듈러 지수화는 2(n+2)(m+4)클럭 주기에서 연산된다. 제1 u결과 비트가 출력에 나타날 때까지 장치속의 제1 u비트 X를 삽입하는데 걸리는 지연이 있다. 그 점에서, 다른 X값은 장치로 들어간다. m/u 클럭 주기의 추가 잠재력을 가지고 최종 u 비트는 출력bus상에 나타난다.
도10에 함수 블록은 아래에 설명되어 있다. 도 11은 DP RAM Z의 디자인을 나타낸다. m/u×u 비트 DP RAM은 이 유닛의 중심부에 있다. 그것은 개별 쓰기(A) 및 읽기(DPRA)가 입력부로 어드레스하는 것을 갖는다. 제1 u 비트인 Zi가 데이터내에 나나날때, 쓰기-카운터가 하위-스테이트 B-로드에 카운팅(클럭-가능함)하기 시작한다. 동시에, DP RAM의 가능한 신호는 활동하고 데이터는 DP RAM에 저장된다. m+2가 도달될 때, 터미널-카운트는 DP RAM의 카운트-가능 및 쓰기-가능을 리셋(reset)한다. 읽기-카운터는 하위-스테이트 연산에서 가능하다. 읽기-카운터가 상위 제한 m+2에 도달할 때, 터미널-카운트는 하위-스테이트 B-로드속으로 통과하기 위해 FSM을 트리거(trigger)한다. 가장 의미있는 비트인 읽기-카운터 값(q 출력)인 log2(m/u)는 DP RAM의 DPRA로 어드레스한다. DP RAM에 저장된 모든 u 주기의 또다른 값은 읽혀진다. q 출력의 가장 의미있는 비트인 log2(u)가 제로에 도달할 때, 이 값은 시프트 레지스터속으로 로드된다. 다음 u 주기 u 비트는 시프트 레지스터의 연속 출력에서 비트에 의해 비트로 나타난다. Zi의 최종 값은 u-비트 레지스터에 저장된다. 이러한 측정은 우리가 2m/u ×u-비트 DP RAM(m=2x, x=8, 9, 10)대신에 m/u ×u-비트 DP RAM으로 선택하도록 허용된다.
DP RAM P는 거의 똑같은 방법으로 동작한다. ei=1인 경우에 DP RAM의 쓰기-가능한 신호를 활성화시키는 추가적인 입력 ei를 갖는다.
도 12는 Exp RAM의 디자인을 나타낸다. 로드-지수 스테이트의 제1 주기에서, 제1 용어는 입력/출력으로부터 읽히고, 10-비트 레지스터속에 저장된다. 그 값은 비트에서 지수의 길이를 명백하게 한다. 다음 주기에서, 지수는 동시에 16-비트로 읽히고 RAM에 저장된다. 저장 어드레스는 6-비트 쓰기 카운터에 의해 연산된다. 각 연산 스테이트의 초반부에서, 10-비트 읽기 카운터가 가능하다. 가장 의미있는 비트6은 메모리 어드레스를 연산한다. 따라서, 매 16번 활동에 의해, 새로운 값이 RAM으로 읽혀진다. 적어도 의미있는 비트4인 읽기 카운터가 0과 같을 때, 이 값은 동시에 16-비트 시프트시프트스터에 저장된다. 읽기 카운터가 10-비트 레지스터의 특정한 값에 도달할 때, 종결 신호는 이전-연산 스테이트를 입력하기 위해 FSM을 트리거한다.
도 13은 Prec RAM의 디자인을 나타낸다. 로드-이전-요소 상태에서, 이전 연산 요소는 입력/출력으로부터 동시에 2u 비트로 읽혀지고 RAM에 저장된다. m/2u 까지 세는 카운터는 RAM으로 어드레스한다. 모든 m/2u의 값이 읽혀질 때, 터미널-카운트 신호는 로드-이전-요소 스테이트로 떠나기위해 FSM을 트리거한다.
이전-연산1 스테이트에서, 이전 연산 요소는 RAM으로부터 읽히고 유닛의 B-레지스터에 공급된다. 카운터는 각 클럭 주기로 증가되고, 2u 비트는 2u-비트 레지스터에 로드된다. 그것으로부터 u 비트는 클럭의 각 양의 끝인 B-even-bus상에 공급된다. 음의 클럭 끝에서, u 비트는 B-odd-bus상에 공급된다.
스피드 유효 구조
앞의 디자인은 자원 사용의 관점에서 활용된다. 나머지 r=2k, k>1을 사용하는 것은 k요소에 의해 방법 1.6에서 다수의 단계를 감소시킨다. 방법 1.8의 연산은 m+3번(i=0에서 m+2까지) 실행된다.
스피드 유효 디자인은 3가지 레벨속에서 위계가 있게 나누어진다.
프로세싱 요소 모듈러 곱의 4비트 연산.
모듈러 곱 프로세싱 요소 배열은 모듈러 곱을 연산한다.
모듈러 지수화 방법 12에 따라 모듈러 지수화에 모듈러 곱 동작을 결합시킨다.
도 14는 프로세싱 요소의 실행을 나타낸다.
다음 요소는 피한다:
ㆍ B-Reg(4 비트): 승수 B의 저장.
ㆍ B-Adder-Reg(5 비트): 배수 B 저장.
ㆍ S-Reg(4 비트): 중간 결과 Si의 저장.
ㆍ 제어-Reg(3 비트): 다중채널 및 클럭의 조절이 가능하다.
ㆍ ai-Reg(4 비트): 승수 A.
ㆍ qi-Reg(4 비트): 몫 Q.
ㆍ Result-Reg(4 비트): 곱셈의 끝에 결과의 저장.
ㆍ B-Adder(4 비트): B의 이전에 연산된 배수에 B를 더한다.
ㆍ B+M~-Adder(4 비트): B의 배수에 M~의 배수를 더한다.
ㆍ S+B+M~-Adder(5 비트): 중간 결과 M~Si to B +
ㆍ B-RAM(16 ×4 비트): B의 16 배수를 저장한다.
ㆍ M~RAM(16 ×4 비트): M~의 16 배수를 저장한다.
상술된 것처럼, 유닛s의 동작은 T.Blum의 이론 및 도표로부터 명백하다.
도 15는 충분한 크기의 모듈러 곱을 연산하기 위해 어떻게 프로세싱 요소를 정열과 연결해야 하는가를 나타낸다.
도 16은 유닛의 정열이 모듈러 지수화를 위해 어떻게 이용되어야 하는가를 나타낸다.
도 17은 DP RAM Z의 디자인을 나타낸다. m ×4 비트 DP RAM은 이러한 유닛의 중심에 있다. 그것은 개별적 쓰기(A) 및 읽기(DPRA) 어드레스 입력을 갖는다. m+2까지 세는 두 개의 카운터(counter)는 이러한 어드레스로 연산된다. 쓰기-카운터는 제1 Zi의 수가 데이터내에 나타날 때, 하위-스테이트 B-로드에서 카운팅(클럭-가능함)하기 시작한다. 동시에, DP RAM의 가능한 신호는 활동하고 데이터는 DP RAM에 저장된다. m+2가 도달될 때, 쓰기-카운터의 터미널(terminal)-카운트 신호는 두 가지 가능한 신호를 리셋(reset)한다. 읽기-카운터는 하위-스테이트 연산에서 가능하다. DP RAM의 데이터는 읽기-카운터의 q 출력에 의해 어드레스되고 DPO에서 즉시 나타난다. 읽기-카운터가 m+2에 도달할 때, 터미널-카운트는 하위-스테이트 B-로드속으로 통과하기 위해 FSM을 트리거(trigger)한다. Zi의 최종 두 값은 4-비트 레지스터에서 각각 저장된다.
이러한 측정은 우리가 50%를 이용할 수 있는 2m ×4-비트 DP RAM 대신에 100%를 이용할 수 있는 m ×4-비트 DP RAM을 선택하도록 허락한다. DP RAM P는 모든 같은 방법에서 작용한다. ei=1의 경우에 DP RAM의 쓰기-가능한 신호를 활성화시키는 추가적인 입력 ei를 갖는다.
앞에서 나온 파이프라인 프로세서 구조는 많은 파이프라인된 프로세싱 요소를 구체화하기 때문에, 같은 집적 회로내에 클럭 소스(source)에서 각 요소가 동시성을 갖기 어렵고 고가이다. 따라서, 본 발명은 클럭 배포 문제를 감소시키기 위해 전체 자원 요구량을 감소시키는데서 높은 이점이 있다. 또한, 다른 방향에서 곱이 요구되는동안 한 방향에서 덧셈이 요구되기 때문에, 더많은 시간이 다른 때보다 하나의 경로를 따를 때 필수적이라는 것이 명백하므로, 따라서, 경로의 시간 평균이 본 발명의 실시예에 따라 가능하다.
많은 다른 실시예가 본 발명의 정신 또는 범위로부터 떨어짐없이 구상될 것이다.

Claims (18)

  1. a) 제1 프로세싱 요소가 n번째 프로세싱 요소에 선행하는 제2 프로세싱 요소에 선행되도록 연속 배열에 정열된 n개의 개별 프로세싱 요소를 포함하는 파이프라인 프로세서를 제공하는 단계;
    b) m-비트 암호화 키를 상기 파이프라인 프로세서로 제공하는 단계;
    c) 상기 암호화 키 길이를 나타내는 데이터를 상기 파이프라인 프로세서로 제공하는 단계;
    d) 데이터를 상기 제1 프로세싱 요소에 제공하는 단계;
    e) 상기 암호화 키 길이를 나타내는 적어도 하나의 데이터에 따라 상기 최종 프로세싱 요소를 결정하는 단계;
    f) 신호를 상기 최종 프로세싱 요소인 상기 프로세싱 요소를 나타내는 최종 프로세싱 요소로 제공하는 단계;
    g) 상기 최종 프로세싱 요소까지 제1 프로세싱 요소로부터 단계식의 포워드 연속 방식(step-wise forward serial fashion)에서 다음 프로세싱을 위한 데이터를 보급하는 단계를 포함하고; 및
    같은 파이프라인 프로세서내의 상기 적어도 두 개의 프로세싱 요소가 상기 최종 프로세싱 요소로 결정되는 것을 특징으로 하는 데이터 프로세싱 방법.
  2. 제1 항에 있어서,
    상기 최종 프로세싱 요소는 상기 n차 프로세싱 요소와 다른 것을 특징으로 하는 데이터 프로세싱 방법.
  3. 제1 항에 있어서,
    상기 암호화 키는 소정의 비트 수의 정배수가 채워지고, 상기 소정의 비트 수는 하나의 프로세싱 주기(cycle)동안 상기 n차 프로세싱 요소의 개별 프로세싱 요소에 의해 프로세스된 다수 비트의 정배수와 같은 것을 특징으로 하는 데이터 프로세싱 방법.
  4. 제3 항에 있어서,
    신호를 상기 결정을 나타내는 상기 결정된 최종 프로세싱 요소로 제공하는 단계를 포함하고, 최종 프로세싱 요소로 결정할 수 있는 단지 그와 같은 프로세싱 요소는 상기 신호를 제공하기위한 회로를 가지고 제공되는 것을 특징으로 하는 데이터 프로세싱 방법.
  5. 제4 항에 있어서,
    프로세싱 요소인 n보다 낮은 차수가 최종 프로세싱 요소로 결정되는 것을 특징으로 하는 데이터 프로세싱 방법.
  6. 제1 항에 있어서,
    h) 암호화 키 길이를 나타내는 상기 데이터를 프로세스 되기위해 상기 데이터를 갖는 상기 제1 프로세싱 요소로 제공하는 단계;
    i) 제1 프로세싱 요소에 내부 회로를 사용한 상기 암호화 키 길이를 나타내는 상기 데이터를 프로세싱하는 단계; 및
    j) 상기 암호화 키 길이를 나타내는 상기 프로세스된 데이터를, 그것에 관한 내부 회로를 사용하여 추가적인 프로세싱을 위해 적어도 다음 단계의 프로세싱 요소로 전달하는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 방법.
  7. 제6 항에 있어서,
    상기 암호화 키 길이를 나타내는 상기 데이터를 프로세싱하는 단계는 감소하는 동작 및 증가하는 동작 중 어느 하나인 것을 특징으로 하는 데이터 프로세싱 방법.
  8. 제7 항에 있어서,
    k) 상기 적어도 다음 프로세싱 요소에서 내부 회로를 사용하는 상기 암호화 키 길이를 나타내는 상기 데이터를 프로세싱하는 단계가 상기 최종 프로세싱 요소인 상기 프로세싱 요소를 나타내는 소정의 값을 리턴할 때, 상기 선행하는 프로세싱 요소의 방향에서 리턴 프로세싱 경로(return processing path)를 따라 단지 프로세싱 후에 데이터를 전달하는 단계를 포함하는 것을 특징으로 하는 데이터 프로세싱 방법.
  9. 제1 항에 있어서,
    l) 제1 프로세싱 요소가 m번째 프로세싱 요소에 선행하는 제2 프로세싱 요소에 선행되도록 연속 배열에 정열된 n개의 개별 프로세싱 요소를 포함하는 파이프라인 프로세서를 제공하는 단계를 포함하고;
    m) 상기 최종 프로세싱 요소를 결정하는 상기 단계는 n차 프로세싱 요소 또는 m차 프로세싱 요소가 최종 프로세싱 요소인지 아닌지를 결정하는 것을 특징으로 하는 데이터 프로세싱 방법.
  10. 제9 항에 있어서,
    상기 제1 파이프라인 프로세서 및 제 2 파이프라인 프로세서는 제1 모드에서는 독립 파이프라인 프로세서(a first mode independent pipeline processor)이고, 제2 모드에서는 단일 결합된 파이프라인 프로세서(a sing combined pipeline processor)인 것을 특징으로 하는 데이터 프로세싱 방법.
  11. 제1 프로세싱 요소가 n차 프로세싱 요소에 선행하는 제2 프로세싱 요소에 선행하고, 연속 배열에 정열된 다수의 개별 프로세싱 요소;
    프로세싱을 위해 연속 배열로 데이터를 제공하기 위한 상기 연속 배열의 적어도 하나의 프로세싱 요소와 통신하는 포트; 및,
    사용에 있어서, 연속 배열의 최종 프로세싱 요소를 결정하는 암호화 키 길이를 나타내는 데이터를 프로세싱하고, 암호화 키 길이를 나타내는 상기 데이터에 따른 상기 연속 배열의 상기 결정된 프로세서 요소인 적어도 두 프로세싱 요소중 어느 하나로 신호를 제공하기 위한 상기 포트 및 상기 연속 배열의 적어도 두 프로세싱 요소와 전기통신하는 논리 회로를 포함하는 데이터 프로세싱 장치.
  12. 제11 항에 있어서,
    상기 다수의 개별 프로세싱 요소는 둘 또는 이상의 파이프라인 프로세싱 배열에 정열되고, 상기 배열은 상기 최종 프로세싱 요소 상황(status)이 단일 파이프라인 프로세싱 배열의 상기 최종 프로세싱 요소 이외의 프로세싱 요소로 돌려질 때, 더욱 단일 배열 속으로 연결되거나 또는 프로세싱하기 위한 데이터를 독립적으로 수신하는 것을 특징으로 하는 데이터 프로세싱 장치.
  13. 제11 항에 있어서,
    프로세싱 요소 n보다 낮은 차수가 상기 최종 프로세싱 요소로 결정되는 것을 특징으로 하는 데이터 프로세싱 장치.
  14. 제13 항에 있어서,
    상기 최종 프로세싱 요소로 결정할 수 있는 상기 프로세싱 요소는 상기 신호를 제공하기위한 회로를 더 포함하는 것을 특징으로 하는 데이터 프로세싱 장치.
  15. 제14 항에 있어서,
    상기 논리 회로는 어드레스싱할 수 있는(addressable) 데이터통로를 통해 상기 결정된 프로세싱 요소로 신호를 제공하기위한 출입구 논리 스위칭 회로(a gate logic switching circuit)인 것을 특징으로 하는 데이터 프로세싱 장치.
  16. 제14 항에 있어서,
    상기 논리 회로는,
    키 길이를 나타내는 상기 데이터에 따른 최종 프로세싱 요소를 결정하는 프로그램 코드를 실행하고 신호를 상기 결정된 프로세싱 요소로 제공하기 위한 제2 프로세서; 및,
    상기 제2 프로세서 및 상기 제2 프로세서로부터 상기 결정된 프로세싱 요소로 상기 신호를 프로세싱하기위한 적어도 두 개의 상기 연속 배열의 프로세싱 소자 사이를 연장하는 통신 경로를 포함하는 것을 특징으로 하는 데이터 프로세싱 장치.
  17. 제1 프로세싱 요소가 n차 프로세싱 요소에 선행하는 제2 프로세싱 요소에 선행하고, 연속 배열에 정열된 다수의 개별 프로세싱 요소;
    사용에 있어서, 암호화 키 길이를 나타내는 데이터를 프로세싱 하고, 최종 프로세싱 요소 상태를 나타내는 상기 프로세싱 요소로 내부 신호를 제공하는 각 개별 요소를 프로세싱하는 내부 논리 회로,
    암호화 키 길이를 나타내는 상기 데이터에 따라 제공된 상기 신호를 포함하는 데이터 프로세싱 장치.
  18. 제17 항에 있어서,
    다수의 개별 프로세싱 요소는 둘 또는 이상의 파이프라인 프로세싱 배열에 정열되고, 상기 배열은 상기 최종 프로세싱 요소 상태가 단일 파이프라인 프로세싱 배열의 상기 최종 프로세싱 요소 이외의 프로세싱 요소로 돌려질 때, 더욱 단일 배열 속으로 연결되거나 또는 프로세싱 하기위한 데이터를 독립적으로 수신하는 것을 특징으로 하는 데이터 프로세싱 장치.
KR1020057003398A 2002-08-26 2003-08-25 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법 KR100950117B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/228,151 US7451326B2 (en) 2002-08-26 2002-08-26 Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies
US10/228,151 2002-08-26

Publications (2)

Publication Number Publication Date
KR20050057010A true KR20050057010A (ko) 2005-06-16
KR100950117B1 KR100950117B1 (ko) 2010-03-30

Family

ID=31887583

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057003398A KR100950117B1 (ko) 2002-08-26 2003-08-25 유사한 효율을 갖는 무작위 키 비트 길이 암호화 조작의 프로세싱을 위한 장치 및 방법

Country Status (8)

Country Link
US (3) US7451326B2 (ko)
EP (1) EP1547302B1 (ko)
KR (1) KR100950117B1 (ko)
CN (2) CN101916178B (ko)
AT (1) ATE361603T1 (ko)
AU (1) AU2003260212A1 (ko)
DE (1) DE60313637T2 (ko)
WO (1) WO2004019548A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8045707B2 (en) * 2003-08-15 2011-10-25 Broadcom Corporation System and method for securing data
US7366302B2 (en) * 2003-08-25 2008-04-29 Sony Corporation Apparatus and method for an iterative cryptographic block
TW200707277A (en) * 2005-04-20 2007-02-16 Sean O'neil Process of and apparatus for counting
US8301905B2 (en) * 2006-09-08 2012-10-30 Inside Secure System and method for encrypting data
US7912886B2 (en) * 2006-12-14 2011-03-22 Intel Corporation Configurable exponent FIFO
DE102008026099A1 (de) * 2008-05-30 2009-12-03 Giesecke & Devrient Gmbh Sichere Sliding Window Exponentiation
US9516531B2 (en) 2011-11-07 2016-12-06 Qualcomm Incorporated Assistance information for flexible bandwidth carrier mobility methods, systems, and devices
CN103780381B (zh) * 2012-12-17 2017-06-27 深圳市证通电子股份有限公司 基于高基脉动阵列的蒙哥马利算法的实现装置及方法
US10059341B2 (en) 2016-06-17 2018-08-28 Caterpillar Inc. Control strategy for reduced fuel consumption in machine and powertrain system with same
CN117338263B (zh) * 2023-12-04 2024-02-09 中国人民解放军总医院海南医院 一种可穿戴设备的体温心率实时安全监测方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797848A (en) * 1986-04-18 1989-01-10 Hughes Aircraft Company Pipelined bit-serial Galois Field multiplier
US4839801A (en) * 1986-11-03 1989-06-13 Saxpy Computer Corporation Architecture for block processing computer system
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5001661A (en) * 1990-01-23 1991-03-19 Motorola, Inc. Data processor with combined adaptive LMS and general multiplication functions
US5210710A (en) * 1990-10-17 1993-05-11 Cylink Corporation Modulo arithmetic processor chip
US5101431A (en) * 1990-12-14 1992-03-31 Bell Communications Research, Inc. Systolic array for modular multiplication
DE69231110T2 (de) * 1991-03-05 2000-11-16 Canon Kk Rechengerät und Verfahren zum Verschlüsseln/Entschlüsseln von Kommunikationsdaten unter Verwendung desselben
DE69226110T2 (de) * 1991-03-22 1999-02-18 Philips Electronics Nv Recheneinheit zum Multiplizieren langer ganzer Zahlen Modul M und R.S.A-Wandler mit einer derartigen Multiplikationsanordnung
DE69229766T2 (de) * 1991-09-05 2000-03-23 Canon Kk Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
US5623683A (en) 1992-12-30 1997-04-22 Intel Corporation Two stage binary multiplier
US5805914A (en) * 1993-06-24 1998-09-08 Discovision Associates Data pipeline system and data encoding method
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
ATE252796T1 (de) * 1993-07-20 2003-11-15 Canon Kk Verfahren und kommunikationssystem unter verwendung einer verschlüsselungseinrichtung
US5398284A (en) * 1993-11-05 1995-03-14 United Technologies Automotive, Inc. Cryptographic encoding process
US5666419A (en) 1993-11-30 1997-09-09 Canon Kabushiki Kaisha Encryption device and communication apparatus using same
US5724280A (en) 1995-08-31 1998-03-03 National Semiconductor Corporation Accelerated booth multiplier using interleaved operand loading
US5666410A (en) * 1995-12-05 1997-09-09 Mclane; Jerry Automatic sterilizer for telephones and the method of use therefore
FR2745647B3 (fr) 1996-03-01 1998-05-29 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement
JP3525209B2 (ja) 1996-04-05 2004-05-10 株式会社 沖マイクロデザイン べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法
JP3505037B2 (ja) * 1996-05-23 2004-03-08 パイオニア株式会社 スピーカ
WO1998006030A1 (en) 1996-08-07 1998-02-12 Sun Microsystems Multifunctional execution unit
KR100218683B1 (ko) 1996-12-04 1999-09-01 정선종 정보 보호용 모듈러 승산 장치
US5848159A (en) 1996-12-09 1998-12-08 Tandem Computers, Incorporated Public key cryptographic apparatus and method
US6088453A (en) 1997-01-27 2000-07-11 Kabushiki Kaisha Toshiba Scheme for computing Montgomery division and Montgomery inverse realizing fast implementation
US6144743A (en) 1997-02-07 2000-11-07 Kabushiki Kaisha Toshiba Information recording medium, recording apparatus, information transmission system, and decryption apparatus
US5743530A (en) * 1997-03-24 1998-04-28 Sklad Enterprises, Inc. Method and apparatus for a card game
US5897489A (en) * 1997-05-27 1999-04-27 Urbanowicz; Cynthia Snap-on suction tube for laryngoscope
US6061706A (en) * 1997-10-10 2000-05-09 United Microelectronics Corp. Systolic linear-array modular multiplier with pipeline processing elements
KR100267009B1 (ko) 1997-11-18 2000-09-15 윤종용 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치
US6026421A (en) 1997-11-26 2000-02-15 Atmel Corporation Apparatus for multiprecision integer arithmetic
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
CN100459489C (zh) * 2000-11-29 2009-02-04 朗迅科技公司 可变大小的密钥以及使用该密钥的方法和装置
US6959346B2 (en) * 2000-12-22 2005-10-25 Mosaid Technologies, Inc. Method and system for packet encryption
GB0111521D0 (en) * 2001-05-11 2001-07-04 Amphion Semiconductor Ltd A component for generating data encryption/decryption apparatus
US20030198345A1 (en) * 2002-04-15 2003-10-23 Van Buer Darrel J. Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow
DE102004051709A1 (de) * 2004-10-23 2006-04-27 Andreas Neff Speichelsauger

Also Published As

Publication number Publication date
CN100592676C (zh) 2010-02-24
DE60313637D1 (de) 2007-06-14
ATE361603T1 (de) 2007-05-15
DE60313637T2 (de) 2008-01-10
CN101916178B (zh) 2013-01-02
US7962758B2 (en) 2011-06-14
US20090055659A1 (en) 2009-02-26
US20040039922A1 (en) 2004-02-26
EP1547302B1 (en) 2007-05-02
EP1547302A1 (en) 2005-06-29
US8386802B2 (en) 2013-02-26
US20110208976A1 (en) 2011-08-25
WO2004019548A1 (en) 2004-03-04
CN101916178A (zh) 2010-12-15
US7451326B2 (en) 2008-11-11
CN1689267A (zh) 2005-10-26
KR100950117B1 (ko) 2010-03-30
AU2003260212A1 (en) 2004-03-11

Similar Documents

Publication Publication Date Title
US7895460B2 (en) Serially connected processing elements having forward and reverse processing time intervals
EP0801345B1 (en) Circuit for modulo multiplication and exponentiation arithmetic
Blum et al. Montgomery modular exponentiation on reconfigurable hardware
US8386802B2 (en) Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies
US8078661B2 (en) Multiple-word multiplication-accumulation circuit and montgomery modular multiplication-accumulation circuit
CN101149675A (zh) 乘法器
Parrilla et al. Elliptic curve cryptography hardware accelerator for high-performance secure servers
US20030037087A1 (en) Apparatus and method for efficient modular exponentiation
US7240204B1 (en) Scalable and unified multiplication methods and apparatus
JPH0580985A (ja) Mを法として長い整数を乗算するための算術ユニツト及びそのような乗算デバイスを具えるr.s.a.変換器
Elkhatib et al. Cryptographic engineering a fast and efficient SIKE in FPGA
US7266577B2 (en) Modular multiplication apparatus, modular multiplication method, and modular exponentiation apparatus
Walter Improved linear systolic array for fast modular exponentiation
Giorgi et al. Multipartite modular multiplication
Zhang et al. A high performance pseudo-multi-core ECC processor over GF (2 163)
GB2318892A (en) Co-processor for performing modular multiplication
KR20040045152A (ko) 모듈러 곱셈 장치
CN113625994B (zh) 一种数据处理方法和处理核
Adiono et al. A Low Latency and Resource Efficient Scalable RSA Cryptoprocessor Architecture
GB2332542A (en) Multiplication circuitry
Wang Accelerating cryptosystems on hardware platforms
KR20030033580A (ko) 고속 저전력의 오무라 감산방법을 이용하는 모듈라 연산방법 및 그 장치
JPH10161536A (ja) 暗号・復号化回路及び方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140311

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150309

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160309

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170315

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180308

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee