JP2002505451A - 共用メモリ配線を有する暗号化プロセッサ - Google Patents
共用メモリ配線を有する暗号化プロセッサInfo
- Publication number
- JP2002505451A JP2002505451A JP2000533976A JP2000533976A JP2002505451A JP 2002505451 A JP2002505451 A JP 2002505451A JP 2000533976 A JP2000533976 A JP 2000533976A JP 2000533976 A JP2000533976 A JP 2000533976A JP 2002505451 A JP2002505451 A JP 2002505451A
- Authority
- JP
- Japan
- Prior art keywords
- processing unit
- adder
- data
- multiplier
- memory
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 94
- 238000012545 processing Methods 0.000 claims abstract description 175
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims abstract description 13
- 230000009977 dual effect Effects 0.000 claims abstract description 5
- 238000013500 data storage Methods 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 15
- 238000012546 transfer Methods 0.000 claims description 11
- 238000005192 partition Methods 0.000 claims description 10
- 238000003491 array Methods 0.000 claims 1
- 238000005457 optimization Methods 0.000 claims 1
- 238000004148 unit process Methods 0.000 claims 1
- 238000007792 addition Methods 0.000 description 28
- 238000013478 data encryption standard Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000006872 improvement Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5324—Multiplying 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/5052—Adding; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/722—Modular multiplication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49931—Modulo N reduction of final result
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- 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)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Bus Control (AREA)
Abstract
Description
ウェアおよびソフトウェアの双方を組み込む暗号化デバイスに関する。
電話会社からリースした専用遠隔通信ラインで構成されていた。このようなデー
タネットワークのハードウェア実装は、媒体上で絶対的な独占権を有する規制さ
れた公益企業であるその電話会社の独占的所有物であったために、セキュリティ
は大した問題ではなかった。その単一のプロバイダは、契約により安全が義務づ
けられ、また、中継ネットワークへの外部からのアクセスが不可能であったため
に、外部からのハッキングやタンパリングに対してかなり耐性があった。
ネットは現時点において、単一のコンピュータネットワークとしては世界中で最
も広く展開しているネットワークであり、したがって、国際的な企業ネットワー
クに容易に利用することが可能である。インターネットはまた、消費者レベルの
製品であるので、インターネットアクセスは通常、専用電話会社のネットワーク
によって提供される同じサービスよりもはるかに低コストで提供され得る。また
、インターネットのエンドユーザに対する可用性によって、個人が家庭や他の遠
隔地から企業のネットワークに容易にアクセスすることが可能となっている。
ープンプロトコルを用い、自由に調査可能なインバンドルーティングおよび制御
の下に置かれている。このような環境は、ハッカーを育てるには絶好の土壌であ
る。企業の諜報活動は今日では利益の多いビジネスであって、インターネット上
でビジネスを行なう企業にとって、予防を怠ることは重大な損失を被ることにつ
ながる。
かの基準が存在する。プライバシーは暗号化/復号化、すなわち解読、によって
達成される。典型的に、暗号化/解読はメッセージ内容のプライバシーを維持し
ながらも当事者間でオープンチャネルを介してデータを転送することを可能にす
るよう設計されたアルゴリズムに基づいて行なわれる。これは、送信者が暗号化
鍵を使用してデータを暗号化し、受信者が解読鍵を使用してそれを解読すること
によって達成される(ときに、暗号化鍵と解読鍵とは同一のものである)。
ることができる。秘密鍵アルゴリズムにおいては両方の鍵が秘密であり、これに
対し、公開鍵アルゴリズムでは鍵のうち一方が公開されている。ブロック型暗号
は、今日使用されている秘密鍵暗号システムの代表である。通常、ブロック型暗
号については、暗号化鍵と解読鍵とは同じものである。ブロック型暗号は、デー
タのブロック、典型的には32〜128ビットを入力として受取り、同じ数のビ
ットを出力として生成する。暗号化および解読は、長さが56ビットから128
ビットの間である鍵を使用して行なわれる。この暗号化アルゴリズムは、鍵を知
らなければメッセージの解読が非常に困難なものとなるように設計されている。
公開鍵アルゴリズムが多用されている。PogueおよびRivestに発行された米国特 許番号第5,144,667号に記載の、Rivest, Shamir, Adelman(RSA) 暗号システム等の公開鍵暗号システムは、2つの鍵を使用し、そのうち一方のみ
が公開されている。ある人物が鍵を公開すると、他の誰もがその鍵を使用して秘
密のメッセージをその人物に対して送信することができるが、そのメッセージは
秘密鍵を使用しなければ解読することができない。このような公開鍵暗号化の利
点は、会話を行なう前にすべての相手に対して秘密鍵を配布する必要がないこと
である。これに対して、もし秘密鍵の暗号化のみが使用されるようであれば、メ
ッセージを受信する予定の各相手先に対して1つずつ、合せて多数の秘密鍵を生
成せねばならず、またそれらすべての秘密鍵を1つずつ個別に配布せねばならな
くなる。秘密裡に秘密鍵を送信しようと試みる場合、秘密鍵暗号化のみを使用し
てメッセージそのものを送信する場合と同じ問題が生じることになる。このよう
な問題を、鍵の配布問題(key distribution problem)と呼ぶ。
事者間の会話が第三者によって傍受された場合にも、当事者間は秘密鍵で対処す
ることが可能である。米国特許番号第4,200,770号に記載されているDi
ffie-Hellman指数関数鍵交換は、そのようなプロトコルの一例である。
モジュラ指数関数に基づいており、この関数は、αxmodPを計算するもので ある。この式は、「αをx乗し、その解をpで除して、剰余を得る」ことを意味
する。このような計算を行なうには非常にコストがかかるが、それは以下の理由
による。すなわち、この演算を行なうために、多数の乗算および除算を繰返す必
要がある。ただし、1985年4月の、Mathematics of Computation, Vol. 44,
No. 170の「試行除算を行なわないモジュラ乗算(“Modular Multiplication W
ithout Trial Division”)」に記載のモンゴメリーの法(Montgomery's method
)等の技術によれば、必要とされる除算の数を減じることができる。加えて、使
用される数も非常に大きく(典型的に1024ビット以上)、したがって、一般
のCPUに見られる乗除命令を直接使用することができず、代わりに、そのよう
な大きな乗算および除算を、1つのCPUで行なうのに十分小さい演算へと分割
する、特別なアルゴリズムを使用せねばならない。また、そのようなアルゴリズ
ムの実行時間は通常、関連する機械語の数の二乗に比例する。これらの要因によ
り、大きな数の乗算はその演算が非常に遅いものとなる。たとえば、Pentium( 登録商標)は、1回の32×32ビット乗算を10クロックサイクルで行なうこ
とができる。2048ビット数は64個の32ビット語で表わすことができる。
2048×2048ビット乗算には、64×64回の別個の32×32ビット乗
算が必要であり、この乗算のためにこのPentium上では40960クロックが必 要となる。2048ビット指数を用いる指数関数は、通常の方法では最高で40
96回の乗算を必要とし、これには約1億6700万クロックサイクルが必要と
なる。このPentiumが166MHZで動作するとすると、この演算全体でおよそ 1秒かかることになる。驚くべきことに、この例では除算にかかる時間は一切考
慮されていないのである。明らかに、Pentium等の一般的なCPUで鍵の生成お よび交換を行なうことはほとんど期待することはできない。
暗号化するのには使用されず、代わりに、プライベート鍵暗号システムがメッセ
ージの転送に使用される。メッセージの暗号化に使用されるプライベート鍵はセ
ッション鍵と呼ばれ、この鍵が無作為に選ばれて公開鍵を用いて暗号化される。
暗号化されたセッション鍵は暗号化されたメッセージとともに相手先に送信され
る。相手先は、自身の秘密鍵を用いてセッション鍵を解読し、その時点で、その
セッション鍵を用いてメッセージを解読することができる。各通信には異なるセ
ッション鍵が使用されるので、もし1つのセッション鍵が破壊されたとしても、
読むことができるメッセージはそのセッション鍵を使用して暗号化された1つの
メッセージのみである。この公開鍵/プライベート鍵の方法はまた、双方向端末
セッション等の、通常動作時には決して終了することのない連続的な通信を保護
するのにも使用することが可能である。この場合、セッション鍵は、公開鍵生成
技術を繰返すことによって周期的に(たとえば1時間ごとに)変更される。やは
り、セッション鍵を頻繁に変更することによって、暗号化が破られたとしても犠
牲となるデータ量は制限される。
を可能にする、ネットワークレベルの暗号化デバイスが広く使用されている。Ra
ptor Eagle Remote等の製品は、暗号化をすべてソフトウェアで行なっている。 ソフトウェアは、暗号器のスループットを制限する。公開鍵技術を用いたセッシ
ョン鍵の生成には数分かかることもある。この理由のために、セッション鍵の再
生成はある人々が望むほどには頻繁には行なわれない。しかし、ソフトウェアは
、その分野における開発に応じて、暗号化アルゴリズムを容易に変更することが
できるという利点を有する。
ば、Northern Telecom(現在のEntrust)のSentinel X.25暗号化製品は、AMD
によって製造されたDESチップを使用して、DES秘密鍵の暗号化を行なう。
DESはハードウェアで効率的に実装されるように設計されたものなので、ハー
ドウェア実装の方がはるかに高速である。ソフトウェアにおいては多くのCPU
命令を要する転換を、並列の専用ルックアップテーブルおよび配線を使用して行
なうことが可能である。
一般的なCISCマイクロプロセッサで公開鍵アルゴリズムを実現するよりもは
るかに高速で演算ができるようになった。
できるアルゴリズムの数が大幅に制限されている。たとえば、Sentinelにおいて
使用されるAMDチップは、DESのみを実行する。Hi/Fnによるより最近
のデバイスでは、DESおよびRC4を実行することができる。しかし、RC5
またはIDEAを実現したい場合には、別の製品を用いねばならないであろう。
に集積され、これは、その命令の組が共通の暗号化アルゴリズムに対して最適化
された、並列パイプライン式のプロセッサシステムである。本発明は、ハードウ
ェアおよびソフトウェアの両方の方法の利点を実現する。該プロセッサはプログ
ラマブルプロセッサであるため、どのような暗号化アルゴリズムも実現すること
が可能であり、これは、1つのアルゴリズムのみを実行するよう設計されるハー
ドウェア実装の暗号化プロセッサとは対照的である。しかし、このプロセッサの
アーキテクチャは、暗号化に有益な特性である並列計算を可能にしているので、
その性能は、専用ハードウェアデバイスの性能により近づく。
イを含む。各演算処理装置は、暗号化アルゴリズムの1ラウンドを記憶するため
の命令メモリを含み、該ラウンドは、命令の1シーケンスを含む。該演算処理装
置はまた、命令メモリからのラウンドを実現するためのプロセッサ、ならびに、
暗号化データオペランドおよびラウンドを実現することによって得られる暗号化
されたデータを記憶するためのデータ記憶装置を含む。該アレイの各演算処理装
置は、複数のラウンドのうち1つを実現し、その結果を連続する演算処理装置へ
と転送し、それにより、該演算処理装置のアレイは演算処理装置のパイプライン
において暗号化アルゴリズムの連続的なラウンドを実現する。
隣接する演算処理装置間で共用されており、該線形アレイの隣接する演算処理装
置間でデータを転送するのに使用される。該共用データ記憶装置は好ましくは、
デュアルポートメモリで構成されるが、これはまた、共用レジスタを含んでもよ
い。
ALU、命令メモリおよびデータ記憶装置は、ローカルデータメモリおよび共用
データメモリも含めて、ローカル演算処理装置バスに接続される。このローカル
バスはスイッチによって区分されて、命令メモリおよび制御ユニットを接続する
ローカル命令バス区分と、ALU、ローカルデータメモリおよび共用データメモ
リを接続するローカルデータバス区分とに分けられる。該スイッチは、該2つの
ローカルバス区分上で別個に同時に演算ができるようにするか、または、それら
2つのバス区分の間で通信ができるようにする。各演算処理装置はさらに、その
演算処理装置内で乗算演算を行なうための乗算器を含む。
グローバルバスを含み、データは該グローバルランダムアクセスメモリと演算処
理装置のデータ記憶装置との間で該グローバルバスを通じて転送される。中央処
理装置は、このグローバルバスに結合されて、演算処理装置によって処理される
データ語よりも幅の広いデータ語を処理する。複数の演算処理装置のそれぞれの
乗算器は、中央処理装置によって使用されるより幅の広い乗算器の区分として連
結できるようにされ得る。好ましくは、各乗算器は部分積加算器を含み、該加算
器は、個別の乗算器として動作しているときには第1の入力の組を選択し、かつ
、連結されているときには隣接する演算処理装置からの入力を含む第2の入力の
組を選択するための、入力選択回路を有する。
算器区分の各々はキャリ出力および合計出力を有し、それら加算器区分の各々は
、2つあるオペランドの各オペランドの1区分を処理する。選択器は、加算器サ
イクル中にキャリが得られる限り、連続するクロックサイクル中、該キャリ出力
を連続する加算器区分へのキャリ入力として選択する。選択器はまた、各合計出
力を同じ加算器区分へのオペランド入力として選択する。したがって、加算器サ
イクル中にキャリが得られる限り、ある加算器の合計出力はその入力にフィード
バックされ、また該加算器区分は先行するサイクルにおいて先行する区分からキ
ャリ出力として生成されたキャリ入力を受取ることになる。
モジュラ調整演算を行なう。各演算処理装置はまた、A±BmodNを計算する
モジュロ加算/減算演算を行なう。さらに、各演算処理装置は、A×BmodN
を計算するモジュロ乗算演算を行なう。
明の好ましい実施例に関する以下のより詳細な説明から明らかとなるであろう。
添付の図面においては、複数の図面を通じて、同じ部分には同様の参照符号が付
される。図面は必ずしも一定の比で描かれているわけではなく、本発明の原理を
説明するために強調されている部分を含む。
ータストリーム上で、共通のデータ暗号化および復号化、すなわち解読、のアル
ゴリズムを行なうようプログラムすることが可能である。この暗号化チップの主
要な目的は、インターネット上でその使用が想定されるアルゴリズムを用いて、
100〜2000Mbpsのデータレートで、高速データ暗号化を行なうことで
ある。
22からのデータが、暗号化チップ24で暗号化された後に公衆ネットワーク2
6に渡される。データはその後、暗号化チップ28内で解読されて、宛先30に
送られる。一実施例においては、このソースおよび宛先自体が、ローカルエリア
ネットワーク等のネットワークである。そのような場合、これら暗号化チップが
、ローカルエリアネットワークと公衆ネットワーク26との間に安全な経路を提
供する。
ータ間で転送されるデータが暗号化される。この場合、リンクとリンクの間にあ
るルータ32に入力された暗号化データは、暗号化チップ34でまず解読されね
ばならず、またそのデータは、暗号化チップ36において、次のリンクの暗号化
アルゴリズムに従って再度暗号化される。
号化アルゴリズムが一般に使用されている。最初の2つのアルゴリズムは、標準
的なインターネットプロトコルセキュリティ(Internet Protocol SECurity)の
略である、IPSEC標準アルゴリズムである。IDEAは、広く利用されてい
る電子メール暗号化プログラムであるPGPによって使用されるアルゴリズムで
ある。
ドは、暗号化アルゴリズムにおける演算の1シーケンスである。暗号化アルゴリ
ズムを完全に実現するには、8〜32ラウンドが必要とされる。各ラウンドによ
って行なわれる演算は、しばしば同じものであるが、同じものでなくてもよい。
ソフトウェアにおいては、各ラウンドは少数の機械命令で実現される。ハードウ
ェアにおいては、各ラウンドは専用回路で実現される。ハードウェアは典型的に
パイプライン化されており、各ラウンドは自身に該当するパイプライン段におい
て実現される。
今後、暗号化チップと呼ぶ。暗号化チップと呼ぶと、そのチップが暗号化を行な
うことができることが示唆されるが、このチップが復号化、すなわち解読、およ
びメッセージダイジェスト機能もまた行なうことに留意されたい。
アルビットストリームとして暗号化チップに入力される。イーサネット、ATM
または他のどのような直列化フォーマットも使用することができる。入力段はこ
のシリアルデータストリームを、暗号化/解読パイプラインへの入力として処理
するのに好適な、ブロック整合されたデータへと変換する。入力ブロックのサイ
ズはプログラム可能である。図2に示した好ましい実施例においては、パイプラ
インは線形アレイに配された複数の演算処理装置37からなり、各演算処理装置
は、命令メモリ、レジスタファイル、ALU、ローカルおよび共用データメモリ
、ならびに制御回路を含む。演算処理装置の各々は、32ビット幅のデータ語を
処理するよう設計されている。暗号化されたデータは、該パイプラインの最後の
演算処理装置から取出されて出力段42に渡され、出力段42がそのブロックデ
ータをシリアルストリームフォーマットに戻して、そのデータをネットワークを
介してまたは局所宛先へと送る。
演算処理装置間および/または他の装置間で転送することができる。グローバル
データバス38にはまた、I/O通信ロジック54が接続されており、このロジ
ック54が、ホストCPU(図示せず)との通信を可能にする。ホストCPUと
の通信は、暗号化チップを使用前にプログラムするのに必要である。グローバル
ランダムアクセスメモリ(RAM)44もまたグローバルデータバス38に接続
され、それにより、演算処理装置間でグローバルな通信が可能となっている。制
御CPU52は、暗号化パイプラインプロセッサの動作を同期化する。このCP
Uは、MIPS、ARMまたはARC等の、利用可能ないずれの組込み型CPU
コアを使用しても実現することができる。さらに、公開鍵暗号化アルゴリズムの
ように非常に幅の広いオペランドを利用するアルゴリズムを処理することができ
るように、公開鍵(PK)コアプロセッサ46が制御CPU52に接続されてい
る。PKコアは、8個から16個の512ビット幅のレジスタからなるレジスタ
ファイル48、およびPK ALU50を含む。PKコアプロセッサは、1シス
テムクロックサイクルで、512ビットバスを介してグローバルRAM44との
間でデータの送受信を行なうことができる。512ビットのオペランドは、典型
的には2〜32クロックサイクルで、ALU50内で処理される。PKコアAL
U50は、制御CPU52によって制御されるコプロセッサであって、ローディ
ングおよび記憶の他には、算術および論理演算のみを行なう。PKアルゴリズム
を実現するのに必要な他の命令は、制御CPU52内で実行され得る。
イプラインの別個の演算処理装置内で実現する。計算が終わると、1つのPEか
らのデータは次のPEに転送され、そこで次のラウンドが実現される。第1のP
Eはその後、入来するデータの次のブロックのための暗号化ラウンドを処理する
ことができるようになる。パイプライン処理は残りのPEにおいて続けられる。
このアーキテクチャを用いて1つのブロックを暗号化するのに必要とされる時間
は、したがって、1つのラウンドを暗号化するのに必要とされる時間に等しい。
し、鍵を拡張するのに別の演算の組を使用する。鍵の拡張は、比較的小さい鍵(
56〜128ビット)を、統計的に無作為の性質を有するより大きい数(512
ビット以上)の鍵へと変換するプロセスである。こうして拡張された鍵は、より
小さなサブ鍵に分配され、拡張された鍵の異なる部分が各々異なるラウンドのた
めに使用される。拡張された鍵がデータによって変化しないことに注目すること
が重要である。したがって、これはクリティカルパス内にはないため、予め計算
してメモリに記憶しておくことができる。後に説明するコードの例は、鍵情報が
予め計算されて各PEのローカルデータメモリ内に記憶されているものと仮定し
ている。
ない情報)のブロックを同じサイズの暗号文(暗号化された情報)のブロックに
変換したり、その逆を行なう。この動作モードは、電子コードブック(ECB)
モードとして知られているが、これはセキュリティに関して多くの固有の弱点を
有するので、基本的な出力のいくつかを入力に戻るよう巡回させることによって
暗号化にフィードバックを導入する方法が一般に使用されている。この暗号化チ
ップは、グローバルデータバス38を利用して暗号フィードバック(CFB)を
行なう。ECBモードにおいては、データの新しいブロックを各パイプラインサ
イクルにつき1回暗号化することができる。これは10〜100個の命令であり
得る。しかし、CFBモードにおいては、各データはパイプラインを多数回通過
せねばならない。このモードは単一チャネル上のスループットを大幅に減じるが
、パイプラインにおいてインターリーブされている多数のデータチャネルを暗号
化することによって、ピーク性能を達成することができる。
。演算処理装置37は、8〜16個の32ビットレジスタで構成されたレジスタ
ファイル58から得られる32ビット語の演算を行なう、ALU56を含む。レ
ジスタファイル58およびALU56は、制御ユニット60によって制御される
。制御ユニット60は、演算処理装置命令メモリ62からの命令をデコードする
。各演算処理装置命令メモリは暗号化アルゴリズムの少なくとも1つのラウンド
を記憶し、ここで1つのラウンドとは、暗号化アルゴリズムにおける命令の1シ
ーケンスと定義される。各演算処理装置がアクセスすることのできるPEデータ
メモリスペースは、4つの領域に分割される。すなわち、ローカルPEメモリ6
4(図3においてはPEnローカルメモリ)、共用メモリ66(図3では、n番 目の演算処理装置とn−1番目の演算処理装置との間で共用される、PEn,n-1 共用メモリ)、第2の共用メモリ68(図3では、n+1番目の演算処理装置と
n番目の演算処理装置との間で共用される、PEn+1,n共用メモリ)、および、 図2を参照して説明した、すべてのPEがアクセス可能なグローバルメモリ44
、の4つの領域である。これらのメモリはすべて、1つの演算処理装置、たとえ
ばn番目の演算処理装置のアドレススペースにマップされる。どの種類のメモリ
にアクセスするのにも、特別な命令は必要ない。すべてのメモリはすべてのメモ
リアクセス命令によってアクセス可能である。
って、これらはそれぞれ、先行する、すなわち前隣りのパイプ段および、次の、
すなわち後ろ隣りのパイプ段と共用される。あるPEにとっての後ろ隣りのPE
との共用メモリは、次のPEにとっての前隣りのPEとの共用メモリと同じもの
であることを理解されたい。
するのに使用される。ある演算処理装置が、転送されるべきデータをそれに関連
する後ろ隣りの装置との共用メモリに書込む。すると、その記憶されたデータを
、該当する後ろ隣りの演算処理装置が、自身の前隣りの装置との共用メモリから
読出す。ここで、前隣りの装置との共用メモリとは、上述のように、先行する演
算処理装置にとっての後ろ隣りの装置との共用メモリと同一無二のメモリを指す
。これらのメモリはデュアルポートメモリであるため、アクセスにはタイミング
の制限がない。アクセスの同期化は、ソフトウェアの作者または編集者による機
械命令の静的なスケジューリングを用いて行なわれる。さらに、隣接するPE間
の通信にグローバルバスを使用しないので、PEはすべて同時に通信することが
可能である。
ーバルメモリ44にアクセスが許可されるのは1つの演算処理装置のみである。
このメモリは、たとえば、フィードバック暗号化アルゴリズム中に、隣接してい
ない演算処理装置間でデータをやりとりするのに使用され、また、個々の演算処
理装置のための補助記憶装置としての役割を果たす。
た、命令の組を有する。この命令の組は、どのレジスタもどの命令に対するオペ
ランドとしても使用することができるという点で、いくぶん直交性である。浮動
小数点やメモリ管理サポートは、どちらも暗号化には有益ではないので、設ける
必要はない。しかし、この命令の組は、以下の有益な追加機能を含む。すなわち
、モジュラ加算/減算命令、モジュラ乗算命令およびモジュロ調整命令、である
。
はMをNで除した際の剰余である)。図15Aから図15Dは、モジュラ加算、
減算および調整を、1つのスリーインワン(3-in-1)モジュロ算術ユニットに組
合せた例を示す。
ともNよりも小さければ、加算器120からのそれらの合計を、Nを法として減
じることができる。すなわち具体的には、減算器122においてNを減じ、その
後、その差の符号に応じて、マルチプレクサ124を介して、減算器の出力また
は元々の数のいずれかを選択する。同様に、図15Bに示すモジュラ減算演算の
場合には、2つの数AおよびBがNよりも小さい場合には、Nを法とするそれら
の差を計算することが可能である。これは具体的には、減算器128からの差が
負であれば加算器126においてNを加算し、その差が正であればマルチプレク
サ130を介してその差を選択することによって、行なわれる。ここで、モジュ
ロ加算およびモジュロ減算がいずれも除算を必要としないことに注目されたい。
しかし、それらは、連続2回の加算を必要とする(そのうち1つは合計/差を計
算するもの、もう1つはNを法として減算するものである)。このような2回続
けての加算がクリティカルパスに打撃を与える場合には、Nを法とする減算は、
別個の命令としてエンコードすることが可能であり、これを「モジュロ調整」命
令と呼ぶ。
て減じられていて、MがAとBとの合計または差のいずれかであるものとして、
MmodNを計算する。Mが負である場合、ロジック132は、加算器/減算器
134においてMにNを加えて、マルチプレクサ136を介して結果が生成され
るようにする。Mが正である場合には、ロジック132は、Nの減算を行ない、
その差が正であればその差を返し、その差が負であればMを返す。この命令は、
合計および差の命令と関連づけて使用することが可能であり、それにより、モジ
ュラ加算/減算命令が不要となる。
ロ減算およびモジュロ調整を、各演算処理装置内で実現される単一のユニットに
組合せる。1つの命令(モジュラ加算、減算または調整)および最上位ビット(
MSB)の符号入力に応答するロジック144の制御下で、加算器/減算器13
8は装置120および128のいずれかの機能を行ない、加算器/減算器140
は、装置122、126および134のうちいずれかの機能を行なう。マルチプ
レクサ142は装置124、130および136に対応する。モジュロ調整演算
において、MがA入力に印加され、B入力はゼロにセットされる。この組合せユ
ニットは、速度は落ちるが、面積効率は最も高い。この組合せユニットはまた、 Mathematics of Computation , Vol. 44, No. 170, April 1985, pages 519-521 の、ピーター・L・モンゴメリー(Peter L. Montgomery)による「試行除算を 行なわないモジュラ乗算」に記された、試行除算を行なわないモジュラ乗算のた
めのモンゴメリーの法を実現するのに有益である。
個の命令で実現することができるが、これらの命令を暗号化チップの命令の組の
特別な関数として含むことで、特定的な暗号化アルゴリズムの場合においては、
わずかながら高速化につながる。
器は、下により詳細に説明する。暗号化チップは、後に明らかとなるであろう理
由によって、全体のモジュラ乗算命令を提供することができる。
他の従来技術によるRISC命令もまた実現することが可能である。
理装置および、512ビット幅の公開鍵PKコアユニットを想定する。ここで5
12ビットのPKコア語幅を選択したのは、そのレイアウトが容易であるためで
ある。たとえば1024ビット幅は、より広いシリコン面積を必要とするであろ
うが、性能は倍加するであろう。
装置が、レイアウトの大きな領域内で左下側に1列に線形に配されており、その
1つが詳細に示されている。図中、共用乗算器素子70は、図示された演算処理
装置に関連づけて示されている。前述のように、32×32乗算器区分70は、
各演算処理装置と関連づけられて、それぞれの演算処理装置内で32ビット乗算
を行なう。これに代えて、乗算器素子70は、公開鍵ALU50のための幅の広
い512×32ビット乗算器として機能するように、連結することも可能である
。公開鍵PK ALU50は、秘密鍵SK素子の右側に配置され、上述のような
演算処理装置で構成されている。PK ALUの隣りに、PKレジスタファイル
48が配される。PK ALU50およびPKレジスタファイル48は併せて、
図2において46で示されたPK処理コアを形成する。PKコアの右側には、グ
ローバルメモリ(RAM)44が配置される。チップの上辺に沿って、制御CP
U52、通信ロジック54および入出力処理ブロック40、42が配置される。
グローバルデータバス38は、SK素子、PKコア46、グローバルRAM44
、通信ロジック54および制御CPU52を繋ぐ。
つの演算処理装置のすべての構成要素は、ローカル演算処理装置データバス72
を介して通信することができる。このバス72は、メモリとレジスタとの間のす
べての転送を扱う。ここで、次に隣接するPEとの共用PEメモリ68は、図示
されている演算処理装置の他の素子と直列に(in-link)配されており、これに 対し、先に隣接するPEとの共用PEメモリ66は、先に隣接する演算処理装置
の素子と直列に配されていることに注目されたい。プログラミングおよびテスト
の目的のために、すべてのPEメモリはグローバルバス38からアクセス可能で
ある。スイッチ74は通常、ローカルバス72をグローバルバス38から切離し
ているが、ローカルRAM64とグローバルRAM44との間でデータ転送を可
能にするように選択的に閉じることが可能である。別のスイッチ76は、ローカ
ルバス72を独立した2つの区分に区分けすることを可能にし、これにより、制
御ユニット60は、バス72上のデータ転送と同時に、RAM62から命令を読
出すことが可能となる。このように、演算処理装置内の動作は、ある命令がPE ALU56内で実行されている間に次の命令が制御ユニット内で処理されると
いうように、パイプライン化することが可能である。暗号化コードの実行中、ス
イッチ74および76は通常は開かれており、これにより、命令RAMからの命
令フェッチを、データメモリおよびレジスタファイルからのデータフェッチと同
時に進めることができる。
、汎用マルチプロセッシングのために設計されている。このため、演算処理装置
間の通信は通常、あるPEから別のPEへとデータを切換えるよう動的に構成す
ることが可能な、切換マトリックスを使用して行なわれる。これらのスイッチの
設計は非常に複雑である。このようなスイッチは暗号化には不要であるため、本
発明の実施例においては、切換回路が大幅に減じられた、より簡単なPEの線形
配列を用いている。
用するのではなく共用メモリを使用していることにより、はるかに簡単かつはる
かに強力なプログラミングモデルが生成される。ここで、2つのPE、Aおよび
Bが単一の32ビットI/Oポートに接続されているものとする。AがBに対し
てデータの複数語を転送するためには、Aは各語をI/Oポートに書込んで、B
がそれを読出すのを待たねばならない。これに対し、AおよびBが、通信のすべ
ての語を保持するのに十分な大きさの共用メモリによって接続されている場合に
は、AはBが読出すのを待つことなくそのデータを書出すことが可能である。さ
らに、PE Bはどのような順序でもそれらの語を読出すことができ、また、そ
のデータから、進行中のジョブに応じて適宜、必要なものをピックアップして選
択することもできる。最後に、共用メモリのうちあるメモリが通信に不要である
場合には、そのようなメモリはローカルメモリの延長として使用されて、付加的
なローカルワークスペースを提供することができることに注目されたい。
率的なモジュラ指数関数が必要である。このユニットは、以下の項目を含む。す
なわち: ・16個の512ビット幅のレジスタで構成される、PKレジスタファイル48
・連結されたSK乗算器素子からなる、PK512×32ビット乗算器70(こ
のユニットは、わずか32クロックサイクルで1つの512×512乗算を行な
うことができる) ・PK512ビット加算器ALU50、これは、2〜16サイクルで、典型的に
は2サイクル以下で、加算を行なうことができる ・単一クロックサイクルで512ビット語をロードおよび記憶するために、PK
コプロセッサからの512ビット並列アクセスのために構成される、グローバル
メモリ44。
によって加速する。本発明のPKユニットを用いる512×512乗算演算は、
下に説明する16個の演算処理装置を連結した乗算器素子を用いて、16個の5
12×32乗算を行なうことによって実現されるであろう。各乗算につき2クロ
ックサイクルが必要とされかつそのような乗算が16回必要とされると仮定する
と、1回の512×512乗算に必要なのは32クロックサイクルであり、1回
の2048×2048乗算はわずか512クロックサイクルで行なうことができ
ることになる。4096回の乗算を必要とする全体のモジュラ指数演算は、合計
200万クロックサイクルを要することになるが、これは、先に説明したPentiu
mの例に比べて80倍の改良を意味する。PKアルゴリズムにおいても同様の性 能の改良が期待される。これは、先行技術に比べて大幅な性能の向上を意味し、
セッション鍵をより頻繁に変更することが可能になって、セキュリティが向上す
ることを意味する。
はない。加算演算および論理演算がPKおよびSKの双方において共通であるの
で、各ユニットは自身の加算器を有し、したがって、演算を同時に進行すること
が可能である。
非常に複雑であって、ALUのクリティカルパス時間を大幅に増やすことになる
であろう。このため、ALU50内の512ビット加算器は、図6に示すように
、16個の32ビット加算器から形成される。動作中、ANDゲート78および
マルチプレクサ80がまず、2つの32ビットオペランド区分を、32ビット加
算器A0〜A15の各々に供給する。ここで、ANDゲート78は32ビット幅
の動作を表わす。各32ビット加算器は、キャリ出力に加えて、32ビット合計
を計算する。1つの加算器のキャリ出力は、Dフリップフロップ79を介して、
次の加算器のキャリ入力に接続される。第1のサイクル中にキャリが生成される
と、それはフリップフロップ内にクロック入力され、そのフリップフロップにお
いてそのキャリは、次のクロックサイクルのためのキャリ入力として利用可能と
なる。各合計は、Dフリップフロップ81およびマルチプレクサ80を介して同
じ加算器の一方入力に戻される。この加算器の他方入力は、連続するクロックサ
イクル中、ANDゲート78を用いてゼロに保持される。合計を各加算器へのキ
ャリ入力として戻し加算するステップは、32ビット加算器のうちいずれかの出
力にキャリが得られる限り繰返される。
う。この例においては、実際の実装時の16個の32ビット語の代わりに、4つ
の4ビットの2進語を使用する。
される加算は2回であった。これは典型的な場合である。加算器が暗号化演算の
ために使用されるので、加算される回数はある程度ランダムにばらつくと仮定す
ると安全であろう。初回の加算の後にキャリ出力が得られる可能性は極めて高い
。しかし、最下位ビットとして戻され加算されるキャリによって最上位ビットか
らの別のキャリが得られる可能性は極めて低い。このため、ほとんどの加算演算
はわずか2クロックサイクルしか必要としないと予測されるのである。
見型またはキャリバイパス型加算器設計を使用する場合、その加算器を通じるク
リティカルパスは極めて長くなるであろう。なぜなら、キャリが、512ビット
の演算を行なう何らかの最適化された回路を通じて伝搬されねばならないためで
ある。この加算器は極めて大きくかつ低速であろう。これに対して、本発明の一
実施例においては、512ビット加算器は32ビット加算器から構成されている
。32ビット加算器の設計は今日ではよく知られておりまた十分に最適化されて
いる。個々の32ビット加算器の最大クロック速度は、512ビットキャリ先見
型設計のクロック速度の2倍以上であると予測される。したがって、本発明に従
った2以上のサイクルの加算器は、より大きな512ビット加算器よりも、チッ
プ面積の消費量はより少ないのに対し、通常はより高速で動作することができる
であろう。
、キャリを有さない最終合計を完全に計算するのに、16サイクルが必要となる
ことも考えられる。ここで再び4ビットの2進語の例を使用して説明すると、以
下のようになる。
いては、最大でn回の加算が必要とされる。
説明するIDEA等の、乗算を必要と秘密鍵アルゴリズムを実現するためには、
自身の乗算器を含まねばならない。各PE乗算器によって占められる面積を合わ
せると相当な面積となり、そこで、この面積は、512×32ビット公開鍵乗算
器を実現するのに使用される。面積の節約のために、このように大きな512×
32乗算器は、各秘密鍵演算処理装置において16個の32×32乗算器を連結
することによって実現される。換言すれば、秘密鍵ユニットおよび公開鍵ユニッ
トは、図4のチップレイアウト内に示すように、複数の乗算器素子を共用するこ
とが可能である。したがって、乗算器素子の使用は、秘密鍵演算処理装置とPK
コアプロセッサとの間で調整されねばならない。なぜなら、PKコアプロセッサ
は、複数の秘密鍵演算処理装置のうちどの1つが独立して乗算演算を行なってい
る場合にも、乗算演算を行なうことができないためである。
を下に示す。ただし、Boothの符号化および4:2コンプレッサ等の、より
進歩した乗算器設計技術もまた利用可能である。以下に、簡単な実現例を提示す
る。
る。2つの4ビットオペランドを使用した場合、その結果は、部分積の16ビッ
トから構成される。これらの部分積は、効率的に加算されねばならない。部分積
はたとえば、2つの4ビット全加算器および1つの6ビット全加算器を使用して
加算することができるが、それらは部分積の加算を行なうのに相当な時間を要す
るであろう。なぜなら、キャリを複数の加算器を通じて伝搬させる必要があるた
めである。このような加算器実装の全体としての結果は、遅すぎるであろう。よ
りよい方法として、加算器のキャリが通らねばならない段の数がより少なくて済
むような加算器が考えられる。
ットの合計を出力する、全加算器である。図7に全加算器を、符号を用いて示す
が、ここでは、2進数の代わりに四角形を使用して、一般化および簡素化を図っ
ている。上方の3つの四角は全加算器の3つの入力を示し、下方の2つの四角は
合計出力およびキャリ出力を示す。キャリが左下側にあるのは、その桁の値が合
計のそれの2倍であることを示すためである。
角は、そのいくつかが黒で示され、その他は白い箱として示されているが、これ
らは、加算されねばならないある部分積のビットを表わしている。黒で示される
ビットは、この第1の段において、4つの全加算器82を使用して加算されるも
のである。白い箱で示すビットは、第1段では加算されずに、図8に矢印で示す
ように、次の加算段に備えて単に下方に送られるビットである。第1の段におけ
る加算器の合計は、合計線の下に示されている。
に単に下に送られるビットを示し、黒い箱で示されるビットは、この現時点にお
ける(すなわち第2の)段において加算されるべきビットを示す。ここでもやは
り、黒い箱で示したエレメントが4つの全加算器84を使用して加算される。全
加算器84によって生成される第2の段の出力には2つの数があり、これらは今
度は一般的な4ビットキャリ加算器86で加算されねばならない。
明に従った乗算器の利点を説明するのに役立つであろう。4ビット加算器の簡単
な実現例は、図12に示すように、直列に並んだ4つの全加算器A0〜A3で構
成される。この設計においては、最も右側の加算器のキャリ出力Coutが、その 左側にあるすべての加算器段のそれぞれに影響を及ぼす可能性がある。この設計
におけるクリティカルパスはしたがって、4加算器段である。典型的な全加算器
が2以上の論理段から構成されるので、1つの4ビット加算器の合計ゲート遅延
は8段を超える場合がある。
ャリ先見型加算器を図13に示す。4ビット設計はこれよりもわずかに複雑であ
る。ANDゲート102、ORゲート104および排他的ORゲート106の動
作の詳細な説明は、周知の回路であるためここでは省略する。キャリ先見型加算
器の利点は、キャリが最終合計ビットまでわずか4論理ゲートで伝搬することで
ある。より大きな数に対するより複雑な設計は、より多くの論理段を有するが、
それでもキャリ連鎖型設計よりは、やはり高速である。
キャリ先見型加算器を通じてクリティカルパスを作る。全加算器のみを使用した
実現例では、クリティカルパスがより長くなるであろう。なぜなら、連鎖型キャ
リを使用する簡単な加算器は、キャリ先見型加算器よりも低速だからである。最
後に、部分積合計の最初の2つの段で全キャリ先見型加算器を使用した場合には
、結果として得られる乗算器はやはり低速となるであろう。なぜなら、キャリ先
見型加算器は個々の全加算器よりは低速なためである。なお、本発明に従った乗
算器設計は、同じ部分積レベルでは、あるキャリをある加算器から別の加算器へ
と伝搬することはない。このようにして、乗算器を通じるクリティカルパスが、
部分積合計の最初の2段において、2つを超える数の全加算器を含むことを確実
に防止している。
86は、図9において使用されていたのと同じ全加算器ハードウェアを示す。こ
の場合、全加算器が必要であるが、これは、各状況において3つの入力が合わせ
て加算されるためである。図9においては、すべての状況において3つの入力の
加算が必要とされたわけではなかったので、より簡単な回路を使用することがで
きた。しかし、4×Nを処理することのできるシステムを作るためには、すべて
の段において好ましくは全加算器が使用され、加えて、2つ以下の入力の場合に
どのように処理を行なうべきかを決定する何らかの付加的な回路が必要となる。
したがって、デュアルモードの加算器が複数個作られ、そのいくつかは1つの乗
算器を有し、この乗算器が自身の複数入力のうち1つを供給することで、先行す
る段の出力または単一ビットの部分積の、どちらかが選択されるようにする。
れる全加算器Aを示し、合せてその左下方に、それぞれのキャリ出力を示す。好
ましい実現例においては、各加算器Aは全加算器である。加算器のうちいくつか
は、4×4の場合(すなわち秘密鍵の場合)2つの入力のみを有し、これに対し
、他の加算器は、4×Nの場合(すなわち公開鍵の場合)3入力を有する。2入
力の加算器は、その第3の入力がイネーブル信号でゲート制御されるようにされ
ねばならない。いくつかの加算器はまた、複数入力のうち1つを提供して先の段
の出力または単一ビットの部分積のいずれかを選択するようにする、乗算器を必
要とする。下方に示されたキャリ先見型加算器86は、4×4の場合に積の最終
ビットを生成するために、4つの位置毎に1つのキャリ出力を必要とする。
るように参照符号が付されている。
れらは図11において、以下のシナリオに従って参照符号が付されている。
の最終合計は、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乗算器が実現されて、8ビットの積が出力S
7〜S0に現われる。このように、図11の実現例は秘密鍵乗算器素子を示し、
これは、1つの乗算器素子としても利用することができ、または、他の同様の乗
算器素子と連結されて、はるかに幅の広い公開鍵乗算器を実現するのにも使用す
ることができる。
ゴリズムの実現例を以下に説明する。RC5はおそらくは、実現するのが最も簡
単な暗号化アルゴリズムのうちの1つであろう。これは基本的に、3つの種類の
演算を利用する。すなわち、XOR、加算および回転である。これらすべては、
表1に示すように、上述の演算処理装置のうちのいずれかによってサポート可能
である。RC5は可変長のブロックを有するが、最も一般的には、RC5アルゴ
リズムの各ラウンドは、Si1およびSi2に記憶される64ビットデータブロ
ックおよび鍵値について演算を行なう。これらは、各演算処理装置内の定数であ
って、そのラウンドおよびその鍵のみに依存する。データを暗号化するために、
64ビットの入力ブロックは2つの32ビット語に分割され、それらはその後、
前隣りのメモリ内の場所AおよびBに記憶される。出力ブロックは、後ろ隣りの
メモリにおけるA_nextおよびB_nextに書込まれることになる。RC
5の暗号化アルゴリズムの1ラウンドの例を以下に示す。
MHZで動作し得る論理プロセスを用いるように設計されている場合には、1秒
あたり3600万ブロックを暗号化することが可能である。これは、ECBモー
ドにおいて288MB/sに相当する。12ラウンド(RC5における典型的な
例)を想定すると、同じクロック速度で動作する従来技術によるCPUと比較し
て、本発明の一実施例に従った複数PEの同時実行によって、従来技術によるソ
フトウェア実装に対して12倍も性能が改良されることになる。
あり、その構造ははるかにより複雑である。IDEAは、64ビットの平文ブロ
ックに対して演算を行ない、128ビットの鍵が使用される。同じアルゴリズム
を暗号化および解読の両方に使用する。このアルゴリズムの主要な原理は、種々
の代数グループの演算、すなわち、XOR、加算モジュロ216および乗算モジュ
ロ216+1等の演算を組合せることである。これらの演算を使用して、16ビッ
トブロックに対する演算を行なう。
、それらはソフトウェアでは費用が高くつく演算である。乗算は、IDEAのゼ
ロの扱いによって複雑化されている。すなわち、乗算において、ゼロは(−1)
モジュロ65537と解釈されるのである。この値65537が演算処理装置の
レジスタファイルのレジスタr8内にプリロードされていると仮定し、また、レ
ジスタr0がゼロを含むものと仮定して、以下に乗算マクロの例を示す。
構成される。128ビットの鍵がサブ鍵へと分割される。各演算処理装置のサブ
鍵は、その鍵およびその演算処理装置のみに応じて変化するので、予め計算して
PE内に記憶させておくことが可能である。IDEAに入力される平文は、先に
説明したように、16ビットの4つのサブブロックX1〜X4から構成される。
各ラウンドは、6つのサブ鍵K1〜K6を使用し、以下のようにコード化するこ
とができる。
ハードウェア実装はその実行を8倍以上加速する。さらなる加速は、ほとんどの
マイクロプロセッサにおいては利用されないモジュラ乗算命令によってもたらさ
れる。上述のコードは、1ラウンドを実行するのにおよそ50クロックサイクル
を要する。400MHZにおいて、この暗号化チップは、IDEAで64MB/
sのレートで暗号化することができ、これは、チューリッヒのETH大学(ETH
University, Zurich)において開発された25MHZハードウェア実装よりも約
3倍高速である。
されたものであり、したがって、ソフトウェアで実現するのが最も困難なアルゴ
リズムである。それでも、本発明の一実施例に従えば、これは暗号化チップにお
いて容易にコード化することが可能である。
タを暗号化するブロック型暗号である。平文の64ビットブロックが入力であり
、64ビットの暗号文が出力となる。ここでもやはり、暗号化と解読の両方が同
じアルゴリズムを使用し、DESを対称的なアルゴリズムとしている。DESは
、この場合においては56ビットの単一の鍵から、サブ鍵を作成する。これらの
サブ鍵は、該当のPEおよびその56ビットの鍵に応じて変化するものであり、
したがって、それらは予め計算しておくことが可能である。
で代入を行ない引続き置換を行なうものである。以下の演算によってDESのコ
アが作られている。 ・拡張:64ビットブロックを2つの32ビット片108、110に分割する。
一方の片は暗号化によって影響を受けることがない。(これらの片は1つおきの
ラウンドで演算される。)影響を受ける方の片が8つの4ビットのグループに分
割される。各グループは、それに隣接する2つのビットをコピーすることによっ
て拡張される。 ・拡張された各グループは、112においてサブ鍵でXOR処理される。 ・XORの6ビットの結果を使用して、Sボックス(S-box)と呼ばれる、64 エントリ×4ビット先見テーブル114をインデックスする。8個のグループの
各々が自身のSボックスを使用する。 ・Sボックスからの出力は116において置換され、それらのビットがスクラン
ブルされる。8個の出力から32ビットが得られる。 ・その32ビットの出力が、118において、そのブロックの他方の32ビット
片とXOR処理される。
は、入力語をコピーしてから、ビットをマスキングすることによって、1つが偶
数のSボックス入力を表わし他方が奇数のSボックスの入力を表わす2つの語が
存在するようにすることによって行なわれる。これら2つの語を、鍵情報でXO
R処理し、その結果を使用して、Sボックスルックアップテーブルをインデック
スする。各Sボックスにおけるデータは予め置換され、したがって、Sボックス
の出力は32ビットのデータとなる。最終値はすべての構成要素の論理ORであ
る。コードの例を以下に示す。
要とする。400MHZにおいて、72MB/sのデータレートが達成され得る
。このレートは、1〜35MB/sの範囲のレートで暗号化を行なう、1990
年代半ばに利用可能となったDESのハードウェア実装に比べて遜色のないもの
である。VLSIテクノロジー(VLSI Technology)のVM007は、最高20 0MB/sで暗号化を行なうことが可能である。
ェア実装よりもはるかに高速であるが、専用ハードウェア実装よりも低速である
ことが示されている。本発明のハードウェア実装に対する利点は、暗号化チップ
がプログラマブルであり、したがって、今後想定され得るものも含むどのような
アルゴリズムも実装が可能であるということである。
同様の改良が、本発明の好ましい実施例において説明したのと同様の技術を用い
て実現され得るものと理解されたい。
者においては、その形および詳細に、前掲の請求の範囲によって規定される本発
明の精神および範囲から離れることなく、種々の変更が行なわれ得ることが理解
されるであろう。当業者においては、日常的な作業の範囲を超えることなく、こ
こに特定的に示した本発明の具体的な実施例に対する多くの均等物が認識される
かまたは確認されるであろう。そのような均等物は、前述の請求の範囲に包含さ
れるものと意図される。
。
算処理装置ならびに、PEローカルバスおよびグローバルバス接続を示す。
。
の加算器を示す。
結されるように適合された、4×4乗算器のブロック図である。
示す。
る。
る。
る。
を示す機能図である。
Claims (52)
- 【請求項1】 単一のチップ上に演算処理装置のアレイを含む、電子暗号化
デバイスであって、各演算処理装置は、 暗号化アルゴリズムのラウンドを記憶するための命令メモリを含み、該ラウン
ドは命令のシーケンスを含み、各演算処理装置はさらに、 命令メモリからのラウンドを実現するためのプロセッサと、 暗号化データオペランドおよび該ラウンドの実行によって得られた暗号化され
たデータを記憶するためのデータ記憶装置とを含み、 該アレイの演算処理装置は各々、ラウンドのうち1つを実現してその結果を連
続する演算処理装置に転送し、それにより、該演算処理装置のアレイは演算処理
装置パイプラインにおいて暗号化アルゴリズムの連続的なラウンドを実現する、
電子暗号化デバイス。 - 【請求項2】 該データ記憶装置は、その1部分が、該線形アレイの隣接す
る演算処理装置間でデータを転送するために該線形アレイの隣接する演算処理装
置間で共用される、請求項1に記載の電子暗号化デバイス。 - 【請求項3】 各演算処理装置は制御ユニットおよびALUを含み、該制御
ユニット、命令メモリおよびデータ記憶装置はローカル演算処理装置データバス
に接続され、該ローカルデータバスはスイッチによって2つの独立した区分に区
分けされ、該制御ユニットおよび命令メモリは該区分のうちの一方に接続され、
該ALUおよびデータ記憶装置は該区分のうち他方に接続される、請求項2に記
載の電子暗号化デバイス。 - 【請求項4】 各演算処理装置は制御ユニットおよびALUを含み、該制御
ユニット、命令メモリ、ローカルデータメモリおよび共用データ記憶装置はロー
カル演算処理装置バスに接続され、該ローカルバスはスイッチによって、該命令
メモリおよび該制御ユニットを接続するローカル命令バス区分と、該ALU、ロ
ーカルデータメモリおよび共用データ記憶装置を接続するローカルデータバス区
分とに区分けされ、該スイッチは、該2つのローカルバス区分上で独立した同時
動作を可能にするか、または、該2つのバス区分間の通信を可能にする、請求項
2に記載の電子暗号化デバイス。 - 【請求項5】 各演算処理装置は、該演算処理装置内で乗算演算を行なうた
めの乗算器をさらに含む、請求項4に記載の電子暗号化デバイス。 - 【請求項6】 該暗号化アルゴリズムの実現中に、該パイプライン内の各演
算処理装置は、結果として得られたデータを、後続の演算処理装置が直接アクセ
スすることができるように該後続の演算処理装置と共用されるデータ記憶装置内
に書込む、請求項2に記載の電子暗号化デバイス。 - 【請求項7】 該演算処理装置の共用データ記憶装置は、該線形アレイの隣
接する演算処理装置間でデータを転送するために、該線形アレイの隣接する演算
処理装置間で共用されるデュアルポートメモリで構成される、請求項2に記載の
電子暗号化デバイス。 - 【請求項8】 各プロセッサは制御ユニットおよびALUを含み、該制御ユ
ニット、ALU、命令メモリ、ローカルデータメモリおよび共用データ記憶装置
はローカル演算処理装置データバスに接続され、該ローカルデータバスはスイッ
チによって2つの独立した区分に区分けされ、該制御ユニットおよび命令メモリ
は該区分のうち一方に接続されかつ、該ALU、ローカルデータメモリおよび共
用データ記憶装置は該区分のうち他方に接続される、請求項7に記載の電子暗号
化デバイス。 - 【請求項9】 各演算処理装置は、該演算処理装置内で乗算演算を行なうた
めの乗算器をさらに含む、請求項1に記載の電子暗号化デバイス。 - 【請求項10】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
区分として連結されるよう適合される、請求項9に記載の電子暗号化デバイス。 - 【請求項11】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
算器として動作しているときには第1の入力の組を選択し、かつ、連結されてい
るときには、隣接する演算処理装置からの入力を含む第2の入力の組を選択する
ための入力選択回路を有する、請求項10に記載の電子暗号化デバイス。 - 【請求項12】 各プロセッサは制御ユニットおよびALUを含み、該制御
ユニット、ALU、命令メモリ、ローカルデータメモリおよび共用データ記憶装
置はローカル演算処理装置データバスに接続され、該ローカルデータバスはスイ
ッチによって2つの独立した区分に区分けされ、該制御ユニットおよび命令メモ
リは該区分のうち一方に接続され、かつ該ALU、ローカルデータメモリおよび
共用データ記憶装置は該区分のうち他方に接続される、請求項1に記載の電子暗
号化デバイス。 - 【請求項13】 グローバルランダムアクセスメモリおよびグローバルバス
をさらに含み、データは該グローバルランダムアクセスメモリと該演算処理装置
データ記憶装置との間で該グローバルバスを通じて転送される、請求項1に記載
の電子暗号化デバイス。 - 【請求項14】 該グローバルバスに結合された、該演算処理装置によって
処理されるデータ語よりも幅の広いデータ語を処理するための中央処理装置をさ
らに含む、請求項13に記載の電子暗号化デバイス。 - 【請求項15】 各演算処理装置は、該演算処理装置内で乗算演算を行なう
ための乗算器をさらに含む、請求項14に記載の電子暗号化デバイス。 - 【請求項16】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
区分として連結されるよう適合される、請求項15に記載の電子暗号化デバイス
。 - 【請求項17】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
算器として動作しているときには第1の入力の組を選択し、また、連結されてい
るときには隣接する演算処理装置からの入力を含む第2の入力の組を選択するた
めの、入力選択回路を有する、請求項16に記載の電子暗号化デバイス。 - 【請求項18】 該中央処理装置は加算器を含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々はキャリ出力および合計出力
を有し、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1区
分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、該
キャリ出力を連続する加算器区分へのキャリ入力として選択するためのキャリ選
択器と、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、各
合計出力を同じ加算器区分へのオペランド入力として選択するためのオペランド
選択器とを含む、請求項13に記載の電子暗号化デバイス。 - 【請求項19】 各演算処理装置の各プロセッサは、MmodNを計算する
モジュロ調整演算を行なう、請求項1に記載の電子暗号化デバイス。 - 【請求項20】 各演算処理装置の各プロセッサは、A±BmodNを計算
するモジュロ加算または減算演算を行なう、請求項1に記載の電子暗号化デバイ
ス。 - 【請求項21】 各演算処理装置の各プロセッサは、A×BmodNを計算
するモジュロ乗算演算を行なう、請求項1に記載の電子暗号化デバイス。 - 【請求項22】 該暗号化デバイスは加算器をさらに含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々は、キャリ出力および合計出
力を含み、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1
区分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、キ
ャリ出力を連続する加算器区分へのキャリ入力として選択するキャリ選択器と、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、各
合計出力を同じ加算器区分へのオペランド入力として選択するオペランド選択器
とを含む、請求項1に記載の電子暗号化デバイス。 - 【請求項23】 単一チップ上に演算処理装置の線形アレイを含む、電子暗
号化デバイスであって、各演算処理装置は、 暗号化アルゴリズムの少なくとも1つのラウンドを実現するのに必要とされる
コードを記憶するための命令メモリと、 該命令メモリからの該ラウンドを処理するためのプロセッサと、 ローカルデータメモリと、 2つの隣接する演算処理装置間の共用データ記憶装置とを含み、 該線形アレイの演算処理装置は各々、該ラウンドのうち1つを実現しかつ、そ
の結果を連続する演算処理装置に転送し、それにより、該演算処理装置の線形ア
レイは演算処理装置パイプラインにおいて該暗号化アルゴリズムの連続的なラウ
ンドを処理する、電子暗号化デバイス。 - 【請求項24】 該暗号化アルゴリズムの実現中、該パイプライン内の各演
算処理装置は、結果として得られるデータを、後続の演算処理装置によって直接
アクセスすることができるように該後続の演算処理装置と共用されるデータメモ
リ内に書込む、請求項23に記載の電子暗号化デバイス。 - 【請求項25】 演算処理装置の線形アレイを含む暗号化データ処理システ
ムであって、各演算処理装置は、 命令メモリと、 該命令メモリからの命令を処理するためのプロセッサと、 データメモリとを含み、 該線形アレイの該演算処理装置のデータメモリは、該線形アレイの隣接する演
算処理装置間でデータを転送するための、隣接する演算処理装置間で共用される
デュアルポートメモリを含む、暗号化データ処理システム。 - 【請求項26】 各プロセッサは制御ユニットおよびALUを含み、該制御
ユニット、ALU、命令メモリ、および該演算処理装置のデータメモリは、ロー
カル演算処理装置データバスに接続され、該ローカルデータバスはスイッチによ
って2つの独立した区分に区分けされ、該制御ユニットおよび命令メモリは該区
分のうち一方に接続されかつ、該ALUならびにローカルおよび共用データメモ
リは該区分のうち他方に接続される、請求項25に記載の電子暗号化システム。 - 【請求項27】 各演算処理装置は、該演算処理装置内で乗算演算を行なう
ための乗算器をさらに含む、請求項25に記載の電子暗号化システム。 - 【請求項28】 複数の演算処理装置の該乗算器は、幅のより広い乗算器の
区分として連結されるように適合される、請求項27に記載の電子暗号化システ
ム。 - 【請求項29】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
算器として動作しているときには第1の入力の組を選択し、また、連結されてい
るときには隣接する演算処理装置からの入力を含む第2の入力の組を選択するた
めの、入力選択回路を有する、請求項28に記載の電子暗号化システム。 - 【請求項30】 グローバルランダムアクセスメモリおよびグローバルバス
をさらに含み、データは該グローバルランダムアクセスメモリと該演算処理装置
データメモリとの間で該グローバルバスを通じて転送される、請求項25に記載
の電子暗号化システム。 - 【請求項31】 該グローバルバスに結合されて、該演算処理装置によって
処理されるデータ語よりも幅の広いデータ語を処理するための、中央処理装置を
さらに含む、請求項30に記載の電子暗号化システム。 - 【請求項32】 該演算処理装置内で乗算演算を行なうための乗算器をさら
に含む、請求項31に記載の電子暗号化システム。 - 【請求項33】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
区分として連結されるように適合される、請求項32に記載の電子暗号化システ
ム。 - 【請求項34】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
算器として動作しているときには第1の入力の組を、また、連結されているとき
には隣接した演算処理装置からの入力を含む第2の入力の組を選択するための、
入力選択回路を有する、請求項33に記載の電子暗号化システム。 - 【請求項35】 該中央処理装置は加算器を含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々はキャリ出力および合計出力
を有し、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1区
分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、該
キャリ出力を連続する加算器区分へのキャリ入力として選択するキャリ選択器と
、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、各
合計出力を同じ加算器区分へのオペランド入力として選択するオペランド選択器
とを含む、請求項31に記載の電子暗号化システム。 - 【請求項36】 各演算処理装置の各プロセッサは、MmodNを計算する
モジュロ調整演算を行なう、請求項25に記載の電子暗号化システム。 - 【請求項37】 各演算処理装置の各プロセッサは、A±BmodNを計算
するモジュロ加算または減算演算を行なう、請求項25に記載の電子暗号化シス
テム。 - 【請求項38】 各演算処理装置の各プロセッサは、A×BmodNを計算
するモジュロ乗算演算を行なう、請求項25に記載の電子暗号化システム。 - 【請求項39】 該暗号化デバイスは加算器をさらに含み、該加算器は、 複数の加算器区分を含み、該複数の加算器区分の各々はキャリ出力および合計
出力を有し、該複数の加算器区分は2つのオペランドのうち各オペランドの1区
分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、該
キャリ出力を連続する加算器区分へのキャリ入力として選択する、キャリ選択器
と、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、各
合計出力を同じ加算器区分へのオペランド入力として選択する、オペランド選択
器とを含む、請求項25に記載の電子暗号化システム。 - 【請求項40】 該暗号化アルゴリズムの実現中、該パイプライン内の各演
算処理装置は、結果として得られたデータを、後続の演算処理装置が直接アクセ
スすることができるように該後続の演算処理装置と共用するデータメモリに書込
む、請求項25に記載の電子暗号化デバイス。 - 【請求項41】 乗算器回路であって、該回路は、 複数の乗算器区分を含み、その各々が第1の長さのオペランド語を受取り、さ
らに、 該乗算器区分が別個の乗算器として動作しているときには第1の入力の組を選
択し、また、第2の語長のオペランドに対する演算を行なう幅のより広い乗算器
として該乗算器区分を連結するためには第2の入力の組を選択する、入力選択器
を含む、乗算器回路。 - 【請求項42】 各乗算器区分は部分積加算器を含む、請求項41に記載の
乗算器。 - 【請求項43】 加算器であって、該加算器は、 複数の加算器区分を含み、その各々がキャリ出力および合計出力を有し、該加
算器区分の各々は2つのオペランドのうち各オペランドの1区分を処理し、さら
に、 加算器サイクル中にキャリが得られる限り、連続するクロックサイクル中、該
キャリ出力を連続する加算器区分へのキャリ入力として選択する、キャリ選択器
と、 加算器サイクル中にキャリが得られる限り、連続するクロックサイクル中、各
キャリ出力を同じ加算器区分へのオペランド入力として選択する、オペランド選
択器とを含む、加算器。 - 【請求項44】 電子暗号化デバイスであって、該デバイスは単一チップ上
に、 演算処理装置の線形アレイを含み、その各々は、命令ストアと、データ記憶装
置と、該命令ストアからの命令のシーケンスを処理して第1の長さのデータ語に
対する演算を行なうプロセッサとを有し、該演算処理装置の該データ記憶装置は
、該アレイの隣接する演算処理装置の間でデータを転送するために隣接する演算
処理装置間で共用されるデュアルポートメモリを有し、該線形アレイの該演算処
理装置は、自身の命令ストア内に、暗号化アルゴリズムのそれぞれのラウンドを
記憶しかつ、該ラウンドの結果を連続する演算処理装置に転送し、よって、該演
算処理装置の線形アレイは、演算処理装置パイプラインにおいて該暗号化アルゴ
リズムの連続するラウンドを処理し、さらに、 グローバルランダムアクセスメモリと、 該グローバルランダムアクセスメモリと該演算処理装置データメモリとの間で
それを介してデータが転送される、グローバルバスと、 少なくとも該第1の長さよりも長い第2の長さのデータ語に対する演算を行な
う、公開鍵暗号化プロセッサとを含み、該公開鍵暗号化プロセッサは、該第2の
長さの語長でグローバルランダムアクセスメモリにアクセスする、電子暗号化デ
バイス。 - 【請求項45】 単一チップ上に演算処理装置のアレイを含む、電子暗号化
デバイスであって、各演算処理装置は、 暗号化アルゴリズムのラウンドを記憶するための命令メモリ手段と、 該命令メモリからの該ラウンドを実現するためのプロセッサ手段と、 暗号化データオペランドおよび該ラウンドを実現することによって得られる暗
号化されたデータを記憶するためのデータ記憶手段とを含む、電子暗号化デバイ
ス。 - 【請求項46】 該データ記憶手段は、その一部が、該線形アレイの隣接す
る演算処理装置の間でデータを転送するために該線形アレイの隣接する演算処理
装置の間で共用される、請求項45に記載の電子暗号化デバイス。 - 【請求項47】 グローバルランダムアクセス手段およびグローバルバス手
段をさらに含み、該グローバルランダムアクセス手段と該演算処理装置データ記
憶手段との間のデータの転送は該グローバルバス手段を介して行なわれる、請求
項46に記載の電子暗号化デバイス。 - 【請求項48】 該グローバルバス手段に結合されて、該演算処理装置によ
って処理されるデータ語よりも幅の広いデータ語を処理するための、中央処理手
段をさらに含む、請求項47に記載の電子暗号化デバイス。 - 【請求項49】 暗号化方法であって、該方法は、 単一チップ上の電子回路において、暗号化されるべきデータを受取るステップ
と、 該データを該チップ上のデータ演算処理装置のパイプラインに与えるステップ
とを含み、各演算処理装置は、暗号化のラウンドを処理し、その結果を連続する
演算処理装置に転送し、それにより、該演算処理装置が演算処理装置のパイプラ
インにおいて該暗号化アルゴリズムの連続するラウンドを実現する、方法。 - 【請求項50】 結果は共用メモリを介して連続する演算処理装置に転送さ
れる、請求項49に記載の方法。 - 【請求項51】 該チップ上の、グローバルバスを介して該演算処理装置に
結合された中央処理装置で、暗号化アルゴリズムを処理するステップをさらに含
み、該中央処理装置は、該演算処理装置によって処理されるデータ語よりも幅の
広いデータ語を処理する、請求項50に記載の方法。 - 【請求項52】 該チップ上の、グローバルバスを介して該演算処理装置に
結合された中央処理装置において、暗号化アルゴリズムを処理するステップをさ
らに含み、該中央処理装置は、該演算処理装置によって処理されるデータ語より
も幅の広いデータ語を処理する、請求項49に記載の方法。
Applications Claiming Priority (3)
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 |
PCT/CA1999/000176 WO1999044329A2 (en) | 1998-02-27 | 1999-02-26 | Encryption processor with shared memory interconnect |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006195950A Division JP5025180B2 (ja) | 1998-02-27 | 2006-07-18 | 共用メモリ配線を有する暗号化プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002505451A true JP2002505451A (ja) | 2002-02-19 |
JP3979786B2 JP3979786B2 (ja) | 2007-09-19 |
Family
ID=21862723
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000533976A Expired - Fee Related JP3979786B2 (ja) | 1998-02-27 | 1999-02-26 | 共用メモリ配線を有する暗号化プロセッサ |
JP2006195950A Expired - Fee Related JP5025180B2 (ja) | 1998-02-27 | 2006-07-18 | 共用メモリ配線を有する暗号化プロセッサ |
JP2010189796A Expired - Fee Related JP5208174B2 (ja) | 1998-02-27 | 2010-08-26 | 共用メモリ配線を有する暗号化プロセッサ |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006195950A Expired - Fee Related JP5025180B2 (ja) | 1998-02-27 | 2006-07-18 | 共用メモリ配線を有する暗号化プロセッサ |
JP2010189796A Expired - Fee Related JP5208174B2 (ja) | 1998-02-27 | 2010-08-26 | 共用メモリ配線を有する暗号化プロセッサ |
Country Status (8)
Country | Link |
---|---|
US (3) | US6088800A (ja) |
JP (3) | JP3979786B2 (ja) |
KR (1) | KR100638189B1 (ja) |
CA (1) | CA2244337C (ja) |
DE (1) | DE19983127T1 (ja) |
FR (1) | FR2778519B1 (ja) |
GB (1) | GB2350218B (ja) |
WO (1) | WO1999044329A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7403614B2 (en) | 2002-08-22 | 2008-07-22 | Sony Corporation | Encryption apparatus |
Families Citing this family (155)
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 |
DE59710317D1 (de) | 1996-12-27 | 2003-07-24 | Pact Inf Tech Gmbh | 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 |
DE69837036T2 (de) * | 1997-09-16 | 2007-10-18 | Koninklijke Philips Electronics N.V. | Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs |
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 |
US6289454B1 (en) * | 1998-06-29 | 2001-09-11 | Vlsi Technology, Inc. | Memory configuration which support multiple cryptographical algorithms |
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 |
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 |
DE10081643D2 (de) | 1999-06-10 | 2002-05-29 | Pact Inf Tech Gmbh | Sequenz-Partitionierung auf Zellstrukturen |
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 |
EP1302022A2 (en) * | 2000-03-31 | 2003-04-16 | VDG Inc. | Authentication method and schemes for data integrity protection |
JP4306997B2 (ja) * | 2000-05-12 | 2009-08-05 | 富士通株式会社 | データ制御装置及びatm制御装置 |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
US20020061107A1 (en) * | 2000-09-25 | 2002-05-23 | Tham Terry K. | Methods and apparatus for implementing a cryptography engine |
US7062657B2 (en) * | 2000-09-25 | 2006-06-13 | Broadcom Corporation | Methods and apparatus for hardware normalization and denormalization |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
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 |
US7120254B2 (en) * | 2000-10-30 | 2006-10-10 | Geocodex Llc | Cryptographic system and method for geolocking and securing digital information |
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 | 積算値及び周期関数の生成方法及び回路 |
US7305092B2 (en) * | 2000-12-19 | 2007-12-04 | Qualcomm Incorporated | Method and system to accelerate cryptographic functions for secure e-commerce applications |
US6804696B2 (en) * | 2000-12-19 | 2004-10-12 | International Business Machines Corporation | Pipelining operations in a system for performing modular multiplication |
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 | 株式会社東芝 | 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法 |
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 |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
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 |
AU2002317928A1 (en) * | 2001-06-13 | 2003-05-19 | Zencod S.A. | Cryptographic processing accelerator board |
US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
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 |
WO2003060747A2 (de) | 2002-01-19 | 2003-07-24 | Pact Xpp Technologies Ag | Reconfigurierbarer prozessor |
EP2043000B1 (de) | 2002-02-18 | 2011-12-21 | Richter, Thomas | 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 |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
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 |
US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
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 |
US7539876B2 (en) * | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7532722B2 (en) * | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
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 |
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 |
US7502943B2 (en) * | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7900055B2 (en) * | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
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 |
US7529367B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode 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 |
US7529368B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback 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 |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
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 |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded 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 |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded 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 |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
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 |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers 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 |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core 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 |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
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 |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
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 |
US7409558B2 (en) * | 2004-09-02 | 2008-08-05 | International Business Machines Corporation | Low-latency data decryption interface |
US7496753B2 (en) * | 2004-09-02 | 2009-02-24 | International Business Machines Corporation | Data encryption interface for reducing encrypt latency impact on standard traffic |
KR20060061219A (ko) * | 2004-12-01 | 2006-06-07 | 주식회사 비에스텍 | 암호처리 프로세서 |
WO2006059873A1 (en) * | 2004-12-01 | 2006-06-08 | Bstech Co., Ltd. | Encryption processor |
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 |
JP2008530663A (ja) * | 2005-02-11 | 2008-08-07 | ユニバーサル データ プロテクション コーポレーション | マイクロプロセッサのデータセキュリティの方法およびシステム |
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 |
US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
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 |
US7889861B2 (en) * | 2006-09-13 | 2011-02-15 | Michael Borza | 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 |
US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
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 |
JP5573843B2 (ja) | 2009-10-05 | 2014-08-20 | コニカミノルタ株式会社 | 表面プラズモン増強蛍光測定装置 |
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 | 阿里巴巴集团控股有限公司 | 任务的处理方法、装置和系统 |
US20220060315A1 (en) * | 2019-01-07 | 2022-02-24 | Cryptography Research, Inc. | Sign-based partial reduction of modular operations in arithmetic logic units |
US11606346B2 (en) | 2020-06-29 | 2023-03-14 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing reception of secure data packets |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL213776A (ja) * | 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 |
US5752067A (en) * | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
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 |
EP0654733B1 (en) * | 1993-11-23 | 2000-05-24 | Hewlett-Packard Company | Parallel data processing in a single processor |
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 |
CN1912885B (zh) * | 1995-02-13 | 2010-12-22 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
US5675164A (en) * | 1995-06-07 | 1997-10-07 | International Business Machines Corporation | High performance multi-mesa field effect transistor |
AU693719B2 (en) * | 1995-09-05 | 1998-07-02 | Mitsubishi Denki Kabushiki Kaisha | Data transformation apparatus and data transformation 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 |
WO1997036227A2 (en) | 1996-03-28 | 1997-10-02 | Philips Electronics N.V. | Method and computer system for processing a set of data elements on a sequential processor |
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 | 株式会社東芝 | 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体 |
-
1998
- 1998-02-27 US US09/032,029 patent/US6088800A/en not_active Ceased
- 1998-07-30 CA CA002244337A patent/CA2244337C/en not_active Expired - Fee Related
-
1999
- 1999-02-26 GB GB0021091A patent/GB2350218B/en not_active Expired - Fee Related
- 1999-02-26 FR FR9902446A patent/FR2778519B1/fr not_active Expired - Fee Related
- 1999-02-26 DE DE19983127T patent/DE19983127T1/de not_active Withdrawn
- 1999-02-26 WO PCT/CA1999/000176 patent/WO1999044329A2/en not_active Application Discontinuation
- 1999-02-26 KR KR1020007009108A patent/KR100638189B1/ko not_active IP Right Cessation
- 1999-02-26 JP JP2000533976A patent/JP3979786B2/ja not_active Expired - Fee Related
-
2000
- 2000-06-01 US US09/584,930 patent/US6434699B1/en not_active Expired - Lifetime
-
2006
- 2006-07-18 JP JP2006195950A patent/JP5025180B2/ja not_active Expired - Fee Related
-
2010
- 2010-08-26 JP JP2010189796A patent/JP5208174B2/ja not_active Expired - Fee Related
-
2012
- 2012-09-04 US US13/603,137 patent/USRE44697E1/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7403614B2 (en) | 2002-08-22 | 2008-07-22 | Sony Corporation | Encryption apparatus |
Also Published As
Publication number | Publication date |
---|---|
FR2778519B1 (fr) | 2006-08-18 |
JP5208174B2 (ja) | 2013-06-12 |
US6434699B1 (en) | 2002-08-13 |
WO1999044329A2 (en) | 1999-09-02 |
JP3979786B2 (ja) | 2007-09-19 |
KR20010041069A (ko) | 2001-05-15 |
JP2006320014A (ja) | 2006-11-24 |
JP2011008285A (ja) | 2011-01-13 |
WO1999044329A3 (en) | 2000-03-02 |
GB2350218B (en) | 2003-04-23 |
JP5025180B2 (ja) | 2012-09-12 |
USRE44697E1 (en) | 2014-01-07 |
DE19983127T1 (de) | 2001-05-10 |
KR100638189B1 (ko) | 2006-10-26 |
CA2244337C (en) | 2009-01-20 |
US6088800A (en) | 2000-07-11 |
GB0021091D0 (en) | 2000-10-11 |
CA2244337A1 (en) | 1999-08-27 |
FR2778519A1 (fr) | 1999-11-12 |
GB2350218A (en) | 2000-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5208174B2 (ja) | 共用メモリ配線を有する暗号化プロセッサ | |
CN107465501B (zh) | 用于高级加密标准aes的处理器和系统 | |
US7233970B2 (en) | Computational method, system, and apparatus | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
JP4025722B2 (ja) | データ暗号化のための方法および装置 | |
Broscius et al. | Exploiting parallelism in hardware implementation of the DES | |
Güneysu | Utilizing hard cores of modern FPGA devices for high-performance cryptography | |
KR20050078271A (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
WO2001017152A1 (en) | A method for the hardware implementation of the idea cryptographic algorithm - hipcrypto | |
Zhang et al. | Reconfigurable Hardware Implementation of AES-RSA Hybrid Encryption and Decryption | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
CA2617389C (en) | Encryption processor with shared memory interconnect | |
US20020172355A1 (en) | High-performance booth-encoded montgomery module | |
Charlwood et al. | Evaluation of the XC6200-series architecture for cryptographic applications | |
GB2381913A (en) | Multiplier circuit comprising a plurality of multiplier segments | |
US8024392B2 (en) | Computational method, system, and apparatus | |
KR100406724B1 (ko) | 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치 | |
CN114417378A (zh) | 基于梅森数的密钥交换或公钥密码加密优化方法及系统 | |
CN114430319A (zh) | 平行运算加解密系统、发送端装置以及接收端装置 | |
So-Yoon | Field Programmable Gate Array Implementation of RC6 Symmetric Block Cipher | |
KR20020082540A (ko) | 디이에스 암호화 장치 | |
RAMYA et al. | Two Key Based RSA Encryption using FFT Algorithm | |
Broscius | Exploiting Parallelism in Hardware Implementation of the DES Albert G. Broscius Distributed Systems Lab Dept. of CIS | |
Ovünç Kocabas et al. | Enhancing an Embedded Processor Core with a Cryptographic Unit for Performance and Security | |
Kocabaş et al. | Enhancing an Embedded Processor Core with a Cryptographic Unit for Performance and Security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050426 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050722 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050729 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051026 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060718 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20061006 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20070130 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20070206 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070426 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070529 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070626 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100706 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110706 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120706 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130706 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |