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
Application number
JP2000533976A
Other languages
English (en)
Other versions
JP3979786B2 (ja
Inventor
ジョーンズ,デイビッド・イー
オコネル,コルマック・エム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mosaid Technologies Inc
Original Assignee
Mosaid Technologies Inc
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 Mosaid Technologies Inc filed Critical Mosaid Technologies Inc
Publication of JP2002505451A publication Critical patent/JP2002505451A/ja
Application granted granted Critical
Publication of JP3979786B2 publication Critical patent/JP3979786B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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)
  • 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

(57)【要約】 暗号化チップは、さまざまな秘密鍵および公開鍵の暗号化アルゴリズムを処理するようプログラム可能である。該チップは、演算処理装置のパイプラインを含み、該演算処理装置の各々は、秘密鍵アルゴリズム内の1ラウンドを処理することが可能である。データは、該演算処理装置間で、デュアルポートメモリを介して転送される。中央処理装置は、単一サイクルのオペレーションで、グローバルメモリからの非常に幅の広いデータ語を処理することができる。加算器回路は、比較的小さい複数の加算器回路を使用することによって簡素化され、合計およびキャリが複数サイクルでループバックされる。乗算器回路は、非常に幅の広い中央処理乗算器となるよう連結することができるように、より小さい演算処理装置乗算器を適用することによって、複数の演算処理装置と中央処理装置との間で共用することができる。

Description

