KR20010041069A - 공유 메모리 상호 접속을 구비하는 암호 처리기 및 그 방법 - Google Patents

공유 메모리 상호 접속을 구비하는 암호 처리기 및 그 방법 Download PDF

Info

Publication number
KR20010041069A
KR20010041069A KR1020007009108A KR20007009108A KR20010041069A KR 20010041069 A KR20010041069 A KR 20010041069A KR 1020007009108 A KR1020007009108 A KR 1020007009108A KR 20007009108 A KR20007009108 A KR 20007009108A KR 20010041069 A KR20010041069 A KR 20010041069A
Authority
KR
South Korea
Prior art keywords
processing element
processing
data
adder
memory
Prior art date
Application number
KR1020007009108A
Other languages
English (en)
Other versions
KR100638189B1 (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 KR20010041069A publication Critical patent/KR20010041069A/ko
Application granted granted Critical
Publication of KR100638189B1 publication Critical patent/KR100638189B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/5052Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination using carry completion detection, either over all stages or at sample stages only
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49931Modulo N reduction of final result
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

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

Abstract

암호 칩은 다양한 비밀 키 및 공개 키 암호 알고리즘을 처리하도록 프로그래머블하다. 상기 칩은 한 파이프라인의 처리 소자를 포함하고, 각각은 비밀 키 알고리즘 범위내의 한 라운드를 처리할 수 있다. 데이타는 이중 포트 메모리를 통해 처리 소자사이에 전송된다. 중앙 처리부는 단일 사이클로 글로벌 메모리로부터 광범위한 데이타 문자의 처리를 허용한다. 가산기 회로는 합계 및 복수의 사이클로 역으로 루프된 자리올림으로 복수의 상대적으로 작은 가산기 회로를 사용하여 단순화할 수 있다. 승산기 회로는 범용 중앙 프로세서 승산기로서 연결하기 위한 작은 처리 소자 승산기를 선택함으로써 처리 소자 및 중앙 프로세서 사이를 공유할 수 있다.

Description

공유 메모리 상호 접속을 구비하는 암호 처리기 및 그 방법{ENCRYPTION PROCESSOR WITH SHARED MEMORY INTERCONNECT}
인터넷이 출현하기 전에, 통합 데이타 네트워크는 전형적으로 공중 전화 회사로부터 리스된 전용 전기 통신선으로 구성된다. 상기 데이타 네트워크에 대한 하드웨어 구현은 매체에 대해 절대적 독점권을 갖는 규제된 공익 사업주인 상기 전화 회사가 배타권을 가지기 때문에, 보안은 큰 문제가 없었고, 즉 단일 공급업자는 계약으로 보안이 강제적으로 보장되고, 외부로부터 스위칭 네트워크로 접근이 불가능하여 외부 해킹 및 도청이 어려웠다.
현재, 점점 더 기업체는 인터넷의 가치를 발견해 가고 있으며, 인터넷 세계의 어떠한 다른 단일한 컴퓨터 네트워크보다 광범위하게 설치되어 다국적 기업 네트워크로 사용하기가 용이하다. 또한 인터넷은 컨슈머 레벨의 제품이기 때문에, 전용 전화 회사 네트워크에 의해 공급되는 동일한 서비스보다 상당히 저 비용으로 인터넷에 접근할 수 있다. 결론적으로, 인터넷에 대한 최종 사용자의 이용은 개인이 가정 또는 다른 원격지로부터 기업 네트워크로의 용이한 접근을 가능하게 할 수 있다.
그러나, 인터넷은 정밀한 조사에 의해 개방적인 개방 프로토콜, 대역 내 라우팅 및 콘트롤를 사용하여 공공회사에 의해 운영되고 있다. 이러한 환경은 해커들에게는 풍부한 시험장이 된다. 오늘날, 산업 스파이는 돈벌이가 되는 사업이며, 인터넷으로 사업을 행하는 기업은 그들 자신이 주의하지 않는 한 산업 스파이의 공격에 노출되게 된다.
오늘날, 수개의 표준이 프라이버시 및 인터넷 상에서의 강력한 인증을 위해 존재한다. 프라이버시는 암호/해독을 통하여 달성된다. 전형적으로, 암호/해독은 당사자 사이의 공개 채널로 데이타 전송을 허용함과 동시에 메시지 내용의 프라이버시를 유지하게 하는 알고리즘에 기초해서 수행된다. 이것은 전송자가 암호 키를 사용하여 데이타를 암호화하고, 수신자가 해독 키를 사용하여 해독함으로써 달성된다(때때로, 암호 및 해독 키는 동일하다).
암호 알고리즘의 형태
암호 알고리즘은 공개 키 및 비밀 키 알고리즘으로 분류될 수 있다. 비밀 키 알고리즘에서, 양쪽 키는 비밀인 반면에 공개 키 알고리즘에서는 상기 키 중 하나는 일반인에게 공지되어 있다. 블록 암호(block ciphers)는 현재 사용중인 비밀 키 암호 방식이 대표적이다. 보통, 블록 암호용 암호 키는 해독 키와 동일하다. 블록 암호는 입력으로 데이타 블록, 전형적으로, 32 내지 128 비트를 취하고, 출력으로서 동일한 비트를 발생한다. 암호 및 해독은 56 내지 128 비트 길이의 키를 사용하여 수행된다. 암호 알고리즘은 키를 알지 못하고 메시지를 해독하는 것이 어렵게 되어 있다.
블록 암호이외에도, 인터넷 보안 프로토콜은 또한 공개 키 알고리즘을 많이 사용하고 있다. 포그 및 리베스트에게 특허된 미국 특허 제5,144,167호에 기술되어 있는 리베스트(Rivest), 샤미르(Shamir), 아델만(Adelman)(RSA) 암호 방식과 같은 공개 키 알고리즘은 2 개의 키를 사용하며 그 중 하나는 공개되어 있다. 일단 누군가 키를 공개하는 경우에, 누구나 그 키를 사용하여 비밀 메시지를 그 사람에게 전송할 수 있다. 그러나, 메시지의 해독은 비밀 키의 사용에 의해 달성된다. 이러한 공개 키 암호의 장점은 모든 당사자의 대화 전에 비밀 키를 분배하여야 할 필요성이 없는 것이다. 그러나, 공개 키 암호가 사용되는 경우에도, 다수의 비밀 키가 발생되고, 각 당사자를 위해 하나의 메시지를 수신하고 각각의 비밀 키는 사적으로 통신되어야 한다. 사적으로 비밀 키를 통신하기 위한 시도는 비밀 키 암호를 사용하여 메시지를 전송하는 그 자체와 동일한 문제를 발생시키고 이것을 키 분배 문제라고 불린다.
키 교환은 공개 키 기술의 다른 응용이다. 키 교환 프로토콜에서, 대화를 제3자가 가로 챈다하더라도 2 명의 당사자는 비밀 키를 동의 할 수 있다. 디피-헬만(Diffie-Hellman) 지수 키 교환은 이러한 프로토콜의 예시로 미국 특허 제4, 200,770호에 기술되어 있다.
RSA 및 디피-헬만 키 교환과 같은 대부분의 공개 키 알고리즘은 모듈러 지수화를 기초로 하여, αx모듈로 p로 계산된다.
이러한 표현은 "α그 자체를 x번 곱하고 그것을 p로 나누고 그 나머지를 취한다"는 의미이다. 이러한 계산은 후술되는 이유 때문에 수행하는 것은 고 비용이 든다. 이러한 연산을 수행하기 위하여, 많은 반복된 곱셈 및 나눗셈을 필요로 하고, Mathematics of Computation, vol. 44, No.170(1985년 4월)에 "Modular multiplication without trial division"으로 기술되어 있는 몽고메리 방법과 같은 기술을 사용하는 경우라도, 필요로 하는 나눗셈의 회수를 축소할 수 있다. 더우기, 사용된 숫자는 상당히 크며(전형적으로 1024 비트 이상), 공통 CPU에 알려진 곱셈 및 나눗셈 명령어를 직접 사용할 수는 없다. 대신에, 큰 곱셈과 나눗셈을 작게 하여 CPU에 실시될 수 있을 만큼 충분히 작은 연산으로 분해하는 특정한 알고리즘이 사용될 수 있다. 이러한 알고리즘은 보통 포함된 기계어의 개수의 제곱에 비례하는 런 타임을 가진다. 이러한 요소는 큰 숫자의 곱셈을 매우 느리게 연산한다. 예를 들어, 등록 상표 Pentium은 10 번의 클럭 사이클로 32×32 비트 곱셈을 수행한다. 2048 비트 수는 64 개의 32 비트 문자로 표시할 수 있다. 2048×2048 비트 곱셈은 64×64 번의 별도 32×32 곱셈을 필요로 하며, 이는 상기 펜티엄에서 40960 클럭을받아들이게 한다. 2048 비트 지수를 가진 지수화는 정상 방법으로 행해진 경우에 4096 곱셈을 필요로 하고, 1억 6천 7백만 클럭 사이클을 필요로 한다. 펜티엄이 166Mhz로 연산하는 경우에 전체의 연산은 대략 1초를 필요로 한다. 이러한 예시는 모두 나눗셈을 수행하기 위해 필요한 시간은 고려되지 않는다. 명백히, 펜티엄과 같은 일반적인 CPU는 임의의 큰 비율로 키 발생 및 교환을 할 수 없다.
공개 키 알고리즘은 계산이 매우 어렵기때문에, 전형적으로 전체의 메시지를 암호화하여 사용되지 않는다. 대신에, 개인 키 암호 방식은 메시지 전송용으로 사용된다. 개인 키는 메시지를 암호화하여 사용되고, 세션 키라 불리며, 공개 키를 사용하여 랜덤하게 선택되고 암호화된다. 암호 메시지는 물론 암호 세션 키는 다른 당사자로 전송된다. 다른 당사자는 비밀 키로 세션 키를 해독하기 위해 사용하고 메시지는 세션 키를 사용하여 해독될 수 있다. 다른 세션 키는 각각의 통신용으로 사용되고, 그 결과, 한 개의 세션 키가 알려진 경우에, 그것으로 해독한 단지 한 개의 메시지를 판독할 수 있다. 이러한 공개 키/ 개인 키 방법은 또한 정상 연산으로 종결되지 않는 쌍방향 단자 세션과 같은 연속적인 통신을 보호하기 위하여 사용될 수 있다. 이러한 경우에, 세션 키는 공개 키 발생 기술을 반복함으로써 주기적으로(예컨대, 1시간 당) 변화한다. 또한, 상기 세션 키의 빈번한 변화는 암호가 알려진 경우에 합의되는 데이타의 양을 제한한다.
종래 기술
네트워크급 암호 장치는 소프트웨어를 기초로 한 솔루션을 사용하여 네트워크를 통합하기 위한 접근을 허용하면서 광범위하게 사용되고 있다. 랩터 이글 리모트(Rapter Eagle Remote) 및 다른 종류와 같은 제품은 소프트웨어로 전반적으로 암호를 수행한다. 소프트웨어는 암호기의 처리량을 제한한다. 공개 키 기술을 사용하는 세션 키 발생은 수분이 걸릴 수 있다. 이러한 이유로, 세션 키는 소수 사람들이 좋아하는 만큼 재생되지 않는다. 그러나, 소프트웨어는 암호 알고리즘에 대한 기술의 진보에 대응하여 용이하게 변화되는 장점이 있다.
다른 장치는 하드웨어 및 소프트웨어의 조합으로 사용된다. 예를 들어, 노던 텔레콤(현 인트러스트) 센티넬X.25 제품은 DES 비밀 키 암호를 실시하기 위해 AMD에 의해 생산된 DES 칩을 사용한다. DES의 하드웨어 구현은 충분히 빠르며, 그 이유는 DES가 하드웨어로 효율적으로 구현할 수 있도록 설계되어 있기 때문이다. 소프트웨어로 많은 CPU 명령어를 취하는 전치(transposition)는 병렬의 특정 목적 조사표 및 배선을 사용하여 행할 수 있다.
상기 센티넬은 또한 공개 키 연산을 실시하기 위해 모토로라 DSP56000 프로세서를 사용한다. 이때, 상기 DSP의 단일 사이클 곱셈 능력은 보통 CISC 마이크로프로세서의 공개키 알고리즘을 구현하는 것보다 빠른 접근을 만들 수 있다.
대부분의 하드웨어 암호 장치는 실시할 수 있는 수개의 알고리즘으로 제한된다. 예를 들어, 센티넬에 사용된 AMD 칩은 DES만을 수행한다. Hi/Fn으로부터의 최근 장치는 DES 및 RC4를 수행할 수 있다. 그러나, RC5 또는 IDEA를 실시할 필요가 있는 경우에, 다른 제품을 사용할 필요가 있다.
본 발명은 고 성능 네트워크 암호 장치에 관한 것으로, 특히 하드웨어 및 소프트웨어로 구성되는 암호 장치에 관한 것이다.
본 발명의 전술한 목적 및 다른 목적, 특징, 장점은 본 발명의 바람직한 실시예에 대한 후술하는 좀더 상세한 기술과 다른 모습 전체에 동일한 부분의 참조 문자로 첨부된 도면으로 명백해질 것이다. 도면은 축척이 없지만 본 발명의 특징을 설명하는 데 목적을 두고 있다.
도 1a 및 도 1b는 본 발명의 잠재적인 응용에 대한 블록도.
도 2는 본 발명이 포함하는 암호 칩에 대한 블록도.
도 3은 도 2 암호 칩의 처리 소자에 대한 블록도.
도 4는 도 2 및 도 3의 회로에 대한 바람직한 칩 설계를 나타내는 도면.
도 5는 도 4의 설계에 대응하도록 재도시된 도 3 에 대한 처리 소자를 나타내고 PE 국부 버스 및 글로벌 버스 접속을 나타내는 도면.
도 6은 도2 의 PK ALU로 사용된 가산기 회로를 나타내는 도면.
도 7은 PK ALU의 승산기로 사용된 전체 가산기 기호를 나타내는 도면.
도 8은 전 가산기를 사용하여 4×4 승산기의 제1단으로 처리를 나타내는 도면.
도 9는 3 단의 4×4 승산기를 나타내는 도면.
도 10은 4×4 승산기의 가산기 위에 놓여진 범용 승산기의 가산기를 나타내는 도면.
도 11은 도 10의 범용 문자 길이 승산기로 유사 승산기에 연결되어 선택된 4×4 승산기에 대한 블록도.
도 12는 전 가산기를 사용하는 8 비트 가산기에 대한 종래의 구현을 나타내는 도면.
도 13은 자리올림 선독 가산기에 대한 종래의 실시를 나타내는 도면.
도 14는 DES 암호 라운드를 나타내는 블록도.
도 15a 내지 15d는 본 발명의 실시예에 따른 모듈러 덧셈, 뺄셈, 조정 및 3 가지 연산 모두의 조합을 나타내는 기능도.
단일 칩 위에 집적화된 바람직한 고성능 프로그래머블 네트워크 암호 장치는 명령어 세트가 공통의 암호 알고리즘으로 최적화되는 병렬 파이프라인된 프로세서 시스템이다. 본 발명은 하드웨어 및 소프트웨어의 문제 해결로서 그 장점을 달성하고 있다. 프로세서가 프로그래머블 프로세서이기 때문에, 어떠한 알고리즘도 실시될 수 있고, 반대로 하드웨어는 단지 하나의 알고리즘을 실행하도록 된 암호 프로세서를 장착하고 있다. 그러나, 프로세서의 설계는 암호를 위해 유용한 병렬 계산을 허용하므로 그 성능은 전용 하드웨어 장치의 성능에 근접한다.
본 발명의 바람직한 실시예에 따르면, 전자 암호 장치는 처리 소자 배열을 포함한다. 각각의 처리 소자는 한 라운드의 암호 알고리즘을 저장하기 위한 명령어 메모리를 포함하고, 상기 라운드는 일련의 명령어를 포함한다. 상기 처리 소자는 또한 명령어 메모리로부터의 상기 라운드를 실시하기 위한 프로세서와 상기 라운드의 실시로부터 발생한 암호 데이타 연산수 및 암호 데이타를 저장하기 위한 데이타 스토리지를 포함하고 있다. 각각의 처리 소자 배열은 라운드 중 하나를 실시하고 상기 배열의 처리 소자가 처리 소자 파이프 라인으로 연속 라운드의 암호 알고리즘을 실시하도록 결과를 연속 처리 소자로 전송한다.
바람직한 실시예로, 상기 데이타 스토리지는 선형 배열의 인접 처리 소자 사이의 데이타 전송을 위해 선형 배열의 인접 처리 소자 사이에 공유되는 것의 일부를 구비하고 있다. 상기 공유 데이타 스토리지는 이중 포트 메모리를 구성하지만 또한 공유 레지스터를 포함한다.
바람직한 처리 소자는 제어부 및 ALU를 포함한다. 국부 데이타 메모리 및 공유 데이타 메모리를 포함하여 상기 제어부, 명령어 메모리 및 데이타 스토리지는 국부 처리 소자 데이타 버스에 접속된다. 상기 국부 버스는 스위치에 의해 상기 제어부 및 명령어 메모리가 접속되는 국부 명령어 버스 세그먼트로 세그먼트되고, 국부 명령어 버스 세그먼트는 상기 ALU, 국부 데이타 메모리 및 공유 데이타 메모리에 접속된다. 상기 스위치는 2 개의 국부 버스 세그먼트로 독립한 동시 연산 또는 2 개의 버스 세그먼트 사이의 통신을 허용한다. 각각의 처리 소자는 상기 처리 소자 내의 곱셈 연산을 실시하기 위한 승산기를 더 포함한다.
바람직한 암호 장치는 데이타가 글로벌 어세스 메모리 및 처리 소자 데이타 스토리지 사이에 전송됨을 통해 글로벌 랜덤 어세스 메모리 및 글로벌 버스를 더 포함한다. 중앙 처리기는 처리 소자에 의해 처리된 데이타 문자보다 광범위한 데이타 문자를 처리하기 위한 글로벌 버스에 접속된다. 복수의 처리 소자에 대한 상기 승산기는 중앙 처리기에 의해 사용된 범용 승산기의 세그먼트로서 연결하기 위해 선택될 수 있다. 바람직하게는, 각각의 승산기는 개별의 승산기로서 연산하는 경우에 제1 세트의 입력을 선택하기 위한 입력 선택 회로를 구비하는 부분 곱셈 가산기를 포함하고, 제2 세트의 입력은 연결된 경우에 인접 처리 소자로부터의 입력을 포함한다.
바람직하게, 상기 중앙 처리기는 신규의 가산기를 포함한다. 가산기로, 각각의 상기 복수의 가산기 세그먼트는 자리올림 출력 및 합계 출력을 구비하고 각각의 가산기 세그먼트는 2 개의 연산수에 대한 세그먼트를 처리한다. 선택기는 연속적인 가산기 세그먼트에 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 연산기 사이클로 발생하는 경우에 연속적인 클럭 사이클을 위해 자리올림 출력을 선택한다. 선택기는 또한 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클을 위해 동일한 가산기 세그먼트에 연산수 입력으로서 각각의 합계 출력을 선택한다. 따라서, 임의의 자리올림이 가산기 사이클로 발생하는 경우에, 가산기의 합계 출력은 입력으로 피드백되고 가산기 세그먼트는 이전 사이클로 이전 세그먼트로부터의 자리올림 출력으로서 발생된 자리올림 입력을 수신한다.
바람직하게는, 각각의 처리 소자는 구동 회로 없이 M 모듈로 N으로 계산하도록 모듈러 조정 연산을 수행한다. 각각의 처리 소자는 또한 A ±B 모듈로 N으로 계산하도록 모듈로 덧셈 또는 뺄셈 연산을 수행한다. 더우기, 각각의 처리 소자는 A ×B 모듈로 N으로 계산하도록 모듈로 곱셈 연산을 수행한다.
본 발명의 암호 칩은 임의의 응용으로 하나 또는 그 이상의 데이타 스트림의 공통 데이타 암호 및 해독 알고리즘을 수행하도록 프로그램되어 있다. 암호 칩의 주요한 목적은 알고리즘을 사용하여 100-2000 Mbps의 데이타율로 인터넷의 사용이 예상되는 고속 데이타 암호를 실시하는 것이다.
실시예 응용은 도 1a 및 도 1b에 나타내고 있다. 도 1a로, 소스(22)로부터의 데이타는 데이타가 공중 네트워크(26)로 통과하기 전에 암호 칩(24)으로 암호화된다. 이후 데이타는 목적지(30)에 전송되기 전에 암호 칩(28)으로 해독된다. 한 실시예로, 소스 및 목적지는 지역 네트워크(LAN)와 같이 그 자체가 네트워크된다. 이러한 경우에, 암호 칩은 지역 네트워크 및 공중 네트워크(26) 사이를 보안 경로로 제공한다.
도 1b에 도시된 링크 암호 응용으로, 라우터 사이로 각각의 링크 범위 내로 전송된 데이타는 암호화된다. 이 경우에, 링크 사이의 라우터(32)에서 수신된 암호 데이타는 먼저 암호 칩(34)으로 해독되고, 상기 데이타는 암호 칩(36)으로 다음 링크의 암호 알고리즘에 따라 재 해독된다.
3 개의 주요한 비밀 키 블록 암호 알고리즘은 DES, RC5 및 IDEA로 공통적으로 사용된다. 첫째 2 개의 알고리즘은 표준 인터넷 프로토콜 보안(IPSEC) 표준 알고리즘이다. IDEA는 인기 있는 e 메일 암호 프로그램, PGP에 의해 사용된 알고리즘이다.
전형적으로, 블록 알고리즘은 수개의 라운드로 구성되어, 각각의 라운드는 암호 알고리즘으로 일련의 연산이다. 8-32 라운드로부터 어디서나 암호 알고리즘을 완벽하게 실시하는 하는 것을 필요로 한다. 각 라운드에 의해 수행된 연산은 필요한 경우는 아닐지라도 종종 동일하다. 소프트웨어로, 각각의 라운드는 수개의 기계 명령어로 실시된다. 하드웨어로, 각각의 라운드는 전용 회로로 실시된다. 하드웨어는 전형적으로 파이프라인되어 각각의 라운드는 그 자체의 파이프라인 단으로 실시된다.
도 2는 집적 칩 솔루션을 나타내고, 본 발명의 실시에 따른 암호 칩에 대해 설명한다. 칩에 내재된 암호 칩은 암호를 실시할 수 있는 경우에도, 칩이 암호 및 메시지 요약 기능도 수행하도록 되어 있다.
데이타는 입력단(40)을 통해 암호 칩에 입력하고 네트워크 데이타, 전형적으로 직렬 비트 스트림을 수신한다. 에더넷, ATM, 또는 다른 직렬 포맷을 사용될 수 있다. 입력단은 암호/해독 파이프라인의 입력으로서 처리하기 위해 적절한 직렬 데이타 스트림을 블록 배열 데이타로 변환한다. 입력 블록의 크기는 프로그래머블하다. 도 2의 바람직한 실시예로, 파이프라인은 선형 배열로 배치된 복수의 처리 소자(37)로 구성되고, 각각은 명령어 메모리, 레지스터 파일, ALU, 국부와 공유 데이타 메모리 및 제어 회로를 포함한다. 각각의 처리 소자는 32 비트 범용 데이타 문자를 처리하기 위해 설계되어 있다. 암호 데이타는 파이프라인으로 마지막 처리 소자로부터 출력단(42)으로 수용되고, 블록 데이타는 직렬 스트림 포맷으로 다시 변환되고 네트워크 또는 국부 목적지에 대해 데이타를 전송한다.
데이타는 글로벌 데이타 버스(38)를 경유하여 암호 칩 내의 비인접 처리 소자 및/또는 다른 소자로 전송될 수 있다. 또, I/O 통신 로직(54)은 글로벌 데이타 버스(38)에 접속되고, 호스트 CPU(도시 안됨)와 통신이 허용된다. 호스트 CPU 통신은 사용에 앞서 암호 칩을 프로그램할 필요가 있다. 글로벌 랜덤 어세스 메모리(RAM, 44)는 또한 글로벌 데이타 버스(38)에 접속되고 처리 소자 사이의 글로벌 통신을 허용한다. 제어 CPU(52)는 암호 파이프라인 프로세서의 연산을 동기화한다. 이러한 CPU는 MIPS, ARM 또는 ARC와 같은 가용 CPU 코어를 사용하여 실시될 수 있다. 더우기, 공개 키 암호 알고리즘, 공개 키(PK) 코어 프로세서(46)와 같은 범용 연산수를 사용하는 알고리즘의 처리를 허용하기 위해, 공개 키(PK) 코어 프로세서(46)는 제어 CPU(52)에 접속된다. 공개 키(PK) 코어 프로세서(46)는 PK ALU(50)은 물론 8 내지 16 개의 512 비트 범용 레지스터로 구성되는 레지스터 파일(48)을 포함한다. 공개 키(PK) 코어 프로세서(46)는 한 시스템 클럭 사이클로 512 비트 버스에 대해 글로벌 RAM(44)로부터 및 RAM으로의 데이타 전송을 만들 수 있다. 512 비트 연산수는 ALU(50), 전형적으로 2 내지 32 클럭 사이클로 처리된다. PK 코어 ALU(50)는 로드 및 저장에 따라 산술 및 로직 연산을 수행하는 제어 CPU(52)에 의해 제어되는 코프로세서이다. PK 알고리즘을 실시하기 위해 필요한 다른 명령어는 제어 CPU(52) 내에서 실행할 수 있다.
암호 칩은 파이프라인의 별개 처리 소자로 비밀 키 알고리즘의 각 라운드를 위한 코드를 실시한다. 일단 계산이 되면, 한 개의 PE로부터의 데이타는 다음 라운드가 실시될 다음 PE로 전송된다. 첫째 PE는 이후 들어오는 데이타의 다음 블록을 위한 암호 라운드 처리가 자유롭다. 파이프라인 방법은 잔여 PE을 위해 계속된다. 이 설계를 사용하여 블록을 암호화하기 위해 필요한 시간은 한 라운드를 암호화하기 위해 필요한 시간과 같다.
많은 블록 알고리즘은 데이타를 암호화하기 위한 한 세트의 연산과 키를 확장하기 위한 별개의 세트의 연산을 사용한다. 키 확장은 상대적으로 작은 키(56 내지 128 비트)를 통계적으로 랜덤한 성질을 가진 큰 수(512 비트 이상)로 변환되는 방법이다. 이러한 확장 키는 보다 작은 서브키로 분배되고, 확장 키의 다른 부분은 각 라운드를 위해 사용된다. 확장 키는 데이타를 변화시키지 않음에 주의하는 것이 중요하다. 그러므로, 임계 경로가 아니기 때문에, 미리 계산되고 메모리에 저장된다. 후술될 샘플 코드는 키 정보가 미리 계산되고 각 PE의 국부 데이타 메모리에 저장된다.
블록 알고리즘의 기초적 응용은 한 블록의 평문(암호화되지 않은 정보)을 유사 크기 블록의 암호문(암호화된 정보)등으로 변환한다. 이러한 연산 모드는 전자 코드북 모드(ECB)로 공지되어 있다. 많은 고유의 보안 약점에 기인하여, 피드백을 몇 개의 기초 출력을 입력으로 되돌리는 사이클링에 의한 암호로 도입하는 방법을 공통적으로 사용된다. 암호 칩은 암호 피드백(CFB)을 수행하기 위해 글로벌 데이타 버스(38)를 사용한다. ECB 모드에서, 새로운 블록의 데이타는 파이프라인 사이클 당, 10 내지 100 개의 명령어로 암호화 할 수 있다. 그러나, CFB 모드에서, 각각의 데이타는 파이프라인을 통해 다수의 시간을 통과해야 한다. 이러한 모드는 실질적으로 단일 채널의 스루풋으로 축소한다. 그러나, 피크 성능은 파이프라인으로 인터리브된 다수의 데이타 채널을 암호화함으로써 달성될 수 있다.
본 발명의 실시예에 따른 별개의 처리 소자(PE)의 블록도가 도 3에 도시된다. 처리 소자(37)는 8 내지 16 개의 32 비트 레지스터로 구성된 레지스터 파일(58)로부터 32 비트 문자로 연산하는 ALU(56)로 구성한다. 레지스터 파일(58) 및 ALU(56)은 처리 소자 명령어 메모리(62)로부터의 명령어를 해독하는 제어부(60)에 의해 제어된다. 각각의 처리 소자 명령어 메모리는 적어도 하나의 라운드의 암호 알고리즘에 저장하고, 한 개의 라운드는 암호 알고리즘으로 일련의 명령어로 정의된다. 각각의 처리 소자에 의해 접근 가능한 PE 데이타 메모리 공간은 모든 PE에 접근 가능한 도 2를 참조로 기술된 바와 같이 국부 PE 메모리(64, 도 3에 PEn국부 메모리로 설계됨), 공유 메모리(66, 도 3에 n 및 n-1 번째 처리 소자사이에 공유된 PEn, n-1공유 메모리로 설계됨), 제2 공유 메모리 (68, 도 3에 n+1 및 n 번째 처리 소자사이에 공유된 PEn+1, n공유 메모리로 설계됨) 및 글로벌 메모리(44)의 4 개의 영역으로 나누어진다. 모든 이러한 메모리는 처리 소자의 어드레스 공간, 말하자면 n번째 처리 소자로 맵핑된다. 어떠한 형의 메모리에 접근하기 위한 특정한 명령어는 필요로 하지 않는다. 모든 메모리는 모든 메모리 어세스 명령어에 의해 접근 할 수 있다.
처리 소자의 메모리(66 및 68)는 이중 포트 SRAMs이고 각각 이전 및 다음 파이프라인 단의 PE와 공유된다. PE의 다음 이웃 메모리는 다음 PE의 이전 이웃 메모리와 동일하다.
이러한 이중 포트 SRAMs는 파이프라인 단을 통해 데이타를 전송하도록 사용된다. 한 개의 처리 소자는 관련된 다음 이웃 공유 메모리로 전송된 데이타를 기입한다. 이후 다음 이웃 처리 소자는 이전 이웃 공유 메모리로부터 저장된 데이타를 판독하고, 전술한 바와 같이 이전 처리 소자의 다음 이웃 공유 메모리와 동일하다.
메모리가 이중 포트이기 때문에, 접근의 제약 시간은 없다. 접근의 동기화는 소프트웨어 작성자 또는 컴파일러에 의해 기계 명령어의 정적 스케줄을 사용하여 수행된다. 더우기, 글로벌 버스는 이웃 PEs 사이에 통신하기 위해 사용되지 않기 때문에, PEs는 모두 동시에 통신할 수 있다.
글로벌 메모리(44)는 글로벌 통신 버스에 접속된다. 단 하나의 처리 소자는 이때에 글로벌 메모리(44)에 접근하도록 허용된다. 이러한 메모리는 예컨대, 피드백 암호 알고리즘 중 비인접 처리 소자사이의 데이타를 통과하도록 사용되고, 개개의 처리 소자를 위한 보충 스토리지로서 적용할 수 있다.
PE 명령어 메모리(62)는 현대의 RISC 프로세서 집적부와 유사한 명령어 세트를 가지고 있다. 명령어 세트는 임의의 레지스터가 임의의 명령어로 연산수로서 사용될 수 있다는 점에서 다소 수직하다. 부동점 또는 메모리 경영 지원은 제공될 필요가 없고, 그 이유는 둘다 암호로 유용하지 않기 때문이다. 그러나, 명령어 세트는 모듈러 덧셈/뺄셈 명령어, 모듈러 곱셈 명령어 및 모듈로 조정 명령어로 후술하는 유용한 향상을 포함한다.
모듈러 덧셈/뺄셈 명령어는 A ±B 모듈로 N으로 계산한다("M 모듈로 N"은 M을 N으로 나누는 경우에 나머지이다). 도 15a 내지 15d는 모듈러 덧셈, 뺄셈 및 조정의 조합을 한 개의 3-in-1 모듈로 산술부로 설명한다.
도 15a는 모듈로 덧셈 연산을 설명한다. 더해지는 2 개의 수, A 및 B 모두가 N 보다 작은 경우에, 가산기(120)로부터의 합계는 감산기(122)로 N을 감산함으로써 모듈로 N으로 축소될 수 있고, 이후 멀티플렉서(MUX, 124)를 통한 선택은 부호 차이에 의존하는 감산기 또는 초기 숫자의 출력이다. 유사하게, 도 15b에 도시한 바와 같이 모듈러 감산 연산의 경우에, 2 개의 수 A 및 B가 N 보다 작다면 그 차이 모듈로 N은 감산기(128)로부터의 차이가 음인 경우 가산기(126)로 N을 더함으로써 또는 그 차이가 양인 경우 멀티플렉서(130)를 통해 차이를 선택함으로써 계산될 수 있다. 모듈로 덧셈 및 뺄셈은 나눗셈을 필요로 하지 않는다. 그러나, 직렬로 2 개의 덧셈을 필요로 한다(합계/차이를 계산하기 위한 것 및 모듈로 N을 축소하기 위한 것). 중복 덧셈을 임계 경로에 영향을 주는 경우에, 축소 모듈로 N은 "모듈로 조정" 명령어라 불리는 별개의 명령어로서 암호화할 수 있다.
도 15c에 도시한 모듈로 조정 명령어는 M 모듈로 N으로 계산하고, M은 A 및 B의 합계 또는 차이로 주어지고 이미 모듈로 N으로 축소된다. M이 음인 경우에, 로직(132)은 가산기/감산기(134)로 하여금 멀티플렉서(136)를 통해 결과를 발생하는 N에 M을 더하도록 한다. M이 양인 경우에, 로직(132)은 N의 감산을 발생하고 양인 경우에 차이 또는 차이가 음인 경우에 M을 리턴한다. 이 명령어는 불필요한 모듈로 덧셈/뺄셈 명령어를 부여하기 위해 합계 및 차이 명령어를 병행하여 사용될 수 있다.
도 15d로, 3-in-1 산술부는 모듈로 덧셈, 모듈로 뺄셈, 모듈로 조정을 각각의 처리 소자 내로 실시된 단일 단위로 조합한다. 명령어에 응답하는 로직(144)의 제어(모듈러 덧셈, 모듈러 뺄셈 또는 모듈러 조정) 및 가장 중요한 비트(MSB) 부호 입력, 가산기/감산기(138)는 장치(120 및 128) 모두의 기능을 적용하고, 가산기/감산기(140)는 장치(122, 126 및 134)의 기능을 적용한다. 멀티플렉서(142)는 장치(124, 130 및 136)에 대응한다. 모듈로 조정 연산으로, M은 A 입력으로 적용되고 B 입력은 영으로 설정된다. 이러한 조합부는 속도 비용 영역에서 가장 효율적이다. 이러한 조합부는 또한 "Mathematics of Computation, vol. 44, No.170 pages 519-521(1985년 4월)에 Peter L. Montgomery에 의해 게재된 "Modular multiplication without trial division"에 트라이얼 나눗셈 없는 모듈로 곱셈을 위한 몽고메리 방법을 실시하는 데 유용하다.
모듈러 덧셈 및 뺄셈을 단지 2 내지 3 개의 명령어를 사용하여 종래의 프로세서로 수행할 수 있는 경우에도 암호 칩 명령어 설정의 주요한 기능으로서 이러한 명령어의 포함은 특정한 경우의 암호 알고리즘을 위해 약간의 능률 촉진을 제공한다.
모듈로 곱셈 명령어는 A*B 모듈로 N을 계산한다. 이러한 명령어를 위해 사용된 승산기는 후술된다. 암호 칩은 전체 모듈러 곱셈 명령어를 제공하고, 그 이유는 후술될 것이다.
표 1은 차후의 실시예에 사용된 PEs의 명령어 세트의 대표적 샘플이다. 다른 종래의 RISC 명령어는 또한 실시될 것이다.
샘플 명령어 세트
명령어 설명
load rn,addrstore rn,addr 레지스터 n을 메모리에 로드한다.레지스터 n을 메모리에 저장한다.
xor r1, r2, r3add r1, r2, r3rol r1, r2, r3 r1=r2 xor r3r1= r2 + r3r1= r2 <<< r3 (<<<는 회전 명령어를 위한 자바 오퍼레이터이다. 32 비트 연산수를 위해 비트 31은 비트 위치 0로 회전한다.)
xor r1, addradd r1, addrrol r1, addr r1=r1 xor memory[aadr]r1=r1+memory[aadr]r1=r1<<<memory[aadr]
moda r1, r2moda r1, addr 모듈로 조정 : r1=r1 모듈로 r2, r1은 모듈로 덧셈 또는 r1=r1 모듈로 memory[addr]을 곱한 결과이다.
mul r1, r2, r3mulm r1, r2, r3, r4 곱셈 : r1=r2×r3, 32비트 실행.모듈로 곱셈 : r1=r2×r3 모듈로 r4
jump labelsync label 무조건 제어를 라벨로 전송파이프라인 싱크 : 모든 PEs는 "sync" 명령어에 도달될 때까지 기다리고, 그후 라벨로 분기함.
Dbra rn, label rn=rn-1;rn!=0인 경우에 라벨로 점프
cbra r1 cond r2,label 비교 및 분기 : 조건이 참인 경우에 r1 및 r2를 비교하고 라벨로 분기. "Cond"는 ==, !=, <, >, <= 또는 >=중 하나이다.
설계 문제
암호 칩의 일반적인 설계는 도 4에 도시되고, 16 개의 처리 소자 및 512 비트 범용 공개 키 PK 코어부를 가지고 있다. 512 비트의 PK 코어 문자 폭은 설계 편의에 기인하여 선택된다. 예를 들어, 1024 비트의 폭은 더 많은 실리콘 영역을 필요로 하지만 2 배의 성능이 있다.
개개의 소자는 도 2 및 도 3의 소자와 비교될 수 있다. 16 개의 처리 소자는 도시한 바와 같이, 좌측 하부에 설계의 대면적에 열로 선형 배열 된다. 공유 승산기 소자(70)는 후술하는 처리 소자와 관련하여 도시된다. 전술한 바와 같이, 32×32 승산기 세그먼트(70)는 각각의 처리 소자 내의 32 비트 곱셈을 실시하기 위한 각각의 처리 소자와 관련되어 있다. 한편, 승산기 소자(70)는 공개 키 ALU(50)를 위해 범용 512×32 비트 승산기로서 적용하도록 연결된다. 공개 키 PK ALU(50)는 비밀 키 SK 소자의 오른쪽에 위치하고 전술한 처리소자로 구성되어 있다. 공개 키 PK ALU(50) 옆에는 PK 레지스터 파일(48)이 있다. 더불어, 공개 키 PK ALU(50) 및 PK 레지스터 파일(48)은 PK 처리 코어를 구성하고 도 2에 46으로 도시되어 있다. PK 코어의 오른쪽에는 글로벌 메모리(RAM)가 위치하고 있다. 칩 위쪽을 따라 제어 CPU(52), 통신 로직(54)과 입력 및 출력 처리 블록(40 및 42)이 있다. 글로벌 데이타 버스(38)는 SK 소자, PK 코어(46), 글로벌 RAM(44), 통신 로직(54) 및 제어 CPU(52)를 링크한다.
국부 버스 접속을 가진 전형적인 처리 소자의 설계는 도 5에 도시되어 있다. 처리 소자의 모든 부품은 국부 처리 소자 데이타 버스(72)를 경유하여 통신될 수 있고 모든 메모리-레지스터 전송을 다룬다. 다음 이웃 공유 PE 메모리(68)는 처리 소자의 다른 소자와 일렬로 놓이는 반면에, 이전 이웃 공유 PE 메모리(66)는 이전 이웃 처리 소자의 상기 소자와 일렬로 놓인다. 프로그래밍 및 테스트 과정에 대해 모든 PE 메모리는 글로벌 버스(38)로부터 접근 가능하다. 스위치(74)는 보통 국부 버스(72)를 글로벌 버스(38)로부터 접속을 끊지만, 국부 RAM(64) 및 글로벌 RAM(44)사이의 데이타 전송을 가능하게 하도록 선택적으로 연결될 수 있다. 다른 스위치(76)는 제어부(60)는 버스(72)의 데이타 전송으로 동시에 RAM(62)으로부터 명령어를 판독할 수 있도록 국부 버스(72)를 독립한 세그먼트로 세그먼트를 허용한다. 이와 같이 처리 소자 내의 연산은 제어부에서 처리되는 한 개의 명령어와 파이프라인됨과 동시에 사전 명령어는 PE ALU(56)으로 실행된다. 암호 코드의 실행 중, 스위치(74 및 76)는 정상적으로 오픈이고, 그 결과 명령어 RAM으로부터의 명령어 인출은 데이타 메모리 및 레지스터 파일로부터 데이타 인출과 동시에 처리된다.
많은 다중 프로세서 설계는 고안되고 있다. 대부분은 일반용 다중 처리를 위해 설계되고, 처리 소자 사이의 통신은 한 PE 에서 임의의 다른 것으로 데이타를 능동적으로 스위치하도록 구성된 보통 스위칭 매트리스를 사용하여 행할 수 있다. 이러한 스위치 디자인은 매우 복잡하다. 암호를 필요로 하지 않기 때문에, 본 발명의 실시예는 매우 적은 스위치 회로로 단순한 선형 배열의 PEs를 사용한다.
더우기, 문헌과 같은 I/O 포트라기보다 상호 접속 기술로서 공유 메모리의 사용은 상당히 간단하고 강력한 프로그래밍 모델을 발생한다. 2 개의 PEs A 및 B는 단일한 32 비트 I/O 포트에 접속된다. A가 데이타의 다수 문자를 B로 전송하도록 하기 위하여, A는 각각의 문자를 I/O 포트에 기입하고 B가 판독할 수 있도록 기다린다. 그러나, A 및 B는 통신의 모든 문자를 보유할 만큼 충분히 큰 공유 메모리에 연결된 경우에, A는 B가 판독함을 기다리지 않고 기입할 수 있다. 더우기, PE B는 문자를 임의의 순서로 판독하거나, 즉시 일에 필요한 데이타를 골라내는 자유가 있다. 결론적으로, 몇개의 공유 메모리는 통신을 필요로 하지 않는 경우에, 부가적인 국부 작업 공간을 제공하도록 국부 메모리의 확장부로서 사용될 수 있다.
공개 키 지원
충분한 공개 키 암호는 충분한 모듈라 지수화를 필요로 하고, 이는 공개 키 코프로세서에 의해 제공된다. 이러한 유닛은 후술하는 아래 항목을 포함한다 :
16개의 512 비트 범용 레지스터로 구성된 PK 레지스터 파일(48)
SK 승산기 소자와 연결되어 구성된 PK 512×32 비트 승산기(70) (이러한 유닛은 단지 32 클럭 사이클로 512×512 곱셈을 실시할 수 있다)
2-16 사이클, 전형적으로 2 이상으로 덧셈을 실시할 수 있는 PK 512비트 가산기 ALU(50)
단일 클럭 사이클로 512 비트 문자를 로드하고 저장하기 위한 PK 코프로세서로부터 512 비트 병렬 접근을 위해 조직된 글로벌 메모리(44)
PK 코어 프로세서는 512 비트 문자를 사용하여 수행함으로써 모듈러 곱셈을 가속화한다. 본 발명의 PK 유닛을 사용하여 512×512 곱셈 연산은 후술되는 16 개의 처리 소자의 연결된 승산기 소자를 사용하여 16 번의 512×32 곱셈을 수행함으로써 실시된다. 각각의 곱셈은 2 클럭 사이클을 필요로 하고, 16 번의 곱셈을 필요로 하며, 512×512 곱셈은 32 클럭 사이클을 필요로 하며 2048×2048 곱셈은 단지 512 클럭 사이클을 필요로 한다. 전 모듈러 지수화 연산은 4096 번의 곱셈을 필요로 하고, 전체 2 백만 클럭 사이클을 취한다. 이것은 전술한 펜티엄 실시예로 80 배 개선으로 표시된다. PK 알고리즘의 성능 향상이 유사하게 예상된다. 이것은 공지 기술과 비교해 성능 게인을 표시할 수 있고, 세션 키의 빈번한 변경을 할 수 있고, 이에 따라 보안성이 증가된다.
512 비트 가산기
가산기는 공개 키 PK 및 비밀 키 SK부를 공유하지 않는다. 오히려, 덧셈 및 로직 연산은 PK 및 SK에 대해 모두 공통이고, 각각의 유닛은 그 자체가 가산기이고, 그 결과 연산을 동시에 처리될 수 있다.
공개 키 PK ALU(50) 내의 512 비트 단일 사이클 가산기는 매우 복잡하고 실질적으로 ALU의 임계 경로 시간에 더해진다. 따라서, ALU(50)의 512 비트 가산기는 도 6에 도시된 바와 같이 16개의 32 비트 가산기를 형성하고 있다. 동작으로, AND-게이트(78) 및 멀티플렉서(80)는 초기에 2 개의 32 비트 연산수 세그먼트를 각각의 32 비트 가산기 A0-A15에 적용한다. AND-게이트(78)는 32 비트 범용 연산을 나타낸다. 각각의 32 비트 가산기는 자리올림 출력에 따라 32 비트 합계를 계산한다. 한 개의 가산기에 대한 자리올림 출력은 D 플립플롭(79)을 통해 다음의 자리올림 입력에 접속된다. 자리올림이 제1 사이클로 발생하는 경우에, 플립플롭으로 클럭되고 다음 클럭 사이클을 위해 자리올림 입력이 가능하다. 각각의 합계는 D 플립플롭(81) 및 멀티플렉서(80)를 통해 동일 가산기의 한 개의 입력으로 리턴되고, 가산기의 다른 입력은 연속 클럭 사이클 중 AND 게이트(78)를 사용하여 영으로 유지된다. 각각의 가산기에 대한 자리올림 입력으로서 합계를 역으로 더하는 단계는 자리올림이 임의의 32 비트 가산기에 대한 출력으로 발생하는 한 반복된다.
512 비트 가산기의 연산은 실제 실시에 대한 16 개의 32 비트 문자대신에 4 개의 4 비트 이진 문자를 사용하여 후술되는 실시예를 참조로하여 잘 설명된다.
덧셈 : 1101 0110 1001 1011
0001 0101 1100 1011
01110 01011 10101 10110 자리올림 출력은 0, 0, 1, 1이다.
1110 1011 0101 0110
0 1 1 0 이전 자리올림
1110 1100 0110 0110 최종 합계
2 개의 덧셈은 최종 합계에 도달할 필요성이 있고 더이상 자리올림이 발생하지 않는다. 이것은 전형적인 경우이다. 상기 가산기는 암호 연산을 사용하기 때문에, 더해진 숫자는 다소 랜덤하게 분배되는 것이 안전하다. 제1 가산 후의 자리올림 출력에 대한 확률은 상당히 높다. 그러나, 자리올림, 최소한 주요 비트로서의 역 덧셈이 대부분의 주요 비트로부터의 다른 자리올림을 발생하는 확률은 상당히 낮다. 이러한 이유로, 대부분의 가산 연산은 단지 2 개의 클럭 사이클을 수용하는 것이 예상된다.
512 비트 가산기를 만드는 초기 문제로 돌아가면, 표준 자리올림 선독 또는 자리올림 바이패스 가산기 디자인이 사용되는 경우에, 가산기를 통한 임계 경로는 상당히 길고, 그 이유는 자리올림이 512 비트를 연산하는 최적화된 회로를 통하여 전송하기 때문이다. 이러한 가산기는 상당히 크고 느리다. 그러나, 본 발명의 한 실시예로, 512 비트 가산기는 32 비트 가산기로 구성되고, 디자인은 공지되어 있고 최적화된다. 개개의 32 비트 가산기의 최대 클럭 속도는 512 비트 자리올림 선독 디자인의 2 배 이상이 되는 것을 예상할 수 있다. 따라서, 본 발명의 2 또는 그 이상 사이클 가산기는 칩 영역을 덜 소비하고 평균적으로 512 비트 가산기보다 빠르게 연산한다.
후술되는 바와 같이 최악의 경우에, 16 개의 사이클은 16 개의 32 비트 가산기 실시를 위해 자리올림없이 최종 합계를 완벽히 계산하는 것이 필요할 수 있다. 4 비트 이진 문자 사용하여 후술되는 목적을 다시 예시한다.
덧셈 : 1111 1111 1111 1111
0000 0000 0000 0001
01111 01111 01111 10000 1차 자리올림 출력은 0, 0, 0, 1이다.
1111 1111 1111 0000
0 0 1 0
01111 01111 10000 00000 2차 자리올림 출력은 0, 0, 1, 0이다.
1111 1111 0000 0000
0 1 0 0
01111 10000 00000 00000 3차 자리올림 출력은 0, 1, 0, 0이다.
1111 0000 0000 0000
1 0 0 0
10000 00000 00000 00000
4 개의 덧셈이 필요로 한다. 일반적으로, n 그룹의 숫자를 위해 고작, n 덧셈을 필요로 한다.
512×32 승산기
승산기는 영역이 크다. 각각의 비밀 키 처리 소자는 곱셈, 예컨대 후술되는 IDEA을 필요로하는 비밀 키 알고리즘을 실시하기 위하여 그 자체의 승산기를 포함한다. 각각의 PE 승산기에 의해 수용된 영역은 조합적으로 중요하고, 결과적으로 이 영역의 사용은 512×32 비트 공개 키 승산기를 실시하는 데 만들 수 있다. 영역을 절감하기 위해, 큰 512×32 승산기는 각각의 비밀 키 처리 소자로 16 개의 32×32 승산기를 연결함으로써 실시된다. 다시 말해, 비밀 및 공개 키 부는 도 4의 칩의 설계에 도시한 바와 같이, 승산기 소자를 공유할 수 있다. 승산기 소자의 사용은 비밀 키 처리 소자 및 PK 코어 프로세서사이에 위치하고 그 이유는 비밀 키 처리 소자 중 하나가 곱셈 연산을 독립적으로 수행하는 경우에 PK 코어 프로세서가 곱셈 연산을 수행할 수 없기 때문이다.
승산기의 접속을 설명하기 위해, 조합 4×4/4×N 승산기의 단순 디자인은 후술된다. 부스 암호(Booth encoding) 및 4:2 압축기와 같은 승산기 디자인에 대한 보다 진보적인 기술을 이용할 수 있다. 후술하는 실시예는 단순 표시를 제공한다.:
1 0 1 1
× 0 1 0 0
0 0 0 0
1 0 1 1 부분 곱셈
1 0 1 1
0 0 0 0
1 0 0 0 0 1 0
한 자리수 곱셈은 AND 게이트를 사용함으로써 용이하게 실시할 수 있다. 결과적으로, 2 개의 4 비트 연산수를 사용하여 16 비트의 부분 곱셈으로 구성된다. 이러한 부분 곱셈은 효율적으로 함께 더해질 수 있다. 예컨대, 부분 곱셈은 2 개의 4 비트 및 1 개의 6 비트 전가산기를 사용하여 더해질 수 있지만, 부분 곱셈의 덧셈을 수행하기 위한 실질적인 시간이 걸리고, 그 이유는 자리올림이 수개의 가산기를 통해 전송하기 때문이다. 이러한 가산기 실시의 전체 결과는 매우 느리다. 바람직한 시도는 수개의 단계를 통해 자리올림을 하는 가산기를 구성한다.
바람직한 승산기의 기초 부품은 전가산기로, 3 개의 입력 및 상기 입력의 2 개 비트 합계를 수용하는 회로이다. 전가산기는 도 7의 심볼을 사용하여 설명된다. 2 진수 대신에 사각형의 사용은 일반성 및 편리성을 위함이다. 상부에 3 개의 사각형은 전가산기의 3 개 입력을 도시한다. 하부에 2 개의 사각형은 합계 및 자리올림 출력을 도시한다. 그 자리값을 표시하기 위해 좌측 하부에 있는 자리올림은 합계의 2 배이다.
4×4 승산기의 덧셈의 제1단은 도 8에 도시한다. 합계 라인 위에, 흑색 및 백색 박스로 도시한 16 개의 사각형은 더해지는 부분 곱셈의 비트를 표시한다. 흑색으로 도시한 비트는 4 개의 전가산기(82)를 사용하여 제1단으로 더해진다. 백색으로 도시한 비트는 4 개의 전가산기(82)를 사용하여 제1단으로 더해지지 않지만, 다음 덧셈단에 대한 준비로 도 8에 화살표로 도시한 바와 같이 간단히 전송된다. 제1단에서 가산기의 합계는 합계 라인 하부에 도시한다. 제2단은는 도 9에 도시한다. 화살표는 현단계 중에 연산하지 않는 비트를 다시 표시하고 간단히 전송함과 동시에 흑색 박스는 현(제2) 단계로 더해지는 비트를 기술한다. 다시, 4 개의 전가산기(84)는 흑색 박스 소자를 더하기 위해 사용된다. 제2단의 출력에서 전가산기(84)에 의해 생산되고, 정규 4 비트 자리올림 가산기(86)로 더해지는 2 개의 수가 있다.
다양한 가산기 및 승산기 설계의 성능 비교는 본 발명에 따른 승산기의 장점을 설명하는 데 도움을 준다. 4 비트 가산기의 기본 실시는 도 12에 도시한 바와 같이, 4 개의 직렬 전가산기 A0-A3로 구성된다. 이 디자인으로, 가장 오른쪽 가산기의 자리올림 출력(Cout)은 잠정적으로 그 왼쪽의 각 가산기 단계마다 영향을 줄 수 있다. 전형적인 전가산기는 2 또는 그 이상의 로직 단계로 구성되고, 4 비트 가산기의 전체 게이트 지연은 8 단계를 초과한다.
개선된 4 비트 가산기는 자리올림 선독 가산기이다. 3 비트 자리올림 선독 가산기는 도 13에 도시된다. 4 비트 디자인은 약간 더 복잡하다. AND 게이트(102), OR 게이트(104) 및 배타적 OR 게이트(106) 연산의 설명은 공지 회로이기 때문에 표현되지 않는다. 자리올림 선독 가산기의 장점은 자리올림을 4 개의 로직 게이트의 최종 합계 비트로 전송한다. 큰 범위 숫자를 위한 복잡한 디자인은 로직 단계이지만 자리올림 연쇄 디자인보다 빠르다.
전 4×4 승산기로, 자리올림 절감 디자인은 2 개의 전가산기 및 최종 자리올림 선독 가산기를 통해 임계 경로를 발생한다. 전가산기를 사용하는 구현은 보다 긴 임계 경로를 가지며, 그 이유는 연쇄 자리올림을 사용하여 초기 가산기는 자리올림 선독 가산기보다 느리다. 결론적으로, 부분 곱셈 합계의 초기 2 개 단계로 전 자리올림 선독 가산기를 사용하는 경우에, 합계 승산기는 느려지며, 그 이유는 자리올림 선독 가산기는 개개의 전가산기보다 느리기 때문이다. 본 발명에 따른 승산기 디자인은 동일한 부분 곱셈 레벨에서 한 가산기로부터 다른 것까지 자리올림을 전송하지 않는다. 이 방법으로, 승산기를 통한 임계 경로는 초기 2 개 단계의 부분 곱셈 합계로 기껏해야 2 개의 전가산기를 포함한다.
도 10은 범용 4×N 승산기를 도시한다. 큰 흑색 박스(82,84, 86)는 도 9에 사용되는 동일한 전가산기 하드웨어를 나타낸다. 전가산기는 이 경우에 필요하며, 그 이유는 각각의 환경에서 3 개의 입력은 서로 가산된다. 도 9에서 간단한 회로는 모든 환경이 3 개의 입력의 덧셈을 필요로 하지 않기 때문이다. 그러나, 4N 케이스를 다룰 수 있는 시스템을 발생하기 위하여, 전가산기는 3 개의 입력보다 적은 케이스를 다루는 방법을 결정하기 위해 부가 회로를 가진 모든 단계에 사용된다. 이중 모드 가산기가 발생되고, 이들중 이전 단계 출력 및 단일 비트 부분 곱셈 사이를 선택하기 위한 그 입력 중 하나가 들어오는 멀티플렉서를 구비한다.
도 11은 좌측 하부에서 각각의 자리올림 출력으로 도 10의 박스 영역(82,84,86)을 실시하는 전가산기(A)를 도시한다. 바람직한 구현으로, 각각의 가산기(A)는 전가산기이다. 가산기중 몇개는 4×4 케이스(즉, 비밀 키 경우)로 2 개의 입력을 가짐과 동시에, 다른 가산기는 4×N 케이스(즉, 공개 키 경우)로 3 개의 입력을 가진다. 2 개의 입력 가산기는 가용 신호로 게이트되는 제3 입력을 가진다. 몇 개의 가산기는 또한 멀티플렉서가 이전 단계의 출력 또는 단일 비트 부분 곱셈 사이를 선택하도록 그 입력 중 하나를 제공하는 것을 필요로 한다. 하부의 자리올림 선독 가산기(86)는 4×4 케이스로 곱셈의 최종 비트를 발생하도록 4 위치마다 자리올림 출력을 필요로 한다.
도 11에서, 4×4 멀티플렉서의 부분 곱셈은 후술하는 부분 곱셈 시나리오에 대응하도록 라벨된다.:
A B C D
E F G H
I J K L
M N O P
4×N 멀티플렉서를 위해, 이웃의 부분 곱셈은 또한 고려된다. 도 11은 후술하는 시나리오에 따라 라벨된다.:
D' A B C D
E F G H
I J K L I'
M N O P M'
D'은 D의 등가로 이웃(그 왼쪽 또는 오른쪽)한다. 8 비트 최종 합계는 S7, S6, S5, S4, S3, S2, S1, S0 로서 도시되고 3 개의 좌측의 이웃 합계중 하부 크기 비트는 S2', S1', S0'이다. 2:1 멀티플렉서(88)는 선택 신호(Sel)를 가진다. 일반적으로, Sel이 로직 1인 경우에, 왼쪽 입력은 멀티플렉서의 출력으로 통과되거나, Sel이 로직 0인 경우에, 오른쪽 입력은 멀티플렉서의 출력으로 통과된다. Sel 신호는 또한 AND 게이트(90)를 게이트하도록 사용된다. Sel이 로직 1인 경우에, AND 게이트로 다른 입력은 멀티플렉서의 출력으로 통과되거나, Sel이 로직 0인 경우에, AND 게이트(90)는 다른 입력값에 관계없이 디세이블되고 로직 0을 통과한다. 따라서, 도 11의 구현으로, Sel이 로직 1인 경우에, 4×N 멀티 플렉서의 세그먼트는 출력(S6-S3)으로 나타나는 곱셈으로 실시된다. Sel이 로직 0인 경우에, 4×4 멀티 플렉서가 출력(S7-S0)으로 나타나는 8 비트 곱셈으로 실시된다. 이와 같이, 도 11의 실시는 또한 승산기 소자로 이용할 수 있고, 다른 유사 승산기 소자와 연결된 경우에 넓은 폭 공개 키 승산기를 실시하는 데 사용되는 비밀 키 승산기 소자를 나타낸다.
실시예 구현
공통 알고리즘에 대한 실시예 구현은 전술한 바람직한 실시예로 암호칩을 참조하여 기술한다. RC5는 아마도 실시하는 가장 간단한 암호 알고리즘 중 하나이다. 표 1에 기술한 바와 같이, 전술한 처리 소자 중 하나에 의하여 지원할 수 있는 것으로 기본적으로 XOR, 덧셈 및 회전인 3 가지 형의 연산을 이용하고 있다. RC5가 가변 길이 블록, 가장 공통적으로, 각각의 라운드의 RC5 알고리즘은 라운드 및 키에만 의존하는 각각의 처리 소자 내의 상수인 64 비트 데이타 블록과 Si1 및 Si2에 저장된 키 값을 연산한다. 데이타를 암호화하기 위해, 64 비트 입력 블록은 이후 이전 이웃 메모리에 위치(A 및 B)에 저장되는 2 개의 32 비트 문자로 나누어지고, 출력 블록은 다음 이웃 메모리로 A_next 및 B_next로 기입된다. 한 라운드의 RC5 암호 알고리즘에 대한 실시예는 다음과 같다. :
Loop :
load r1, A
xor r1, B
rol r1, B
add r1, Si1
store r1, A_next
load r2, B
xor r2, r2, r1
rol r2, r2, r1
add r2, Si2
store r2, B_next
sync Loop
각각의 라운드는 11개의 클럭 사이클을 필요로 한다. 암호 칩은 400 ㎒까지 운영할 수 있는 로직 방법을 사용하여 설계되는 경우에, 3천 6백만 블록은 초당 또는 ECB 모드로 288 MB/s를 암호화할 수 있다. 12 개의 라운드가 있는 경우(RC5를 위해 전형적인 경우)에 동일한 클럭 스피드로 운영되는 종래의 CPU로 비교되고, 본 발명의 실시예에 따른 다수 PEs의 동시 실행은 종래의 소프트웨어 실시에 대해 12 개의 성능 개선을 발생한다.
IDEA는 대부분의 가용 보안 블록 알고리즘 중 하나이고 실질적으로 복잡한 구조를 가진다. 이것은 64 비트 평문 블록으로 연산한다. 128 비트 키가 사용된다. 동일한 알고리즘은 암호 및 해독을 위해 모두 사용한다. 알고리즘의 주요 특징은 XOR, 덧셈 모듈로 216및 곱셈 모듈로 216+1과 같은 연산으로 상이한 산술군으로부터 연산을 혼합하는 것이다. 이러한 연산은 16 비트 블록으로 연산하도록 사용된다.
IDEA는 그러므로 소프트웨어로 고가의 연산인 모듈러 곱셈 및 덧셈을 사용한다. 곱셈은 영에 대한 IDEA 처리에 의해 복잡하다. :곱셈으로, 영은 (-1) 모듈로 65537로서 설명된다. 65537 값은 처리 소자의 레지스터 파일에 대한 레지스터(r8)로 미리 로드되고, 레지스터(r0)는 영이 포함되고, 후술하는 곱셈 마크로는 상세한 목적으로 표현된다.
MACRO MMULT(A,B,RESULT)
cbra A== r0, L1
load RESULT, #1
sub RESULT, B, RESULT
jump L2
L1:
cbra B== r0, L3
load RESULT, #1
sub RESULT, A, RESULT
jump L2
L3:
mulm A,B, RESULT, r8
andi #0xFFFF, RESULT
L2:
ENDMACRO
각각의 라운드의 IDEA는 모듈러 곱셈, 모듈러 덧셈, 배타적 OR을 구성한다. 128 비트 키는 서브 키로 나누어진다. 각각의 처리소자의 서브 키는 단지 키 및 처리 소자의 기능이고, 그러므로 미리 계산되고 PE에 저장된다. IDEA로 평문 입력은 전술한 바와 같이, X4를 통하여 4 개의 16 비트 서브블록(X1)으로 구성된다. 각각의 라운드는 K6를 통해 6 개의 서브 키(K1)를 사용하고 다음과 같이 암호화할 수 있다.
Loop:
load r1, X1
load r9, K1
MMULT r1, r9, r1
load r2, X2
load r9, K2
MMULT r2, r9, r2
load r3, X3
load r9, K3
MMULT r3, r9, r3
load r4, X4
load r9, K4
MMULT r4, r9, r4
xor r5, r1, r3
xor r6, r2, r4
load r9, K5
MMULT r5, r9, r5
add r6, r5
and r6, #0xFFFF
load r9, K6
MMULT r6, r9, r6
add r5, r6
and r5, #0xFFFF
xor r1, r6, r1
xor r3, r6, r3
xor r2, r5, r2
xor r4, r3, r4
store r1, X1_next
store r2, X3_next
store r3, X2_next
store r4, X4_next
sync Loop
IDEA는 8 개의 라운드이기 때문에, 본 발명의 실시예에 따른 암호 칩 하드웨어 구현은 8 개 또는 그 이상의 요소에 의하여 실행을 가속한다. 부가적인 가속은 마이크로프로세서로 이용할 수 없는 모듈러 곱셈 명령어에 의해 제공된다. 상기 코드는 한 라운드를 실시하기 위하여 대략 50 번의 클럭 사이클을 필요로 한다. 400 ㎒에서, 암호칩은 쮜리히의 ETH 대학에서 개발한 25 ㎒ 하드웨어 실시보다 약 3 배 빠른 64MB/s 비율의 IDEA로 암호화할 수 있다.
데이타 암호 표준(DES)는 처음부터 하드웨어 구현을 위해 설계되어 소프트웨어를 실시하기에는 어렵다. 그러나, 본 발명의 실시예에 따른 암호 칩으로 용이하게 암호화할 수 있다. 이전 2 개의 알고리즘과 같이, DES는 또한 64 비트 블록으로 데이타를 암호화하는 블록 암호이다. 64 비트 블록의 평문은 입력이고 64 비트 암호문은 출력이다. 일단 암호 및 해독 모두를 DES 대칭 알고리즘으로 만드는 동일 알고리즘을 사용한다. DES는 이 경우 56 비트로 단일 키로부터 서브 키를 만든다. 서브 키는 PE 및 56 비트 키의 기능을 하고 미리 계산될 수 있다.
도 14에 도시한 바와 같이, DES 후의 기초 개념은 키를 기초로 문장의 순환에 의한 대체로 구성한다. 다음의 연산은 DES의 핵심을 구성한다. :
확장 : 64 비트 블록은 2 개의 32 비트 조각(108, 110)으로 나누어진다. 한 조각은 암호에 의해 영향을 받지 않는다. (조각은 매 다른 라운드로 연산된다) 영향을 받는 조각은 8 개 그룹의 4 비트로 나누어진다. 각 그룹은 이에 인접한 2 개 비트로 복사함으로써 확장된다.
각각의 확장 그룹은 서브 키로 112에서 XOR된다.
XOR의 6 비트 결과는 S 박스로 불리는 64 엔트리 4비트 조사표(114)를 색인하는데 사용한다. 각각의 8개 그룹은 그 자체의 S 박스를 사용한다.
S 박스로부터의 출력은 116에서 순환된다 : 비트는 스크램블된다. 8 개의 출력은 32 비트를 산출한다.
32 비트 출력은 블록의 다른 1/2의 32 비트로 118에서 XOR된다.
연산은 다음과 같이 암호화된다. : 확장은 입력 문자를 복사함으로써 실시되고, 하나는 짝수 S 박스 입력을 표시하고 다른 하나는 홀수 S 박스 입력을 표시하는 2 개의 문자로 비트를 마스킹함으로써 실시된다. 2 개 문자는 키 정보로 XOR된다. 결과는 S 박스 조사표를 색인하기 위해 사용된다. 각각의 S 박스에서 데이타는 미리 순환되고, 그 결과 S 박스의 출력은 32 비트 데이타이다. 최종값은 모든 부품의 로직 OR이다. 샘플 코드는 다음과 같다. :
Loop:
load r1, A
load r2, B
load r3, r2
store r2, A_next
and r2, #0xF9F9F9F9
and r3, #0xF9F9F9F9
xor r2, K1
xor r3, K2
load r5, K2
load r4, r3
rol r4, #1
and r4, #0x3f
or r5, [r4 + S1]
load r4, r2
ror r4, #3
and r4, #0x3f
or r5, [r4 + S2]
load r4, r3
rol r4, #7
and r4, #0x3f
or r5, [r4 + S3]
load r4, r2
ror r4, #11
and r4, #0x3f
or r5, [r4 + S4]
load r4, r3
rol r4, #15
and r4, #0x3f
or r5, [r4 + S5]
load r4, r2
ror r4, #19
and r4, #0x3f
or r5, [r4 + S6]
load r4, r3
rol r4, #23
and r4, #0x3f
or r5, [r4 + S7]
load r4, r2
rol r4, #27
and r4, #0x3f
or r5, [r4 + S8]
xor r5, r1, r5
store r5, B_next
sync Loop
이 샘플 코드는 44 번의 클럭 사이클을 한 개의 라운드로 실행하기 위해 필요로 한다. 400 ㎒에서 72MB/s의 데이타 비율은 달성될 수 있다. 이러한 비율은 1-36 MB/s의 범위의 비율로 암호화되는 1990년대 중반에 이용가능한 DES의 하드웨어 실시와 비교한다. VLSI 기술의 VM007은 200MB/s까지 암호화할 수 있다.
전술한 경우에, 성능은 종래의 CPU 의 소프트웨어 구현보다 상당히 빠른 것으로 도시되지만, 전용 하드웨어 구현보다는 느리다. 하드웨어 구현에 대한 본 발명의 장점은 암호 칩이 프로그래머블하고, 그 결과 이미 착상한 것까지 포함하여 임의의 알고리즘을 실시할 수 있다.
특정한 공개 키 알고리즘 실시예가 주어지지 않더라도, 현존하는 시도에 대한 유사한 개선은 본 발명에 대한 바람직한 실시예로 설명된 기술을 사용함으로써 결론될 것이다.
등가성
본 발명은 바람직한 실시예를 참조로하여 설명되었고, 당업자는 본 발명의 특징을 벗어남이 없이 다양하고 세부적인 변화를 하여 부가 청구항을 정의할 수 있다. 당업자는 경험을 바탕으로 본 발명의 특정한 실시예로 많은 등가성 있는 설명을 인식할 수 있다. 이러한 등가성은 본 발명의 범위내에 있다.

Claims (52)

  1. 단일 칩 위에 처리 소자의 배열을 포함하는 전자 암호 장치에 있어서,
    각각의 처리 소자는 명령어의 시퀀스를 포함하는 한 라운드의 암호화 알고리즘을 저장하기 위한 명령어 메모리와,
    상기 명령어 메모리로부터 상기 라운드를 처리하기 위한 처리기와,
    상기 라운드 처리로부터 발생하는 암호 데이타 연산수 및 암호화 데이타를 저장하기 위한 데이타 스토리지를 포함하고,
    상기 배열의 처리 소자 각각은 처리 소자 배열이 처리 소자 파이프라인으로 암호 알고리즘의 연속적인 라운드를 처리하도록 상기 라운드 중 하나를 각각 처리하고 그 결과를 연속 처리 소자로 전송하는 것을 특징으로 하는 전자 암호 장치.
  2. 제1항에 있어서, 상기 데이타 스토리지는 선형 배열의 인접 처리 소자 사이의 데이타 전송을 위해 선형 배열의 인접 처리 소자 사이에 그 일부가 공유되는 것을 특징으로 하는 전자 암호 장치.
  3. 제2항에 있어서, 각각의 처리 소자는 제어부 및 ALU를 포함하며, 상기 제어부, 명령어 메모리 및 데이타 스토리지는 국부 처리 소자 데이타 버스에 접속되고, 상기 국부 데이타 버스는 스위치에 의해 2 개의 독립부로 세그먼트되고, 상기 제어부 및 명령어 메모리는 상기 세그먼트 중 하나에 접속되고, 상기 ALU 및 데이타 스토리지는 상기 세그먼트중 다른 하나에 접속되는 것을 특징으로 하는 전자 암호 장치.
  4. 제2항에 있어서, 각각의 처리 소자는 제어부 및 ALU를 포함하며, 상기 제어부, 명령어 메모리, 국부 데이타 메모리 및 공유 데이타 스토리지는 국부 처리 소자 버스에 접속되고, 상기 국부 버스는 스위치에 의해 상기 명령어 메모리 및 제어부에 접속하는 국부 명령어 버스 세그먼트로 세그먼트되고, 상기 국부 데이타 버스 세그먼트는 상기 ALU, 국부 데이타 메모리 및 공유 데이타 스토리지에 접속하고, 상기 스위치는 2 개의 국부 버스 세그먼트로 독립한 동시 연산 또는 2 개의 버스 세그먼트 사이의 통신을 허용하는 것을 특징으로 하는 전자 암호 장치.
  5. 제4항에 있어서, 각각의 처리 소자는 상기 처리 소자 내의 곱셈 연산을 수행하기 위한 승산기를 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  6. 제2항에 있어서, 암호화 알고리즘의 처리중, 파이프라인의 각각의 처리 소자는 결과 데이타를 순차 처리 소자에 의해 직접 접근하기 위해 순차 처리 소자와 공유된 데이타 스토리지에 기입하는 것을 특징으로 하는 전자 암호 장치.
  7. 제2항에 있어서, 상기 처리 소자의 상기 공유 데이타 스토리지는 상기 선형 배열의 인접 처리 소자 사이의 데이타 전송을 위해 상기 선형 배열의 인접 처리 소자 사이에 공유되는 이중 포트 메모리로 구성되는 것을 특징으로 하는 전자 암호 장치.
  8. 제7항에 있어서, 상기 각각의 처리 소자는 제어부 및 ALU를 포함하며, 상기 제어부, ALU, 명령어 메모리, 국부 데이타 메모리 및 공유 데이타 스토리지는 국부 처리 소자 데이타 버스에 접속되고, 상기 국부 데이타 버스는 스위치에 의해 2 개의 독립한 세그먼트로 세그먼트되고, 상기 제어부 및 명령어 메모리는 상기 세그먼트 및 상기 ALU 중 하나에 접속되고, 상기 국부 데이타 메모리 및 공유 데이타 스토리지는 세그먼트중 다른 하나에 접속되는 것을 특징으로 하는 전자 암호 장치.
  9. 제1항에 있어서, 상기 각각의 처리 소자는 상기 처리 소자 내의 곱셈 연산을 수행하는 승산기를 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  10. 제9항에 있어서, 복수의 처리 소자에 대한 상기 승산기는 범용 승산기의 세그먼트로서 연결하기 위해 이용되는 것을 특징으로 하는 전자 암호 장치.
  11. 제10항에 있어서, 상기 승산기는 개별의 승산기로서 연산하는 경우에 제1 세트의 입력과 연결된 경우에 인접 처리 소자로부터의 입력을 포함하는 제2 세트의 입력을 선택하기 위한 입력 선택 회로를 구비하는 부분 곱셈 가산기를 포함하는 것을 특징으로 하는 암호 장치.
  12. 제1항에 있어서, 상기 각각의 처리 소자는 제어부 및 ALU를 포함하며, 상기 제어부, ALU, 명령어 메모리, 국부 데이타 메모리 및 공유 데이타 스토리지는 국부 처리 소자 데이타 버스에 접속되고, 상기 국부 데이타 버스는 스위치에 의해 2 개의 독립한 세그먼트로 세그먼트되고, 상기 제어부 및 명령어 메모리는 상기 세그먼트 및 상기 ALU 중 하나에 접속되고, 상기 국부 데이타 메모리 및 공유 데이타 스토리지는 세그먼트중 다른 하나에 접속되는 것을 특징으로 하는 전자 암호 장치.
  13. 제1항에 있어서, 글로벌 랜덤 어세스 메모리 및 데이타가 상기 글로벌 어세스 메모리 및 상기 처리 소자 데이타 스토리지 사이에 전송되는 글로벌 버스를 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  14. 제13항에 있어서, 처리 소자에 의해 처리된 데이타 문자보다 광범위한 데이타 문자를 처리하기 위한 글로벌 버스에 접속된 중앙 처리기를 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  15. 제14항에 있어서, 상기 각각의 처리 소자는 처리 소자 내의 곱셈 연산을 수행하기 위한 승산기를 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  16. 제15항에 있어서, 복수의 처리 소자에 대한 상기 승산기는 범용 승산기의 세그먼트로서 연결하기 위해 선택되는 것을 특징으로 하는 전자 암호 장치.
  17. 제16항에 있어서, 상기 각각의 승산기는 개별의 승산기로서 연산하는 경우에 제1 세트의 입력과 연결된 경우에 인접 처리 소자로부터의 입력을 포함하는 제2 세트의 입력을 선택하기 위한 입력 선택 회로를 구비하는 부분 곱셈 가산기를 포함하는 것을 특징으로 하는 암호 장치.
  18. 제13항에 있어서, 상기 중앙 처리기는 가산기를 포함하며,
    자리올림 출력 및 합계 출력을 구비하고 2 개의 연산수에 대한 세그먼트를 처리하는 복수의 가산기 세그먼트와,
    연속적인 가산기 세그먼트로의 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 자리올림 출력을 선택하기 위한 자리올림 선택기와,
    임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 동일한 가산기 세그먼트로의 연산수 입력으로서 각각의 합계 출력을 선택하기 위한 연산수 선택기를 포함하는 것을 특징으로 하는 전자 암호 장치.
  19. 제1항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 조정 연산을 M 모듈로 N으로 계산하도록 수행하는 것을 특징으로 하는 전자 암호 장치.
  20. 제1항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 덧셈 또는 뺄셈 연산을 A ±B 모듈로 N으로 계산하도록 수행하는 것을 특징으로 하는 전자 암호 장치.
  21. 제1항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 곱셈 연산을 A ×B 모듈로 N으로 계산하도록 실시하는 것을 특징으로 하는 전자 암호 장치.
  22. 제1항에 있어서, 상기 암호 장치는 가산기를 더 포함하며,
    자리올림 출력 및 합계 출력을 구비하고 2 개의 연산수에 대한 세그먼트를 처리하는 복수의 가산기 세그먼트와,
    연속적인 가산기 세그먼트로의 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클동안에 자리올림 출력을 선택하기 위한 자리올림 선택기와,
    임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클동안에 동일한 가산기 세그먼트로 연산수 입력으로서 각각의 합계 출력을 선택하기 위한 연산수 선택기를 포함하는 것을 특징으로 하는 전자 암호 장치.
  23. 단일 칩 위에 처리 소자의 선형 배열을 포함하는 전자 암호 장치에 있어서,
    각각의 처리 소자는 최소한의 암호화 알고리즘의 라운드를 실시하는 데 필요로 하는 코드를 저장하기 위한 명령어 메모리와,
    상기 명령어 메모리로부터 상기 라운드를 처리하기 위한 처리기와,
    국부 데이타 메모리와,
    2 개의 인접 처리 소자 사이의 공유 데이타 스토리지를 포함하며,
    상기 선형 배열의 처리 소자 각각은 상기 선형 배열이 처리 소자의 파이프라인으로 암호 알고리즘의 연속적인 라운드를 처리하도록 상기 라운드 중 하나를 각각 처리하고 그 결과를 연속 처리 소자에 전송하는 것을 특징으로 하는 전자 암호 장치.
  24. 제23항에 있어서, 암호화 알고리즘의 처리 중 파이프라인의 각각의 처리 소자는 결과 데이타를 순차 처리 소자에 의해 직접 접근하기 위한 순차 처리 소자와 공유된 데이타 스토리지에 기입하는 것을 특징으로 하는 전자 암호 장치.
  25. 상기 처리 소자의 선형 배열을 포함하는 암호 데이타 처리 시스템에 있어서,
    각각의 처리 소자는
    명령어 메모리와,
    상기 명령어 메모리로부터의 명령어를 처리하기 위한 처리기와,
    데이타 메모리를 포함하며,
    상기 선형 배열의 처리 소자에 대한 데이타 메모리는 상기 선형 배열의 인접 처리 소자 사이의 데이타 전송을 위해 상기 선형 배열의 인접 처리 소자 사이에 공유되는 이중 포트 메모리로 구성되는 것을 특징으로 하는 암호 데이타 처리 시스템.
  26. 제25항에 있어서, 각각의 처리 소자는 제어부 및 ALU를 포함하며, 상기 제어부, ALU, 명령어 메모리, 상기 처리 소자의 데이타 메모리는 국부 처리 소자 버스에 접속되고, 상기 국부 버스는 스위치에 의해 2 개의 독립부로 세그먼트되고, 상기 명령어 메모리 및 제어부는 적어도 하나의 세그먼트에 접속되고 상기 ALU와 국부 및 공유 데이타 메모리는 상기 세그먼트 중 다른 하나에 접속하는 것을 특징으로 하는 전자 암호 시스템.
  27. 제25항에 있어서, 각각의 처리 소자는 처리 소자 내의 곱셈 연산을 실시하기 위한 승산기를 더 포함하는 것을 특징으로 하는 전자 암호 시스템.
  28. 제27항에 있어서, 복수의 처리 소자에 대한 상기 승산기는 범용 승산기의 세그먼트로서 연결하기 위해 선택되는 것을 특징으로 하는 전자 암호 시스템.
  29. 제28항에 있어서, 각각의 승산기는 개별의 승산기로서 연산하는 경우에 제1 세트의 입력과 연결된 경우에 인접 처리 소자로부터의 입력을 포함하는 제2 세트의 입력을 선택하기 위한 입력 선택 회로를 구비하는 부분 곱셈 가산기를 포함하는 것을 특징으로 하는 암호 시스템.
  30. 제25항에 있어서, 글로벌 랜덤 어세스 메모리 및 데이타가 상기 글로벌 랜덤 어세스 메모리 및 처리 소자 데이타 스토리지 사이에 전송되는 글로벌 버스를 더 포함하는 것을 특징으로 하는 전자 암호 시스템.
  31. 제30항에 있어서, 처리 소자에 의해 처리된 데이타 문자보다 광범위한 데이타 문자를 처리하기 위한 글로벌 버스에 접속된 중앙 처리기를 더 포함하는 것을 특징으로 하는 전자 암호 시스템.
  32. 제31항에 있어서, 각각의 처리 소자는 처리 소자 내의 곱셈 연산을 실시하기 위한 승산기를 더 포함하는 것을 특징으로 하는 전자 암호 시스템.
  33. 제32항에 있어서, 복수의 처리 소자에 대한 상기 승산기는 범용 승산기의 세그먼트로서 연결하기 위해 선택되는 것을 특징으로 하는 전자 암호 시스템.
  34. 제33항에 있어서, 각각의 승산기는 개별의 승산기로서 연산하는 경우에 제1 세트의 입력과 연결된 경우에 인접 처리 소자로부터의 입력을 포함하는 제2 세트의 입력을 선택하기 위한 입력 선택 회로를 구비하는 부분 곱셈 가산기를 포함하는 것을 특징으로 하는 전자 암호 시스템.
  35. 제31항에 있어서, 상기 중앙 처리기는 가산기를 포함하며,
    자리올림 출력 및 합계 출력을 구비하고 2 개의 연산수에 대한 세그먼트를 처리하는 복수의 가산기 세그먼트와,
    연속적인 가산기 세그먼트로 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 자리올림 출력을 선택하기 위한 자리올림 선택기와,
    임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 동일한 가산기 세그먼트로 연산수 입력으로서 각각의 합계 출력을 선택하기 위한 연산수 선택기를 포함하는 것을 특징으로 하는 전자 암호 시스템.
  36. 제25항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 조정 연산을 M 모듈로 N으로 계산하도록 수행하는 것을 특징으로 하는 전자 암호 시스템.
  37. 제25항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 덧셈 또는 뺄셈 연산을 A ±B 모듈로 N으로 계산하도록 수행하는 것을 특징으로 하는 전자 암호 시스템.
  38. 제25항에 있어서, 각각의 처리 소자에 대한 각각의 처리기는 모듈로 곱셈 연산을 A ×B 모듈로 N으로 계산하도록 실시하는 것을 특징으로 하는 전자 암호 시스템.
  39. 제25항에 있어서, 상기 암호 장치는 가산기를 더 포함하며,
    자리올림 출력 및 합계 출력을 구비하고 2 개의 연산수에 대한 세그먼트를 처리하는 복수의 가산기 세그먼트와,
    연속적인 가산기 세그먼트로 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 자리올림 출력을 선택하기 위한 자리올림 선택기와,
    임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 동일한 가산기 세그먼트로 연산수 입력으로서 각각의 합계 출력을 선택하기 위한 연산수 선택기를 포함하는 것을 특징으로 하는 전자 암호 시스템.
  40. 제25항에 있어서, 암호화 알고리즘의 처리중 파이프라인의 각각의 처리 소자는 결과 데이타를 순차 처리 소자에 의해 직접 접근하기 위한 순차 처리 소자와 공유된 데이타 스토리지로 기입하는 것을 특징으로 하는 전자 암호 장치.
  41. 제1 길이에 대한 연산수 문자를 수신하는 복수의 승산기 세그먼트와,
    승산기 세그먼트가 개별의 승산기로서 연산하는 경우에 제1 세트의 입력과 제2 문자 길이에 대한 연산수로 연산하는 범용 승산기로서 승산기 세그먼트에 연결하도록 제2 세트의 입력을 선택하는 입력 선택기를 포함하는 승산기 회로.
  42. 제41항에 있어서, 각각의 승산기 세그먼트는 부분 곱셈 가산기를 포함하는 것을 특징으로 하는 승산기 회로.
  43. 자리올림 출력 및 합계 출력을 구비하고 2 개의 연산수에 대한 세그먼트를 처리하는 복수의 가산기 세그먼트와,
    연속적인 가산기 세그먼트로 자리올림 입력으로서 자리올림 출력을 선택하고 임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 자리올림 출력을 선택하기 위한 자리올림 선택기와,
    임의의 자리올림이 가산기 사이클로 발생하는 경우에 연속적인 클럭 사이클 동안에 동일한 가산기 세그먼트로 연산수 입력으로서 각각의 합계 출력을 선택하기 위한 연산수 선택기를 포함하는 가산기.
  44. 단일 칩을 포함하는 전자 암호 소자에 있어서,
    명령어 스토리지, 데이타 스토리지 및 제1 길이에 대한 데이타 문자로 연산하도록 상기 명령어 스토리지로부터 일련의 명령어를 처리하는 처리기를 포함하는선형 배열의 처리 소자와,
    글로벌 랜덤 어세스 메모리와,
    데이타가 상기 글로벌 랜덤 어세스 메모리 및 상기 처리 소자 데이타 메모리사에 전송되도록 하는 글로벌 버스와,
    적어도 상기 제1 길이 이상 크기로 제2 길이에 대한 데이타 문자로 연산하는 공중 키 암호 처리기를 포함하며,
    상기 처리 소자에 대한 상기 데이타 스토리지는 상기 배열의 인접 처리 소자 사이로 데이타를 전송하기 위해 인접 처리 소자 사이와 공유된 이중 포트 메모리를 포함하고,
    상기 선형 배열에 대한 처리 소자는 암호 알고리즘에 대한 상기 명령어 스토리지 개별 라운드를 저장하고 처리 소자 파이프라인으로 암호 알고리즘에 대한 연속 라운드를 처리하도록 연속 처리 소자로 상기 라운드의 상기 결과를 전송하고,
    상기 공중 키 암호 처리기는 상기 제2 길이에 대한 문자 길이로 글로벌 랜덤 어세스 메모리에 접근하는 것을 특징으로 하는 전자 암호 장치.
  45. 단일 칩 위에 처리 소자의 배열을 포함하는 전자 암호 장치에 있어서,
    각각의 처리 소자는 암호 알고리즘에 대한 라운드를 저장하기 위한 명령어 메모리 수단과,
    상기 명령어 메모리로부터 상기 라운드를 실시하기 위한 처리 수단과,
    상기 라운드 처리로부터 발생하는 데이타 연산수 및 암호 데이타를 저장하기 위한 데이타 스토리지 수단을 포함하는 것을 특징으로 하는 전자 암호 장치.
  46. 제45항에 있어서, 상기 데이타 스토리지 수단은 상기 선형 배열에 대한 인접 처리 소자 사이의 데이타에 대한 전송을 위해 상기 선형 배열의 인접 처리 소자 사이에 그 일부가 공유되는 것을 특징으로 하는 전자 암호 장치.
  47. 제46항에 있어서, 글로벌 랜덤 어세스 메모리 및 데이타가 상기 글로벌 랜덤 어세스 메모리 수단 및 상기 처리 소자 데이타 스토리지 수단사이로 전송되는 글로벌 버스 수단을 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  48. 제47항에 있어서, 상기 처리 소자에 의해 처리된 상기 데이타 문자보다 넓은데이타 문자를 처리하기 위한 상기 글로벌 버스 수단에 접속된 중앙처리 수단을 더 포함하는 것을 특징으로 하는 전자 암호 장치.
  49. 단일 칩 위의 전자 회로에서,
    암호화된 데이타를 수신하는 단계와,
    상기 데이타를 상기 칩상의 데이타 처리 소자에 대한 파이프라인에 인가하는 단계를 포함하며, 각각의 처리 소자는 암호 라운드를 처리하고 그 결과를 상기 처리 소자가 처리 소자 파이프라인의 암호 알고리즘의 연속 라운드를 실시하도록 연속 처리 소자로 전송하는 단계를 포함하는 것을 특징으로 하는 암호 방법.
  50. 제49항에 있어서, 상기 결과는 공유 메모리를 통해 연속 처리 소자로 전송되는 것을 특징으로 하는 암호 방법.
  51. 제50항에 있어서, 중앙 처리기로 상기 칩위의 처리 암호 알고리즘이 글로벌 버스를 통해 상기 처리 소자에 접속되는 단계를 더 포함하며, 상기 중앙 처리기는 상기 처리 소자에 의해 처리된 데이타 문자보다 넓은 데이타 문자를 처리하는 것을 특징으로 하는 암호 방법.
  52. 제49항에 있어서, 중앙 처리기로 상기 칩위의 처리 암호 알고리즘이 글로벌 버스를 통해 상기 처리 소자에 접속되는 단계를 더 포함하며, 상기 중앙 처리기는 상기 처리 소자에 의해 처리된 데이타 문자보다 넓은 데이타 문자를 처리하는 것을 특징으로 하는 암호 방법.
KR1020007009108A 1998-02-27 1999-02-26 공유 메모리 상호 접속을 구비하는 암호화 처리기 및 그 방법 KR100638189B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/032,029 1998-02-27
US09/032,029 US6088800A (en) 1998-02-27 1998-02-27 Encryption processor with shared memory interconnect

Publications (2)

Publication Number Publication Date
KR20010041069A true KR20010041069A (ko) 2001-05-15
KR100638189B1 KR100638189B1 (ko) 2006-10-26

Family

ID=21862723

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007009108A KR100638189B1 (ko) 1998-02-27 1999-02-26 공유 메모리 상호 접속을 구비하는 암호화 처리기 및 그 방법

Country Status (8)

Country Link
US (3) US6088800A (ko)
JP (3) JP3979786B2 (ko)
KR (1) KR100638189B1 (ko)
CA (1) CA2244337C (ko)
DE (1) DE19983127T1 (ko)
FR (1) FR2778519B1 (ko)
GB (1) GB2350218B (ko)
WO (1) WO1999044329A2 (ko)

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
GB9707861D0 (en) 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
JP2001505325A (ja) * 1997-09-16 2001-04-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6513108B1 (en) * 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6493825B1 (en) * 1998-06-29 2002-12-10 Emc Corporation Authentication of a host processor requesting service in a data processing network
US6289454B1 (en) * 1998-06-29 2001-09-11 Vlsi Technology, Inc. Memory configuration which support multiple cryptographical algorithms
US6851052B1 (en) * 1998-12-10 2005-02-01 Telcordia Technologies, Inc. Method and device for generating approximate message authentication codes
US6347143B1 (en) * 1998-12-15 2002-02-12 Philips Electronics No. America Corp. Cryptographic device with encryption blocks connected parallel
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
CN1378665A (zh) 1999-06-10 2002-11-06 Pact信息技术有限公司 编程概念
US7509486B1 (en) * 1999-07-08 2009-03-24 Broadcom Corporation Encryption processor for performing accelerated computations to establish secure network sessions connections
US7254231B1 (en) * 1999-10-14 2007-08-07 Ati International Srl Encryption/decryption instruction set enhancement
FR2800952B1 (fr) * 1999-11-09 2001-12-07 Bull Sa Architecture d'un circuit de chiffrement mettant en oeuvre differents types d'algorithmes de chiffrement simultanement sans perte de performance
US6870929B1 (en) * 1999-12-22 2005-03-22 Juniper Networks, Inc. High throughput system for encryption and other data operations
AU2001249511A1 (en) * 2000-03-31 2001-10-15 Vdg Inc. Authentication method and schemes for data integrity protection
WO2001086467A1 (fr) * 2000-05-12 2001-11-15 Fujitsu Limited Controleur de donnees et controleur atm
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7120254B2 (en) * 2000-10-30 2006-10-10 Geocodex Llc Cryptographic system and method for geolocking and securing digital information
US7143289B2 (en) * 2000-10-30 2006-11-28 Geocodex Llc System and method for delivering encrypted information in a communication network using location identity and key tables
US8472627B2 (en) * 2000-10-30 2013-06-25 Geocodex Llc System and method for delivering encrypted information in a communication network using location indentity and key tables
KR100379122B1 (ko) * 2000-11-13 2003-04-08 엘지전자 주식회사 기가비트 이더넷 스위치 128비트 블록 암호화알고리즘에서 라운드키 생성장치
DE10061998A1 (de) * 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
JP2002182898A (ja) * 2000-12-14 2002-06-28 Nec Microsystems Ltd 積算値及び周期関数の生成方法及び回路
US6804696B2 (en) * 2000-12-19 2004-10-12 International Business Machines Corporation Pipelining operations in a system for performing modular multiplication
US7305092B2 (en) * 2000-12-19 2007-12-04 Qualcomm Incorporated Method and system to accelerate cryptographic functions for secure e-commerce applications
US6959346B2 (en) * 2000-12-22 2005-10-25 Mosaid Technologies, Inc. Method and system for packet encryption
JP4074057B2 (ja) * 2000-12-28 2008-04-09 株式会社東芝 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7607165B2 (en) 2001-03-09 2009-10-20 The Athena Group, Inc. Method and apparatus for multiplication and/or modular reduction processing
US20020172355A1 (en) * 2001-04-04 2002-11-21 Chih-Chung Lu High-performance booth-encoded montgomery module
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US6990199B2 (en) 2001-06-12 2006-01-24 Corrent Corporation Apparatus and method for cipher processing system using multiple port memory and parallel read/write operations
EP1417566A2 (fr) * 2001-06-13 2004-05-12 Zencod S.A. Carte d'acceleration de traitement cryptographique
WO2002103532A2 (de) * 2001-06-20 2002-12-27 Pact Xpp Technologies Ag Verfahren zur bearbeitung von daten
US20030007636A1 (en) * 2001-06-25 2003-01-09 Alves Vladimir Castro Method and apparatus for executing a cryptographic algorithm using a reconfigurable datapath array
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
JP4787434B2 (ja) * 2001-08-24 2011-10-05 富士通コンポーネント株式会社 暗号化方法、通信システム、データ入力装置
US7403615B2 (en) * 2001-08-24 2008-07-22 Broadcom Corporation Methods and apparatus for accelerating ARC4 processing
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US7043017B2 (en) * 2001-09-13 2006-05-09 Freescale Semiconductor, Inc. Key stream cipher device
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US6922717B2 (en) * 2001-09-28 2005-07-26 Intel Corporation Method and apparatus for performing modular multiplication
JP4045777B2 (ja) * 2001-10-30 2008-02-13 株式会社日立製作所 情報処理装置
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
DE10392560D2 (de) 2002-01-19 2005-05-12 Pact Xpp Technologies Ag Reconfigurierbarer Prozessor
WO2003071432A2 (de) 2002-02-18 2003-08-28 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
DE10215771A1 (de) * 2002-04-10 2003-11-20 Infineon Technologies Ag Konfigurierbares Rechenwerk
JP2003317202A (ja) * 2002-04-11 2003-11-07 Cis Electronica Industria & Comercio Ltda 磁気読み取り装置の磁気ヘッド
US7941662B2 (en) * 2002-05-31 2011-05-10 Broadcom Corporation Data transfer efficiency in a cryptography accelerator system
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
JP2004078053A (ja) 2002-08-22 2004-03-11 Sony Corp 暗号化装置
US7451326B2 (en) * 2002-08-26 2008-11-11 Mosaid Technologies, Inc. Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies
US7386705B2 (en) * 2002-08-27 2008-06-10 Mosaid Technologies Inc. Method for allocating processor resources and system for encrypting data
EP1537486A1 (de) 2002-09-06 2005-06-08 PACT XPP Technologies AG Rekonfigurierbare sequenzerstruktur
US20040086114A1 (en) * 2002-11-06 2004-05-06 Sun Microsystems, Inc. System and method for implementing DES permutation functions
WO2004045135A1 (en) * 2002-11-06 2004-05-27 Sun Microsystems, Inc. System and method for implementing des encryption
US7000089B2 (en) * 2002-12-20 2006-02-14 International Business Machines Corporation Address assignment to transaction for serialization
US7574604B2 (en) * 2003-03-04 2009-08-11 Sony Corporation Network device registration
US7529368B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7539876B2 (en) * 2003-04-18 2009-05-26 Via Technologies, Inc. Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7529367B2 (en) * 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent cipher feedback mode cryptographic functions
US7502943B2 (en) * 2003-04-18 2009-03-10 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7900055B2 (en) * 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7536560B2 (en) * 2003-04-18 2009-05-19 Via Technologies, Inc. Microprocessor apparatus and method for providing configurable cryptographic key size
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7925891B2 (en) * 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US8060755B2 (en) * 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7519833B2 (en) * 2003-04-18 2009-04-14 Via Technologies, Inc. Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
US7532722B2 (en) * 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7542566B2 (en) * 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
FR2857535A1 (fr) * 2003-07-09 2005-01-14 Atmel Corp Procede et systeme pour brouiller le contenu d'une cellule dans un circuit integre.
US7412588B2 (en) * 2003-07-25 2008-08-12 International Business Machines Corporation Network processor system on chip with bridge coupling protocol converting multiprocessor macro core local bus to peripheral interfaces coupled system bus
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US20050071656A1 (en) * 2003-09-25 2005-03-31 Klein Dean A. Secure processor-based system and method
US7653196B2 (en) * 2004-04-27 2010-01-26 Intel Corporation Apparatus and method for performing RC4 ciphering
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7496753B2 (en) * 2004-09-02 2009-02-24 International Business Machines Corporation Data encryption interface for reducing encrypt latency impact on standard traffic
US7409558B2 (en) * 2004-09-02 2008-08-05 International Business Machines Corporation Low-latency data decryption interface
WO2006059873A1 (en) * 2004-12-01 2006-06-08 Bstech Co., Ltd. Encryption processor
KR20060061219A (ko) * 2004-12-01 2006-06-07 주식회사 비에스텍 암호처리 프로세서
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
US20060153382A1 (en) * 2005-01-12 2006-07-13 Sony Computer Entertainment America Inc. Extremely fast data encryption, decryption and secure hash scheme
US8271805B2 (en) * 2005-02-04 2012-09-18 Sony Computer Entertainment Inc. Methods and apparatus for providing a secure buffer
WO2006084375A1 (en) * 2005-02-11 2006-08-17 Universal Data Protection Corporation Method and system for microprocessor data security
US7587614B1 (en) * 2005-08-30 2009-09-08 Altera Corporation Encryption algorithm optimized for FPGAs
US20070150530A1 (en) * 2005-12-13 2007-06-28 Intel Corporation Resisting cache timing based attacks
US7873830B2 (en) * 2006-01-13 2011-01-18 International Business Machines Corporation Methods for coordinating access to memory from at least two cryptography secure processing units
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
US9860055B2 (en) * 2006-03-22 2018-01-02 Synopsys, Inc. Flexible architecture for processing of large numbers and method therefor
JP4919690B2 (ja) * 2006-04-19 2012-04-18 シーイエス エレクトロニカ インダストリア エ コメルスィオ リミタダ 磁気カード読み取りシステム
JP2008011512A (ja) * 2006-06-01 2008-01-17 Canon Inc データ処理装置、データ記憶装置およびそれらのデータ処理方法
US7693257B2 (en) * 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
US8301905B2 (en) * 2006-09-08 2012-10-30 Inside Secure System and method for encrypting data
WO2008031205A1 (en) * 2006-09-13 2008-03-20 Elliptic Semiconductor Inc. Multiple sequential security key encryption - decryption
US8213607B2 (en) * 2006-10-18 2012-07-03 Qualcomm Incorporated Method for securely extending key stream to encrypt high-entropy data
US7953221B2 (en) * 2006-12-28 2011-05-31 Intel Corporation Method for processing multiple operations
US8594322B2 (en) * 2007-07-10 2013-11-26 Stmicroelectronics S.R.L. Encoding/decoding apparatus
US8347359B2 (en) * 2007-12-28 2013-01-01 Bruce Backa Encryption sentinel system and method
US7522723B1 (en) 2008-05-29 2009-04-21 Cheman Shaik Password self encryption method and system and encryption by keys generated from personal secret information
GB2463031B (en) * 2008-08-28 2010-12-15 Samsung Electronics Co Ltd Device and method for encrypting data or providing an encryption key
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
WO2011043202A1 (ja) 2009-10-05 2011-04-14 コニカミノルタホールディングス株式会社 表面プラズモン増強蛍光測定装置
US20120008768A1 (en) * 2010-07-08 2012-01-12 Texas Instruments Incorporated Mode control engine (mce) for confidentiality and other modes, circuits and processes
KR101286021B1 (ko) 2012-02-02 2013-07-19 주식회사 이노와이어리스 인터리버 인덱스 생성장치 및 방법
KR101481402B1 (ko) 2012-10-31 2015-01-14 고려대학교 산학협력단 공개키 암호화 시스템 및 그 방법
GB201513316D0 (en) 2015-07-29 2015-09-09 Flynn Thomas M P19-0 encoding engine
US9660966B1 (en) * 2015-09-10 2017-05-23 Rockwell Collins, Inc. Multilevel secure communication systems with encryption based separation
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
JP6834771B2 (ja) * 2017-05-19 2021-02-24 富士通株式会社 通信装置および通信方法
CN109710308B (zh) * 2017-10-25 2023-03-31 阿里巴巴集团控股有限公司 任务的处理方法、装置和系统
WO2020146286A1 (en) * 2019-01-07 2020-07-16 Cryptography Research, Inc. Sign-based partial reduction of modular operations in arithmetic logic units
US11599649B2 (en) * 2020-06-29 2023-03-07 Rockwell Automation Technologies, Inc. Method and apparatus for managing transmission of secure data packets
CN112052042B (zh) * 2020-09-15 2023-08-15 厦门壹普智慧科技有限公司 一种数据流水线处理器系统
WO2023003737A2 (en) * 2021-07-23 2023-01-26 Cryptography Research, Inc. Multi-lane cryptographic engine and operations thereof

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL213776A (ko) * 1957-01-16
US4004089A (en) 1975-02-28 1977-01-18 Ncr Corporation Programmable cryptic device for enciphering and deciphering data
US4274085A (en) 1979-06-28 1981-06-16 Motorola, Inc. Flexible mode DES system
US4306289A (en) 1980-02-04 1981-12-15 Western Electric Company, Inc. Digital computer having code conversion apparatus for an encrypted program
DE3003998A1 (de) 1980-02-04 1981-09-24 Licentia Patent-Verwaltungs-Gmbh, 6000 Frankfurt System zur ver- und entschluesselung von daten
US4439839A (en) 1981-08-24 1984-03-27 International Telephone And Telegraph Corporation Dynamically programmable processing element
US4598170A (en) 1984-05-17 1986-07-01 Motorola, Inc. Secure microprocessor
US4747139A (en) 1984-08-27 1988-05-24 Taaffe James L Software security method and systems
US4641238A (en) 1984-12-10 1987-02-03 Itt Corporation Multiprocessor system employing dynamically programmable processing elements controlled by a master processor
US4707800A (en) 1985-03-04 1987-11-17 Raytheon Company Adder/substractor for variable length numbers
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
JPS62229440A (ja) 1986-03-31 1987-10-08 Toshiba Corp 配列乗算器
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
JPS62271016A (ja) 1986-05-19 1987-11-25 Sony Corp デジタル信号処理装置
JPS643734A (en) 1987-06-25 1989-01-09 Fujitsu Ltd Multiplication circuit
US4914697A (en) * 1988-02-01 1990-04-03 Motorola, Inc. Cryptographic method and apparatus with electronically redefinable algorithm
GB2215496A (en) 1988-02-25 1989-09-20 Texas Instruments Ltd Multi-stage parallel binary adders and/or subtractors
US5038282A (en) * 1988-05-11 1991-08-06 Massachusetts Institute Of Technology Synchronous processor with simultaneous instruction processing and data transfer
US5001662A (en) 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
US5617574A (en) * 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
US5109506A (en) * 1989-06-19 1992-04-28 International Business Machines Corp. Microcomputer system including a microprocessor reset circuit
JP2825205B2 (ja) * 1989-07-20 1998-11-18 日本電信電話株式会社 暗号装置
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
DE4016203A1 (de) * 1990-05-19 1991-11-21 Rolf Prof Dr Trautner Verfahren zur blockweisen chiffrierung von digitalen daten
US5546343A (en) * 1990-10-18 1996-08-13 Elliott; Duncan G. Method and apparatus for a single instruction operating multiple processors on a memory chip
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
US5713037A (en) * 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
US5524250A (en) * 1991-08-23 1996-06-04 Silicon Graphics, Inc. Central processing unit for processing a plurality of threads using dedicated general purpose registers and masque register for providing access to the registers
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
FR2693287B1 (fr) 1992-07-03 1994-09-09 Sgs Thomson Microelectronics Sa Procédé pour effectuer des calculs numériques, et unité arithmétique pour la mise en Óoeuvre de ce procédé.
US5343416A (en) * 1992-11-02 1994-08-30 Intel Corporation Method and apparatus for re-configuring a partial product reduction tree
US5446909A (en) * 1992-12-11 1995-08-29 National Semiconductor Corporation Binary multiplication implemented by existing hardware with minor modifications to sequentially designate bits of the operand
DE69424626T2 (de) * 1993-11-23 2001-01-25 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
EP0661624A1 (en) * 1994-01-04 1995-07-05 Sun Microsystems, Inc. Pseudo-superscalar technique for video processing
US5694143A (en) * 1994-06-02 1997-12-02 Accelerix Limited Single chip frame buffer and graphics accelerator
FR2725055A1 (fr) * 1994-09-28 1996-03-29 Trt Telecom Radio Electr Dispositif de calculs d'operations modulaires et carte a puce comportant un tel dispositif
US5864683A (en) * 1994-10-12 1999-01-26 Secure Computing Corporartion System for providing secure internetwork by connecting type enforcing secure computers to external network for limiting access to data based on user and process access rights
CN101303717B (zh) * 1995-02-13 2015-04-29 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US5675164A (en) * 1995-06-07 1997-10-07 International Business Machines Corporation High performance multi-mesa field effect transistor
EP0790595B1 (en) * 1995-09-05 2005-12-28 Mitsubishi Denki Kabushiki Kaisha Data conversion apparatus and data conversion method
JP3156562B2 (ja) * 1995-10-19 2001-04-16 株式会社デンソー 車両用通信装置及び走行車両監視システム
US5870470A (en) * 1996-02-20 1999-02-09 International Business Machines Corporation Method and apparatus for encrypting long blocks using a short-block encryption procedure
JPH11506230A (ja) * 1996-03-28 1999-06-02 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ シーケンシャルプロセッサにおいてデータ要素の組を処理する方法およびコンピュータシステム
TW421757B (en) * 1996-06-06 2001-02-11 Matsushita Electric Ind Co Ltd Arithmetic processor
US5724422A (en) * 1996-08-05 1998-03-03 Industrial Technology Research Institute Encrypting and decrypting instruction boundaries of instructions in a superscalar data processing system
CA2641215C (en) * 1997-09-16 2010-05-25 Safenet, Inc. Cryptographic co-processor
GB9727414D0 (en) 1997-12-29 1998-02-25 Imperial College Logic circuit
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
JP3499810B2 (ja) 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Also Published As

Publication number Publication date
DE19983127T1 (de) 2001-05-10
JP5025180B2 (ja) 2012-09-12
US6434699B1 (en) 2002-08-13
JP5208174B2 (ja) 2013-06-12
WO1999044329A2 (en) 1999-09-02
JP2006320014A (ja) 2006-11-24
USRE44697E1 (en) 2014-01-07
FR2778519A1 (fr) 1999-11-12
GB0021091D0 (en) 2000-10-11
GB2350218B (en) 2003-04-23
WO1999044329A3 (en) 2000-03-02
FR2778519B1 (fr) 2006-08-18
GB2350218A (en) 2000-11-22
US6088800A (en) 2000-07-11
CA2244337A1 (en) 1999-08-27
KR100638189B1 (ko) 2006-10-26
JP2002505451A (ja) 2002-02-19
JP3979786B2 (ja) 2007-09-19
CA2244337C (en) 2009-01-20
JP2011008285A (ja) 2011-01-13

Similar Documents

Publication Publication Date Title
KR100638189B1 (ko) 공유 메모리 상호 접속을 구비하는 암호화 처리기 및 그 방법
Zimmermann et al. A 177 Mb/s VLSI implementation of the international data encryption algorithm
US6831979B2 (en) Cryptographic accelerator
CA2449665C (en) Block encryption device using auxiliary conversion
US7631116B2 (en) Method and system for packet encryption
WO1998029982A1 (en) Data security system and method
WO2002088854A1 (en) Computational method, system, and apparatus
Broscius et al. Exploiting parallelism in hardware implementation of the DES
Rouvroy et al. Efficient uses of FPGAs for implementations of DES and its experimental linear cryptanalysis
Curiger et al. VINCI: VLSI implementation of the new secret-key block cipher IDEA
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US6108421A (en) Method and apparatus for data encryption
CA2617389C (en) Encryption processor with shared memory interconnect
Zhang et al. Reconfigurable Hardware Implementation of AES-RSA Hybrid Encryption and Decryption
Al Shebli et al. Light weight cryptography for resource constrained IoT devices
JP2018514816A (ja) 変形鍵を用いる高速aes
GB2381913A (en) Multiplier circuit comprising a plurality of multiplier segments
US8024392B2 (en) Computational method, system, and apparatus
Lee et al. High‐Speed Hardware Architectures for ARIA with Composite Field Arithmetic and Area‐Throughput Trade‐Offs
CN114448604A (zh) 混合式平行运算加解密系统、发射端装置以及接收端装置
JPS6259437A (ja) 暗号化方式
KR20050060301A (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리방법, 이에 적합한 f함수 처리기, 그리고 보안 시스템
KR20020086006A (ko) 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치
Guerrero et al. Implementing block ciphering algorithms in hardware
Sixel et al. Data encryption standard simulation and a bit-slice architecture design

Legal Events

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

Payment date: 20121015

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131007

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee