(57)【要約】【課題】ＲＣ４暗号化を実行するための組合せを提供する。【解決手段】組合せは、Ｓボックスと呼ばれるバイトのアレイに基づき、キーストリームの生成をパイプライン処理する装置および方法を含む。バイトのアレイは、ネットワークシステムの送信機及び受信機で共有される秘密キーから最初に生成される。Ｓボックスは、２つの読出しポートと１つの書込みポートとを有するレジスタファイルであってもよい記憶装置に格納される。Ｓボックス記憶装置から読み出される多数のバイトを格納するためにキャッシュが用いられる。【選択図】図３
2007535000.tif 000002
【特許請求の範囲】
【請求項１】
ＲＣ４暗号化を実行するための装置であって、
バイトのアレイを格納するためのバイトアレイ記憶装置と、
前記バイトアレイ記憶装置から読み出されたバイトアレイの複数のバイトを格納するキャッシュと、
前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つに格納されたデータに基づき、入力データの暗号化において用いられるキーストリームを生成するキージェネレータと、
を含む装置。
【請求項２】
前記バイトアレイの初期値は、ネットワークシステム内の受信機および送信機で共有される秘密キーから生成される、請求項１に記載の装置。
【請求項３】
前記バイトアレイ記憶装置は、２読出し１書込みレジスタファイルを含む、請求項１に記載の装置。
【請求項４】
前記キーストリームの生成をパイプライン処理するよう、前記バイトアレイ記憶装置、前記キャッシュ、および、前記キージェネレータを制御するコントローラをさらに含む、請求項１に記載の装置。
【請求項５】
前記コントローラの制御下で、前記入力データの暗号化バージョンを生成するよう、前記入力データを前記キーストリームでバイトごとにＸＯＲするＸＯＲ機構をさらに含む、請求項１に記載の装置。
【請求項６】
前記キージェネレータは、前記コントローラの制御下で、前記キーストリームをバイトごとに生成する、請求項１に記載の装置。
【請求項７】
前記コントローラは、読み書き動作中の前記バイトアレイ記憶装置と前記キャッシュとの間の衝突を検出しかつ解消する、請求項４に記載の装置。
【請求項８】
前記キージェネレータは、
第１のインデックスに基づき、前記バイトアレイにおける第１のバイトを前記キャッシュから選択する第１のセレクタと、
前記第１のバイトの値の少なくとも一部に基づき、第２のインデックスを獲得する第１の加算器と、
前記第２のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第２のバイトを選択する第２のセレクタと、
前記第１のバイトの値と前記第２のバイトの値とをスワッピングするスワッピング機構と、
前記第１のバイトおよび前記第２のバイトの値の少なくとも一部に基づき、第３のインデックスを獲得する第２の加算器と、
前記第３のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第３のバイトを選択する第３のセレクタと、
を含む、請求項１に記載の装置。
【請求項９】
前記第１のインデックスに対しインクリメント動作を実行し、かつ、前記第１の加算器に少なくとも１つの入力データを提供すべく、前記第１のインデックスおよび前記第２のインデックスに初期値を提供するスケジューラをさらに含む、請求項８に記載の装置。
【請求項１０】
前記スケジューラは、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つの読み書きアドレスを提供すべく、前記コントローラと連携する、請求項９に記載の装置。
【請求項１１】
前記スケジューラは、キーストリームの生成をパイプライン処理すべく、前記コントローラと連携する、請求項９に記載の装置。
【請求項１２】
前記バイトアレイ記憶装置から前記キャッシュへのバイトの書込みを容易にするキャッシュ書込み機構をさらに含む、請求項１に記載の装置。
【請求項１３】
ＲＣ４暗号化を実行する方法であって、
入力データを受信する段階と、
バイトアレイにおける複数のバイトをバイトアレイ記憶装置からキャッシュへ読み出す段階と、
前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つに格納されたバイトアレイのバイトにアクセスする際に用いられる第１のインデックスおよび第２のインデックスを初期化する段階と、
前記入力データの各バイトに対し、
キーストリームのバイトを生成し、かつ、
前記キーストリームのバイトの少なくとも一部に基づき、前記入力データのバイトの暗号化バイトを生成する段階と、
を含む方法。
【請求項１４】
前記入力データの各バイトに対するプロセスは、パイプライン処理され、その結果、第１の繰り返しが終了する前に第２の繰り返しを開始することができる、請求項１３に記載の方法。
【請求項１５】
第１のインデックスをアップデートする段階と、
前記第１のインデックスに基づき、前記キャッシュから前記バイトアレイにおける第１のバイトを読み出す段階と、
前記第１のバイトの少なくとも一部に基づき、前記第２のインデックスをアップデートする段階と、
前記第２のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第２のバイトを読み出す段階と、
前記第１のバイトと前記第２のバイトとをスワッピングする段階と、
前記第１のバイトおよび前記第２のバイトに基づき、第３のインデックスを計算する段階と、
前記第３のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第３のバイトを読み出す段階と、
をさらに含む、請求項１３に記載の方法。
【請求項１６】
前記第１のインデックスをアップデートする段階は、前記バイトアレイにおけるバイト数を法として、前の繰り返しの間に第１のインデックスの値をインクリメントすることを含む、請求項１５に記載の方法。
【請求項１７】
前記第２のインデックスをアップデートする段階は、前記バイトアレイにおけるバイト数を法として、前の繰り返しにおける前記第２のインデックスの値と、前記第１のバイトの値とを加算することを含む、請求項１５に記載の方法。
【請求項１８】
前記第３のインデックスを計算する段階は、前記バイトアレイにおけるバイト数を法として、前記第１のバイトの値と前記第２のバイトの値とを加算することを含む、請求項１５に記載の方法。
【請求項１９】
前記第１のバイトと前記第２のバイトとをスワッピングする段階は、前記キャッシュ内の第１のバイトに置き換えるべく前記第２のバイトを書込み、また、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つにおける第２のバイトに置き換えるべく前記第１のバイトを書き込むことを含む、請求項１５に記載の方法。
【請求項２０】
前記暗号化バイトを生成する段階は、前記第３のバイトと前記入力データのバイトとの間でＸＯＲ演算を実行することを含む、請求項１３に記載の方法。
【請求項２１】
前記キャッシュ内の複数のバイトが使用された後、前記バイトアレイ記憶装置から前記バイトアレイにおける他の複数のバイトを読み出す段階と、前記入力データの残りのバイトそれぞれに対する処理を継続する段階と、をさらに含む、請求項１３に記載の方法。
【請求項２２】
前記キャッシュ内のバイトが前記第２のインデックスの値をアップデートする際に使用された後、前記キャッシュ内のバイトを前記バイトアレイ記憶装置に書き戻す段階をさらに含む、請求項１３に記載の方法。
【請求項２３】
読出し動作および書込み動作の少なくとも１つにおける、前記バイトアレイ記憶装置と前記キャッシュとの間の衝突を検出しかつ解消する段階をさらに含む、請求項１３に記載の方法。
【請求項２４】
ネットワークシステムであって、
交換機機構と、
前記交換機機構により相互接続される複数のラインカードと、
それぞれがラインカードと動作可能に結合されることにより、ＲＣ４暗号化を実行する複数のＲＣ２４モジュールであって、
バイトアレイを格納するバイトアレイ記憶装置と、
前記バイトアレイ記憶装置から読み出されたバイトアレイの複数のバイトを格納するキャッシュと、
前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つに格納されたデータに基づき、入力データを暗号化する際に用いられるキーストリームを生成するキージェネレータと、を含む複数のＲＣ２４モジュールと、
を含むネットワークシステム。
【請求項２５】
前記バイトアレイの初期値は、前記ネットワークシステム内の受信機および送信機で共有される秘密キーから生成される、請求項２４に記載のネットワークシステム。
【請求項２６】
前記バイトアレイ記憶装置は、２読出し１書込みレジスタファイルを含む、請求項２４に記載のネットワークシステム。
【請求項２７】
前記キーストリームの生成をパイプライン処理するよう、前記バイトアレイ記憶装置、前記キャッシュ、および、前記キージェネレータを制御するコントローラをさらに含む、請求項２４に記載のネットワークシステム。
【請求項２８】
前記コントローラの制御下で、前記入力データの暗号化バージョンを生成すべく、前記入力データを前記キーストリームによりバイトごとにＸＯＲするＸＯＲ機構をさらに含む、請求項２４に記載のネットワークシステム。
【請求項２９】
前記キージェネレータは、前記コントローラの制御下で、前記キーストリームをバイトごとに生成する、請求項２４に記載のネットワークシステム。
【請求項３０】
前記コントローラは、読み書き動作における前記バイトアレイ記憶装置と前記キャッシュとの間の衝突を検出しかつ解消する、請求項２７に記載のネットワークシステム。
【請求項３１】
前記キージェネレータは、
第１のインデックスに基づき、前記バイトアレイにおける第１のバイトを前記キャッシュから選択する第１のセレクタと、
前記第１のバイトの値の少なくとも一部に基づき、第２のインデックスを獲得する第１の加算器と、
前記第２のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第２のバイトを選択する第２のセレクタと、
前記第１のバイトの値と前記第２のバイトの値とをスワッピングするスワッピング機構と、
前記第１のバイトおよび前記第２のバイトの値の少なくとも一部に基づき、第３のインデックスを獲得する第２の加算器と、
前記第３のインデックスに基づき、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つから前記バイトアレイにおける第３のバイトを選択する第３のセレクタと、
を含む、請求項２４に記載のネットワークシステム。
【請求項３２】
前記第１のインデックスに対しインクリメント動作を実行し、かつ、前記第１の加算器に１つの入力データを提供すべく、前記第１のインデックスおよび前記第２のインデックスに初期値を提供するスケジューラをさらに含む、請求項３１に記載のネットワークシステム。
【請求項３３】
前記スケジューラは、前記バイトアレイ記憶装置および前記キャッシュの少なくとも１つの読み書きアドレスを提供すべく、前記コントローラと連携する、請求項３２に記載のネットワークシステム。
【請求項３４】
前記スケジューラは、キーストリームの生成をパイプライン処理すべく、前記コントローラと連携する、請求項３２に記載のネットワークシステム。
【請求項３５】
前記バイトアレイ記憶装置から前記キャッシュへのバイトの書込みを容易にするキャッシュ書込み機構をさらに含む、請求項２４に記載のネットワークシステム。
【発明の詳細な説明】
【著作権留保】
【０００１】
本特許文献の開示の一部は、著作権保護された材料を含む。本著作権者は、本特許文献または本特許の開示事項が米国特許商標局の特許ファイルまたは記録に明らかにされている場合は、本特許文献または本特許の開示事項を誰がコピーしようと異議を申立てないが、さもなければ全著作権を留保するものである。
【技術分野】
【０００２】
本発明は、概ねネットワークセキュリティに関し、詳しくは、ＲＣ４暗号化を実行するための装置および方法に関する。
【背景技術】
【０００３】
ネットワークは、コンピュータと他のデバイスとの通信を可能にする。例えば、ネットワークは、ビデオ、オーディオ、電子メールなどを表わすデータを伝送することができる。しかしながら、ネットワークシステムは、プライバシーおよびデータの保全性を失う、同一人物になりすます、サービス拒絶攻撃といった多くの脅威にさらされている。これらの脅威に立ち向かうべく、多くの対策が採られ、ネットワーク通信のセキュリティは向上してきている。例えば、Ｒｉｖｅｓｔ  Ｃｉｐｈｅｒ  ４（ＲＣ４）アルゴリズムは、ワイヤレス・フィディリティー（"ＷｉＦｉ"）を保障するＩＥＥＥ８０２．１１の一部であるＷｉｒｅｄ  Ｅｑｕｉｖａｌｅｎｔ  Ｐｒｉｖａｃｙ（ＷＥＰ）、および、インターネット通信のセキュリティを高めるセキュア・ソケット・レイヤー（ＳＳＬ）通信プロトコルに選ばれている。
【０００４】
ＲＣ４アルゴリズムは、対称キーストリーム暗号アルゴリズムである。対称キーアルゴリズムは、メッセージを暗号化および復号化するのに同じ暗号キーを用いる暗号化のためのアルゴリズムである。対称キーアルゴリズムは、ストリーム暗号とブロック暗号とに区別されることができる。ストリーム暗号は、メッセージのビットをを１つずつ暗号化し、ブロック暗号は、多数のビットを一単位として暗号化する。ＲＣ４暗号化プロセスは、２５６バイトまでの秘密キーから初期化された擬似乱数発生器として機能する。ＲＣ４暗号化プロセスは、キーストリームと呼ばれる一連のバイトを生成する。入力テキストデータ（プレーンテキスト）は、プレーンテキストとキーストリームとの間で排他的論理和（ＸＯＲ）演算を実行することにより暗号化される。ＸＯＲ演算の結果は、入力テキストデータに対応する暗号テキストとなる。同じキーストリームを生成し、かつ、それを暗号テキストを用いてＸＯＲ演算することにより復号化が実行され、プレーンテキストを再生する。ＲＣ４暗号化プロセスがハードウェアで実行される場合は、複雑なハードウェアコンポーネントより、単純なものを使用するほうが望ましい場合もある。それは、単純なコンポーネントのほうが一般的利用価値が高いからである。また、ハードウェアで実行する場合、ダイエリアが小さいほどコストは低く、歩留まりは高く、そして消費電力は小さくなり、ネットワーク通信にとって有益である。
【図面の簡単な説明】
【０００５】
【図１】一般的なネットワークシステムを示す。
【０００６】
【図２】ＲＣ４暗号化プロセスがどのようにしてプレーンテキストを暗号化するかを示す擬似コードを表わす。
【０００７】
【図３】ＲＣ４暗号化プロセスの実施例を示す。
【０００８】
【図４】本発明の実施例に従うＲＣ４暗号化プロセスのパイプライン処理を示す表である。
【０００９】
【図５】本発明の実施例に従うＲＣ４暗号化プロセスの他の実施例を示す。
【００１０】
【図６】本発明の他の実施例に従うＲＣ４暗号化プロセスのパイプライン処理を示す表である。
【００１１】
【図７】ネットワークシステムを示す。
【発明を実施するための最良の形態】
【００１２】
本発明の開示の特徴および利点は、以下の詳細な説明により明らかになるであろう。
【００１３】
本発明の実施例は、ＲＣ４暗号化を実行するための方法および装置を含む。ＲＣ４暗号化プロセスは、キーストリームと呼ばれる一連のバイトを生成することにより実行される。プレーンテキストは、その各バイトをキーストリームの各バイトでＸＯＲ演算することにより暗号化される。同じキーストリームを生成し、かつ、それを暗号テキストでＸＯＲ演算することにより複合化が実行され、その結果プレーンテキストが再生される。ＲＣ４暗号化プロセスは、２５６バイトのアレイ（Ｓボックスと呼ばれる）および２つのインデックス変数ｉおよびｊの形式で内部状態を維持する。Ｓボックスの初期値は、共有秘密キー（送受信側共に同じキーをもつこと）から生成される。キーストリームは、Ｓボックスの値と、変数ｉおよびｊとを処理することにより生成される。ＲＣ４暗号化プロセスの典型的なハードウェア実装では、Ｓボックスは、レジスタファイルに格納される。１バイトのキーストリームを生成するということは、Ｓボックス記憶装置による３つの読出し動作と２つの書込み動作とを含むので、３つの読出しポートと、２つの書込みポートとを有するレジスタファイル（３読出し／２書込みレジスタファイル）がＳボックスには望ましい。Ｓボックスを格納する３読出し／２書込みレジスタファイルをパイプライン処理技術と共に用いることにより、キーストリームの生成は、クロックサイクルごとに１バイトのスループットが実現できる。しかしながら、３読出し／２書込みレジスタファイルは、複雑であり、読出し／書込みポート数がより少ないレジスタファイルに比べると高価なため、一般的でない。本発明の実施例によれば、キャッシュを用いてＳボックス記憶装置から読み出された多数のバイトを格納することもできる。この方法では、クロックサイクルごとに要求されるＳボックス記憶装置からの読出し動作の数が減少するので、２つの読出しポートと１つの書込みポートとをもつレジスタファイル（２読出し／１書込みレジスタファイル）がＳボックスの格納に使用できる。２読出し／１書込みレジスタファイルは、３読出し／２書込みレジスタファイルに比べより一般的で低価格である。一実施例では、パイプライン処理技術と共にキャッシュと２読出し／１書込みレジスタファイルとを使用することにより、３読出し／２書込みレジスタファイルを使用したときよりもＲＣ４暗号化プロセスをより効率よくハードウェア内で実行でき、この方法だと、キーストリーム生成処理のスループットを大幅に犠牲にすることもない。
【００１４】
本発明において、明細書中の「１つの実施例」または「一実施例」は、実施例に関連して記載された特定の機能、構造、または、特徴が、本発明の少なくとも１つの実施例に含まれることを意味する。したがって、明細書中を通じて随所に見られる「一実施例では」という言い回しは、必ずしも同じ実施例を指すものではない。
【００１５】
図１は、多数の端末を支持する一般的なネットワークシステム１１０を示す。ネットワークシステム１１０は、端末から端末へのデータの流れを容易にする、ルータ、スイッチ、および、ブリッジなどの多数のネットワークデバイスを含んでよい。ネットワークシステムは、ワイヤレスシステム、イーサネットシステム、その他のシステム、または、異なるシステムの組合せであってよい。ネットワークシステムは、サテライト１２０を用いることにより、端末から端末への接続を容易にすることもできる。ネットワークシステムの端末は、サーバ１３０、デスクトップコンピュータ１４０、パーソナルデジタルアシスタント（ＰＤＡ）１５０、携帯電話１６０、ラップトップコンピュータ１７０、または、他のデバイスを含み得る。異なる端末間でやり取りされるデータは、ビデオ、オーディオ、メッセージ、および、他のデータを含んでよい。ネットワークシステムは、ＷＥＰ、ＳＳＬまたは他の通信セキュリティの基準を用いてもよい。ＷＥＰ、ＳＳＬまたは他の基準のコンポーネントのように、ＲＣ４暗号化プロセスは、秘密情報および通信の保全性を保障するべくデータを暗号化するよう用いることもできる。
【００１６】
図２は、ＲＣ４暗号化情報を用いてプレーンテキストをどのように暗号化するかを示す擬似コードを表わす。ＲＣ４暗号化プロセスは、Ｓボックスに基づくバイトごとのキーストリームを生成する。Ｓボックスの初期値は、共有秘密キーから生成される。図２に示すような擬似コードでは、S[i]は、Ｓボックスの第ｉ番目のバイトの値を表わし、S[j]は、Ｓボックスの第ｊ番目のバイトの値を表わす。Kは、生成されたキーストリームの１バイトを表わし、Ｐｔｅｘｔは、プレーンテキストの１バイト、Ｃｔｅｘｔは、暗号テキストの１バイトを示す。ライン１では、インデックス変数ｉおよびｊは、０に初期化される。ライン２は、プレーンテキストをバイトごとに暗号化するループを開始する。ライン３では、インデックス変数ｉの値は、その前の値を１増やすことによりアップデートされる。ライン４では、Ｓボックスの第ｉ番目のバイトがＳボックス記憶装置から読み取られ、インデックス変数ｊの値は、その前の値と、ボックスのｉ番目の値Ｓ［ｉ］とに基づきアップデートされる。ライン５では、Ｓボックスのｉ番目のバイトの値とｊ番目のバイトの値とがスワップされ、これは、Ｓボックス記憶装置からＳボックスのｊ番目を読み出すことと、ＳボックスにＳ［ｉ］およびＳ［ｊ］をｊ番目のバイトとｉ番目のバイトとしてそれぞれ書き戻すこととを含む。ライン６では、Ｓ［ｉ］とＳ［ｊ］とを足すことにより第３のインデックスｔが得られる。Ｓボックスは、合計２５６バイトなので、インデックスｉ、ｊまたはｔのいずれの値も０から２５５まで（０および２５５を含む）の範囲内でなければならない。これによって、ライン３、４および６においてｉ、ｊまたはｋを得るために「モジュロ２５６演算」が必要な理由が明らかになる。ライン７では、Ｓボックスのｔ番目のバイトがＳボックス記憶装置から読み出され、生成されたキーストリームの現在のバイトＫとして用いられる。ライン８では、ＫをＰｔｅｘｔでＸＯＲ演算することにより、プレーンテキストの現在のバイト用に暗号バイトＣｔｅｘｔが生成される。ライン２とライン８との間における動作は、プレーンテキスト内のすべてのバイトが暗号化されるまで繰り返される。プレーンテキスト内のすべてのバイトが処理されるライン９で暗号化ループは終了する。復号化プロセスは、ライン８における説明以外は、暗号化プロセスと同一である。すなわち、ＣｔｅｘｔがＫによりＸＯＲ演算されてＰｔｅｘｔが生成される。
【００１７】
図３は、本発明の実施例に従う、ＲＣ４暗号化プロセスを用いての暗号化プロセスの実施例を示す。Ｓボックス記憶装置３１０は、２５６バイトのＳボックスを格納する。一実施例では、Ｓボックス記憶装置は、レジスタファイルを含んでもよい。他の実施例では、Ｓボックス記憶装置は、フリップフロップを含んでもよい。フリップフロップが用いられる場合、２５６Ｓボックスを記憶するのにほぼ２０４８フロップ必要である。２０４８フロップの実装には、レジスタファイルより大きいダイエリアが必要となる可能がある。キーストリームジェネレータ３２０は、図２のライン３からライン７までに示されたような動作を実行するキーストリームをバイトごとに生成する。動作は、第１のインデックス変数ｉの増加、Ｓボックス記憶装置からＳボックスのｉ番目のバイトの読出し、第２のインデックス変数ｊの計算、Ｓボックスのｉ番目のバイトとｊ番目のバイトとのＳボックス記憶装置におけるスワッピング、第３のインデックスｔの計算、および、Ｓボックス記憶装置からのＳボックスのｔ番目のバイトの読出しを含む。コントローラ３３０は、キーストリームを一度に１バイトずつ生成するようＳボックス記憶装置とキーストリームジェネレータとを制御する。コントローラは、特定のバイトを読み書きに使用可するべきときにＳボックス記憶装置に命令を与えてよい。Ｓボックス記憶装置は、また、特定のバイトが読み書き動作可能なときをコントローラに通知することもでき、その結果、コントローラは、キーストリームジェネレータがＳボックス記憶装置との間の読み書き動作を実行するよう指示する。また、コントローラは、あらゆる読み書き動作の衝突の解消またはエラー補正の援助もできる。ＸＯＲマシン３４０は、入力データ３４２とキーストリーム３４４との間でＸＯＲ演算を実行し、入力データから暗号化されたデータ３４６を生成する。ＸＯＲマシンは、コントローラの指示の下で一度に１バイトずつＸＯＲ演算を実行する。したがって、出力された暗号化データ３４６は、バイトごとに生成される。
【００１８】
多くの用途では、暗号化の速度は速いほど望ましい。なぜなら、暗号化の速度が遅いと遅延が長くなり、ネットワーク通信の帯域が限られてしまうからである。ＲＣ４暗号化プロセスの暗号化速度を向上させるべく、一実施例において、キーストリーム生成プロセスは、パイプライン処理が施される。パイプライン処理技術を用いるキーストリームジェネレータは、クロックサイクルごとに１バイトのキーストリームを生成する。すなわち、キーストリームジェネレータは、サイクルごとに１バイトのスループットが可能である。図４は、どのように５段パイプラインが用いられてＲＣ４暗号化プロセスのキーストリームを生成するかを示す。ＲＣ４暗号化をパイプライン処理すべく、図３に示すようなキージェネレータおよびコントローラが用いられ、パイプライン処理スキームを修正することもできる。図４において、"Ｒａｄｄｒ  ｎｍ"は、キーストリームＫｍのｍ番目のバイトを生成するためにＳボックス記憶装置からＳボックスのｎｍ番目のバイトを読み出す動作を示す。同様に、Ｗａｄｄｒ  ｎｍは、キーストリームＫｍのｍ番目のバイトを生成するためにＳボックス記憶装置にＳボックスのｎｍ番目のバイトを書き込む動作を示す。便宜上、図４には、それぞれ読出し動作に付随する付加的動作は示されていない。
【００１９】
キーストリームの最初のバイトＫ１の生成がサイクル１で開始し、その間に初期値ｉ０を１増やすことによりインデックス変数ｉ１の値が得られ、Ｓボックス記憶装置からＳボックスのｉ１番目のバイトＳ［ｉ１］が読み取られる。サイクル２では、ｊの前の値（すなわちｊの初期値ｊ０）とＳ［ｉ１］（すなわちｊ１＝（ｊ０＋Ｓ［ｉ１］）モジュロ２５６）とを加算することにより、インデックス変数ｊ１の値が計算され、次に、Ｓボックスのｊ１番目のバイトＳ［ｊ１］がＳボックス記憶装置から読み出される。続いて、Ｋ２の生成がサイクル２で開始し、その間にｉ１を１増やすことによりｉ２が得られ、Ｓボックス記憶装置からＳ［ｉ２］が読み出される。サイクル３では、Ｓ［ｊ１］がＳボックス記憶装置に書き戻されることによりＳボックスのｉ１番目のバイトに置き換わり、ｊ２が得られ（ｊ２＝（ｊ１＋Ｓ［ｉ２］）モジュロ２５６）、また、Ｓボックス記憶装置からＳ［ｊ２］が読み出される。そして、ｉ３（＝（ｉ２＋１）モジュロ２５６）を取得し、Ｓボックス記憶装置からＳ［ｉ３］を読み出すことに伴い、Ｋ３の生成が開始する。サイクル４では、Ｓ［ｉ１］は、Ｓボックス記憶装置に書き戻され、Ｓボックスのｉ１番目のバイトに置き換えられ、Ｓ［ｊ２］は、Ｓボックス記憶装置に書き戻され、Ｓボックスのｉ２番目のバイトに置き換えられる。ｊ３（ｊ３＝（ｊ２＋Ｓ［ｉ３］）モジュロ２５６）が得られ、Ｓ［ｊ２］がＳボックス記憶装置から読み出される。そして、ｉ４（＝（ｉ３＋１）モジュロ２５６）を取得し、Ｓボックス記憶装置からＳ［ｉ４］を読み出すことに伴い、Ｋ４の生成が開始される。サイクル５では、インデックス変数ｔ１の値が得られ（ｔ１＝（Ｓ［ｉ１］＋Ｓ［ｊ１］）モジュロ２５６）、Ｓボックス記憶装置からＳ［ｔ１］が読み出され、Ｓ［ｉ２］がＳボックス記憶装置に書き戻されることにより、Ｓボックスのｊ３番目のバイトに置き換えられる。そして、ｊ４が得られ（ｊ４＝（ｊ３＋Ｓ［ｉ４］）モジュロ２５６）、Ｓボックス記憶装置からＳ［ｊ４］が読み出される。そして、ｉ５（＝（ｉ３＋１）モジュロ２５６）を取得し、Ｓボックス記憶装置からＳ［ｉ５］を読み出すことに伴い、Ｋ５の生成が開始される。サイクル５の終了では、キーストリームの最初のバイトＫ１（＝Ｓ［ｔ１］）が生成され、サイクル６において入力データの最初のバイトを暗号化するのに用いることができる。サイクル５から先の３つの読出し動作および２つの書込み動作（サイクル５を含む）は、各サイクル同時に実行される。また、キーストリームのバイトは、サイクル５から先の各サイクルの終わりで生成される。生成されるべきキーストリームが多くのバイトを含む場合、キーストリーム生成プロセスのスループットは、ほぼサイクルごとに１バイトとなる（最初の４サイクルで生成されたキーストリームにはバイトは存在しない）。
【００２０】
図４に示すような５段パイプラインを用いてＲＣ４暗号化プロセスを実行することにより、キーストリームジェネレータのサイクルごとに１バイトのスループットを実現できる。このような方法には、サイクルごとに３つの読出し動作と２つの書込み動作とが必要になる。
一般的に、ＲＣ４アルゴリズムのＳボックスは、レジスタファイルに格納される。図４に示したような５段パイプラインを使用すると、３つの読出しポートと２つの書込みポートとをもつレジスタファイル（３読出し２書込みレジスタファイル）が必要である。３読出し２書込みレジスタファイルは、より少ない読出し／書込みポート数をもつレジスタファイルに比べ複雑であり、大きなダイ領域を必要とするので一般的でない。その上、３読出し２書込みレジスタファイルでは、ＲＣ４暗号化プロセスが動作できる周波数も限られている。別の方法としては、ＲＣ４暗号化プロセスのキーストリーム生成をパイプライン処理するために２読出し１書込みレジスタファイルを使用してＳボックスを格納する。しかしながら、このような方法だとキーストリーム生成のスループットが大幅に減少してしまう可能性がある。
【００２１】
図２に見られるように、インデックス変数ｉの値は、繰り返されるごとにインクリメントされる。これは、Ｓ［ｉ］が連続した繰り返しにおいてＳボックス記憶装置の連続した位置（バイト）から／に読み書きされることを意味する。また、ＲＣ４アルゴリズムを用いた暗号化動作は、一般的にマルチバイトメッセージで実行される。それ故、図２に示すようなアルゴリズムの多数の繰り返しが実行されることによりマルチバイトのキーストリームが生成される。したがって、Ｓボックスのいくつかのバイトは、同時にレジスタから読み出され、キャッシュに格納される。同時にレジスタファイルから読み出されるバイト数は、変化してよい（例えば４あるいは８つ）。キャッシュはフリップフロップにより形成されてよい。説明の便宜上、キャッシュのサイズは８バイトと仮定する。すなわち、Ｓボックスの８バイトは、Ｓボックス記憶装置から同時に読み出されてよい。それによって、キーストリームジェネレータは、（図２に示すような）次の８つの繰り返しのためキャッシュから／にＳ［ｉ］を読み書きすることにより、８バイトのキーストリームを生成することができる。８番目の繰り返しの終了時に、１つの動作においてキャッシュの８バイトは、レジスタファイルに書き戻されてよい。この方法を用いると、Ｓボックスを格納するために２読出し１書込みレジスタファイルを用いることができ、ＲＣ４アルゴリズムはなおも、キーストリーム生成に１サイクル１バイトに近いスループットを達成することができる。
【００２２】
図５は、Ｎバイトのキャッシュ（Ｎは任意の数）と共に２読出し１書込みレジスタファイルを用いるＲＣ４暗号化プロセスの実施例を示す。Ｓボックス記憶装置５１０は、２読出し１書込みレジスタファイルであってよい。Ｓボックス記憶装置は、２つの読出しポート５１２および５１４と、１つの書込みポート５１６とを有する。読出しポート５１２および５１４と、書込みポート５１６とのアドレスは、ライン５０２、５０４、および、５０６をそれぞれ介しコントローラ５４０により提供される。キャッシュ書込み機構５２０は、Ｓボックス記憶装置からＮバイト読み出し、それをキャッシュ５３０に書き込むことができる。一実施例では、キャッシュ書込み機構は、キャッシュに一体化されてもよい。キャッシュは、キーストリームのＮバイトの生成に用いられる、Ｓボックス記憶装置から読み取られたＳボックスのＮバイトを格納する。Ｓ［ｉ］は、連続する繰り返しにおいてＳボックス内の連続する位置から／に読み出され／書き込まれる。ＲＣ４暗号化プロセスの連続の繰り返しにおけるＳ［ｉ］のこの予測性により、ＳボックスのＮの連続するバイトはＳボックス記憶装置から読み出され、キャッシュ５３０に格納されることができる。その結果、Ｓ［ｉ］は、ＲＣ４暗号化プロセスの次のＮ回の繰り返しのためにキャッシュから／に直接読み出され／書き込まれることができる。
【００２３】
図５におけるキージェネレータ５５０は、各繰り返しの終了時にキーストリームのバイトを生成する。コントローラ５４０がＳボックス記憶装置、キャッシュ書込み機構、キャッシュ、キージェネレータ、および、ＸＯＲ機構５９０を制御することにより、それらが協働してバイトごとの入力データに対する暗号化された出力データを生成する。キージェネレータ５５０は、第１のセレクタ５５５、第２のセレクタ５６０、第３のセレクタ５６５、第１の加算器５７０、第２の加算器５７５、スワッピング機構５８５、および、スケジューラ５８０を含む。第１のセレクタ５５５は、コントローラからの指示の下、ＲＣ４暗号化プロセスの現在の繰り返しのためのキャッシュ５３０からＮのＳボックスバイト（５３２）中のＳ［ｉ］を選択する。第１の加算器５７０は、コントローラからの指示の下、前の繰り返し（５８４）からの値ｊと、第１のセレクタにより選択されたＳ［ｉ］（５６２）とを加算することにより、現在の繰り返し（５８８）のための値ｊを生成する。スケジューラ５８０は、コントローラの指示の下、第１の繰り返しの前にｉおよびｊの値を０に初期化し、前の繰り返しからｉの値を１増加させることにより、現在の繰り返し（５８２）のための値ｉを第１のセレクタに提供し、そして、前の繰り返し（５８４）からｊの値を第１の加算器に提供することができる。また、第１の加算器により生成された、現在の繰り返し（５８８）のための値ｊは、スケジューラに送られる。その結果、スケジューラは、現在の繰り返しのためにＳ［ｊ］を獲得するようコントローラ５４０に要求する。Ｓ［ｊ］は現在キャッシュ内にあり得る。キャッシュに格納されたＳボックスのＮバイトは、それらのバイトの最もアップデートされたバージョンを表わすので、コントローラは、キャッシュとＳボックス記憶装置とのどちらもＳ［ｊ］を含む場合、Ｓボックス記憶装置ではなくキャッシュからＳ［ｊ］を読み出すよう指示する。第２のセレクタ５６０は、もしあれば、コントローラの制御の下、キャッシュに格納されたバイト、および、Ｓボックス記憶装置から読み出されたバイトとの中から１バイトをＳ［ｊ］として選択する。
【００２４】
次に、第２のセレクタにより選択されたＳ［ｊ］（５６２）は、コントローラの制御の下で、スワッピング機構５８５により、第１のセレクタで選択されたＳ［ｉ］（５５２）とスワッピングされる。スワッピングプロセスの間、図５の５６４に示すＳ［ｊ］は、キャッシュ５３０に書き込まれ、キャッシュ書込み機構５２０を介しＳ［ｉ］に置き換えられる。その間に、現在の繰り返しに用いられているＳ［ｊ］がＳボックス記憶装置から読み出された場合、図５の５５４に示すようなＳ［ｉ］がＳボックス記憶装置に書き戻され、Ｓ［ｊ］に置き換えられる。一方、Ｓ［ｊ］がキャッシュから読み出された場合、Ｓ［ｉ］は、キャッシュに書き戻されてＳ［ｊ］に置き換えられる。さらに、第１および第２のセレクタからそれぞれ選択されたＳ［ｉ］およびＳ［ｊ］の値が足し合わされ、第３のインデックス変数ｔの値を生じる（５８６）。ｔ（５８６）の値がスケジューラ５８０に送られ、その結果、スケジューラは、コントローラに現在の繰り返しのためのＳ［ｔ］を獲得するよう要求する。Ｓ［ｔ］は現在キャッシュ内にあり得る。キャッシュ内に格納されたＳボックスのＮバイトは、これらのバイトの最もアップデートされたバージョンを表わすので（キャッシュ内のバイトはキーストリーム生成のプロセスの間にアップデートできる）、コントローラは、キャッシュとＳボックス記憶装置とのどちらもＳ［ｔ］を含む場合、Ｓボックス記憶装置ではなく、キャッシュからＳ［ｔ］を読み出すよう指示する。第３のセレクタ５６５は、コントローラの制御の下、もしあれば、キャッシュに格納されたバイトと、Ｓボックス記憶装置から読み出されたバイトとの中から１つのバイトをＳ［ｔ］として選択する。第３のセレクタにより選択されたＳ［ｔ］５９２は、現在の繰り返しのためのキーストリームのバイトＫである。次に、Ｋは、ＸＯＲ機構５９０により、入力データ５９４の対応するバイトでＸＯＲされる。
【００２５】
すべてのＳボックスインデックス変数ｉ、ｊおよびｔの値は、０および２５５を含む０から２５５の間にあるので（Ｓボックスが合計２５６バイトを有すると仮定し、Ｓボックスが合計Ｍバイトを有する場合、ｊの値は０からＭ−１の間にあるべきである）、スケジューラにより実行されるインクリメント動作と、第１および第２の加算器により実行される加算演算とは、すべてモジュロ２５６（ｍｏｄ２５６、または、「ｍｏｄＭ」演算になる。Ｎ回の繰り返しの後、キャッシュのＮバイトは、Ｓボックスに書き戻される。書き戻されたＮバイトの値は、Ｎ回の繰り返しが開始される前にＳボックス記憶装置から最初に読み出されたＮバイトの値とは異なる。
【００２６】
図６は、図５で示した実施例のキーストリームを３段パイプラインを用いてどのように生成するかを示す。キーストリームの生成をパイプライン処理すべく、図５に示すようなコントローラ５４０およびキージェネレータ５５０（特にスケジューラ５８０）は修正される必要があり、その結果、各繰り返しは、極力各クロックサイクルで開始される。図６において、「Ｒａｄｄｒ  ｎｍ」は、キーストリームのｍ番目のバイトＫｍを生成するべくＳボックス記憶装置からＳボックスのｎｍ番目のバイトを読み出す動作を示す。「Ｗａｄｄｒ  ｎｍ」は、キーストリームのｍ番目のバイトＫｍを生成するべくＳボックス記憶装置にＳボックスのｎｍ番目のバイトを書き込む動作を示す。「Ｒａｄｄｒ  ｎｍ−ｎｌ」は、ｎｍ番目のバイトから開始するＳボックスのＮの連続するバイトをＳボックス記憶装置から、ｋｍからｋｌ間でのキーストリームのｍ番目からｌ番目までを生成するキャッシュに読み出す動作を示す（Ｎは、キャッシュのサイズを示し、Ｉ＝ｍ＋Ｎ−１である）。「Ｗａｄｄｒ  ｎｍ−ｎｌ」は、ＫｍからＫｌまでを生成するべくＳボックス記憶装置から最初に読み出されたＮの連続したバイトに置き換えるべく、キャッシュからＳボックス記憶装置へＮバイトを書き込む動作を示す（Ｎは、キャッシュのサイズを示し、Ｉ＝ｍ＋Ｎ−１である）。便宜上、図６には、各読出し動作に付随する付加的ないかなる動作も示されていない。一般的に、キャッシュのサイズは、４バイト、８バイト、１６バイト、あるいは他のいずれの数のレジスタファイルのラインサイズと同じでよい。図６では、キャッシュのサイズは８バイトと仮定することにより、Ｓボックス記憶装置から連続した８バイトが一度に読み出され、キャッシュに格納されるものとする。
【００２７】
図６に示すように、１サイクルにおけるインデックス変数ｉ１の値は、初期値０を１増やすことにより得られ、ｉ１番目から始まるＳボックス記憶装置内の連続した８バイトは、キャッシュに読み出される。サイクル２では、インデックス変数ｊ１の値は、ｊの前の値（すなわちｊの初期値ｊ０）と、Ｓ［ｉ１］（すなわちｊ１＝（ｊ０＋Ｓ［ｉ１］）モジュロ２５６）とを加算することにより計算され、次に、Ｓボックスのｊ１番目のバイトがキャッシュにある場合は読み取られ、キャッシュにない場合は、Ｓボックス記憶装置から読み取られる。サイクル３では、Ｓ［ｊ１］がキャッシュに書き込まれることにより、Ｓボックスのｉ１番目のバイトに置き換わり、Ｓ［ｊ１］がサイクル２でキャッシュから読み出されていれば、Ｓ［ｉ１］はキャッシュに書き込まれ、Ｓ［ｊ１］に置き換わる。そうでない場合、Ｓ［ｉ１］は、Ｓボックス記憶装置に書き戻され、Ｓ［ｊ１］に置き換わり、ｊ２が得られる（ｊ２＝（ｊ１＋Ｓ［ｉ２］）モジュロ２５６）。そして、Ｓ［ｊ２］がキャッシュにある場合、Ｓ［ｊ２］はキャッシュから読み出され、そうでない場合、Ｓボックス記憶装置から読み出される。そして、インデックス変数ｔ１が得られ（ｔ１＝（Ｓ［ｉ１］］＋Ｓ［ｊ１］）モジュロ２５６）、Ｓ［ｔ１］がキャッシュにある場合はキャッシュから読み出され、そうでない場合は、Ｓボックス記憶装置から読み出される。サイクル３の終了時に、キーストリームの第１のバイトＫ１(＝Ｓ［ｔ１］)が生成され、入力データの第１のバイトを暗号化するために用いられることができる。サイクル３から１０まで（サイクル３および１０を含む）の間に、２つの読出し動作と１つの書込み動作とが各サイクルで同時に実行され、キーストリームのバイトは、各サイクルの終わりに生成される。
【００２８】
サイクル９の後、サイクル１でＳボックス記憶装置から読み出されたキャッシュの８バイトすべてはインデックス変数ｊの値を生成すべく読み取られ、かつ、使用されている。サイクル１０では、ｉ９番目のバイト（ｉ９＝ｉ８＋１＝ｉ１＋８）から始まるＳボックスの他の連続する８バイトがキャッシュ書込み機構を介しＳボックス記憶装置からキャッシュへと読み出される。これは、キャッシュ内に現在あるバイトがＳボックス記憶装置に書き戻される前に、それら新しく読みだされた８バイトを一時的に保持するものである。サイクル１０では、Ｓ［ｊ８］がキャッシュに書き込まれてＳボックスのｉ８番目のバイトに置き換わり、Ｓ［ｊ８］がサイクル９においてキャッシュから読み出されていれば、Ｓ［ｉ８］がキャッシュに書き込まれ、そうでなければ、Ｓ［ｉ８］は、Ｓボックス記憶装置に書き戻されてそこでＳ［ｊ８］に置き換わる。そして、ｔ８が得られる（ｔ８＝（Ｓ［ｉ８］＋Ｓ［ｊ８］）モジュロ２５６）。そして、Ｓ［ｔ８］がキャッシュにあればＳ［ｔ８］はキャッシュから読み出され、キャッシュにない場合は、Ｓボックス記憶装置から読み出される。サイクル１１では、キャッシュに現在ある８バイトがＳボックス記憶装置に書き戻されることにより、ｉ１番目からｉ８番目までのバイトに置き換わる（書き戻されるバイトは、スワッピング動作により、Ｓボックス記憶装置内の同じ場所から最初に読み出されたバイトと同じでなくてもよい）。次に、サイクル９で新たに読み出された連続する８バイトは、キャッシュ書込み機構からキャッシュへと移されることができる。またサイクル１１で、ｊ９が得られ（ｊ９＝（ｊ８＋Ｓ［ｉ９］モジュロ２５６）、８バイトがサイクル９においてＳボックス記憶装置から読み取られたときにＳ［ｉ９］の値が得られ、Ｓボックス記憶装置からＳ［ｊ２］が読み出される。サイクル１２から始まる以降の８サイクルでは、２つの読出し動作および１つの書込み動作が実行され、各サイクルからキーストリームの１つのバイトが生成されてよい。概して、図６に示すような３段階パイプラインを用いることにより、本発明の実施例は、キーストリームを生成すべく９サイクルごとに８バイトのスループットを成しえる。このスループットは、１サイクルにつき１バイトに近い。
【００２９】
図７は、ＲＣ４暗号化を実行できるネットワークシステムを示す。このシステムは、交換機機構７１０（例えばクロスバーまたは共有メモリ交換機機構）など）により相互接続されるラインカード（ブレード）の集まり７２０を含む。個別のラインカードは、同じ物理的位置または異なる物理的位置（例えば違う都市）にあってよい。例えば、交換機機構は、Ｃｏｍｍｏｎ  Ｓｗｉｔｃｈ  Ｉｎｔｅｒｆａｃｅ（ＣＳＩＸ）またはＨｙｐｅｒＴｒａｎｓｐｏｒｔ、Ｉｎｆｉｎｉｂａｎｄ、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、Ｐａｃｋｅｔ−Ｏｖｅｒ−ＳＯＮＥＴ  （同期型光ネットワーク）、ＲａｐｉｄＩＯおよび／またはＵＴＯＰＩＡ（Ｕｎｉｖｅｒｓａｌ  Ｔｅｓｔ  ａｎｄ  Ｏｐｅｒａｔｉｏｎｓ  ＰＨＹ（物理層）Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  ＡＴＭ）など他の構成技術に適合できる。
【００３０】
個別のラインカード（例えば７２０Ａ）は、ネットワーク接続におけるネットワークを処理する１つまたはそれ以上の物理層（ＰＨＹ）デバイス７２２（例えば光、ワイヤ、および、ワイヤレスＰＨＹ）を含んでよい。ＰＨＹは、異なるネットワーク媒体により伝送された物理的信号とデジタルシステムで用いられるビット（"０"−Ｓおよび"１"−Ｓなど）間を変換する。ラインカード７２０は、エラー検出および／または接続のようなフレーム上で動作可能なフレーマデバイス７２４（イーサネット、同期型光ネットワーク（ＳＯＮＥＴ）、ハイレベルデータリンク（ＨＤＬＣ）フレーマまたは他のレイヤ２デバイス）を含んでもよい。
図に示すラインカード７２０は、また、ＰＨＹを介し受信されたパケットに対しパケット処理動作を実行し、かつ、交換機機構７１０を介し、パケットの方に向いた出口インターフェースを提供するラインカードにパケットを導く１つまたはそれ以上のネットワークプロセッサ７２６を含んでもよい。ネットワークプロセッサ７２６は、フレーマデバイス７２４に代わってレイヤ２の機能を果たすこともある。
【００３１】
ネットワークプロセッサ７２６は、インテル社のＩｎｔｅｒｎｅｔ  ｅＸｃｈａｎｇｅ  ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ（ＩＸＰ）、または、設計が異なる他のネットワークプロセッサであってよい。ネットワークプロセッサは、単一の集積回路におけるパケット処理エンジンの集まりを含む。個々のエンジンは、多数の実行スレッドを提供することもできる。
また、ネットワークプロセッサは、ほとんどの場合、ネットワーク動作に含まれる「制御プレーン」タスクを実行すべくプログラムされているコアプロセッサを含む。このコアプロセッサは、「データプレーン」タスクも取り扱うことができる。ネットワークプロセッサ７２６は、他のネットワーク要素との間でパケットのやりとりができる少なくとも１つのインターフェースを含む。例えば、プロセッサは、交換機機構インターフェース７１０を含み、それによってプロセッサ７２６がパケットを他のプロセッサまたは交換機機構インターフェース７１０に接続された回路に伝送できるようにすることができる。プロセッサ７２６は、また、物理層（ＰＨＹ）および／またはリンク層デバイス（ＭＡＣまたはフレーマデバイスなど）との通信を可能にするインターフェースを含むこともできる。プロセッサ７２６は、さらに、例えばホストまたは他のネットワークプロセッサとの通信のためのインターフェース（例えばＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスインターフェース）を含む。さらに、プロセッサ７２６は、メモリコントローラ、ハッシュエンジン、および、内部スクラッチパッドメモリなどのエンジンで共有される他の構成要素も含む。
【００３２】
図７に示すように、各ラインカード７２０は、ＲＣ４暗号化を実行する少なくとも１つのＲＣ４モジュール７３０（例えば７３０Ａ）と動作可能に結合されてよい。一実施例では、ＲＣ４モジュールは、ラインカードと分離していてもよい。他の実施例では、ＲＣ４モジュールは、ラインカードと一体化していてもよい。また、一実施例では、ＲＣ４モジュールは、ネットワークプロセッサ７２６の一部、または、ＰＨＹ７２２の一部であってもよい。さらに他の実施例では、ＲＣ４モジュールは、リンク層、ネットワーク層、および／または、アプリケーション層などの他のネットワーク層に配置されてよい。
【００３３】
本開示の実施例を図１から図７までを参照して説明してきたが、これ以外にも本開示を実施する多くの方法が用いられてよいことは当業者であれば理解できるであろう。例えば、機能ブロックまたはプロセスの実行順序は、変更してよく、および／または、記載された機能ブロックまたはプロセスは、変更、削除、または、組み合わせてよい。
【００３４】
本発明のさまざまな態様については先に述べたとおりである。本開示をわかりやすく説明すべく、特定の数、システム、および構成を記載している。しかしながら、本開示を特定の詳細な記述なしに実施しうることは、本開示によって利益を得る当業者にとっては明らかである。その他、本発明の開示を不明瞭にしないよう、よく知られた特徴、構成要素、またはモジュールなどは省略するか、簡易化するか、組み合わせるか、または、分割するなどした。
【００３５】
明細書中に記載された本発明の開示の実施例は、ハードワイヤード回路、デジタル回路、アナログ回路、プログラマブル回路といった回路において実行してよい。また、コンピュータプログラムで実行してもよい。そのようなコンピュータプログラムは、ハイレベルプロシージャまたはオブジェクト指向プログラミング言語にコード化されてよい。プログラムは、必要であれば、アセンブリまたはマシン言語で実行することもできる。言語は、コンパイルまたは翻訳されてよい。また、これらの技術は、様々なネットワーク環境で使用することができる。このようなコンピュータプログラムは、汎用または専用プログラマブル処理システムによって読み取られることができる記憶媒体または装置（例えばハードディスクドライブ、フロッピーディスクドライブ、リードオンリーメモリ（ＲＯＭ）、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、デジタル多用途ディスク（ＤＶＤ）、または、他の記憶装置）に格納されてよく、これらの記憶媒体または装置は、処理システムにより読み取られて本明細書中に記載された手順を実行するときに、処理システムを設定しかつ動作させる。本開示の実施例は、また、処理システムと共に使用するよう構成され、本明細書中に記載された機能を実行すべく処理システムを特定の予め定義された方法で動作させるためのマシン可読記憶媒体として実行するように考えられてもよい。
【００３６】
以上、本発明の一側面を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることができる。その様な変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図１】
2007535000.tif 000003
【図２】
2007535000.tif 000004
【図３】
2007535000.tif 000005
【図４】
2007535000.tif 000006
【図５】
2007535000.tif 000007
【図６】
2007535000.tif 000008
【図７】
2007535000.tif 000009
【国際調査報告】
2007535000.tif 000010
2007535000.tif 000011
2007535000.tif 000012