【発明の詳細な説明】
【0001】
【発明の分野】
本発明は高性能ネットワーク暗号化デバイスに関し、より特定的には、ハード
ウェアおよびソフトウェアの双方を組み込む暗号化デバイスに関する。
【0002】
【発明の背景】
インターネットの出現以前は、企業のデータネットワークは典型的に、公共の
電話会社からリースした専用遠隔通信ラインで構成されていた。このようなデー
タネットワークのハードウェア実装は、媒体上で絶対的な独占権を有する規制さ
れた公益企業であるその電話会社の独占的所有物であったために、セキュリティ
は大した問題ではなかった。その単一のプロバイダは、契約により安全が義務づ
けられ、また、中継ネットワークへの外部からのアクセスが不可能であったため
に、外部からのハッキングやタンパリングに対してかなり耐性があった。
【0003】 今日、ますます多くの企業がインターネットに価値を見出している。インター
ネットは現時点において、単一のコンピュータネットワークとしては世界中で最
も広く展開しているネットワークであり、したがって、国際的な企業ネットワー
クに容易に利用することが可能である。インターネットはまた、消費者レベルの
製品であるので、インターネットアクセスは通常、専用電話会社のネットワーク
によって提供される同じサービスよりもはるかに低コストで提供され得る。また
、インターネットのエンドユーザに対する可用性によって、個人が家庭や他の遠
隔地から企業のネットワークに容易にアクセスすることが可能となっている。
【0004】 しかしながら、インターネットは複数の株式会社によって運営されており、オ
ープンプロトコルを用い、自由に調査可能なインバンドルーティングおよび制御
の下に置かれている。このような環境は、ハッカーを育てるには絶好の土壌であ
る。企業の諜報活動は今日では利益の多いビジネスであって、インターネット上
でビジネスを行なう企業にとって、予防を怠ることは重大な損失を被ることにつ
ながる。
【0005】 今日、インターネット上では、プライバシーおよび強力な認証のためのいくつ
かの基準が存在する。プライバシーは暗号化/復号化、すなわち解読、によって
達成される。典型的に、暗号化/解読はメッセージ内容のプライバシーを維持し
ながらも当事者間でオープンチャネルを介してデータを転送することを可能にす
るよう設計されたアルゴリズムに基づいて行なわれる。これは、送信者が暗号化
鍵を使用してデータを暗号化し、受信者が解読鍵を使用してそれを解読すること
によって達成される(ときに、暗号化鍵と解読鍵とは同一のものである)。
【0006】 暗号化アルゴリズムの種類 暗号化アルゴリズムは、公開鍵アルゴリズムと秘密鍵アルゴリズムとに分類す
ることができる。秘密鍵アルゴリズムにおいては両方の鍵が秘密であり、これに
対し、公開鍵アルゴリズムでは鍵のうち一方が公開されている。ブロック型暗号
は、今日使用されている秘密鍵暗号システムの代表である。通常、ブロック型暗
号については、暗号化鍵と解読鍵とは同じものである。ブロック型暗号は、デー
タのブロック、典型的には32〜128ビットを入力として受取り、同じ数のビ
ットを出力として生成する。暗号化および解読は、長さが56ビットから128
ビットの間である鍵を使用して行なわれる。この暗号化アルゴリズムは、鍵を知
らなければメッセージの解読が非常に困難なものとなるように設計されている。
【0007】 インターネットのセキュリティプロトコルにより、ブロック型暗号に加えて、
公開鍵アルゴリズムが多用されている。PogueおよびRivestに発行された米国特 許番号第5,144,667号に記載の、Rivest, Shamir, Adelman(RSA) 暗号システム等の公開鍵暗号システムは、2つの鍵を使用し、そのうち一方のみ
が公開されている。ある人物が鍵を公開すると、他の誰もがその鍵を使用して秘
密のメッセージをその人物に対して送信することができるが、そのメッセージは
秘密鍵を使用しなければ解読することができない。このような公開鍵暗号化の利
点は、会話を行なう前にすべての相手に対して秘密鍵を配布する必要がないこと
である。これに対して、もし秘密鍵の暗号化のみが使用されるようであれば、メ
ッセージを受信する予定の各相手先に対して1つずつ、合せて多数の秘密鍵を生
成せねばならず、またそれらすべての秘密鍵を1つずつ個別に配布せねばならな
くなる。秘密裡に秘密鍵を送信しようと試みる場合、秘密鍵暗号化のみを使用し
てメッセージそのものを送信する場合と同じ問題が生じることになる。このよう
な問題を、鍵の配布問題(key distribution problem)と呼ぶ。
【0008】 鍵の交換は、公開鍵技術の別の応用例である。鍵交換プロトコルにおいて、当
事者間の会話が第三者によって傍受された場合にも、当事者間は秘密鍵で対処す
ることが可能である。米国特許番号第4,200,770号に記載されているDi
ffie-Hellman指数関数鍵交換は、そのようなプロトコルの一例である。
【0009】 RSAやDiffie-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で鍵の生成お よび交換を行なうことはほとんど期待することはできない。
【0010】 公開鍵アルゴリズムは、計算が非常に面倒なので、典型的にメッセージ全体を
暗号化するのには使用されず、代わりに、プライベート鍵暗号システムがメッセ
ージの転送に使用される。メッセージの暗号化に使用されるプライベート鍵はセ
ッション鍵と呼ばれ、この鍵が無作為に選ばれて公開鍵を用いて暗号化される。
暗号化されたセッション鍵は暗号化されたメッセージとともに相手先に送信され
る。相手先は、自身の秘密鍵を用いてセッション鍵を解読し、その時点で、その
セッション鍵を用いてメッセージを解読することができる。各通信には異なるセ
ッション鍵が使用されるので、もし1つのセッション鍵が破壊されたとしても、
読むことができるメッセージはそのセッション鍵を使用して暗号化された1つの
メッセージのみである。この公開鍵/プライベート鍵の方法はまた、双方向端末
セッション等の、通常動作時には決して終了することのない連続的な通信を保護
するのにも使用することが可能である。この場合、セッション鍵は、公開鍵生成
技術を繰返すことによって周期的に(たとえば1時間ごとに)変更される。やは
り、セッション鍵を頻繁に変更することによって、暗号化が破られたとしても犠
牲となるデータ量は制限される。
【0011】 先行技術 ソフトウェアをベースとした解決法を用いて企業のネットワークへのアクセス
を可能にする、ネットワークレベルの暗号化デバイスが広く使用されている。Ra
ptor Eagle Remote等の製品は、暗号化をすべてソフトウェアで行なっている。 ソフトウェアは、暗号器のスループットを制限する。公開鍵技術を用いたセッシ
ョン鍵の生成には数分かかることもある。この理由のために、セッション鍵の再
生成はある人々が望むほどには頻繁には行なわれない。しかし、ソフトウェアは
、その分野における開発に応じて、暗号化アルゴリズムを容易に変更することが
できるという利点を有する。
【0012】 他のデバイスは、ハードウェアとソフトウェアとの組合せを使用する。たとえ
ば、Northern Telecom(現在のEntrust)のSentinel X.25暗号化製品は、AMD
によって製造されたDESチップを使用して、DES秘密鍵の暗号化を行なう。
DESはハードウェアで効率的に実装されるように設計されたものなので、ハー
ドウェア実装の方がはるかに高速である。ソフトウェアにおいては多くのCPU
命令を要する転換を、並列の専用ルックアップテーブルおよび配線を使用して行
なうことが可能である。
【0013】 Sentinelはまた、Motorola DSP56000プロセッサを使用して、公開鍵演算を行 なう。当時、DSPの単一サイクルの乗算能力のおかげで、この方法によって、
一般的なCISCマイクロプロセッサで公開鍵アルゴリズムを実現するよりもは
るかに高速で演算ができるようになった。
【0014】 大半のハードウェア暗号化デバイスにおいては、それによって実現することの
できるアルゴリズムの数が大幅に制限されている。たとえば、Sentinelにおいて
使用されるAMDチップは、DESのみを実行する。Hi/Fnによるより最近
のデバイスでは、DESおよびRC4を実行することができる。しかし、RC5
またはIDEAを実現したい場合には、別の製品を用いねばならないであろう。
【0015】
【発明の概要】
好ましい高性能プログラマブルネットワーク暗号化デバイスは、単一チップ内
に集積され、これは、その命令の組が共通の暗号化アルゴリズムに対して最適化
された、並列パイプライン式のプロセッサシステムである。本発明は、ハードウ
ェアおよびソフトウェアの両方の方法の利点を実現する。該プロセッサはプログ
ラマブルプロセッサであるため、どのような暗号化アルゴリズムも実現すること
が可能であり、これは、1つのアルゴリズムのみを実行するよう設計されるハー
ドウェア実装の暗号化プロセッサとは対照的である。しかし、このプロセッサの
アーキテクチャは、暗号化に有益な特性である並列計算を可能にしているので、
その性能は、専用ハードウェアデバイスの性能により近づく。
【0016】 本発明の好ましい実現例に従えば、電子暗号化デバイスは演算処理装置のアレ
イを含む。各演算処理装置は、暗号化アルゴリズムの1ラウンドを記憶するため
の命令メモリを含み、該ラウンドは、命令の1シーケンスを含む。該演算処理装
置はまた、命令メモリからのラウンドを実現するためのプロセッサ、ならびに、
暗号化データオペランドおよびラウンドを実現することによって得られる暗号化
されたデータを記憶するためのデータ記憶装置を含む。該アレイの各演算処理装
置は、複数のラウンドのうち1つを実現し、その結果を連続する演算処理装置へ
と転送し、それにより、該演算処理装置のアレイは演算処理装置のパイプライン
において暗号化アルゴリズムの連続的なラウンドを実現する。
【0017】 好ましい実施例においては、該データ記憶装置はその一部分が該線形アレイの
隣接する演算処理装置間で共用されており、該線形アレイの隣接する演算処理装
置間でデータを転送するのに使用される。該共用データ記憶装置は好ましくは、
デュアルポートメモリで構成されるが、これはまた、共用レジスタを含んでもよ
い。
【0018】 好ましい演算処理装置は、制御ユニットおよびALUを含む。制御ユニット、
ALU、命令メモリおよびデータ記憶装置は、ローカルデータメモリおよび共用
データメモリも含めて、ローカル演算処理装置バスに接続される。このローカル
バスはスイッチによって区分されて、命令メモリおよび制御ユニットを接続する
ローカル命令バス区分と、ALU、ローカルデータメモリおよび共用データメモ
リを接続するローカルデータバス区分とに分けられる。該スイッチは、該2つの
ローカルバス区分上で別個に同時に演算ができるようにするか、または、それら
2つのバス区分の間で通信ができるようにする。各演算処理装置はさらに、その
演算処理装置内で乗算演算を行なうための乗算器を含む。
【0019】 好ましい暗号化デバイスはさらに、グローバルランダムアクセスメモリおよび
グローバルバスを含み、データは該グローバルランダムアクセスメモリと演算処
理装置のデータ記憶装置との間で該グローバルバスを通じて転送される。中央処
理装置は、このグローバルバスに結合されて、演算処理装置によって処理される
データ語よりも幅の広いデータ語を処理する。複数の演算処理装置のそれぞれの
乗算器は、中央処理装置によって使用されるより幅の広い乗算器の区分として連
結できるようにされ得る。好ましくは、各乗算器は部分積加算器を含み、該加算
器は、個別の乗算器として動作しているときには第1の入力の組を選択し、かつ
、連結されているときには隣接する演算処理装置からの入力を含む第2の入力の
組を選択するための、入力選択回路を有する。
【0020】 好ましくは、中央処理装置は新規な加算器を含む。該加算器において、複数加
算器区分の各々はキャリ出力および合計出力を有し、それら加算器区分の各々は
、2つあるオペランドの各オペランドの1区分を処理する。選択器は、加算器サ
イクル中にキャリが得られる限り、連続するクロックサイクル中、該キャリ出力
を連続する加算器区分へのキャリ入力として選択する。選択器はまた、各合計出
力を同じ加算器区分へのオペランド入力として選択する。したがって、加算器サ
イクル中にキャリが得られる限り、ある加算器の合計出力はその入力にフィード
バックされ、また該加算器区分は先行するサイクルにおいて先行する区分からキ
ャリ出力として生成されたキャリ入力を受取ることになる。
【0021】 好ましくは、各演算処理装置は、除算回路を用いずにMmodNを計算する、
モジュラ調整演算を行なう。各演算処理装置はまた、A±BmodNを計算する
モジュロ加算/減算演算を行なう。さらに、各演算処理装置は、A×BmodN
を計算するモジュロ乗算演算を行なう。
【0022】
【詳細な説明】
本発明の上記および他の目的、特徴および利点は、添付の図面に示される本発
明の好ましい実施例に関する以下のより詳細な説明から明らかとなるであろう。
添付の図面においては、複数の図面を通じて、同じ部分には同様の参照符号が付
される。図面は必ずしも一定の比で描かれているわけではなく、本発明の原理を
説明するために強調されている部分を含む。
【0023】 本発明の暗号化チップは、任意のアプリケーションにおける1または複数のデ
ータストリーム上で、共通のデータ暗号化および復号化、すなわち解読、のアル
ゴリズムを行なうようプログラムすることが可能である。この暗号化チップの主
要な目的は、インターネット上でその使用が想定されるアルゴリズムを用いて、
100〜2000Mbpsのデータレートで、高速データ暗号化を行なうことで
ある。
【0024】 アプリケーションの例を図1Aおよび図1Bに示す。図1Aにおいて、ソース
22からのデータが、暗号化チップ24で暗号化された後に公衆ネットワーク2
6に渡される。データはその後、暗号化チップ28内で解読されて、宛先30に
送られる。一実施例においては、このソースおよび宛先自体が、ローカルエリア
ネットワーク等のネットワークである。そのような場合、これら暗号化チップが
、ローカルエリアネットワークと公衆ネットワーク26との間に安全な経路を提
供する。
【0025】 図1Bに示されるリンク暗号化アプリケーションにおいては、各リンク内でル
ータ間で転送されるデータが暗号化される。この場合、リンクとリンクの間にあ
るルータ32に入力された暗号化データは、暗号化チップ34でまず解読されね
ばならず、またそのデータは、暗号化チップ36において、次のリンクの暗号化
アルゴリズムに従って再度暗号化される。
【0026】 今日、DES、RC5およびIDEAという3つの主要な秘密鍵ブロック型暗
号化アルゴリズムが一般に使用されている。最初の2つのアルゴリズムは、標準
的なインターネットプロトコルセキュリティ(Internet Protocol SECurity)の
略である、IPSEC標準アルゴリズムである。IDEAは、広く利用されてい
る電子メール暗号化プログラムであるPGPによって使用されるアルゴリズムで
ある。
【0027】 典型的に、ブロック型アルゴリズムは、多数のラウンドで構成され、各ラウン
ドは、暗号化アルゴリズムにおける演算の1シーケンスである。暗号化アルゴリ
ズムを完全に実現するには、8〜32ラウンドが必要とされる。各ラウンドによ
って行なわれる演算は、しばしば同じものであるが、同じものでなくてもよい。
ソフトウェアにおいては、各ラウンドは少数の機械命令で実現される。ハードウ
ェアにおいては、各ラウンドは専用回路で実現される。ハードウェアは典型的に
パイプライン化されており、各ラウンドは自身に該当するパイプライン段におい
て実現される。
【0028】 図2は、本発明の一実施例に従った、集積チップの解決法を図示する。これを
今後、暗号化チップと呼ぶ。暗号化チップと呼ぶと、そのチップが暗号化を行な
うことができることが示唆されるが、このチップが復号化、すなわち解読、およ
びメッセージダイジェスト機能もまた行なうことに留意されたい。
【0029】 データは、ネットワークデータを受取る入力段40を介して、典型的にはシリ
アルビットストリームとして暗号化チップに入力される。イーサネット、ATM
または他のどのような直列化フォーマットも使用することができる。入力段はこ
のシリアルデータストリームを、暗号化/解読パイプラインへの入力として処理
するのに好適な、ブロック整合されたデータへと変換する。入力ブロックのサイ
ズはプログラム可能である。図2に示した好ましい実施例においては、パイプラ
インは線形アレイに配された複数の演算処理装置37からなり、各演算処理装置
は、命令メモリ、レジスタファイル、ALU、ローカルおよび共用データメモリ
、ならびに制御回路を含む。演算処理装置の各々は、32ビット幅のデータ語を
処理するよう設計されている。暗号化されたデータは、該パイプラインの最後の
演算処理装置から取出されて出力段42に渡され、出力段42がそのブロックデ
ータをシリアルストリームフォーマットに戻して、そのデータをネットワークを
介してまたは局所宛先へと送る。
【0030】 データは、グローバルデータバス38を介して、暗号化チップ内の隣接しない
演算処理装置間および/または他の装置間で転送することができる。グローバル
データバス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内で実行され得る。
【0031】 この暗号化チップは、秘密鍵アルゴリズムの各ラウンドのためのコードを、パ
イプラインの別個の演算処理装置内で実現する。計算が終わると、1つのPEか
らのデータは次のPEに転送され、そこで次のラウンドが実現される。第1のP
Eはその後、入来するデータの次のブロックのための暗号化ラウンドを処理する
ことができるようになる。パイプライン処理は残りのPEにおいて続けられる。
このアーキテクチャを用いて1つのブロックを暗号化するのに必要とされる時間
は、したがって、1つのラウンドを暗号化するのに必要とされる時間に等しい。
【0032】 多くのブロックアルゴリズムは、データを暗号化するのにある演算の組を使用
し、鍵を拡張するのに別の演算の組を使用する。鍵の拡張は、比較的小さい鍵(
56〜128ビット)を、統計的に無作為の性質を有するより大きい数(512
ビット以上)の鍵へと変換するプロセスである。こうして拡張された鍵は、より
小さなサブ鍵に分配され、拡張された鍵の異なる部分が各々異なるラウンドのた
めに使用される。拡張された鍵がデータによって変化しないことに注目すること
が重要である。したがって、これはクリティカルパス内にはないため、予め計算
してメモリに記憶しておくことができる。後に説明するコードの例は、鍵情報が
予め計算されて各PEのローカルデータメモリ内に記憶されているものと仮定し
ている。
【0033】 ブロックアルゴリズムの基本的なアプリケーションは、平文(暗号化されてい
ない情報)のブロックを同じサイズの暗号文(暗号化された情報)のブロックに
変換したり、その逆を行なう。この動作モードは、電子コードブック(ECB)
モードとして知られているが、これはセキュリティに関して多くの固有の弱点を
有するので、基本的な出力のいくつかを入力に戻るよう巡回させることによって
暗号化にフィードバックを導入する方法が一般に使用されている。この暗号化チ
ップは、グローバルデータバス38を利用して暗号フィードバック(CFB)を
行なう。ECBモードにおいては、データの新しいブロックを各パイプラインサ
イクルにつき1回暗号化することができる。これは10〜100個の命令であり
得る。しかし、CFBモードにおいては、各データはパイプラインを多数回通過
せねばならない。このモードは単一チャネル上のスループットを大幅に減じるが
、パイプラインにおいてインターリーブされている多数のデータチャネルを暗号
化することによって、ピーク性能を達成することができる。
【0034】 本発明の一実施例に従った1つの演算処理装置PEのブロック図を図3に示す
。演算処理装置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番目の演算処理装置のアドレススペースにマップされる。どの種類のメモリ
にアクセスするのにも、特別な命令は必要ない。すべてのメモリはすべてのメモ
リアクセス命令によってアクセス可能である。
【0035】 1つの演算処理装置のメモリ66および68は、デュアルポートSRAMであ
って、これらはそれぞれ、先行する、すなわち前隣りのパイプ段および、次の、
すなわち後ろ隣りのパイプ段と共用される。あるPEにとっての後ろ隣りのPE
との共用メモリは、次のPEにとっての前隣りのPEとの共用メモリと同じもの
であることを理解されたい。
【0036】 これらのデュアルポートのSRAMは、パイプライン段を通じてデータを伝搬
するのに使用される。ある演算処理装置が、転送されるべきデータをそれに関連
する後ろ隣りの装置との共用メモリに書込む。すると、その記憶されたデータを
、該当する後ろ隣りの演算処理装置が、自身の前隣りの装置との共用メモリから
読出す。ここで、前隣りの装置との共用メモリとは、上述のように、先行する演
算処理装置にとっての後ろ隣りの装置との共用メモリと同一無二のメモリを指す
。これらのメモリはデュアルポートメモリであるため、アクセスにはタイミング
の制限がない。アクセスの同期化は、ソフトウェアの作者または編集者による機
械命令の静的なスケジューリングを用いて行なわれる。さらに、隣接するPE間
の通信にグローバルバスを使用しないので、PEはすべて同時に通信することが
可能である。
【0037】 グローバルメモリ44はグローバル通信バスに接続される。任意の時間にグロ
ーバルメモリ44にアクセスが許可されるのは1つの演算処理装置のみである。
このメモリは、たとえば、フィードバック暗号化アルゴリズム中に、隣接してい
ない演算処理装置間でデータをやりとりするのに使用され、また、個々の演算処
理装置のための補助記憶装置としての役割を果たす。
【0038】 PE命令メモリ62は、現代のRISCプロセッサの整数ユニットのそれに似
た、命令の組を有する。この命令の組は、どのレジスタもどの命令に対するオペ
ランドとしても使用することができるという点で、いくぶん直交性である。浮動
小数点やメモリ管理サポートは、どちらも暗号化には有益ではないので、設ける
必要はない。しかし、この命令の組は、以下の有益な追加機能を含む。すなわち
、モジュラ加算/減算命令、モジュラ乗算命令およびモジュロ調整命令、である
【0039】 モジュラ加算/減算命令は、A±BmodNを計算する(「MmodN」の数
はMをNで除した際の剰余である)。図15Aから図15Dは、モジュラ加算、
減算および調整を、1つのスリーインワン(3-in-1)モジュロ算術ユニットに組
合せた例を示す。
【0040】 図15Aは、モジュラ加算演算を示す。加算すべき2つの数AおよびBが双方
ともNよりも小さければ、加算器120からのそれらの合計を、Nを法として減
じることができる。すなわち具体的には、減算器122においてNを減じ、その
後、その差の符号に応じて、マルチプレクサ124を介して、減算器の出力また
は元々の数のいずれかを選択する。同様に、図15Bに示すモジュラ減算演算の
場合には、2つの数AおよびBがNよりも小さい場合には、Nを法とするそれら
の差を計算することが可能である。これは具体的には、減算器128からの差が
負であれば加算器126においてNを加算し、その差が正であればマルチプレク
サ130を介してその差を選択することによって、行なわれる。ここで、モジュ
ロ加算およびモジュロ減算がいずれも除算を必要としないことに注目されたい。
しかし、それらは、連続2回の加算を必要とする(そのうち1つは合計/差を計
算するもの、もう1つはNを法として減算するものである)。このような2回続
けての加算がクリティカルパスに打撃を与える場合には、Nを法とする減算は、
別個の命令としてエンコードすることが可能であり、これを「モジュロ調整」命
令と呼ぶ。
【0041】 図15Cに示すこのモジュロ調整命令は、AおよびBの両方が既にNを法とし
て減じられていて、MがAとBとの合計または差のいずれかであるものとして、
MmodNを計算する。Mが負である場合、ロジック132は、加算器/減算器
134においてMにNを加えて、マルチプレクサ136を介して結果が生成され
るようにする。Mが正である場合には、ロジック132は、Nの減算を行ない、
その差が正であればその差を返し、その差が負であればMを返す。この命令は、
合計および差の命令と関連づけて使用することが可能であり、それにより、モジ
ュラ加算/減算命令が不要となる。
【0042】 図15Dにおいて、スリーインワンの算術ユニットは、モジュロ加算、モジュ
ロ減算およびモジュロ調整を、各演算処理装置内で実現される単一のユニットに
組合せる。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)による「試行除算を 行なわないモジュラ乗算」に記された、試行除算を行なわないモジュラ乗算のた
めのモンゴメリーの法を実現するのに有益である。
【0043】 モジュラ加算および減算は、従来技術によるプロセッサにおいてわずか2〜3
個の命令で実現することができるが、これらの命令を暗号化チップの命令の組の
特別な関数として含むことで、特定的な暗号化アルゴリズムの場合においては、
わずかながら高速化につながる。
【0044】 モジュラ乗算命令は、A*BmodNを計算する。この命令に使用される乗算
器は、下により詳細に説明する。暗号化チップは、後に明らかとなるであろう理
由によって、全体のモジュラ乗算命令を提供することができる。
【0045】 表1は、以下の例において使用される、PEの命令の組の代表的な例を示す。
他の従来技術によるRISC命令もまた実現することが可能である。
【0046】
【表1】
【0047】 レイアウトの課題 暗号化チップの一般的なレイアウトを図4に示す。ここでは、16個の演算処
理装置および、512ビット幅の公開鍵PKコアユニットを想定する。ここで5
12ビットのPKコア語幅を選択したのは、そのレイアウトが容易であるためで
ある。たとえば1024ビット幅は、より広いシリコン面積を必要とするであろ
うが、性能は倍加するであろう。
【0048】 個々の素子は、図2および図3に示した素子に匹敵し得る。16個の演算処理
装置が、レイアウトの大きな領域内で左下側に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を繋ぐ。
【0049】 ローカルバス接続を含む典型的な演算処理装置のレイアウトを図5に示す。1
つの演算処理装置のすべての構成要素は、ローカル演算処理装置データバス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からの命
令フェッチを、データメモリおよびレジスタファイルからのデータフェッチと同
時に進めることができる。
【0050】 多数のマルチプロセッサアーキテクチャが提案されているが、それらの大半は
、汎用マルチプロセッシングのために設計されている。このため、演算処理装置
間の通信は通常、あるPEから別のPEへとデータを切換えるよう動的に構成す
ることが可能な、切換マトリックスを使用して行なわれる。これらのスイッチの
設計は非常に複雑である。このようなスイッチは暗号化には不要であるため、本
発明の実施例においては、切換回路が大幅に減じられた、より簡単なPEの線形
配列を用いている。
【0051】 加えて、相互配線技術として、文献に記載されているようなI/Oポートを使
用するのではなく共用メモリを使用していることにより、はるかに簡単かつはる
かに強力なプログラミングモデルが生成される。ここで、2つのPE、Aおよび
Bが単一の32ビットI/Oポートに接続されているものとする。AがBに対し
てデータの複数語を転送するためには、Aは各語をI/Oポートに書込んで、B
がそれを読出すのを待たねばならない。これに対し、AおよびBが、通信のすべ
ての語を保持するのに十分な大きさの共用メモリによって接続されている場合に
は、AはBが読出すのを待つことなくそのデータを書出すことが可能である。さ
らに、PE Bはどのような順序でもそれらの語を読出すことができ、また、そ
のデータから、進行中のジョブに応じて適宜、必要なものをピックアップして選
択することもできる。最後に、共用メモリのうちあるメモリが通信に不要である
場合には、そのようなメモリはローカルメモリの延長として使用されて、付加的
なローカルワークスペースを提供することができることに注目されたい。
【0052】 公開鍵サポート 効率的な公開鍵暗号化のためには、公開鍵コプロセッサによって提供される効
率的なモジュラ指数関数が必要である。このユニットは、以下の項目を含む。す
なわち: ・16個の512ビット幅のレジスタで構成される、PKレジスタファイル48
・連結されたSK乗算器素子からなる、PK512×32ビット乗算器70(こ
のユニットは、わずか32クロックサイクルで1つの512×512乗算を行な
うことができる) ・PK512ビット加算器ALU50、これは、2〜16サイクルで、典型的に
は2サイクル以下で、加算を行なうことができる ・単一クロックサイクルで512ビット語をロードおよび記憶するために、PK
コプロセッサからの512ビット並列アクセスのために構成される、グローバル
メモリ44。
【0053】 PKコアプロセッサは、モジュラ乗算を512ビット語を使用して行なうこと
によって加速する。本発明のPKユニットを用いる512×512乗算演算は、
下に説明する16個の演算処理装置を連結した乗算器素子を用いて、16個の5
12×32乗算を行なうことによって実現されるであろう。各乗算につき2クロ
ックサイクルが必要とされかつそのような乗算が16回必要とされると仮定する
と、1回の512×512乗算に必要なのは32クロックサイクルであり、1回
の2048×2048乗算はわずか512クロックサイクルで行なうことができ
ることになる。4096回の乗算を必要とする全体のモジュラ指数演算は、合計
200万クロックサイクルを要することになるが、これは、先に説明したPentiu
mの例に比べて80倍の改良を意味する。PKアルゴリズムにおいても同様の性 能の改良が期待される。これは、先行技術に比べて大幅な性能の向上を意味し、
セッション鍵をより頻繁に変更することが可能になって、セキュリティが向上す
ることを意味する。
【0054】 512ビット加算器 加算器は、公開鍵PKユニットと秘密鍵SKユニットとの間で共用されること
はない。加算演算および論理演算がPKおよびSKの双方において共通であるの
で、各ユニットは自身の加算器を有し、したがって、演算を同時に進行すること
が可能である。
【0055】 公開鍵PK ALU50内において、512ビットの単一サイクルの加算器は
非常に複雑であって、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ビット加算器のうちいずれかの出
力にキャリが得られる限り繰返される。
【0056】 512ビット加算器の動作は、以下の例を参照してよりよく理解されるであろ
う。この例においては、実際の実装時の16個の32ビット語の代わりに、4つ
の4ビットの2進語を使用する。
【0057】
【数1】
【0058】 ここでは、さらなるキャリがもはや得られない最終合計に達するまでに必要と
される加算は2回であった。これは典型的な場合である。加算器が暗号化演算の
ために使用されるので、加算される回数はある程度ランダムにばらつくと仮定す
ると安全であろう。初回の加算の後にキャリ出力が得られる可能性は極めて高い
。しかし、最下位ビットとして戻され加算されるキャリによって最上位ビットか
らの別のキャリが得られる可能性は極めて低い。このため、ほとんどの加算演算
はわずか2クロックサイクルしか必要としないと予測されるのである。
【0059】 512ビット加算器を構築するという最初の課題に戻って、標準的なキャリ先
見型またはキャリバイパス型加算器設計を使用する場合、その加算器を通じるク
リティカルパスは極めて長くなるであろう。なぜなら、キャリが、512ビット
の演算を行なう何らかの最適化された回路を通じて伝搬されねばならないためで
ある。この加算器は極めて大きくかつ低速であろう。これに対して、本発明の一
実施例においては、512ビット加算器は32ビット加算器から構成されている
。32ビット加算器の設計は今日ではよく知られておりまた十分に最適化されて
いる。個々の32ビット加算器の最大クロック速度は、512ビットキャリ先見
型設計のクロック速度の2倍以上であると予測される。したがって、本発明に従
った2以上のサイクルの加算器は、より大きな512ビット加算器よりも、チッ
プ面積の消費量はより少ないのに対し、通常はより高速で動作することができる
であろう。
【0060】 最悪の場合、下に説明するように、16個の32ビット加算器の実装において
、キャリを有さない最終合計を完全に計算するのに、16サイクルが必要となる
ことも考えられる。ここで再び4ビットの2進語の例を使用して説明すると、以
下のようになる。
【0061】
【数2】
【0062】 以上のように、4回の加算が必要であった。一般に、n個の数のグループにつ
いては、最大でn回の加算が必要とされる。
【0063】 512×32乗算器 乗算器は占有面積が広い。各秘密鍵演算処理装置は、たとえば下により詳細に
説明するIDEA等の、乗算を必要と秘密鍵アルゴリズムを実現するためには、
自身の乗算器を含まねばならない。各PE乗算器によって占められる面積を合わ
せると相当な面積となり、そこで、この面積は、512×32ビット公開鍵乗算
器を実現するのに使用される。面積の節約のために、このように大きな512×
32乗算器は、各秘密鍵演算処理装置において16個の32×32乗算器を連結
することによって実現される。換言すれば、秘密鍵ユニットおよび公開鍵ユニッ
トは、図4のチップレイアウト内に示すように、複数の乗算器素子を共用するこ
とが可能である。したがって、乗算器素子の使用は、秘密鍵演算処理装置とPK
コアプロセッサとの間で調整されねばならない。なぜなら、PKコアプロセッサ
は、複数の秘密鍵演算処理装置のうちどの1つが独立して乗算演算を行なってい
る場合にも、乗算演算を行なうことができないためである。
【0064】 乗算器の連結を説明するために、4×4/4×N乗算器の組合せの簡単な設計
を下に示す。ただし、Boothの符号化および4:2コンプレッサ等の、より
進歩した乗算器設計技術もまた利用可能である。以下に、簡単な実現例を提示す
る。
【0065】
【数3】
【0066】 1桁の乗算は、ANDゲートを用いることによって容易に実現することができ
る。2つの4ビットオペランドを使用した場合、その結果は、部分積の16ビッ
トから構成される。これらの部分積は、効率的に加算されねばならない。部分積
はたとえば、2つの4ビット全加算器および1つの6ビット全加算器を使用して
加算することができるが、それらは部分積の加算を行なうのに相当な時間を要す
るであろう。なぜなら、キャリを複数の加算器を通じて伝搬させる必要があるた
めである。このような加算器実装の全体としての結果は、遅すぎるであろう。よ
りよい方法として、加算器のキャリが通らねばならない段の数がより少なくて済
むような加算器が考えられる。
【0067】 好ましい乗算器の基本的な構成要素は、3つの入力をとってそれら入力の2ビ
ットの合計を出力する、全加算器である。図7に全加算器を、符号を用いて示す
が、ここでは、2進数の代わりに四角形を使用して、一般化および簡素化を図っ
ている。上方の3つの四角は全加算器の3つの入力を示し、下方の2つの四角は
合計出力およびキャリ出力を示す。キャリが左下側にあるのは、その桁の値が合
計のそれの2倍であることを示すためである。
【0068】 4×4乗算器の加算の第1の段を図8に示す。合計線の上方にある16個の四
角は、そのいくつかが黒で示され、その他は白い箱として示されているが、これ
らは、加算されねばならないある部分積のビットを表わしている。黒で示される
ビットは、この第1の段において、4つの全加算器82を使用して加算されるも
のである。白い箱で示すビットは、第1段では加算されずに、図8に矢印で示す
ように、次の加算段に備えて単に下方に送られるビットである。第1の段におけ
る加算器の合計は、合計線の下に示されている。
【0069】 第2の段を図9に示す。矢印はやはり、この現時点の段においては演算されず
に単に下に送られるビットを示し、黒い箱で示されるビットは、この現時点にお
ける(すなわち第2の)段において加算されるべきビットを示す。ここでもやは
り、黒い箱で示したエレメントが4つの全加算器84を使用して加算される。全
加算器84によって生成される第2の段の出力には2つの数があり、これらは今
度は一般的な4ビットキャリ加算器86で加算されねばならない。
【0070】 さまざまな加算器および乗算器アーキテクチャの性能を比較することは、本発
明に従った乗算器の利点を説明するのに役立つであろう。4ビット加算器の簡単
な実現例は、図12に示すように、直列に並んだ4つの全加算器A0〜A3で構
成される。この設計においては、最も右側の加算器のキャリ出力Coutが、その 左側にあるすべての加算器段のそれぞれに影響を及ぼす可能性がある。この設計
におけるクリティカルパスはしたがって、4加算器段である。典型的な全加算器
が2以上の論理段から構成されるので、1つの4ビット加算器の合計ゲート遅延
は8段を超える場合がある。
【0071】 改良された4ビット加算器は、キャリ先見型設計のものである。3ビットのキ
ャリ先見型加算器を図13に示す。4ビット設計はこれよりもわずかに複雑であ
る。ANDゲート102、ORゲート104および排他的ORゲート106の動
作の詳細な説明は、周知の回路であるためここでは省略する。キャリ先見型加算
器の利点は、キャリが最終合計ビットまでわずか4論理ゲートで伝搬することで
ある。より大きな数に対するより複雑な設計は、より多くの論理段を有するが、
それでもキャリ連鎖型設計よりは、やはり高速である。
【0072】 全4×4乗算器において、キャリ保存型設計は、2つの全加算器および最後の
キャリ先見型加算器を通じてクリティカルパスを作る。全加算器のみを使用した
実現例では、クリティカルパスがより長くなるであろう。なぜなら、連鎖型キャ
リを使用する簡単な加算器は、キャリ先見型加算器よりも低速だからである。最
後に、部分積合計の最初の2つの段で全キャリ先見型加算器を使用した場合には
、結果として得られる乗算器はやはり低速となるであろう。なぜなら、キャリ先
見型加算器は個々の全加算器よりは低速なためである。なお、本発明に従った乗
算器設計は、同じ部分積レベルでは、あるキャリをある加算器から別の加算器へ
と伝搬することはない。このようにして、乗算器を通じるクリティカルパスが、
部分積合計の最初の2段において、2つを超える数の全加算器を含むことを確実
に防止している。
【0073】 図10は、はるかに幅の広い4×N乗算器を示す。大きな黒い箱82、84、
86は、図9において使用されていたのと同じ全加算器ハードウェアを示す。こ
の場合、全加算器が必要であるが、これは、各状況において3つの入力が合わせ
て加算されるためである。図9においては、すべての状況において3つの入力の
加算が必要とされたわけではなかったので、より簡単な回路を使用することがで
きた。しかし、4×Nを処理することのできるシステムを作るためには、すべて
の段において好ましくは全加算器が使用され、加えて、2つ以下の入力の場合に
どのように処理を行なうべきかを決定する何らかの付加的な回路が必要となる。
したがって、デュアルモードの加算器が複数個作られ、そのいくつかは1つの乗
算器を有し、この乗算器が自身の複数入力のうち1つを供給することで、先行す
る段の出力または単一ビットの部分積の、どちらかが選択されるようにする。
【0074】 図11は、図10に示す囲んだ領域82、84、86を実現するのに必要とさ
れる全加算器Aを示し、合せてその左下方に、それぞれのキャリ出力を示す。好
ましい実現例においては、各加算器Aは全加算器である。加算器のうちいくつか
は、4×4の場合(すなわち秘密鍵の場合)2つの入力のみを有し、これに対し
、他の加算器は、4×Nの場合(すなわち公開鍵の場合)3入力を有する。2入
力の加算器は、その第3の入力がイネーブル信号でゲート制御されるようにされ
ねばならない。いくつかの加算器はまた、複数入力のうち1つを提供して先の段
の出力または単一ビットの部分積のいずれかを選択するようにする、乗算器を必
要とする。下方に示されたキャリ先見型加算器86は、4×4の場合に積の最終
ビットを生成するために、4つの位置毎に1つのキャリ出力を必要とする。
【0075】 図11において、4×4乗算器の部分積は、以下の部分積のシナリオに対応す
るように参照符号が付されている。
【0076】
【数4】
【0077】 4×N乗算器については、隣接する部分積もまた考慮に入れねばならない。そ
れらは図11において、以下のシナリオに従って参照符号が付されている。
【0078】
【数5】
【0079】 ここで、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乗算器が実現されて、8ビットの積が出力S
7〜S0に現われる。このように、図11の実現例は秘密鍵乗算器素子を示し、
これは、1つの乗算器素子としても利用することができ、または、他の同様の乗
算器素子と連結されて、はるかに幅の広い公開鍵乗算器を実現するのにも使用す
ることができる。
【0080】 実現例 先に説明した暗号化チップの好ましい実施例を参照して、一般的な暗号化アル
ゴリズムの実現例を以下に説明する。RC5はおそらくは、実現するのが最も簡
単な暗号化アルゴリズムのうちの1つであろう。これは基本的に、3つの種類の
演算を利用する。すなわち、XOR、加算および回転である。これらすべては、
表1に示すように、上述の演算処理装置のうちのいずれかによってサポート可能
である。RC5は可変長のブロックを有するが、最も一般的には、RC5アルゴ
リズムの各ラウンドは、Si1およびSi2に記憶される64ビットデータブロ
ックおよび鍵値について演算を行なう。これらは、各演算処理装置内の定数であ
って、そのラウンドおよびその鍵のみに依存する。データを暗号化するために、
64ビットの入力ブロックは2つの32ビット語に分割され、それらはその後、
前隣りのメモリ内の場所AおよびBに記憶される。出力ブロックは、後ろ隣りの
メモリにおけるA_nextおよびB_nextに書込まれることになる。RC
5の暗号化アルゴリズムの1ラウンドの例を以下に示す。
【0081】
【数6】
【0082】 各ラウンドは11クロックサイクルを必要とする。暗号化チップが最高400
MHZで動作し得る論理プロセスを用いるように設計されている場合には、1秒
あたり3600万ブロックを暗号化することが可能である。これは、ECBモー
ドにおいて288MB/sに相当する。12ラウンド(RC5における典型的な
例)を想定すると、同じクロック速度で動作する従来技術によるCPUと比較し
て、本発明の一実施例に従った複数PEの同時実行によって、従来技術によるソ
フトウェア実装に対して12倍も性能が改良されることになる。
【0083】 IDEAは、利用可能なブロックアルゴリズムのうち最も安全なものの1つで
あり、その構造ははるかにより複雑である。IDEAは、64ビットの平文ブロ
ックに対して演算を行ない、128ビットの鍵が使用される。同じアルゴリズム
を暗号化および解読の両方に使用する。このアルゴリズムの主要な原理は、種々
の代数グループの演算、すなわち、XOR、加算モジュロ216および乗算モジュ
ロ216+1等の演算を組合せることである。これらの演算を使用して、16ビッ
トブロックに対する演算を行なう。
【0084】 したがってIDEAは、モジュラ乗算およびモジュラ加算の両方を使用するが
、それらはソフトウェアでは費用が高くつく演算である。乗算は、IDEAのゼ
ロの扱いによって複雑化されている。すなわち、乗算において、ゼロは(−1)
モジュロ65537と解釈されるのである。この値65537が演算処理装置の
レジスタファイルのレジスタr8内にプリロードされていると仮定し、また、レ
ジスタr0がゼロを含むものと仮定して、以下に乗算マクロの例を示す。
【0085】
【数7】
【0086】 IDEAの各ラウンドは、モジュラ乗算、モジュラ加算および排他的ORから
構成される。128ビットの鍵がサブ鍵へと分割される。各演算処理装置のサブ
鍵は、その鍵およびその演算処理装置のみに応じて変化するので、予め計算して
PE内に記憶させておくことが可能である。IDEAに入力される平文は、先に
説明したように、16ビットの4つのサブブロックX1〜X4から構成される。
各ラウンドは、6つのサブ鍵K1〜K6を使用し、以下のようにコード化するこ
とができる。
【0087】
【数8】
【0088】 IDEAは8ラウンドを有するので、本発明の一実施例に従った暗号化チップ
ハードウェア実装はその実行を8倍以上加速する。さらなる加速は、ほとんどの
マイクロプロセッサにおいては利用されないモジュラ乗算命令によってもたらさ
れる。上述のコードは、1ラウンドを実行するのにおよそ50クロックサイクル
を要する。400MHZにおいて、この暗号化チップは、IDEAで64MB/
sのレートで暗号化することができ、これは、チューリッヒのETH大学(ETH
University, Zurich)において開発された25MHZハードウェア実装よりも約
3倍高速である。
【0089】 データ暗号化標準、すなわちDESは、当初、ハードウェア実装のために設計
されたものであり、したがって、ソフトウェアで実現するのが最も困難なアルゴ
リズムである。それでも、本発明の一実施例に従えば、これは暗号化チップにお
いて容易にコード化することが可能である。
【0090】 先の2つのアルゴリズムと同様に、DESもまた、64ビットブロックでデー
タを暗号化するブロック型暗号である。平文の64ビットブロックが入力であり
、64ビットの暗号文が出力となる。ここでもやはり、暗号化と解読の両方が同
じアルゴリズムを使用し、DESを対称的なアルゴリズムとしている。DESは
、この場合においては56ビットの単一の鍵から、サブ鍵を作成する。これらの
サブ鍵は、該当のPEおよびその56ビットの鍵に応じて変化するものであり、
したがって、それらは予め計算しておくことが可能である。
【0091】 図14に示すようなDESにおける基本的な概念は、鍵に基づいてテキスト上
で代入を行ない引続き置換を行なうものである。以下の演算によって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処理される。
【0092】 これらの演算は以下のようにコード化することが可能である。すなわち:拡張
は、入力語をコピーしてから、ビットをマスキングすることによって、1つが偶
数のSボックス入力を表わし他方が奇数のSボックスの入力を表わす2つの語が
存在するようにすることによって行なわれる。これら2つの語を、鍵情報でXO
R処理し、その結果を使用して、Sボックスルックアップテーブルをインデック
スする。各Sボックスにおけるデータは予め置換され、したがって、Sボックス
の出力は32ビットのデータとなる。最終値はすべての構成要素の論理ORであ
る。コードの例を以下に示す。
【0093】
【数9】
【0094】 このサンプルコードは、1ラウンドを実行するのに44クロックサイクルを必
要とする。400MHZにおいて、72MB/sのデータレートが達成され得る
。このレートは、1〜35MB/sの範囲のレートで暗号化を行なう、1990
年代半ばに利用可能となったDESのハードウェア実装に比べて遜色のないもの
である。VLSIテクノロジー(VLSI Technology)のVM007は、最高20 0MB/sで暗号化を行なうことが可能である。
【0095】 以上の例の各々において、その性能は、従来技術におけるCPU上のソフトウ
ェア実装よりもはるかに高速であるが、専用ハードウェア実装よりも低速である
ことが示されている。本発明のハードウェア実装に対する利点は、暗号化チップ
がプログラマブルであり、したがって、今後想定され得るものも含むどのような
アルゴリズムも実装が可能であるということである。
【0096】 特定的な公開鍵アルゴリズムの例は何ら示さなかったが、既存の方法に対して
同様の改良が、本発明の好ましい実施例において説明したのと同様の技術を用い
て実現され得るものと理解されたい。
【0097】 均等物 本発明をその好ましい実施例を参照して特定的に図示しかつ説明したが、当業
者においては、その形および詳細に、前掲の請求の範囲によって規定される本発
明の精神および範囲から離れることなく、種々の変更が行なわれ得ることが理解
されるであろう。当業者においては、日常的な作業の範囲を超えることなく、こ
こに特定的に示した本発明の具体的な実施例に対する多くの均等物が認識される
かまたは確認されるであろう。そのような均等物は、前述の請求の範囲に包含さ
れるものと意図される。
【図面の簡単な説明】
【図1A】 本発明の可能な応用例のブロック図である。
【図1B】 本発明の可能な応用例のブロック図である。
【図2】 本発明を用いた暗号化チップのブロック図である。
【図3】 図2の暗号化チップにおける演算処理装置のブロック図である。
【図4】 図2および図3に示した回路の好ましいチップレイアウトを示す
【図5】 図4に示したレイアウトに対応するように書き直された図3の演
算処理装置ならびに、PEローカルバスおよびグローバルバス接続を示す。
【図6】 図2のPK ALUにおいて使用される加算器回路を示す。
【図7】 PK ALUの乗算器において使用される全加算器の符号を示す
【図8】 全加算器を使用する4×4乗算器の第1段における処理を示す。
【図9】 4×4乗算器の3つの段を示す。
【図10】 4×4乗算器の加算器がその上に重ねられた、幅の広い乗算器
の加算器を示す。
【図11】 図10に示した広い語長の演算器において、同様の乗算器と連
結されるように適合された、4×4乗算器のブロック図である。
【図12】 全加算器を使用する8ビット加算器の従来技術による実現例を
示す。
【図13】 キャリ先見型加算器の従来技術による実現例である。
【図14】 DES暗号化ラウンドをブロック図で表現したものである。
【図15A】 本発明の実施例に従ったモジュラ加算演算を示す機能図であ
る。
【図15B】 本発明の実施例に従ったモジュラ減算演算を示す機能図であ
る。
【図15C】 本発明の実施例に従ったモジュラ調整演算を示す機能図であ
る。
【図15D】 本発明の実施例に従った3つすべてのモジュラ演算の組合せ
を示す機能図である。
【手続補正書】特許協力条約第34条補正の翻訳文提出書
【提出日】平成12年6月27日(2000.6.27)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オコネル,コルマック・エム カナダ、ケイ・2・ケイ 1・ビィ・6 オンタリオ州、カナタ、ジャクソン・コー ト、27 Fターム(参考) 5B061 FF01 GG03 GG13 GG14 RR02 RR07 5J104 JA13 NA02 【要約の続き】

