(57)【要約】霞暗号処理を実行する処置を提供する。本処置は、霞ラウンドにおける２つのＦＩ関数の演算を１クロックサイクル内で並列化して、霞ラウンドにおける連続する２つのＦＬ関数を１クロックサイクル内で演算する装置及び方法を含む。【選択図】図６
2007535001.tif 000002
【特許請求の範囲】
【請求項１】
霞暗号処理を実行する装置であって、
前記霞暗号処理が必要とする８つの霞ラウンドを演算する霞ラウンド演算メカニズムと、
前記８つの霞ラウンドのそれぞれの演算に必要なサブ鍵を生成するサブ鍵生成部と、
前記８つの霞ラウンドをまたがって連続する２つのＦＩ関数の演算の並列処理により、霞の最終出力を生成する目的で、前記霞ラウンド演算メカニズム及び前記サブ鍵生成部を制御する制御部とを含む霞暗号処理を実行する装置。
【請求項２】
前記霞ラウンド演算メカニズムは、
霞ラウンドのおけるＦＬ関数を演算するＦＩ及びＦＬ関数の演算を制御するＦＩ／ＦＬ促進部と、
１つの霞ラウンド内で連続する２つのＦＩ関数及び２つの霞ラウンドをまたがる連続する２つのＦＩ関数の少なくとも１つを、１クロックサイクル内でパラレルに演算するＦＩ―ＦＩ演算メカニズムと、
前記霞ラウンドにおけるＦＬ関数を演算するＦＬ−ＦＬ演算メカニズムとを含む請求項１に記載の装置。
【請求項３】
前記ＦＩ／ＦＬ促進部は、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムに対して入力データを準備する入力準備部と、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムの出力データを、次のＦＩ及びＦＬ演算に対して準備し、前記霞暗号処理の最終出力結果を生成する出力制御部とを含む請求項２に記載の装置。
【請求項４】
前記制御部に動作可能に結合され、霞ラウンドの演算において、前記ＦＬ−ＦＬ演算メカニズムに用いられるＫＬサブ鍵を選択するＫＬセレクタと、
前記制御部に動作可能に結合され、前記霞ラウンドの演算において、前記ＦＩ−ＦＩ演算メカニズムに用いられるＫＯサブ鍵を選択するＫＯセレクタと、
前記制御部に動作可能に結合され、前記霞ラウンドの演算において、前記ＦＩ−ＦＩ演算メカニズムに用いられるＫＩサブ鍵を選択するＫＩセレクタとを更に含む請求項１に記載の装置。
【請求項５】
前記制御部は、前記霞ラウンド演算メカニズムにおいて、ＦＩ／ＦＬ促進部を介して霞ラウンド演算を制御する請求項１に記載の装置。
【請求項６】
前記ＦＬ−ＦＬ演算メカニズムは、２つの霞ラウンドをまたがる連続する２つのＦＬ関数を１クロックサイクル内で演算する請求項２に記載の装置。
【請求項７】
霞ラウンドを演算する装置であって、
前記霞ラウンドにおいて、ＦＩ及びＦＬ関数の演算を制御するＦＩ／ＦＬ促進部と、
連続する２つのＦＩ関数をパラレルに１クロックサイクル内で演算するＦＩ−ＦＩ演算メカニズムと、
前記霞ラウンドにおいて、ＦＬ関数を演算するＦＬ−ＦＬ演算メカニズムとを含む装置。
【請求項８】
前記ＦＩ／ＦＬ促進部は、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムに対して入力データを準備する入力準備部と、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムの出力データを、次のＦＩ及びＦＬ演算に対して準備し、前記霞暗号処理の最終出力結果を生成する出力制御部とを含む請求項７に記載の装置。
【請求項９】
前記ＦＩ／ＦＬ促進部は、前記霞ラウンドにおいて必要とされるＦＩ及びＦＬ関数を演算する目的で、前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムを促進する請求項７に記載の装置。
【請求項１０】
前記連続する２つのＦＩ関数は、１つの霞ラウンド内で連続する２つのＦＩ関数である請求項７に記載の装置。
【請求項１１】
前記連続する２つのＦＩ関数は、２つの霞ラウンドをまたがる連続する２つのＦＩ関数である請求項７に記載の装置。
【請求項１２】
前記ＦＬ−ＦＬ演算メカニズムは、２つの霞ラウンドをまたがる連続する２つのＦＬ関数を１クロックサイクル内で演算する請求項７に記載の装置。
【請求項１３】
霞ラウンドにおけるＦＩ関数を演算する目的で、動作可能に導入されるＦＩ−ＦＩ演算メカニズムを含む、霞ラウンドにおけるＦＩ関数を演算する装置。
【請求項１４】
前記ＦＩ−ＦＩ演算メカニズムは、１つの霞ラウンド内で連続する２つのＦＩ関数を、パラレルに１クロックサイクル内で演算する請求項１３に記載の装置。
【請求項１５】
前記ＦＩ−ＦＩ演算メカニズムは、２つの霞ラウンドをまたがる連続する２つのＦＩ関数をパラレルに１クロックサイクル内で演算する請求項１３に記載の装置。
【請求項１６】
前記ＦＩ−ＦＩ演算メカニズムは、前記２つの霞ラウンドの間のＸＯＲ演算を前もって実行する請求項１５に記載の装置。
【請求項１７】
霞ラウンドにおけるＦＬ関数を演算する目的で、動作可能に導入されるＦＬ−ＦＬ演算メカニズムを含む、霞ラウンドにおけるＦＬ関数を演算する装置。
【請求項１８】
前記ＦＬ−ＦＬ演算メカニズムは、ＦＬ関数を１クロックサイクル内で演算する請求項１７に記載の装置。
【請求項１９】
前記ＦＬ−ＦＬ演算メカニズムは、２つの霞ラウンドをまたがる連続する２つのＦＬ関数を１クロックサイクル内で演算する請求項１７に記載の装置。
【請求項２０】
前記ＦＬ−ＦＬ演算メカニズムは、特別な遅れを伴わずに、前記２つの霞ラウンドの間のＸＯＲ演算をＦＬ関数演算と併合する請求項１９に記載の装置。
【請求項２１】
霞暗号処理を実行する方法であって、
奇数霞ラウンドにおけるＦＯ関数の演算の前にＦＬ関数を演算する工程と、
偶数霞ラウンドにおけるＦＬ関数の演算の前にＦＯ関数を演算する工程とを含み、
前記奇数霞ラウンドにおけるＦＯ関数は連続する３つのＦＩ関数を含み、第１のＦＩ関数及び第２のＦＩ関数はパラレルに１クロックサイクル内で演算され、
前記偶数霞ラウンドにおけるＦＯ関数は連続する３つのＦＩ関数を含み、第２のＦＩ関数及び第３のＦＩ関数はパラレルに１クロックサイクル内で演算される霞暗号処理を実行する方法。
【請求項２２】
奇数霞ラウンドにおける第３のＦＩ関数、及び前記奇数霞ラウンドの後に続く偶数霞ラウンドにおける第１のＦＩ関数をパラレルに１クロックサイクル内で演算する工程を更に含む請求項２１に記載の方法。
【請求項２３】
偶数霞ラウンドにおけるＦＬ関数、及び前記偶数霞ラウンドの後に続く奇数霞ラウンドにおけるＦＬ関数を１クロックサイクル内で演算する工程を更に含む請求項２１に記載の方法。
【請求項２４】
特別の遅れを伴わずに、前記奇数霞ラウンド及び前記偶数霞ラウンドの間のＸＯＲ演算を前もって実行する工程を更に含む請求項２２に記載の方法。
【請求項２５】
特別の遅れを伴わずに、前記偶数霞ラウンド及び前記奇数霞ラウンドの間のＸＯＲ演算をＦＬ演算と併合する工程を更に備える請求項２３に記載の方法。
【請求項２６】
スイッチファブリックと、
前記スイッチファブリックと相互接続された複数のラインカードと、
霞暗号処理を実行する目的で、１つのラインカードにそれぞれが動作可能に結合された複数の霞モジュールとを含み、
前記霞モジュールは、
前記霞暗号処理に必要な８つの霞ラウンドを演算する霞ラウンド演算メカニズムと、
前記８つの霞ラウンドのそれぞれを演算するのに必要なサブ鍵を生成するサブ鍵生成部と、
前記８つの霞ラウンドをまたがる、連続する２つのＦＩ関数の演算の並列処理により、霞の最終出力を生成する目的で、前記霞ラウンド演算メカニズム及び前記サブ鍵生成部を制御する制御部とを含むネットワークシステム。
【請求項２７】
前記霞ラウンド演算メカニズムは、
霞ラウンドにおいて、ＦＩ及びＦＬ関数の演算を制御するＦＩ／ＦＩ促進部と、
１つの霞ラウンド内で連続する２つのＦＩ関数及び２つの霞ラウンドをまたがって連続する２つのＦＩ関数の少なくとも１つを算出するＦＩ−ＦＩ演算メカニズムと、
前記霞ラウンドにおいて、ＦＬ関数を演算するＦＬ−ＦＬ演算メカニズムとを含む請求項２６に記載のネットワークシステム。
【請求項２８】
前記ＦＩ／ＦＬ促進部は、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムに対して入力データを準備する入力準備部と、
前記ＦＩ−ＦＩ演算メカニズム及び前記ＦＬ−ＦＬ演算メカニズムの出力データを、次のＦＩ及びＦＬ演算に対して準備し、前記霞暗号処理の最終出力結果を生成する出力制御部とを含む請求項２６に記載のネットワークシステム。
【請求項２９】
前記制御部に動作可能に結合され、霞ラウンドの演算において、前記ＦＬ−ＦＬ演算メカニズムに用いられるＫＬサブ鍵を選択するＫＬセレクタと、
前記制御部に動作可能に結合され、前記霞ラウンドの演算において、前記ＦＩ−ＦＩ演算メカニズムに用いられるＫＯサブ鍵を選択するＫＯセレクタと、
前記制御部に動作可能に結合され、前記霞ラウンドの演算において、前記ＦＩ−ＦＩ演算メカニズムに用いられるＫＩサブ鍵を選択するＫＩセレクタとを更に含む請求項２６に記載のネットワークシステム。
【請求項３０】
前記制御部は、前記霞ラウンド演算メカニズムにおいて、ＦＩ／ＦＬ促進部を介して霞ラウンド演算を制御する請求項２６に記載のネットワークシステム。
【請求項３１】
前記ＦＬ−ＦＬ演算メカニズムは、２つの霞ラウンドをまたがる連続する２つのＦＬ関数を１クロックサイクル内で演算する請求項２６に記載のネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概して、ネットワークセキュリティに関する。より具体的には、霞暗号処理を実行する装置及び方法に関する。
【背景技術】
【０００２】
ネットワークにより、コンピュータと他の装置は通信を行う。例えば、ネットワークはビデオ、オーディオ及び電子メール等のデータを運ぶことができる。しかしながら、ネットワークシステムはプライバシの損失、データ保全性の損失、当人なりすまし、及びサービス拒否攻撃等の多くの脅威にさらされやすい。これらの脅威に対処する目的で、ネットワーク通信の安全性を向上するべく、多くの対応策が展開され採用されている。例えば、「３ＧＧＰ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ）」との名の共同体によって設立された標準規格は、ネットワーク通信の秘密性及び保全性を向上する目的で、多数のアルゴリズムを提供している。３ＧＧＰ標準規格のターゲットはモバイル通信であるが、その秘密性及び保全性を備えるアルゴリズムは、一般のネットワーク通信にも適用できる。３ＧＧＰの秘密性及び保全性を備えるアルゴリズムの代表は霞アルゴリズムである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
霞アルゴリズムは、１２８ビット入力鍵の制御の下、６４ビットの入力から６４ビットの出力を生成するブロック暗号アルゴリズムである。霞アルゴリズムは８ラウンド演算工程を有する。霞暗号処理はソフトウェアシュミレーションを介して実行されても良いが、ハードウェアで構成するほうが、速い処理速度を達成できるのでより望ましいだろう。ハードウェアでの構成は、ネットワーク通信におけるデータ処理速度を著しく下げられないときに有効である。ハードウェアで構成する場合、ネットワークシステムの全体のデータ処理速度を下げないためには、霞演算は処理時間がかかるので、その処理速度を上げる目的で１つ以上の霞モジュールを必要とする。霞モジュールのチップ上の実装領域が増加するほど、消費電力は増加しコストもかさむ。それゆえ、霞ハードウェアの処理速度を向上することが望まれている。
【０００４】
本発明の特徴及び利点は、本発明における以下の詳細の記載から明らかになるであろう。
【図面の簡単な説明】
【０００５】
【図１】一般的なネットワークシステムを示す図である。
【０００６】
【図２】霞暗号処理を実行する方法を示す図である。
【０００７】
【図３】霞暗号処理におけるＦＯ関数を実行する方法を示す図である。
【０００８】
【図４】ＦＯ関数が有するＦＩ関数を実行する方法を示す図である。
【０００９】
【図５】霞暗号処理におけるＦＬ関数を実行する方法を示す図である。
【００１０】
【図６】霞暗号処理を実行するシステムのブロック図である。
【００１１】
【図７ａ−ｂ】霞ラウンドにおける連続する２つのＦＩ関数をパラレルに実行する方法を示す図である。
【００１２】
【図８】ＦＩ関数の実行形態の一例を示す図である。
【００１３】
【図９】連続する２つの霞ラウンドにおけるＦＩ関数を実行する１つの形態を示す図である。
【００１４】
【図１０】連続する２つの霞ラウンドにおける連続する２つのＦＬ関数を実行する１つの形態を示す図である。
【００１５】
【図１１】本発明の１つの形態における、霞ラウンド及び処理サイクルの関係を示す図である。
【００１６】
【図１２】霞暗号処理を実行する１つの形態を示す図である。
【００１７】
【図１３】ネットワークシステムを示す図である。
【発明を実施するための最良の形態】
【００１８】
本発明の１つの形態では、霞暗号処理を実行する装置及び方法を含む。霞アルゴリズムとは、６４ビット入力から６４ビット出力を、１２８ビット鍵の制御の下で、８ラウンド演算工程を介して生成するブロック暗号アルゴリズムである。各ラウンドは１つのＦＬ関数及び１つのＦＯ関数の演算を含む。ＦＯ関数はＦＩ関数の３回の反復を含む。ＦＩ関数を演算するための３サイクル、及びＦＬ関数を演算するための１サイクルを有する各ラウンドを完了するには、単純なハードウェアにおいては、４つのクロックサイクルを必要とする。それゆえ、霞において出力を生成するにはトータル３２クロックサイクルを要する。本発明のある形態によると、霞暗号処理の演算を完了するのに必要なトータルのサイクルの数を減らす目的で、霞が有する８つのラウンドを展開しても良い。そのような形態では、同じラウンドであれ、連続する２つのラウンドをまたぐものであれ、連続する２つのＦＩ関数を１サイクルでパラレルに演算しても良い。又、連続する２つのラウンドをまたぐ連続する２つのＦＬ関数を１サイクルで演算しても良い。従って、１つの形態では、霞において出力を生成するのに、３２サイクルの代わりに１７サイクルだけを用いても良い。
【００１９】
本明細書における、本発明の「１つの形態」又は「ある形態」とは、その形態に関連して記載された特定の特徴、構造又は特性が本発明の少なくとも１つの形態に含まれていることを意味する。それゆえ、本明細書を通して、いろいろな部分で用いられる「１つの形態における」との表現は、全て同じ実施形態を表しているわけではない。
【００２０】
図１に、多数の端末に対応する一般的なネットワークシステム１１０を示す。ネットワークシステム１１０は、ある端末から別の端末へのデータの受け渡しを促進する目的で、ルータ、スイッチ及びブリッジ等の多数のデバイスを含んでも良い。ネットワークシステムは、無線システム、イーサネットシステム、又は他のシステムであっても良く、多様なネットワークシステムの組み合わせであっても良い。ネットワークシステムはある端末から別の端末を接続する目的で衛星１２０を含んでも良い。ネットワークシステムの端末は、サーバ（１３０）、デスクトップコンピュータ（１４０）、個人用の携帯情報端末（ＰＤＡ）（１５０）、携帯電話（１６０）、ラップトップコンピュータ（１７０）又は他のデバイスであっても良い。様々な端末において通信されるデータは、ビデオ、オーディオ、メッセージ及び他のデータを含んでも良い。ネットワークシステムは、通信セキュリティのために３ＧＧＰ規格を用いても良い。３ＧＧＰ規格の構成要素として、通信の機密性及び通信の整合性を確保すべくデータを暗号化する目的で、霞暗号処理を用いても良い。
【００２１】
図２に、「３ＧＧＰ機密整合アルゴリズム仕様書（Ｓｐｅｃｉｆｉｃａｔｉｏｎ ｏｆ ｔｈｅ ３ＧＰＰ Ｃｏｎｆｉｄｅｎｔｉａｌｉｔｙ ａｎｄ Ｉｎｔｅｇｒｉｔｙ Ａｌｇｏｒｉｔｈｍｓ）」Ｖ５．０．０．（２００２年６月）における「ドキュメント２：霞の仕様書（ＫＡＳＵＭＩ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）」（以後霞の仕様書と表す）において定義された霞暗号処理を示す。霞暗号処理は、６４ビット入力Ｉを受け取り、１２８ビット入力鍵Ｋの制御の下で８ラウンドの演算を実行して、６４ビット出力Ｏを生成する。入力Ｉは３２ビット列Ｌ〔０〕及びＲ〔０〕に分割される。ここでＩ＝Ｌ〔０〕 ｜｜ Ｒ〔０〕であり、「｜｜」は連結演算を示す。各ラウンドｉ（１＜＝ｉ＜＝８）において、
Ｌ〔ｉ〕＝Ｒ〔ｉ−１〕(  Ｆｉ（Ｌ〔ｉ−１〕，ＲＫ〔ｉ〕）    （１）
Ｒ〔ｉ〕＝Ｌ〔ｉ−１〕    （２）
であり、ここでは、ＲＫ〔ｉ〕はラウンドｉの１２８ビットのラウンド鍵であり、霞の仕様書において明記された方法で、Ｋから導かれる。そして「(」は排他的論理和（ＸＯＲ）を示す。式（１）におけるＦｉは以下で定義されるラウンド関数を示す。
奇数ラウンドに対して、
Ｆｉ（Ｉ，ＲＫ〔ｉ〕）＝ＦＯ（ＦＬ（Ｉ，ＫＬｉ），ＫＯｉ，ＫＩｉ）    （３）
偶数ラウンドに対して、
Ｆｉ（Ｉ，ＲＫ〔ｉ〕）＝ＦＬ（ＦＯ（Ｉ，ＫＯｉ，ＫＩｉ），ＫＬｉ）    （４）
ここでは、ＫＬｉ、ＫＯｉ及びＫＩｉはラウンドｉにおけるサブ鍵であり、霞の仕様書に明記されているとおり、ラウンド鍵ＲＫ〔ｉ〕から導かれる。ＫＬｉはＦＬ関数において用いられ、３２ビット長である。ＫＯｉ及びＫＩｉは、ＦＯ関数において用いられ、それぞれは４８ビット長である。式（３）及び（４）で示したとおり、ＦＯ関数とＦＬ関数の順序は連続する２つのラウンドでは逆転する。霞暗号処理における６４ビット出力Ｏは、８ラウンド目から出力される２つの３２ビット出力により算出される。つまり、Ｏ＝Ｌ〔８〕｜｜Ｒ〔８〕である。図２に、霞暗号処理に必要とされる演算を示す。図２に示すとおり、各ラウンドは、ＦＬ関数、ＦＯ関数及びＸＯＲ関数の演算を含む。しかし、ＦＬ関数及びＦＯ関数の順序は連続する２つのラウンドで逆転する。
【００２２】
ラウンドｉにおいてＦＯ関数を演算する目的で、３２ビット入力Ｉ＿ＦＯはＬ＿ＦＯ〔０〕及びＲ＿ＦＯ〔０〕の２つに分割される。ここでＩ＿ＦＯ＝Ｌ＿ＦＯ〔０〕｜｜Ｒ＿ＦＯ〔０〕である。４８ビットのサブ鍵ＫＯｉ及びＫＩｉのそれぞれは、３つの１６ビットのサブ・サブ鍵に分割される。ここで、ＫＯｉ＝ＫＯｉ，１｜｜ＫＯｉ，２｜｜ＫＯｉ，３及びＫＩｉ＝ＫＩｉ，１｜｜ＫＩｉ，２｜｜ＫＩｉ，３である。関数ＦＯは、演算１組の３回の反復を有する。各反復ｊ（１＜＝ｊ＜＝３）において
Ｒ＿ＦＯ〔ｊ〕＝ＦＩ（Ｌ＿ＦＯ〔ｊ−１〕(ＫＯｉ，ｊ，ＫＩｉ，ｊ）(Ｒ＿ＦＯ〔ｊ−１〕    （５）
Ｌ＿ＦＯ〔ｊ〕＝Ｒ＿ＦＯ〔ｊ−１〕    （６）
であり、ＦＩは以下で定義される関数である。ＦＯ関数は、３回の反復により生成される２つの１６ビット出力の連結演算を行い、３２ビット値Ｏ＿ＦＯを生成する。即ち、Ｏ＿ＦＯ＝Ｌ＿ＦＯ〔３〕｜｜Ｒ＿ＦＯ〔３〕である。図３に、ラウンドｉにおけるＦＯ関数の算出方法を示す。図に示すとおり、ＦＯ関数の演算は３回の反復工程を有する。そして各工程は、２つのＸＯＲ関数及び１つのＦＩ関数を有する。
【００２３】
ラウンドｉにおけるＦＯ関数の反復ｊにおけるＦＩ関数を算出する目的で、１６ビット入力Ｉ＿ＦＩは９ビットの左半分Ｌ＿ＦＩ〔０〕及び７ビットの右半分Ｒ＿ＦＩ〔０〕に分割される。ここで、Ｉ＿ＦＩ＝Ｌ＿ＦＩ〔０〕｜｜Ｒ＿ＦＩ〔０〕である。サブ鍵ＫＩｉ，ｊは、７ビットの左コンポーネントＫＩｉ，ｊ，１及び９ビットの右コンポーネントＫＩｉ，ｊ，２に分割される。ここで、ＫＩｉ，ｊ＝ ＫＩｉ，ｊ，１｜｜ＫＩｉ，ｊ，２である。ＦＩ関数は以下のとおり定義される。
Ｌ＿ＦＩ〔１〕 ＝ Ｒ＿ＦＩ〔０〕，  Ｒ＿ＦＩ〔１〕＝ Ｓ９〔Ｌ＿ＦＩ〔０〕〕(ＺＥ（Ｒ＿ＦＩ〔０〕）；
Ｌ＿ＦＩ〔２〕＝Ｒ＿ＦＩ〔１〕(ＫＩｉ，ｊ，２，  Ｒ＿ＦＩ〔２〕＝Ｓ７（Ｌ＿ＦＩ〔１〕( ＴＲ（Ｒ＿ＦＩ〔１〕）( ＫＩｉ，ｊ，１；    
Ｌ＿ＦＩ（３）＝Ｒ＿ＦＩ〔２〕，  Ｒ＿ＦＩ〔３〕＝ Ｓ９（Ｌ＿ＦＩ〔２〕）( ＺＥ（Ｒ＿ＦＩ〔２〕）；
Ｌ＿ＦＩ〔４〕 ＝ Ｓ７（Ｌ＿ＦＩ〔３〕）( ＴＲ（Ｒ＿ＦＩ〔３〕），  Ｒ＿ＦＩ〔４〕＝ Ｒ＿ＦＩ〔３〕；
であり、Ｓ７は、７ビット入力を７ビット出力に変換する関数である。Ｓ９は、９ビット入力を９ビット出力に変換する関数である。ＺＥは、７ビット入力を受け取り、最上位側端に２ビットの０を追加することで９ビットの出力に変換する関数である。ＴＲは、９ビット入力を受け取り、最上位側２ビットを捨てることによって７ビット出力に変換する関数である。Ｓ７関数及びＳ９関数は、霞の仕様書において詳細に定義されている。上記の式で示したＦＩ関数内部の演算を図４に示す。
【００２４】
霞のラウンドｉでのＦＬ関数を算出する目的で、３２ビットの入力データＩ＿ＦＬは、１６ビットの左半分Ｌ＿ＦＬ及び１６ビットの右半分Ｒ＿ＦＬに分割される。ここで、Ｉ＿ＦＬ＝ Ｌ＿ＦＬ｜｜Ｒ＿ＦＬである。サブ鍵ＫＬｉはまた、１６ビットに２等分される。ここで、ＫＬｉ＝ＫＬｉ，１｜｜ＫＬｉ，２である。以下の演算がＦＬ関数において実行される。
Ｒ’＿ＦＬ＝Ｒ＿ＦＬ(ＲＯＬ（Ｌ＿ＦＬ∩ＫＬｉ，１）    （７）
Ｌ’＿ＦＬ＝ Ｌ＿ＦＬ( ＲＯＬ （Ｒ’＿ＦＬ ∪ ＫＬｉ，２）    （８）
ここで、ＲＯＬは入力データを１ビットずつ左方向にシフトする関数である。「∩」はビット単位の論理積演算を、「∪」はビット単位の論理和演算を表す。ＦＬ関数は、右半分出力Ｒ’＿ＦＬと左半分出力Ｌ’＿ＦＬとの連結演算を行うことで３２ビットの出力データＯ＿ＦＬに戻す。即ち、Ｏ＿ＦＬ ＝Ｌ’＿ＦＬ｜｜Ｒ’＿ＦＬである。式（７）及び（８）で示したＦＬ関数の内部演算を図５に示す。
【００２５】
図６に霞暗号処理を実行するシステムの一例を示す。システムは、サブ鍵生成部６２０、制御部６４０、ＫＬセレクタ６５０、ＫＯセレクタ６６０、ＫＩセレクタ６７０、及び霞ラウンド演算メカニズム６８０を含む。サブ鍵生成部６２０は、霞の仕様書に準じ、１２８ビット入力鍵Ｋに基づいて、霞ラウンドそれぞれに対してのサブ鍵ＫＬ、ＫＯ及びＫＩを生成する。入力鍵は、公開鍵又は秘密鍵から生成されても良い。サブ鍵生成部は霞ラウンドで必要とされるサブ鍵の組を、霞ラウンド演算メカニズムにおいてそのラウンドの演算が始まる時に生成しても良いが、システムとしてのトータル速度を上げる目的で、そのラウンドの演算が始まる前に、霞ラウンドが必要とするその鍵の組を前もって生成することが望ましい。
【００２６】
制御部６４０は、サブ鍵生成部、ＫＬセレクタ、ＫＯセレクタ、ＫＩセレクタ及び霞ラウンド演算メカニズムの間での演算を制御及び調整する。例えば、制御部はサブ鍵生成部に、霞ラウンドｉに対するサブ鍵を準備するよう指示しても良い。サブ鍵生成部は、要求されたサブ鍵の準備ができたときにその事を制御部に通知しても良い。通知を受け取ると、制御部は、霞ラウンド演算メカニズムに正しいサブ鍵を提供するためにセレクタを制御して、霞ラウンド演算メカニズムにラウンドｉを実行するよう指示しても良い。ラウンドｉが完了したとき、霞ラウンド演算メカニズムは、制御部がサブ鍵生成部にランドｉ＋１に対するサブ鍵の準備をするよう指示を行えるよう、制御部にその事を通知しても良い。更に、制御部はプロセッサから／へ調整信号６３０を受信／送信しても良い。調整信号は、システムをリセットするためのリセット信号、システムを開始するためのスタート信号、及び霞暗号処理が完了したことをプロセッサに通知するための完了信号を含んでも良い。
【００２７】
ＫＬセレクタ６５０は霞ラウンドごとに、ＦＬ関数演算のためのＫＬサブ鍵を選択する。ＫＯセレクタ６６０は霞ラウンドごとに、３つのＦＩ関数の演算のためのＫＯサブ鍵を選択する。ＫＩセレクタは霞ラウンドごとに、３つのＦＩ関数の演算のためのＫＩサブ鍵を選択する。図６において、これらＫＬ、ＫＯ及びＫＩセレクタは互いに独立しており、サブ鍵生成部とも分離しているが、これらセレクタは、部分的に又は全体的に組み合わされても良く、これらの幾つか又は全てが、同一又は同様な機能を実行する目的で、サブ鍵生成部と組み合わされても良い。
【００２８】
霞ラウンド演算メカニズム６８０は、６４ビットの入力データ６１０を受け取り、その入力データに対して、サブ鍵生成部から提供されたサブ鍵を用いて、６４ビットの出力データ６９０を生成すべく、８回の霞ラウンドを実行する。霞ラウンド演算メカニズムは、ＦＩブロック６８２、ＦＬブロック６８４、及び入力／出力コーディネータ６８６を含む。ＦＩブロック６８２は、８回の霞ラウンドにおいて、全てのＦＩ関数を演算する。ＦＬブロック６８４は霞暗号処理において必要とされる全てのＦＬ関数を演算する。入力／出力コーディネータ６８６は、１番目の霞ラウンド演算を開始する目的で、入力データを半分に分割しても良く、最後の６４ビット出力データ６９０を生成する目的で、８番目の霞ラウンドから生成された２つの３２ビット出力を結合してもよい。入力／出力コーディネータは、各ＦＩ関数に対して、入力データを分割して、出力データを結合しても良い。８回の霞ラウンドにおける全てのＦＩ関数は、同一の演算を含んでいるので（ＦＩ関数のそれぞれは、それぞれの入力データ及び特定のサブ鍵を用いて実行されるので）、ＦＩ関数で定義された特定の一組の演算だけを実行するコンポーネントを、ＦＩブロックに含ませることができる。あるＦＩ関数から連続するＦＩ関数への、又はＦＬ関数へのデータフローは、制御器６４０に加えて入力／出力コーディネータによって進められても良い。同様に、ＦＬブロックは、ＦＬ関数で定義された特定の一組の演算を実行するコンポーネントを含んでも良い。入力／出力コーディネータ６８６及びコントローラ６４０は、連続する２つのＦＬ関数、又はＦＬ関数とＦＩ関数との間のデータフローを進めても良い。
【００２９】
霞暗号処理は、ハードウェア実装に生かせる多数の特性を備える。例えば、図３に示した各霞ラウンドにおけるＦＯ関数の中で連続する２つのＦＩ関数の演算は、パラレルに実行されても良い。図７ａに、図３のＦＩｉ，１及びＦＩｉ，２の演算をパラレルに実行する方法を示す。（ＦＩｉ，２演算のための）反復２は、（ＦＩｉ，１演算のための）反復１の結果を用いないので、反復１及び反復２は同時に実行されても良い。しかしながら、（ＦＩｉ，３演算のための）反復３は反復１の結果を入力として用いる必要があるので、反復３は単純に、反復１及び反復２の工程と共にパラレルに実行することはできない。同様に、ＦＩｉ，２及びＦＩｉ，３の演算は、図７ｂで示すとおり、パラレルに実行しても良い。更に、図４で示したＦＩ関数におけるＳ７及びＳ９の演算も、パラレルに実行しても良い。図８にＳ７及びＳ９の演算をパラレルに実行する方法を示す。
【００３０】
図７ａ及びｂで示したとおり、１つの霞ラウンド内で連続する２つのＦＩ関数をパラレルに実行できるだけでなく（ラウンド内ＦＩ並列処理）、２つの霞ラウンドをまたがって連続する２つのＦＩ関数もまたパラレルに実行できる（「クロスラウンドＦＩ並列処理」）。図２で示した霞暗号処理の定義においては、クロスラウンドＦＩ並列処理が実行できる場所は、ラウンド１と２との間、ラウンド３と４との間、ラウンド５と６との間、及びラウンド７と８との間だけである。なぜなら、２つのラウンドをまたがる連続するＦＩ関数はこれらの場所にしか存在しないからである。図９に、クロスラウンドＦＩ並列処理をラウンド１とラウンド２との間で実行する方法を示す。３２ビット入力データ９０２が半分の１６ビットの２つに、即ち左半分データ９０４及び右半分データ９０６に分割される。ＸＯＲメカニズム９０８を介して、左半分データ９０４とサブ鍵ＫＯ１，１との排他的論理和を算出する。ＸＯＲメカニズム９０８からの出力データは、ラウンド１におけるＦＩ反復１内のＦＩ関数ＦＩ１，１を実行するメカニズム９１２に対する入力として用いられる。ＦＩ１，１演算はサブ鍵ＫＩ１，１を用いて実行される。ＦＩ１，１演算の出力と右半分データ９０６との排他的論理和が算出される。ラウンド１のＦＩ反復２の演算が、ラウンド１のＦＩ反復１の演算とパラレルに実行される。右半分データ９０６は最初に、ＸＯＲメカニズム９１０を介してサブ鍵ＫＯ１，２との排他的論理和を算出される。ＸＯＲメカニズム９１０からの出力データは、ラウンド１のＦＩ反復２内のＦＩ関数ＦＩ１，２を実行するメカニズム９１４の入力として用いられる。更に、出力データ９２２を生成する目的で、サブ鍵ＫＩ１，２を用いて実行されたＦＩ１，２演算の結果とＸＯＲメカニズム９１６からの出力データとの排他的論理和を算出する。
【００３１】
ラウンド内ＦＩ並列処理（ラウンド１におけるＦＩ反復１及びＦＩ反復２）が実行された後で、クロスラウンドＦＩ並列処理（ラウンド１のＦＩ反復３及びラウンド２のＦＩ反復１）が開始される。しかしながら、ラウンド内並列処理及びクロスラウンド並列処理には差異がある。つまり、ラウンド１とラウンド２との間には余分のＸＯＲ演算（即ち、図２に示したとおり、ＦＯ１とＦＯ２との間のＸＯＲ演算）が存在する。そのような差異は、ラウンド内ＦＩ並列処理及びクロスラウンド並列処理を別々に導入する必要を生じさせ、ハードウェアの複雑性を増加させる場合がある。それゆえ、１つのメカニズムにラウンド内ＦＩ並列処理及びクロスラウンドＦＩ並列処理の両方を導入することが望ましい。このためには、余分のＸＯＲ演算を特別なやり方で実行する必要がある。図９に、クロスラウンドＦＩ並列処理を実行する時の、２つのラウンドの間の余分のＸＯＲ演算を実行する方法の一例を示す。ＸＯＲ演算はビット単位の演算なので、霞暗号処理の入力データの右半分である入力Ｒ〔０〕を用いる３２ビット演算である、ラウンド１と２との間の余分のＸＯＲ演算は、ＸＯＲメカニズム９２４及び９３４によって実行される、２つの１６ビットＸＯＲ演算に置き換えられる。ＸＯＲメカニズム９２４は、入力の１つとして、Ｒ〔０〕の左半分１６ビット（「Ｒ〔０〕（Ｌ：１６）」）を有し、ＸＯＲメカニズム９３４は、入力の１つとして、Ｒ〔０〕の右半分１６ビット（「Ｒ〔０〕（Ｒ：１６）」）を有する。ＸＯＲ演算の「互換性」特性、即ち（ｘ(ｙ）(ｚ＝ｘ(（ｙ(ｚ）を満たす特性により、Ｒ〔０〕（Ｌ：１６）は、ＸＯＲメカニズム９２４を介して、データ９２２が利用できる前であれ、サブ鍵ＫＯ２，１との排他的論理和を前もって算出することができる。つまり、ＸＯＲメカニズム９２４は、ラウンド２のＦＩ反復１におけるクリティカルパス上には存在しない。同様に、データ９２２が利用できる状態になるとすぐに、ＸＯＲメカニズム９３４を介して、Ｒ〔０〕（Ｒ：１６）とデータ９２２との排他的論理和を前もって算出することができる。従って、ＸＯＲメカニズム９３４はラウンド１のＦ１反復３におけるクリティカルパス上には存在しない。前もって排他的論理和を求める手法を用いることによって、ラウンド内ＦＩ並列処理を実行する目的で用いられるメカニズムを、更に２つのＸＯＲメカニズムを有するクロスラウンドＦＩ並列処理を実行する目的で用いても良い。
【００３２】
ラウンド１とラウンド２との間の余分のＸＯＲ演算を前もって行う手法で、ラウンド１のＦＩ反復３及びラウンド２のＦＩ反復１に関わる演算は、ラウンド１のＦＩ反復１及び２に関わる演算と同様にみなせる。左側において、ラウンド１のＦＩ反復３における演算は、ＸＯＲメカニズム９１６の出力データとサブ鍵ＫＯ１，３とのＸＯＲ演算を行うＸＯＲメカニズム９２０にて開始される。ＸＯＲメカニズム９２０からの出力データは、サブ鍵ＫＩ１，３の制御の下でＦＩ１，３関数を実行する目的で、メカニズム９３０によって用いられる。更に、ＸＯＲメカニズム９４０を介して、ＸＯＲメカニズム９３４からの出力データ９３６とＦＩ１，３演算の結果との排他的論理和が算出される。右側において、ラウンド２のＦＩ反復１における演算は、ＸＯＲメカニズム９１８からの出力データ９２２とＸＯＲメカニズム９２４からの出力データとのＸＯＲ演算を実行するＸＯＲメカニズム９２８にて開始される。ＸＯＲメカニズム９２８からの結果は、サブ鍵ＫＩ２，１の制御の下でＦＩ２，１演算を実行する目的で、メカニズム９３２において用いられる。更に、ラウンド１のＦＩ反復３とラウンド２のＦＩ反復１との間のクロスラウンドＦＩ並列処理を完了する目的で、メカニズム９３２からの出力データとＸＯＲメカニズム９４０からの出力データとの排他的論理和を算出する。
【００３３】
ラウンド２のＦＯ関数における残りの演算は、ラウンド２のＦＩ反復２と３との間のラウンド内並列処理を介して実行されても良い。左側に示した、ラウンド２のＦＩ反復２における演算は、ＸＯＲメカニズム９４０の出力データとサブ鍵ＫＯ２，２ とのＸＯＲ演算を実行するＸＯＲメカニズム９４４にて開始される。ＸＯＲメカニズム９４４からの出力データは、サブ鍵ＫＩ２，２の制御の下でＦＩ２，２関数を実行する目的で、メカニズム９４８において用いられる。更に、ＦＩ２，２の演算結果と、ＸＯＲメカニズム９４２からの出力との排他的論理和が、ＸＯＲメカニズム９５４を介して算出される。右側に示した、ラウンド２のＦＩ反復３における演算は、ＸＯＲメカニズム９４２からの出力データとサブ鍵ＫＯ２，３とのＸＯＲ演算を実行するＸＯＲメカニズム９４６にて開始される。ＸＯＲメカニズム９４６の結果は、サブ鍵ＫＩ２，３の制御の下でＦＩ２，３演算を実行する目的で、メカニズム９５０において用いられる。更に、ラウンド２のＦＩ反復２及び３の間のクロスラウンドＦＩ並列処理を完了する目的で、メカニズム９５０からの出力データと、ＸＯＲメカニズム９５４からの出力データとの排他的論理和が算出される。ＸＯＲメカニズム９５４からの出力データはラウンド２の左側出力９５８を生成し、ＸＯＲメカニズム９５６からの出力データはラウンド２の右側出力９６０を生成する。左側出力９５８及び右側出力９６０は、ラウンド２の出力９６２を生成する目的で連結される。
【００３４】
一般的に、霞ラウンドにおけるＦＯ関数内のＦＩ反復における演算は、１クロックサイクルで実行される。並列処理により、それぞれのラウンド内ＦＩ並列処理及びクロスラウンド並列処理が１クロックサイクルで実行できる。これは、図９で示したラウンド１及びラウンド２における演算が、６サイクルの代わりに、３クロックサイクルで実行できることを意味する。
【００３５】
図１０に、２つの霞ラウンド２及び３をまたがって連続する２つのＦＬ関数を実行する方法（「クロスラウンドＦＬ−ＦＬ演算処理」）の一例を示す。この実施形態では、図２に示したＦＬ２及びＦＬ３の間の余分なＸＯＲ演算が、余分な遅れを伴わずに、クロスラウンドＦＬ−ＦＬ演算処理に併合される。余分のＸＯＲ演算（３２ビット）はビット単位の演算なので、ＸＯＲメカニズム１０１４及び１０２６によって実行される２つの１６ビットＸＯＲ演算に置き換えられる。従って、余分のＸＯＲ演算の３２ビット入力データＲ〔１〕は、半分である２つの１６ビットに分割される。即ち、ＸＯＲメカニズム１０１４の入力である左半分１０１６、Ｒ〔１〕（Ｌ：１６）、及びＸＯＲメカニズム１０２６の入力である右半分１０２８、Ｒ〔１〕（Ｒ：１６）に分割される。ＸＯＲ演算子の「互換性」の特性により、即ち（ｘ(ｙ）(ｚ＝ｘ(（ｙ(ｚ）を満たす特性により、ＸＯＲメカニズム１０１４はＸＯＲメカニズム１０２２の前に置くことができる。その結果、ＸＯＲメカニズム１０１４はクロスラウンドＦＬ−ＦＬ演算工程におけるクリティカルパス上には存在しない。つまり、１０１４及ぶ１０２２において実行される演算は余分な遅れを引き起こさない。ＸＯＲメカニズム１０２６はクロスラウンドＦＬ−ＦＬ演算処理におけるクリティカルパス上に存在しないので、ＸＯＲメカニズム１０２６を移動させる必要はない。
【００３６】
ＦＬ２とＦＬ３との間の余分のＸＯＲ演算をクロスラウンドＦＬ−ＦＬ演算工程と併合することにより、クロスラウンドＦＬ−ＦＬ演算工程は１クロックサイクル内で完了できる。図１０に示すとおり、クロスラウンドＦＬ−ＦＬ演算工程の３２ビット入力データ１００２は半分の１６ビット、左半分１００４及び右半分１００６に分割される。メカニズム１００８は、左半分１００４とサブ鍵ＫＬ２，１とのビット単位の「論理積」演算を実行する。同時に、ＸＯＲメカニズム１０１４は、左半分１００４とＲ〔１〕（Ｌ： １６）とのＸＯＲ演算を実行する。メカニズム１００８からの出力データは、メカニズム１０１０によって１ビットずつ左にシフトされる。メカニズム１０１０からの出力データと、入力データの右半分１００６との排他的論理和がＸＯＲメカニズム１０１２を介して算出される。更に、ＸＯＲメカニズム１０１２からの出力データとＲ〔１〕（Ｒ：１６）との排他的論理和がＸＯＲメカニズム１０２６によって算出される。同時に、メカニズム１０１８は、ＸＯＲメカニズム１０１２とサブ鍵ＫＬ２，２とのビット単位の「論理和」演算を実行する。続いて、メカニズム１０１８からの出力データは、メカニズム１０２０によって１ビットずつ左にシフトされる。更に、メカニズム１０２０からの出力データとＸＯＲメカニズム１０１４からの出力データとの排他的論理和が算出される。
【００３７】
メカニズム１０３０は、ＸＯＲメカニズム１０２２からの出力とサブ鍵ＫＬ３，１とのビット単位の「論理積」を実行する。「論理積」演算の出力は、メカニズム１０３２によって１ビットずつ左にシフトされる。ＸＯＲメカニズム１０３４は、１０２８からの出力データ及び１０３２からの出力データとの排他的論理和演算を実行する。１０３４からの出力データは、クロスラウンドＦＬ−ＦＬ演算工程の右側出力１０４８を生成する。一方で、メカニズム１０３６は１０３４からの出力とサブ鍵ＫＬ３，２とのビット単位「論理和」演算を実行する。「論理和」演算の結果は、メカニズム１０３８によって１ビットずつ左にシフトされる。ＸＯＲメカニズム１０４０は、クロスラウンドＦＬ−ＦＬ演算工程の左側出力１０４４を生成する目的で、１０２２からの出力データと１０３８からの出力データとのＸＯＲ演算を実行する。左側出力１０４４及び右側出力１０４８は、クロスラウンドＦＬ−ＦＬ演算工程の３２ビット出力データ１０４６を生成する目的で連結される。
【００３８】
図１１に、霞ラウンドと処理サイクルとの関係を示す。図２に示したとおり、奇数ラウンドはＦＯ関数の前にＦＬ関数を有し、偶数ラウンドはＦＬ関数の前にＦＯ関数を有する。ＦＯ関数は、更に３つのＦＩ関数を有する。最初のラウンドは、サイクル１で実行されても良いＦＬ関数で始まる。ラウンド１における第１のＦＩ関数及び第２のＦＩ関数はパラレルにサイクル２で実行されても良い（ラウンド内ＦＩ並列処理）。ラウンド１及びラウンド２の間のＸＯＲ演算は、ラウンド1の第３のＦＩ関数とラウンド２の第１のＦＩ関数とをパラレルにサイクル３で実行できるよう（クロスラウンドＦＩ並列処理）、前もって実行されても良い。ラウンド２における第２のＦＩ関数及び第３のＦＩ関数は、別のラウンド内ＦＩ並列処理を形成して、サイクル４でパラレルに実行されても良い。ラウンド２とラウンド３との間のＸＯＲ演算は、ラウンド２におけるＦＬ関数に必要とされる演算を含むクロスラウンドＦＬ−ＦＬ演算工程に取り込まれても良く、ラウンド2とラウンド３との間のＸＯＲ演算とラウンド３のＦＬ関数をサイクル５で実行しても良い。ラウンド内ＦＩ並列処理、クロスラウンドＦＩ並列処理及びクロスラウンドＦＬ−ＦＬ演算工程のそれぞれは、１サイクルで実行しても良いので、霞の８ラウンドは、トータル１７サイクルで実行されても良い。
【００３９】
図１２に、本発明の１つの形態における、ＦＩ−ＦＩ並列処理及びクロスラウンドＦＬ−ＦＬ演算工程を用いて、図６に示した霞ラウンド演算メカニズム６７０を実装するシステムの一例を示す。霞ラウンド演算メカニズムの実装は、ＦＬ／ＦＬ促進部１２１０、ＦＩ−ＦＩ演算メカニズム１２２０及びＦＬ−ＦＬ演算メカニズム１２３０を含む。ＦＩ−ＦＩ演算メカニズム１２２０は、ラウンド内ＦＩ並列処理及びクロスラウンド並列処理が共有のコンポーネントにおいて演算できる方法で構成されても良い。ＦＬ−ＦＬ演算メカニズム１２３０は、１つのＦＬ関数又はラウンドをまたがって連続する２つのＦＬ関数を算出する目的で構成されても良い。ＦＩ／ＦＬ促進部１２１０は、ＦＩ−ＦＩ演算メカニズム及びＦＬ−ＦＬ演算メカニズムを、これら２つのメカニズムを霞８ラウンドに関連する全てのＦＩ及びＦＬ関数を算出する目的で用いることができるよう調整しても良い。ＦＩ／ＦＬ促進部は、入力前準備部１２１２及び出力制御部１２１４を含んでも良い。入力準備部１２１２は、ＦＩ−ＦＩ又はＦＬ−ＦＬ演算メカニズムに対する入力データを準備しても良い。例えば、入力準備部は、ＦＩ又はＦＬ関数に対して、入力データを半分に分割しても良い。出力制御メカニズム１２１４は、ＦＩ−ＦＩ又はＦＬ−ＦＬ演算メカニズムからの出力のフローを制御しても良い。例えば、出力制御メカニズムは、１つのラウンド内ＦＩ並列処理からの出力データをクロスラウンドＦＩ並列処理又はクロスラウンドＦＬ−ＦＬ演算工程に送っても良く、またその逆の工程を行っても良い。出力制御メカニズムはまた、ＦＩ−ＦＩ及びＦＬ−ＦＬ演算メカニズムからの出力データに基づいて、霞暗号処理の最終出力データを生成しても良い。
【００４０】
図１３に、霞暗号処理を実行するネットワークシステムを示す。システムは、スイッチファブリック１３１０（クロスバー又は共有メモリスイッチファブリック等）に相互接続された一群のラインカード１３２０（「ブレイド」）を含んでも良い。個々のラインカードは、物理的に同一な位置に置かれても良く、物理的に異なった位置（異なった都市等）に置かれても良い。スイッチファブリックは、例えば、カモン・スイッチ・インターフェース（ＣＳＩＸ）、又はハイパートランスポート、インフィニバンド、ぺリフェラル・コンポーネント・インターコネクト（ＰＣＩ）、パケット・オーバ・ソネット（同期光学ネットワーク）、ＲａｐｉｄＩＯ、及び／又はＵＴＯＰＩＡ（Ｕｎｉｖｅｒｓａｌ Ｔｅｓｔ ａｎｄ Ｏｐｅｒａｔｉｏｎｓ ＰＨＹ（Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ）Ｉｎｔｅｒｆａｃｅ ｆｏｒ ＡＴＭ）等のその他のファブリックテクノロジに準じても良い。
【００４１】
個々のラインカード（１３２０Ａ等）は、ネットワークコネクション上の通信を取り扱う１つ以上の物理レイヤ（ＰＨＹ）デバイス１３２２（例えば、光学、有線、及び無線ＰＨＹ）を含んでも良い。ＰＨＹは、様々なネットワークメディアによって運ばれる物理信号とデジタルシステムによって用いられるビット信号（例えば「０」及び「１」）との変換を行う。ラインカード１３２０はまた、エラー検知及び／又は訂正等のフレーム演算を実行するフレーマデバイス（例えば、イーサネット、同期光学ネットワーク（ＳＯＮＥＴ）、ハイレベル・データリンク（ＨＤＬＣ）フレーマ又は他の「レイヤ２」デバイス）１３２４を含んでも良い。図に示すとおり、ラインカード１３２０は、ＰＨＹ１３２２を介して受信するパケットに対してパケット処理動作を実行して、パケットを転送する目的で、エグレス・インターフェースを提供するラインカードにスイッチファブリック１３１０を介してパケットを送る、１つ以上のネットワークプロセッサ１３２６を含んでも良い。場合によっては、ネットワークプロセッサ１３２６は、フレーマデバイス１３２４の代わりに、「レイヤ２」の仕事を実行しても良い。
【００４２】
ネットワークプロセッサ１３２６は、インテル製Ｉｎｔｅｒｎｅｔ ｅＸｃｈａｎｇｅ ｎｅｔｗｏｒｋ Ｐｒｏｃｅｓｓｏｒ(r)（ＩＸＰ）、又は異なった設計を有する他のネットワークプロセッサであっても良い。ネットワークプロセッサは、単体の集積回路上に一群のパケット処理エンジンを有する。個々のエンジンはマルチスレッド処理を提供しても良い。更に、ネットワークプロセッサは、（多くの場合、ネットワーク動作に関連する「コントロールプレーン」タスクを実行する目的でプログラムされる）コアプロセッサを含んでも良い。しかしながら、コアプロセッサはまた、「データプレーン」タスクを取り扱っても良い。ネットワークプロセッサ１３２６はまた、プロセッサと他のネットワークコンポーネントとの間でパケットを運搬する少なくとも１つのインターフェースを有してもよい。プロセッサ１３２６は、例えば、ファブリックに接続された他のプロセッサ又は回路へパケットを転送させるスイッチファブリック・インターフェース１３１０を有しても良い。プロセッサ１３２６はまた、プロセッサに物理レイヤ（ＰＨＹ）及び／又はリンクレイヤデバイス（ＭＡＣ又はフレーマデバイス等）と通信させるインターフェースを有してもよい。プロセッサ１３２６はまた、例えば、ホスト又は他のネットワークプロセッサと通信するためのインターフェース（例えば、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスインターフェース）を含んでも良い。更に、プロセッサ１３２６はまた、メモリコントローラ、ハッシュ・エンジン及びインターナル・スクラッチパッドメモリ等のエンジンによって共有される他のコンポーネントを有しても良い。
【００４３】
図１３に示したとおり、ラインカード１３２０のそれぞれは、霞暗号処理を実行する少なくとも１つの霞モジュール１３３０（１３３０Ａ等）と動作可能に接続されても良い。１つの形態として、霞モジュールはラインカードと分離しても良い。他の形態として、霞モジュールは、ラインカードと一体化されても良い。また、１つの形態では、霞モジュールはネットワークプロセッサ１３２６の一部又はＰＨＹ１３２２の一部であっても良い。更に、別の形態では、霞モジュールはリンクレイヤ、ネットワークレイヤ及び／又はアプリケーションレイヤ等の他のネットワークレイヤに置かれても良い。
【００４４】
図１〜１３を参照として本発明の実施形態を説明したが、本発明の実施形態において他に多くの形態が存在することは当業者には容易に分かるであろう。例えば、関数ブロック又は処理工程の実行順序は変わっても良く、及び／又は記載された関数ブロック又は処理工程の一部は変更、削除又は組み合わせられても良い。
【００４５】
上記において、本発明における様々な実施形態を示した。本発明の理解を促進すべく、説明の目的で、特定の数字、システム及び構成を示した。しかしながら、本発明の利益を得る当業者にとって、本発明が特別な詳細の記載無しでも実行できることは明らかであろう。即ち、公知の特徴、コンポーネント又はモジュールは、本発明を不明瞭としない目的で、省略、簡略化、結合又は分割されている。
【００４６】
ここに記した本発明の実施形態は、ハード・ワイヤード回路、デジタル回路、アナログ回路、プログラマブル回路等の回路に実装されても良い。又、本発明の実施形態はコンピュータ・プログラムの形で実装されても良い。そのようなコンピュータ・プログラムは、ハイレベル・プロシージャ又はオブジェクト指向プログラム言語の形でコード化されても良い。しかしながら、プログラムは必要に応じて、アセンブリ又はマシン言語の形で実現されても良い。言語はコンパイルされても良く、又は命令を直接翻訳して実行しても良い。更に、これらの手法は、幅広いネットワーク環境において用いられても良い。そのようなコンピュータ・プログラムは、ここに記した工程を実行する目的で、処理システムによって読み出されたときに、その処理システムを動作させる目的で、一般的又は特定用途のプログラム処理システムが読み出しできる記憶メディア又はデバイス（例えば、ハードディスクドライブ、フロッピディスクドライブ、読み出し専用メモリ（ＲＯＭ）、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、デジタル・バーサタイル・ディスク（ＤＶＤ）、又は他の記憶デバイス等）上に格納されても良い。本発明の形態はまた、ここに記した関数を実行する目的で特定及び既定の方法で処理システムを動作でき、処理システムにおいて用いられる機械読み出し可能記憶メディアとして実現されても良い。
【００４７】
実施形態を参照として本発明の説明を行ったが、この記載には限定されない。本発明の範囲を逸脱しない範囲において、本発明の他の形態に加え、本実施形態における多様な改良が当業者には考えられるであろう。
【図１】
2007535001.tif 000003
【図２】
2007535001.tif 000004
【図３】
2007535001.tif 000005
【図４】
2007535001.tif 000006
【図５】
2007535001.tif 000007
【図６】
2007535001.tif 000008
【図７ａ】
2007535001.tif 000009
【図７ｂ】
2007535001.tif 000010
【図８】
2007535001.tif 000011
【図９】
2007535001.tif 000012
【図１０】
2007535001.tif 000013
【図１１】
2007535001.tif 000014
【図１２】
2007535001.tif 000015
【図１３】
2007535001.tif 000016
【国際調査報告】
2007535001.tif 000017
2007535001.tif 000018