Claims (52)

    【特許請求の範囲】
  1. 【請求項1】 単一のチップ上に演算処理装置のアレイを含む、電子暗号化
    デバイスであって、各演算処理装置は、 暗号化アルゴリズムのラウンドを記憶するための命令メモリを含み、該ラウン
    ドは命令のシーケンスを含み、各演算処理装置はさらに、 命令メモリからのラウンドを実現するためのプロセッサと、 暗号化データオペランドおよび該ラウンドの実行によって得られた暗号化され
    たデータを記憶するためのデータ記憶装置とを含み、 該アレイの演算処理装置は各々、ラウンドのうち1つを実現してその結果を連
    続する演算処理装置に転送し、それにより、該演算処理装置のアレイは演算処理
    装置パイプラインにおいて暗号化アルゴリズムの連続的なラウンドを実現する、
    電子暗号化デバイス。
  2. 【請求項2】 該データ記憶装置は、その1部分が、該線形アレイの隣接す
    る演算処理装置間でデータを転送するために該線形アレイの隣接する演算処理装
    置間で共用される、請求項1に記載の電子暗号化デバイス。
  3. 【請求項3】 各演算処理装置は制御ユニットおよびALUを含み、該制御
    ユニット、命令メモリおよびデータ記憶装置はローカル演算処理装置データバス
    に接続され、該ローカルデータバスはスイッチによって2つの独立した区分に区
    分けされ、該制御ユニットおよび命令メモリは該区分のうちの一方に接続され、
    該ALUおよびデータ記憶装置は該区分のうち他方に接続される、請求項2に記
    載の電子暗号化デバイス。
  4. 【請求項4】 各演算処理装置は制御ユニットおよびALUを含み、該制御
    ユニット、命令メモリ、ローカルデータメモリおよび共用データ記憶装置はロー
    カル演算処理装置バスに接続され、該ローカルバスはスイッチによって、該命令
    メモリおよび該制御ユニットを接続するローカル命令バス区分と、該ALU、ロ
    ーカルデータメモリおよび共用データ記憶装置を接続するローカルデータバス区
    分とに区分けされ、該スイッチは、該2つのローカルバス区分上で独立した同時
    動作を可能にするか、または、該2つのバス区分間の通信を可能にする、請求項
    2に記載の電子暗号化デバイス。
  5. 【請求項5】 各演算処理装置は、該演算処理装置内で乗算演算を行なうた
    めの乗算器をさらに含む、請求項4に記載の電子暗号化デバイス。
  6. 【請求項6】 該暗号化アルゴリズムの実現中に、該パイプライン内の各演
    算処理装置は、結果として得られたデータを、後続の演算処理装置が直接アクセ
    スすることができるように該後続の演算処理装置と共用されるデータ記憶装置内
    に書込む、請求項2に記載の電子暗号化デバイス。
  7. 【請求項7】 該演算処理装置の共用データ記憶装置は、該線形アレイの隣
    接する演算処理装置間でデータを転送するために、該線形アレイの隣接する演算
    処理装置間で共用されるデュアルポートメモリで構成される、請求項2に記載の
    電子暗号化デバイス。
  8. 【請求項8】 各プロセッサは制御ユニットおよびALUを含み、該制御ユ
    ニット、ALU、命令メモリ、ローカルデータメモリおよび共用データ記憶装置
    はローカル演算処理装置データバスに接続され、該ローカルデータバスはスイッ
    チによって2つの独立した区分に区分けされ、該制御ユニットおよび命令メモリ
    は該区分のうち一方に接続されかつ、該ALU、ローカルデータメモリおよび共
    用データ記憶装置は該区分のうち他方に接続される、請求項7に記載の電子暗号
    化デバイス。
  9. 【請求項9】 各演算処理装置は、該演算処理装置内で乗算演算を行なうた
    めの乗算器をさらに含む、請求項1に記載の電子暗号化デバイス。
  10. 【請求項10】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
    区分として連結されるよう適合される、請求項9に記載の電子暗号化デバイス。
  11. 【請求項11】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
    算器として動作しているときには第1の入力の組を選択し、かつ、連結されてい
    るときには、隣接する演算処理装置からの入力を含む第2の入力の組を選択する
    ための入力選択回路を有する、請求項10に記載の電子暗号化デバイス。
  12. 【請求項12】 各プロセッサは制御ユニットおよびALUを含み、該制御
    ユニット、ALU、命令メモリ、ローカルデータメモリおよび共用データ記憶装
    置はローカル演算処理装置データバスに接続され、該ローカルデータバスはスイ
    ッチによって2つの独立した区分に区分けされ、該制御ユニットおよび命令メモ
    リは該区分のうち一方に接続され、かつ該ALU、ローカルデータメモリおよび
    共用データ記憶装置は該区分のうち他方に接続される、請求項1に記載の電子暗
    号化デバイス。
  13. 【請求項13】 グローバルランダムアクセスメモリおよびグローバルバス
    をさらに含み、データは該グローバルランダムアクセスメモリと該演算処理装置
    データ記憶装置との間で該グローバルバスを通じて転送される、請求項1に記載
    の電子暗号化デバイス。
  14. 【請求項14】 該グローバルバスに結合された、該演算処理装置によって
    処理されるデータ語よりも幅の広いデータ語を処理するための中央処理装置をさ
    らに含む、請求項13に記載の電子暗号化デバイス。
  15. 【請求項15】 各演算処理装置は、該演算処理装置内で乗算演算を行なう
    ための乗算器をさらに含む、請求項14に記載の電子暗号化デバイス。
  16. 【請求項16】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
    区分として連結されるよう適合される、請求項15に記載の電子暗号化デバイス
  17. 【請求項17】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
    算器として動作しているときには第1の入力の組を選択し、また、連結されてい
    るときには隣接する演算処理装置からの入力を含む第2の入力の組を選択するた
    めの、入力選択回路を有する、請求項16に記載の電子暗号化デバイス。
  18. 【請求項18】 該中央処理装置は加算器を含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々はキャリ出力および合計出力
    を有し、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1区
    分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、該
    キャリ出力を連続する加算器区分へのキャリ入力として選択するためのキャリ選
    択器と、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、各
    合計出力を同じ加算器区分へのオペランド入力として選択するためのオペランド
    選択器とを含む、請求項13に記載の電子暗号化デバイス。
  19. 【請求項19】 各演算処理装置の各プロセッサは、MmodNを計算する
    モジュロ調整演算を行なう、請求項1に記載の電子暗号化デバイス。
  20. 【請求項20】 各演算処理装置の各プロセッサは、A±BmodNを計算
    するモジュロ加算または減算演算を行なう、請求項1に記載の電子暗号化デバイ
    ス。
  21. 【請求項21】 各演算処理装置の各プロセッサは、A×BmodNを計算
    するモジュロ乗算演算を行なう、請求項1に記載の電子暗号化デバイス。
  22. 【請求項22】 該暗号化デバイスは加算器をさらに含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々は、キャリ出力および合計出
    力を含み、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1
    区分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、キ
    ャリ出力を連続する加算器区分へのキャリ入力として選択するキャリ選択器と、 加算器サイクル内でキャリが得られる限り、連続的なクロックサイクル中、各
    合計出力を同じ加算器区分へのオペランド入力として選択するオペランド選択器
    とを含む、請求項1に記載の電子暗号化デバイス。
  23. 【請求項23】 単一チップ上に演算処理装置の線形アレイを含む、電子暗
    号化デバイスであって、各演算処理装置は、 暗号化アルゴリズムの少なくとも1つのラウンドを実現するのに必要とされる
    コードを記憶するための命令メモリと、 該命令メモリからの該ラウンドを処理するためのプロセッサと、 ローカルデータメモリと、 2つの隣接する演算処理装置間の共用データ記憶装置とを含み、 該線形アレイの演算処理装置は各々、該ラウンドのうち1つを実現しかつ、そ
    の結果を連続する演算処理装置に転送し、それにより、該演算処理装置の線形ア
    レイは演算処理装置パイプラインにおいて該暗号化アルゴリズムの連続的なラウ
    ンドを処理する、電子暗号化デバイス。
  24. 【請求項24】 該暗号化アルゴリズムの実現中、該パイプライン内の各演
    算処理装置は、結果として得られるデータを、後続の演算処理装置によって直接
    アクセスすることができるように該後続の演算処理装置と共用されるデータメモ
    リ内に書込む、請求項23に記載の電子暗号化デバイス。
  25. 【請求項25】 演算処理装置の線形アレイを含む暗号化データ処理システ
    ムであって、各演算処理装置は、 命令メモリと、 該命令メモリからの命令を処理するためのプロセッサと、 データメモリとを含み、 該線形アレイの該演算処理装置のデータメモリは、該線形アレイの隣接する演
    算処理装置間でデータを転送するための、隣接する演算処理装置間で共用される
    デュアルポートメモリを含む、暗号化データ処理システム。
  26. 【請求項26】 各プロセッサは制御ユニットおよびALUを含み、該制御
    ユニット、ALU、命令メモリ、および該演算処理装置のデータメモリは、ロー
    カル演算処理装置データバスに接続され、該ローカルデータバスはスイッチによ
    って2つの独立した区分に区分けされ、該制御ユニットおよび命令メモリは該区
    分のうち一方に接続されかつ、該ALUならびにローカルおよび共用データメモ
    リは該区分のうち他方に接続される、請求項25に記載の電子暗号化システム。
  27. 【請求項27】 各演算処理装置は、該演算処理装置内で乗算演算を行なう
    ための乗算器をさらに含む、請求項25に記載の電子暗号化システム。
  28. 【請求項28】 複数の演算処理装置の該乗算器は、幅のより広い乗算器の
    区分として連結されるように適合される、請求項27に記載の電子暗号化システ
    ム。
  29. 【請求項29】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
    算器として動作しているときには第1の入力の組を選択し、また、連結されてい
    るときには隣接する演算処理装置からの入力を含む第2の入力の組を選択するた
    めの、入力選択回路を有する、請求項28に記載の電子暗号化システム。
  30. 【請求項30】 グローバルランダムアクセスメモリおよびグローバルバス
    をさらに含み、データは該グローバルランダムアクセスメモリと該演算処理装置
    データメモリとの間で該グローバルバスを通じて転送される、請求項25に記載
    の電子暗号化システム。
  31. 【請求項31】 該グローバルバスに結合されて、該演算処理装置によって
    処理されるデータ語よりも幅の広いデータ語を処理するための、中央処理装置を
    さらに含む、請求項30に記載の電子暗号化システム。
  32. 【請求項32】 該演算処理装置内で乗算演算を行なうための乗算器をさら
    に含む、請求項31に記載の電子暗号化システム。
  33. 【請求項33】 複数の演算処理装置の該乗算器は、より幅の広い乗算器の
    区分として連結されるように適合される、請求項32に記載の電子暗号化システ
    ム。
  34. 【請求項34】 各乗算器は部分積加算器を含み、該加算器は、独立した乗
    算器として動作しているときには第1の入力の組を、また、連結されているとき
    には隣接した演算処理装置からの入力を含む第2の入力の組を選択するための、
    入力選択回路を有する、請求項33に記載の電子暗号化システム。
  35. 【請求項35】 該中央処理装置は加算器を含み、該加算器は、 複数加算器区分を含み、該複数加算器区分の各々はキャリ出力および合計出力
    を有し、該複数加算器区分の各々は2つのオペランドのうち各オペランドの1区
    分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、該
    キャリ出力を連続する加算器区分へのキャリ入力として選択するキャリ選択器と
    、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、各
    合計出力を同じ加算器区分へのオペランド入力として選択するオペランド選択器
    とを含む、請求項31に記載の電子暗号化システム。
  36. 【請求項36】 各演算処理装置の各プロセッサは、MmodNを計算する
    モジュロ調整演算を行なう、請求項25に記載の電子暗号化システム。
  37. 【請求項37】 各演算処理装置の各プロセッサは、A±BmodNを計算
    するモジュロ加算または減算演算を行なう、請求項25に記載の電子暗号化シス
    テム。
  38. 【請求項38】 各演算処理装置の各プロセッサは、A×BmodNを計算
    するモジュロ乗算演算を行なう、請求項25に記載の電子暗号化システム。
  39. 【請求項39】 該暗号化デバイスは加算器をさらに含み、該加算器は、 複数の加算器区分を含み、該複数の加算器区分の各々はキャリ出力および合計
    出力を有し、該複数の加算器区分は2つのオペランドのうち各オペランドの1区
    分を処理し、該加算器はさらに、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、該
    キャリ出力を連続する加算器区分へのキャリ入力として選択する、キャリ選択器
    と、 加算器サイクル内でキャリが得られる限り、連続するクロックサイクル中、各
    合計出力を同じ加算器区分へのオペランド入力として選択する、オペランド選択
    器とを含む、請求項25に記載の電子暗号化システム。
  40. 【請求項40】 該暗号化アルゴリズムの実現中、該パイプライン内の各演
    算処理装置は、結果として得られたデータを、後続の演算処理装置が直接アクセ
    スすることができるように該後続の演算処理装置と共用するデータメモリに書込
    む、請求項25に記載の電子暗号化デバイス。
  41. 【請求項41】 乗算器回路であって、該回路は、 複数の乗算器区分を含み、その各々が第1の長さのオペランド語を受取り、さ
    らに、 該乗算器区分が別個の乗算器として動作しているときには第1の入力の組を選
    択し、また、第2の語長のオペランドに対する演算を行なう幅のより広い乗算器
    として該乗算器区分を連結するためには第2の入力の組を選択する、入力選択器
    を含む、乗算器回路。
  42. 【請求項42】 各乗算器区分は部分積加算器を含む、請求項41に記載の
    乗算器。
  43. 【請求項43】 加算器であって、該加算器は、 複数の加算器区分を含み、その各々がキャリ出力および合計出力を有し、該加
    算器区分の各々は2つのオペランドのうち各オペランドの1区分を処理し、さら
    に、 加算器サイクル中にキャリが得られる限り、連続するクロックサイクル中、該
    キャリ出力を連続する加算器区分へのキャリ入力として選択する、キャリ選択器
    と、 加算器サイクル中にキャリが得られる限り、連続するクロックサイクル中、各
    キャリ出力を同じ加算器区分へのオペランド入力として選択する、オペランド選
    択器とを含む、加算器。
  44. 【請求項44】 電子暗号化デバイスであって、該デバイスは単一チップ上
    に、 演算処理装置の線形アレイを含み、その各々は、命令ストアと、データ記憶装
    置と、該命令ストアからの命令のシーケンスを処理して第1の長さのデータ語に
    対する演算を行なうプロセッサとを有し、該演算処理装置の該データ記憶装置は
    、該アレイの隣接する演算処理装置の間でデータを転送するために隣接する演算
    処理装置間で共用されるデュアルポートメモリを有し、該線形アレイの該演算処
    理装置は、自身の命令ストア内に、暗号化アルゴリズムのそれぞれのラウンドを
    記憶しかつ、該ラウンドの結果を連続する演算処理装置に転送し、よって、該演
    算処理装置の線形アレイは、演算処理装置パイプラインにおいて該暗号化アルゴ
    リズムの連続するラウンドを処理し、さらに、 グローバルランダムアクセスメモリと、 該グローバルランダムアクセスメモリと該演算処理装置データメモリとの間で
    それを介してデータが転送される、グローバルバスと、 少なくとも該第1の長さよりも長い第2の長さのデータ語に対する演算を行な
    う、公開鍵暗号化プロセッサとを含み、該公開鍵暗号化プロセッサは、該第2の
    長さの語長でグローバルランダムアクセスメモリにアクセスする、電子暗号化デ
    バイス。
  45. 【請求項45】 単一チップ上に演算処理装置のアレイを含む、電子暗号化
    デバイスであって、各演算処理装置は、 暗号化アルゴリズムのラウンドを記憶するための命令メモリ手段と、 該命令メモリからの該ラウンドを実現するためのプロセッサ手段と、 暗号化データオペランドおよび該ラウンドを実現することによって得られる暗
    号化されたデータを記憶するためのデータ記憶手段とを含む、電子暗号化デバイ
    ス。
  46. 【請求項46】 該データ記憶手段は、その一部が、該線形アレイの隣接す
    る演算処理装置の間でデータを転送するために該線形アレイの隣接する演算処理
    装置の間で共用される、請求項45に記載の電子暗号化デバイス。
  47. 【請求項47】 グローバルランダムアクセス手段およびグローバルバス手
    段をさらに含み、該グローバルランダムアクセス手段と該演算処理装置データ記
    憶手段との間のデータの転送は該グローバルバス手段を介して行なわれる、請求
    項46に記載の電子暗号化デバイス。
  48. 【請求項48】 該グローバルバス手段に結合されて、該演算処理装置によ
    って処理されるデータ語よりも幅の広いデータ語を処理するための、中央処理手
    段をさらに含む、請求項47に記載の電子暗号化デバイス。
  49. 【請求項49】 暗号化方法であって、該方法は、 単一チップ上の電子回路において、暗号化されるべきデータを受取るステップ
    と、 該データを該チップ上のデータ演算処理装置のパイプラインに与えるステップ
    とを含み、各演算処理装置は、暗号化のラウンドを処理し、その結果を連続する
    演算処理装置に転送し、それにより、該演算処理装置が演算処理装置のパイプラ
    インにおいて該暗号化アルゴリズムの連続するラウンドを実現する、方法。
  50. 【請求項50】 結果は共用メモリを介して連続する演算処理装置に転送さ
    れる、請求項49に記載の方法。
  51. 【請求項51】 該チップ上の、グローバルバスを介して該演算処理装置に
    結合された中央処理装置で、暗号化アルゴリズムを処理するステップをさらに含
    み、該中央処理装置は、該演算処理装置によって処理されるデータ語よりも幅の
    広いデータ語を処理する、請求項50に記載の方法。
  52. 【請求項52】 該チップ上の、グローバルバスを介して該演算処理装置に
    結合された中央処理装置において、暗号化アルゴリズムを処理するステップをさ
    らに含み、該中央処理装置は、該演算処理装置によって処理されるデータ語より
    も幅の広いデータ語を処理する、請求項49に記載の方法。
JP2000533976A 1998-02-27 1999-02-26 共用メモリ配線を有する暗号化プロセッサ Expired - Fee Related JP3979786B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* 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
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)

* Cited by examiner, † Cited by third party
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 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体

Cited By (1)

* Cited by examiner, † Cited by third party
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