(57)【要約】パケットの順序を維持しながらパケットが処理される。パケットは受信されてシーケンス識別子がそれらに割り当てられる。シーケンス識別子はパケットに付随する連続した順序を指定する。パケットは複数の並列パケット変換プロセッサに送られてそこで処理される。処理済みのパケットはそれらのシーケンス識別子に基づいて順序付けられる。関連付けされたパケットを特定することがきるようにパケットはそれらを分類するために評価されてよい。またシーケンス識別子によって関連付けされたパケットの順序付けが特定されるようにシーケンス識別子がパケットに割り当てられる。処理済みのパケットはパケットの分類とパケットのシーケンス識別子に基づいて順序付けられる。並列パケット変換処理は特に並列暗号処理によく適する場合がある。
2005507614.tif 000002
【特許請求の範囲】
【請求項１】
パケットを受信するステップと、
受信されたパケットにそれらのパケットに付随する連続した順序を指定するシーケンス識別子を割り当てるステップと、
シーケンス識別子が割り当てられたパケットを、複数の並列パケット変換プロセッサに提供するステップと、
提供されたパケットを、前記複数の並列パケット変換プロセッサを用いて処理することにより処理済みパケットを提供するステップと、
提供された処理済みパケットを、それらのパケットのシーケンス識別子に基づいて順序付けるステップと
を含む、パケットを並列に変換処理する方法。
【請求項２】
関連付けされたパケットを特定することができるようにパケットを評価して分類するステップを更に含み、
パケットにシーケンス識別子を割り当てるステップにおいては、前記関連付けされたパケットにそれらの順序を指定するシーケンス識別子を割り当てるステップを含み、
パケットのシーケンス識別子に基づいて前記処理済みパケットを順序付けるステップにおいては、パケットの分類とパケットのシーケンス識別子に基づいて該処理済みパケットを順序付けるステップを含むことを特徴とする請求項１に記載の並列パケット変換処理方法。
【請求項３】
パケットの前記評価に基づいて関連付けされたパケットにフロー識別子を割り当てるステップを更に含むことを特徴とする請求項２に記載の並列パケット変換処理方法。
【請求項４】
パケットを評価するステップは、パケットに付随する送信元アドレスと宛先アドレスとプロトコルを評価するステップを含み、
関連付けされたパケットにフロー識別子を割り当てるステップは、パケットに付随する送信元アドレスと宛先アドレスとプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるステップを含むことを特徴とする請求項３に記載の並列パケット変換処理方法。
【請求項５】
パケットを評価するステップは、パケットに付随する宛先アドレスとセキュリティパラメータインデックス（ＳＰＩ）とプロトコルを評価するステップを含み、
関連付けされたパケットにフロー識別子を割り当てるステップは、パケットに付随する宛先アドレスとセキュリティパラメータインデックスとプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるステップを含むことを特徴とする請求項３に記載の並列パケット変換処理方法。
【請求項６】
パケットに付随する宛先アドレスとセキュリティパラメータインデックスとプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるステップは、パケットに付随する宛先アドレスとセキュリティパラメータインデックスとポートとプロトコルとに基づいて関連付けされたパケットにフロー識別子を割り当てるステップを含むことを特徴とする請求項５に記載の並列パケット変換処理方法。
【請求項７】
関連付けされたパケットに含まれる情報に基づいて該関連付けされたパケットのフロー識別子を生成するステップを更に含むことを特徴とする請求項３に記載の並列パケット変換処理方法。
【請求項８】
前記パケットが暗号パケットを構成することを特徴とする請求項７に記載の並列パケット変換処理方法。
【請求項９】
当該パケットが暗号フローのパケットであるかどうかを判定するステップを更に含み、
フロー識別子を生成するステップは、当該パケットが暗号フローのパケットである場合にはフロー識別子を提供するためにパケットに含まれる送信元アドレスと宛先アドレスと暗号プロトコルをハッシュするステップを含むことを特徴とする請求項８に記載の並列パケット変換処理方法。
【請求項１０】
当該パケットが解読フローのパケットであるかどうかを判定するステップを更に含み、
フロー識別子を生成するステップは、当該パケットが解読フローのパケットである場合にはフロー識別子を提供するためにパケットに含まれる宛先アドレスとセキュリティパラメータインデックスと暗号プロトコルをハッシュするステップを含むことを特徴とする請求項８に記載の並列パケット変換処理方法。
【請求項１１】
フロー識別子を生成するステップは、パケットのフィールドをハッシュしてフロー識別子を提供するステップを含むことを特徴とする請求項６に記載の並列パケット変換処理方法。
【請求項１２】
パケットのフィールドをハッシュするステップは、
パケットのフィールドにそれぞれの素数を掛けて乗算した値を提供するステップと、
前記乗算した値を総和して総和した値を提供するステップと、
ｎを結果として生じるフロー識別子のビット数としたときに２nを超えない最大素数を法とする前記総和の値（モジュロ値）を決定するステップと
を含むことを特徴とする請求項１１に記載の並列パケット変換処理方法。
【請求項１３】
パケットのフィールドをハッシュするステップは、
ｎを結果として生じるフロー識別子のビット数としたときに２nを超えない最大素数を法としてパケットのそれぞれのフィールドを決定してそのモジュロ結果を提供するステップと、
前記モジュロ結果にそれぞれの素数を掛けて乗算した値を提供するステップと、
前記乗算した値を総和するステップと
を含むことを特徴とする請求項１１に記載の並列パケット変換処理方法。
【請求項１４】
パケットの分類とパケットのシーケンス識別子に基づいて前記処理済みパケットを順序付けるステップは、
関連付けされたパケットを処理する並列パケット変換プロセッサの出力を該関連付けされたパケットの順序付けに対応する順序で許可することができるように、関連付けされたパケットを処理する並列した暗号プロセッサの各プロセッサの出力のタイミングを該関連付けされたパケットに付随した出力シーケンス値に基づいて制御するステップを含むことを特徴とする請求項２に記載の並列パケット変換処理方法。
【請求項１５】
出力のタイミングを制御するステップは、
関連付けされたパケットに付随する最新の出力シーケンス値を保持するステップと、
前記並列パケット変換プロセッサのいずれかのプロセッサからの出力パケットが最新の出力シーケンス値に対応するシーケンス識別子を有するかどうかを判定するステップと、
前記並列パケット変換プロセッサのいずれかのプロセッサからの出力パケットが最新の出力シーケンス値に対応するシーケンス識別子を有する場合には、該いずれかのプロセッサが該出力パケットを出力することを許可するステップと
を含むことを特徴とする請求項１４に記載の並列パケット変換処理方法。
【請求項１６】
パケットの前記評価に基づいて関連付けされたパケットにフロー識別子を割り当てるステップを更に含み、関連付けされたパケットには共通の識別子が割り当てられ、関連付けされたパケットから成る異なるグループにはそれぞれ異なるフロー識別子が割り当てられることを特徴とする請求項１５に記載の並列パケット変換処理方法。
【請求項１７】
処理済みパケットのフロー識別子と処理済みパケットのシーケンス識別子に基づいて前記並列パケット変換プロセッサの出力を制御するステップを更に含むことを特徴とする請求項１６に記載の並列パケット変換処理方法。
【請求項１８】
処理済みパケットのフロー識別子に基づいて前記並列パケット変換プロセッサの出力を制御するステップは、フロー識別子の異なる処理済みパケットに出力される機会が与えられることを保証することができるように該並列パケット変換プロセッサの出力を制御するステップを含むことを特徴とする請求項１７に記載の並列パケット変換処理方法。
【請求項１９】
前記パケット変換プロセッサは暗号プロセッサを構成しており、前記パケットは暗号パケットを構成していることを特徴とする請求項１に記載の並列パケット変換処理方法。
【請求項２０】
関連付けされたパケットにフロー識別子を割り当てるステップと、
前記関連付けされたパケットの各パケットにシーケンス識別子を割り当てるステップと、
パケット、フロー識別子、およびシーケンス識別子をカプセル化してパケットオブジェクトを提供するステップと、
前記パケットオブジェクトをそれぞれ複数の並列パケット変換プロセッサのいずれかのプロセッサに提供するステップと、
前記パケットオブジェクトをそれぞれのパケット変換処理プロセッサを利用して処理し、処理済みのパケットオブジェクトを提供するステップと、
前記処理済みのパケットオブジェクトのフロー識別子とシーケンス識別子に基づいて該処理済みのパケットオブジェクトを選択的に出力するステップと
を含む、複数の並列パケット変換プロセッサを有する処理システムにおけるパケットの処理を制御する方法。
【請求項２１】
フロー識別子を割り当てるステップは、
それぞれのパケットからセレクタ値を抽出するステップと、
前記フロー識別子を提供するために前記セレクタ値をハッシュするステップと
を含むことを特徴とする請求項２０に記載の並列パケット変換処理制御方法。
【請求項２２】
前記パケット変換プロセッサは暗号プロセッサを構成しており、前記セレクタ値を抽出するステップは、
当該パケットがインバウンド暗号パケットかアウトバウンド暗号パケットかを判定するステップと、
当該パケットがアウトバウンド暗号パケットである場合には該パケットから送信元アドレスと宛先アドレスとプロトコルを抽出するステップと、
当該パケットがインバウンド暗号パケットである場合には該パケットから宛先アドレスとセキュリティパラメータインデックスとプロトコルを抽出するステップと
を含むことを特徴とする請求項２１に記載の並列パケット変換処理制御方法。
【請求項２３】
フロー識別子を提供するためにセレクタ値をハッシュするステップは、
前記セレクタ値にそれぞれの素数を掛けて乗算するステップと、
前記乗算の結果を総和するステップと、
ｎを前記フロー識別子のビット数としたときに２nを超えない最大素数を法として前記総和の結果をモジュロ値として決定するステップと
を含むことを特徴とする請求項２２に記載の並列パケット変換処理制御方法。
【請求項２４】
フロー識別子を提供するためにセレクタ値をハッシュするステップは、
ｎを前記フロー識別子のビット数としたときに２nを超えない最大素数を法として前記セレクタ値の各値をモジュロ値として決定してそれらのモジュロ値を提供するステップと、
前記モジュロ値にそれぞれの対応する素数を掛けて乗算するステップと、
前記乗算の結果を総和するステップと
を含むことを特徴とする請求項２２に記載の並列パケット変換処理制御方法。
【請求項２５】
フロー識別子に関連したシーケンス識別子のテーブルを保持するステップを更に含み、
関連付けされたパケットの各パケットにそれぞれのシーケンス識別子を割り当てるステップは、
当該パケットのフロー識別子を利用して前記テーブルから最新のシーケンス識別子を調べるステップと、
当該パケットに調べた最新のシーケンス識別子を割り当てるステップと、
前記最新のシーケンス識別子を増分して該最新のシーケンス識別子を更新するステップと、
前記テーブルに当該パケットのフロー識別子に関連する前記更新された最新のシーケンス識別子を記憶するステップと
を含むことを特徴とする請求項２０に記載の並列パケット変換処理制御方法。
【請求項２６】
処理済みパケットオブジェクトのフロー識別子とシーケンス識別子に基づいて該処理済みパケットオブジェクトを選択的に出力するステップは、
処理済みパケットオブジェクトのシーケンス識別子が該処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応するかどうかを判定するステップと、
処理済みパケットオブジェクトのシーケンス識別子が該処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応する場合には該処理済みパケットオブジェクトを出力するステップと
を含むことを特徴とする請求項２０に記載の並列パケット変換処理制御方法。
【請求項２７】
フロー識別子に関連した最新の出力シーケンス識別子のテーブルを保持するステップを更に含み、
処理済みパケットオブジェクトのシーケンス識別子が該処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応するかどうかを判定するステップと、
処理済みパケットオブジェクトからフロー識別子とシーケンス識別子を抽出するステップと、
前記テーブルにおいて処理済みパケットオブジェクトのフロー識別子を利用して最新の出力シーケンス識別子を調べるステップと、
前記テーブルから調べた最新の出力シーケンス識別子を処理済みのパケットオブジェクトから抽出されたシーケンス識別子と比較してそれらが一致するかどうかどうかを判定するステップと、
前記最新の出力シーケンス識別子と前記抽出されたシーケンス識別子が一致する場合には該最新の出力シーケンス識別子を増分して最新の出力シーケンス識別子を更新するステップと、
前記テーブルに当該処理済みパケットオブジェクトのフロー識別子に関連する前記更新された最新のシーケンス識別子を記憶するステップと
を含むことを特徴とする請求項２６に記載の並列パケット変換処理制御方法。
【請求項２８】
複数の並列したパケット変換処理ユニットと、
パケットのシリアルストリームを受信して、受信されたパケットの順序を特定し、それらのパケットを前記複数のパケット変換処理ユニットに提供して、それらの受信されたパケットを並列処理することができるように構成されたパケット入力デマルチプレクサと、
前記複数のパケット変換処理ユニットから処理済みのパケットを受信して前記パケット入力デマルチプレクサによって特定された順序により該処理済みのパケットを出力するように構成されたパケット出力マルチプレクサと
を含む並列パケット変換処理システム。
【請求項２９】
前記複数の並列したパケット変換処理ユニットは、ある処理済みのパケットが前記パケット出力マルチプレクサによって出力される前に該複数のパケット変換処理ユニットが複数のパケットを処理することができるようにするために、出力するための処理済みのパケットをバッファ記憶するように構成されていることを特徴とする請求項２８に記載の並列パケット変換処理システム。
【請求項３０】
前記パケット入力デマルチプレクサは更に、関連付けされたパケットにそれらのパケットの順序付けを特定するシーケンス識別子を割り当てるように構成されており、
前記パケット出力マルチプレクサは更に、パケットの分類とパケットのシーケンス識別子に基づいて処理済みのパケットを順序付けるように構成されていることを特徴とする請求項２８に記載の並列パケット変換処理システム。
【請求項３１】
前記パケット入力デマルチプレクサは更に、受信されたパケットを評価して、それらのパケットの評価に基づいて関連付けされたパケットにフロー識別子を割り当てるように構成されていることを特徴とする請求項３０に記載の並列パケット変換処理システム。
【請求項３２】
前記パケット入力デマルチプレクサは、受信されたパケットに付随する送信元アドレスと宛先アドレスとプロトコルを評価して、それらのパケットに付随する送信元アドレスと宛先アドレスとプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるように構成されていることを特徴とする請求項３１に記載の並列パケット変換処理システム。
【請求項３３】
前記パケット入力デマルチプレクサは更に、受信されたパケットに付随する宛先アドレスとセキュリティパラメータインデックス（ＳＰＩ）とプロトコルを評価して、それらのパケットに付随する宛先アドレスとセキュリティパラメータインデックスとプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるように構成されていることを特徴とする請求項３１に記載の並列パケット変換処理システム。
【請求項３４】
前記パケット入力デマルチプレクサは、関連付けされたパケットに含まれる情報に基づいてそれらの関連付けされたパケットのフロー識別子を生成するように構成されていることを特徴とする請求項３１に記載の並列パケット変換処理システム。
【請求項３５】
前記パケット入力デマルチプレクサは更に、当該パケットが暗号フローのパケットであるかどうかを判定し、当該パケットが暗号フローのパケットである場合に前記フロー識別子を提供することができるようにパケットに含まれる送信元アドレスと宛先アドレスとプロトコルをハッシュすることによって該フロー識別子を生成するように構成されていることを特徴とする請求項３４に記載の並列パケット変換処理システム。
【請求項３６】
前記パケット入力デマルチプレクサは更に、当該パケットが解読フローのパケットであるかどうかを判定し、当該パケットが解読フローのパケットである場合に前記フロー識別子を提供することができるようにパケットに含まれる宛先アドレスとセキュリティパラメータインデックスとプロトコルをハッシュすることによって該フロー識別子を生成するように構成されていることを特徴とする請求項３４に記載の並列パケット変換処理システム。
【請求項３７】
前記パケット入力デマルチプレクサはパケットのフィールドをハッシュすることによって前記フロー識別子を生成して該フロー識別子を提供するように構成されていることを特徴とする請求項３４に記載の並列パケット変換処理システム。
【請求項３８】
前記パケット入力デマルチプレクサは、パケットのフィールドにそれぞれの素数を掛けて乗算した値を提供し、それらの乗算した値を総和して総和した値を提供し、ｎを結果として生じるフロー識別子のビット数としたときに前記総和した値の２nを法とする値（ｍｏｄ２n）を決定することによって、パケットのフィールドをハッシュするように構成されていることを特徴とする請求項３７に記載の並列パケット変換処理システム。
【請求項３９】
前記パケット入力デマルチプレクサは、ｎを結果として生じるフロー識別子のビット数としたときにパケットのフィールドの２nを法とする値（ｍｏｄ２n）を決定してモジュロ値を提供し、それらのモジュロ値にそれぞれの素数を掛けて乗算した値を提供し、それらの乗算した値を総和して総和した値を提供することによって、パケットのフィールドをハッシュするように構成されていることを特徴とする請求項３７に記載の並列パケット変換処理システム。
【請求項４０】
前記パケット出力マルチプレクサは、関連付けされたパケットを処理する並列パケット変換プロセッサの出力を該関連付けされたパケットの順序付けに対応する順序で許可することができるように、関連付けされたパケットに付随する出力シーケンス値に基づいて、関連付けされたパケットを処理する並列した暗号プロセッサの各プロセッサの出力のタイミングを制御することによって、パケットの分類とパケットのシーケンス識別子に基づいて処理済みのパケットを順序付けるように構成されていることを特徴とする請求項３０に記載の並列パケット変換処理システム。
【請求項４１】
前記パケット出力マルチプレクサは、関連付けされたパケットに付随する最新の出力シーケンス値を保持し、並列パケット変換プロセッサのいずれかのプロセッサからの出力パケットが前記最新の出力シーケンス値に対応するシーケンス識別子を有するかどうかを判定し、該出力パケットが前記最新の出力シーケンス値に対応するシーケンス識別子を有する場合には該いずれかのプロセッサが該出力パケットを出力することを許可することによって、出力のタイミングを制御するように構成されていることを特徴とする請求項４０に記載の並列パケット変換処理システム。
【請求項４２】
前記パケット入力デマルチプレクサは更に、パケットの前記評価に基づいて関連付けされたパケットにフロー識別子を割り当てるように構成されており、該関連付けされたパケットは、複数のフロー識別子が別々の関連付けされたパケットに割り当てられるようにそれぞれ別々の関連付けされたパケットを含むことを特徴とする請求項４１に記載の並列パケット変換処理システム。
【請求項４３】
前記パケット出力マルチプレクサは更に、前記並列したプロセッサの出力を処理済みパケットのフロー識別子と処理済みパケットのシーケンス識別子とに基づいて制御するように構成されていることを特徴とする請求項４２に記載の並列パケット変換処理システム。
【請求項４４】
前記パケット出力マルチプレクサは、前記並列したプロセッサの出力をフロー識別子の異なる処理済みパケットに出力の機会を保証することができるように制御することによって該並列したプロセッサの出力を処理済みパケットのフロー識別子に基づいて制御するように構成されていることを特徴とする請求項４３に記載の並列パケット変換処理システム。
【請求項４５】
前記パケット変換プロセッサは暗号プロセッサであることを特徴とする請求項２８に記載の並列パケット変換処理システム。
【請求項４６】
前記パケット変換プロセッサは圧縮プロセッサであることを特徴とする請求項２８に記載の並列パケット変換処理システム。
【請求項４７】
パケットを並列に変換処理するシステムであって、
パケットを受信するための手段と、
受信されたパケットにそれらのパケットに付随する連続した順序を指定するシーケンス識別子を割り当てるための手段と、
シーケンス識別子が割り当てられたパケットを複数の並列パケット変換プロセッサに提供するための手段と、
提供されたパケットを前記複数の並列パケット変換プロセッサを利用して処理して処理済みのパケットを提供するための手段と、
提供された処理済みパケットをそれらのパケットのシーケンス識別子に基づいて順序付けるための手段と
を含む並列パケット変換処理システム。
【請求項４８】
複数の並列パケット変換プロセッサと、
関連付けされたパケットにフロー識別子を割り当てるための手段と、
前記関連付けされたパケットの各パケットにシーケンス識別子を割り当てるための手段と、
パケット、フロー識別子、およびシーケンス識別子をカプセル化してパケットオブジェクトを提供するための手段と、
前記パケットオブジェクトをそれぞれ前記複数の並列パケット変換プロセッサのいずれかのプロセッサに提供するための手段と、
前記パケットオブジェクトをそれぞれのパケット変換プロセッサを利用して処理し、処理済みのパケットオブジェクトを提供するための手段と、
前記処理済みのパケットオブジェクトのフロー識別子とシーケンス識別子とに基づいて該処理済みのパケットオブジェクトを選択的に出力するための手段と
を含む並列パケット処理システム。
【請求項４９】
パケットを並列に変換処理するためのコンピュータプログラム製品であって、コンピュータ読み取り可能なプログラムコードがその中に実現されたコンピュータ読み取り可能な媒体を含み、該コンピュータ読み取り可能なプログラムコードは、
パケットを受信するように構成されたコンピュータ読み取り可能なプログラムコードと、
受信されたパケットにそれらのパケットに付随する連続した順序を指定するシーケンス識別子を割り当てるように構成されたコンピュータ読み取り可能なプログラムコードと、
シーケンス識別子が割り当てられたパケットを複数の並列パケット変換プロセッサに提供するように構成されたコンピュータ読み取り可能なプログラムコードと、
提供されたパケットを前記複数の並列パケット変換プロセッサを利用して処理して処理済みのパケットを提供するように構成されたコンピュータ読み取り可能なプログラムコードと、
提供された処理済みパケットをそれらのパケットのシーケンス識別子に基づいて順序付けるように構成されたコンピュータ読み取り可能なプログラムコードと
を含む並列パケット変換処理のためのコンピュータプログラム製品。
【請求項５０】
複数の並列パケット変換プロセッサを利用してパケットを処理するためのコンピュータプログラム製品であって、コンピュータ読み取り可能なプログラムコードがその中に実現されたコンピュータ読み取り可能な媒体を含み、
該コンピュータ読み取り可能なプログラムコードは、
関連付けされたパケットにフロー識別子を割り当てるように構成されたコンピュータ読み取り可能なプログラムコードと、
前記関連付けされたパケットの各パケットにシーケンス識別子を割り当てるように構成されたコンピュータ読み取り可能なプログラムコードと、
パケット、フロー識別子、およびシーケンス識別子をパケット毎にカプセル化してパケットオブジェクトを提供するように構成されたコンピュータ読み取り可能なプログラムコードと、
前記パケットオブジェクトをそれぞれ前記複数の並列パケット変換プロセッサのいずれかのプロセッサに提供するように構成されたコンピュータ読み取り可能なプログラムコードと、
前記パケットオブジェクトをそれぞれのパケット変換プロセッサを利用して処理して処理済みのパケットオブジェクトを提供するように構成されたコンピュータ読み取り可能なプログラムコードと、
前記処理済みのパケットオブジェクトのフロー識別子とシーケンス識別子に基づいて該処理済みのパケットオブジェクトを選択的に出力するように構成されたコンピュータ読み取り可能なプログラムコードと
を含む並列パケット変換処理のためのコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理技術、特に並列暗号プロセッサを使用した暗号処理技術に関する。
【背景技術】
【０００２】
電子商取引におけるクレジットカード情報、オンラインバンキングのバンキング情報、株式取引情報等といったセキュア情報を伝送するのにインターネットが広く使用されてきており、セキュリティに対する関心がますます広まってきている。同様に、インターネットを通信媒体として使用するもののインターネットにセキュリティプロトコルを課してネットワークホスト間のセキュア通信（secure communication）を実現するＶＰＮ（Virtual Private Networks）がインターネットにおいて広く見られるようになってきた。一般にこれらのセキュリティプロトコルは、２つのホスト処理システム間の全通信経路にセキュア通信が備わるという意味で「終端間（end-to-end）」セキュリティを実現することを目的としている。
【０００３】
これらの問題や他の問題に対処するために、ＩＰｓｅｃアーキテクチャ（Internet Protocol Security Architecture）が開発された。ＩＰｓｅｃは１つのＶＰＮ（Virtual Private Networks）テクノロジーである。一般にＩＰｓｅｃは対称鍵を使用して仲間同士（peers）間のトラフィックを保護する。これらの対称鍵はＩＫＥ（Internet Key Exchange）機能によって生成され配布される。ＩＰｓｅｃはＳＡ（security associations）を使用してトラフィックにセキュリティサービスを提供する。ＳＡは２つのＩＰｓｅｃシステム間の一方向論理接続であって、三重項＜セキュリティパラメータインデックス（ＳＰＩ：Security Parameter Index）、ＩＰ宛先アドレス（IP Destination Address）、セキュリティプロトコル（Security Protocol）＞によって一意的に特定される。双方向通信を実現するには、一般に各方向に１つのＳＡ、従って２つのＳＡが指定される。
【０００４】
ＳＡは、ＳＰＤ（Security Policy Database：セキュリティポリシーデータベース）とＳＡＤ（Security Associations Database：セキュリティアソシエーションデータベース）から成る２つのデータベースを保持するＩＰｓｅｃシステムによって管理される。ＳＰＤはどういったセキュリティサービスがＩＰトラフィックに提供されるべきかを指定する。一般に、ＳＰＤはインバウンドトラフィックとアウトバウンドトラフィックに対する別個のポリシー項目の順番付きリストを含む。これらのポリシーは例えば、あるトラフィックはＩＰｓｅｃの手続を踏んではならないとか、あるトラフィックは破棄されなければならないとか、またあるトラフィックはＩＰｓｅｃ処理されなければならないといったことを指定する場合がある。
【０００５】
ＳＡＤは各ＳＡについてのパラメータ情報を含む。こうしたパラメータ情報には、ＡＨ（Authentication Header：認証ヘッダ）またはＥＳＰ（Encapsulating Security Payload：暗号ペイロード）セキュリティプロトコルのセキュリティプロトコルアルゴリズムと鍵、シーケンス番号、プロトコル方式およびＳＡ存続期間が含まれることがある。ＩＰｓｅｃが実施されると、アウトバウンドパケットに対してＳＰＤはＩＰｓｅｃ処理が必要とされるかどうか、あるいはパケットの他の処理もしくは破棄が実行されるべきであるかどうかを判定するために調べられる。ＩＰｓｅｃが必要とされる場合、アウトバウンドＳＡＤはパケットがそのプロファイルと合致する既存のＳＡについて検索される。ＳＡが見出された場合あるいはＳＡの折衝（ネゴシエーション）後に、ＩＰｓｅｃはＳＡによって規定されたパケットに適用されてパケットが配信される。インバウンドパケット対しては、ＩＰｓｅｃまたは他の処理が必要とされるかどうかを判定するためにインバウンドＳＡＤを直接調べることが可能である。ＩＰｓｅｃが必要とされる場合、ＳＡＤはインバウンドパケットのセキュリティパラメータインデックスと合致する既存のセキュリティパラメータについて検索される。次いでＳＡはインバウンドパケットをＩＰｓｅｃ処理するために使用される。インバウンドポリシーに対する最終チェックがインバウンド処理後に行われて結果のパケットの有効性が検証される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上の議論から明らかなように、かなりの量のプロセッサリソースがセキュリティ処理に当てられる場合がある。ＩＰｓｅｃ処理とセキュアソケット層（ＳＳＬ：Secure Socket Layer）処理は例えば、データの暗号化と解読、並びにそのデータへのセキュリティポリシーの適用を必要とすることがある。こうしたセキュリティ処理は通信のスループットに悪影響を及ぼすことがある。例えば、セキュリティ処理によって、与えられた期間内にオンラインバンキングシステムが受け取れる取引数が減少する場合がある。同様に、スループットの問題は、インターネット上でのビデオまたはオーディオの伝送といったインターネットの「リアルタイム」用途の課題となることがある。従って、暗号化（encryption）に関連する複雑なタスクを実行するための専用の処理能力を提供することは有益なことがあり、そうすることによりインターネットセキュリティ処理能力、ひいてはスループットが改善される場合がある。
【０００７】
特定タイプのインターネットトラフィックに伴う更なる難しさは、パケットが受信される配列または順序に関係する。例えば、一般的なインターネットトラフィックでは、パケットはばらばらの順序で送受信され、その後に受信端末において順序付けし直される場合がある。現行のインターネットプロトコル（ＩＰ）規格では、この順序付けし直しはＩＰ層で許され、端末ユニットはアプリケーション層にデータを送る前に必要な場合にパケットを順序付けし直す。しかしながら、ＩＰネットワーク上での音声およびビデオデータの最近の導入例ではパケットがネットワークにおいて順序付けし直されない重要性が高まっている。端末局においてパケットを順序付けし直すために必要な待ち時間とオーバヘッドは、これらのリアルタイム用途には受け容れられないことがあり、パケット落ちという結果が頻繁にもたらされる場合がある。
【０００８】
暗号性能を改善するために、暗号化アクセレレータのアーキテクチャにおいて集約（aggregation）が利用されることがある。並列処理技術を使用することにより、向上した処理能力が実現されることがある。しかしながら、暗号パケットの従来の並列処理では、異なる長さのパケットまたは暗号ユニットにおいて異なる処理を必要とすることにより処理時間が異なる場合がある。このため、パケットは並列暗号システムを経由したときに順序付けし直されることがある。例えば、サイズが３ｘ、２ｘ、およびｘのパケットから成るシーケンスが並列暗号処理ユニットに同時に提供される場合には、ｘ、２ｘ、３ｘの順序で終わることになる（各パケットに必要な変換と暗号ユニットの処理能力は同じ様なものと仮定する）。これらのパケットが単に処理が完了した順に出力される場合、パケットは順序付けし直されていることになろう。このため、並列処理に対する従来の集約技術は暗号処理における使用には適していないことがある。
【課題を解決するための手段】
【０００９】
上記課題を解決し得る本発明の実施態様として、一連の暗号パケット（cryptographic packets）の順序（sequence）を維持しながらそれらのパケットを処理するための方法、システムおよびコンピュータプログラム製品が提供される。パケットが受信され、受信されたパケットにシーケンス識別子（sequence identifier）が割り当てられる。シーケンス識別子はパケットに付随する連続した順序（serial order）を指定する。受信されたパケットは、複数の並列パケット変換プロセッサに提供され、パケットはそれらのパケット変換プロセッサを用いて処理される。処理済みのパケットはそれらのシーケンス識別子に基づいて順序付けられる。本発明の更なる実施態様では、関連付けされたパケット（related packets）を特定することができるようにパケットはそれらを分類するためにそれぞれ評価される。シーケンス識別子によって関連付けされたパケットが特定されるようにシーケンス識別子がパケットにそのように割り当てられる。処理済みのパケットはパケットの分類とパケットのシーケンス識別子に基づいて順序付けられる。
【００１０】
本発明のまた更なる実施態様において、フロー識別子がパケットの評価に基づいて関連付けされたパケットに割り当てられる。このようなケースでは、パケットの評価は、それらのパケットに付随する送信元アドレス、宛先アドレスおよびプロトコルを含むことがある。フロー識別子はそうしたパケットに付随する送信元アドレス、宛先アドレスおよびプロトコルに基づいて関連付けされたパケットに割り当てられることがある。
【００１１】
本発明の追加的な実施態様において、パケットはそれらに付随する宛先アドレス、セキュリティパラメータインデックス（security parameter index）およびプロトコルを評価することにより評価される。このような態様においては、フロー識別子は、パケットに付随する宛先アドレス、セキュリティパラメータインデックスおよびプロトコルに基づいて関連付けされたパケットにフロー識別子を割り当てるといった仕方で関連付けされたパケットに割り当てられることがある。
【００１２】
本発明の更に追加的な実施態様において、パケットは暗号パケット（cryptographic packets）であり、関連付けされたパケットのフロー識別子が関連付けされたパケットに含まれる情報に基づいて生成される。こうした態様では、パケットは暗号フロー（encrypting flow）のパケットであるかどうかが判定されることがある。暗号フローのパケットの場合、それらのパケットに含まれる送信元アドレス、宛先アドレスおよびプロトコルをハッシュすることによってフロー識別子が生成されることがある。同様に、パケットは解読フロー（decrypting flow）のパケットであるかどうかが判定されることがある。解読フローのパケットの場合、フロー識別子はそれらのパケットに含まれる宛先アドレス、セキュリティパラメータインデックスおよびプロトコルをハッシュすることによって生成されることがある。
【００１３】
本発明の更なる実施態様において、前記フロー識別子はパケットのいくつかのフィールドをハッシュ（hash）することによって生成されることがある。このような態様において、パケットのフィールドにはそれぞれ素数が掛けられて乗算した値が提供される。この乗算した値は足し合わされて、その総和と、ｎを結果として生じるフロー識別子のビット数としたときに、２nを超えない最大素数を法とする前記総和のモジュロ値とが求められる。
【００１４】
本発明の追加的な実施態様において、処理済みのパケットはパケットの分類とパケットのシーケンス識別子に基づいて順序付けされるが、その順序付けは、関連付けされたパケットを処理する並列パケット変換プロセッサの出力をその関連付けされたパケットの順序付けに対応する順序で許可することができるように、関連付けされたパケットを処理する並列した暗号プロセッサの各プロセッサの出力のタイミングをその関連付けされたパケットに付随した出力シーケンス値に基づいて制御することによって行われる。このような態様においては、出力のタイミングが制御されることがあるが、その出力のタイミングの制御は、関連付けされたパケットに付随する最新の出力シーケンス値を保持し、並列パケット変換プロセッサのどれか１つのプロセッサからの出力パケットがその最新の出力シーケンス値に対応するシーケンス識別子を有するかどうかを判定し、その出力パケットがその最新の出力シーケンス値に対応するシーケンス識別子を有する場合にはそのどれか１つのプロセッサがその出力パケットを出力することを許可することによって行われる。
【００１５】
さらには、並列したプロセッサの出力は更に、処理済みパケットのフロー識別子と処理済みパケットのシーケンス識別子に基づいて制御されることがある。このようなケースにおいては、並列したプロセッサの出力は、フロー識別子の異なる処理済みパケットに出力の機会を保証することができるように制御されることがある。
【００１６】
本発明のなお更なる実施態様において、複数の並列パケット変換プロセッサを有する暗号処理システムにおけるパケットの処理は、関連付けされたパケット（のグループ毎に）に１つのフロー識別子を割り当て、（それぞれのグループの）関連付けされたパケットの各パケットにそれぞれの１つのシーケンス識別子を割り当て、パケットとフロー識別子とシーケンス識別子をパケット毎にカプセル化してパケットオブジェクトを提供することによって制御されることがある。パケットオブジェクトはそれぞれ前記複数の並列パケット変換プロセッサのどれか１つのプロセッサに提供され、パケットオブジェクトはそれぞれのパケット変換プロセッサを利用して処理されて処理済みのパケットオブジェクトが提供される。処理済みのパケットオブジェクトはその処理済みのパケットオブジェクトのフロー識別子とシーケンス識別子に基づいて選択的に出力される。
【００１７】
本発明の追加的な実施態様において、フロー識別子は、そのフロー識別子を提供することができるようにそれぞれのパケットからセレクタ値（selector values）を抽出してそれらのセレクタ値をハッシュすることにより割り当てられる。セレクタ値の抽出は、パケットがインバウンド暗号パケット（inbound cryptographic packet）かアウトバウンド暗号パケット（outbound cryptographic packet）かを判定してパケットがアウトバウンド暗号パケットの場合にはそのパケットから送信元アドレスと宛先アドレスとプロトコルを抽出し、パケットがインバウンド暗号パケットの場合にはそのパケットから宛先アドレスとセキュリティパラメータインデックスとプロトコルを抽出することによって行われることがある。
【００１８】
このような態様では、セレクタ値にそれぞれの素数を掛けて乗算した結果の値を総和し、ｎをフロー識別子のビット数としたときに、２nを超えない最大素数を法とする前記総和の結果（ｍｏｄ２n）を決定することによってセレクタ値がハッシュされて、そのフロー値が提供される。
【００１９】
本発明のさらに追加的な実施態様において、フロー識別子に関連したシーケンス識別子のテーブルが保持される。シーケンス識別子は関連付けされたパケットの各パケットに割り当てられるが、その段階は、パケットのフロー識別子を利用して前記テーブルから最新のシーケンス識別子（current sequence identifier）を調べ、そのパケットに調べた最新のシーケンス識別子を割り当て、その最新のシーケンス識別子を増分して更新された最新のシーケンス識別子を提供し、前記テーブルにそのパケットのフロー識別子に関連する更新された最新のシーケンス識別子を記憶することによって行われる。
【００２０】
さらには、処理済みのパケットオブジェクトは、その処理済みのパケットオブジェクトのフロー識別子とシーケンス識別子に基づいて選択的に出力されるが、その選択に出力する段階は、処理済みパケットオブジェクトのシーケンス識別子がその処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応するかどうかを判定して、その処理済みパケットオブジェクトのシーケンス識別子がその処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応する場合にはその処理済みパケットオブジェクトを出力することによって行われる。同様に、フロー識別子に関連する最新の出力シーケンス識別子のテーブルが保持される。こうして、処理済みパケットオブジェクトのシーケンス識別子がその処理済みパケットオブジェクトのフロー識別子に対する最新の出力シーケンス識別子に対応するかどうかの判定は、処理済みパケットオブジェクトからフロー識別子とシーケンス識別子を抽出し、前記テーブルからその処理済みパケットオブジェクトのフロー識別子を利用して最新の出力シーケンス識別子を調べ、前記テーブルから調べた最新の出力シーケンス識別子を処理済みのパケットオブジェクトから抽出されたシーケンス識別子と比較してそれらが一致するかどうかどうかを判定することにより行われる。また前記最新の出力シーケンス識別子と抽出されたシーケンス識別子が一致する場合にはその最新の出力シーケンス識別子を増分（increment）して最新の出力シーケンス識別子を更新し、その処理済みパケットオブジェクトのフロー識別子に関連する更新された最新のシーケンス識別子を前記テーブルに記憶する。
【００２１】
本発明の特定の実施態様に基づくパケット変換システムは、複数の並列したパケット変換処理ユニットと、パケットのシリアルストリームを受信し、受信されたパケットの順序を特定し、それらのパケットを前記複数のパケット変換処理ユニットに提供して、それらの受信されたパケットを並列処理することができるように構成されたパケット入力デマルチプレクサと、前記複数の並列したパケット変換処理ユニットから処理済みのパケットを受信して前記パケット入力デマルチプレクサによって特定された順序でその処理済みのパケットを出力するように構成されたパケット出力マルチプレクサと、を具備する。パケット入力デマルチプレクサとパケット出力マルチプレクサはここに述べられるように更に構成されることがある。
【００２２】
本発明のある特定の態様として、パケット変換プロセッサは暗号プロセッサである。こうした態様では、パケットは暗号パケットである。
【００２３】
当業者によって更に理解されるように、本発明は方法、装置／システム、および／またはコンピュータプログラム製品として実施される。
【発明を実施するための最良の形態】
【００２４】
以下、添付図面を参照して本発明の実施の好ましい態様を詳細に説明する。しかしながら本発明は多くの異なる形で実施されてよく、本明細書に示される態様に限定されるものと解されるべきではない。むしろこれらの実施態様は本開示が周到かつ完全なものとなり、本発明の範囲を当業者に明示することを意図している。また全体を通じて同一または類似の符号が同一または類似の構成要素に付される。
【００２５】
当業者によって理解されるように、本発明は、全面的にハードウェアの態様、全面的にソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード等）の態様、あるいはソフトウェアとハードウェアの両方の側面を含む態様の形を採ることができる。さらに、本発明は、命令実行システムによって使用されるためのあるいはそれと関連したコンピュータ使用可能またはコンピュータ読み取り可能な記憶媒体に実現されたコンピュータ使用可能またはコンピュータ読み取り可能なプログラムコード手段を有する記憶媒体上のコンピュータプログラム製品の形を採ることができる。本文書のコンテクストにおいて、コンピュータ使用可能またはコンピュータ読み取り可能な媒体は命令実行システムまたは機器または装置によって使用されるためのあるいはそれと関連したプログラムを含む、記憶する、伝達する、伝搬する、あるいは転送することができる任意の手段であることが可能である。
【００２６】
コンピュータ使用可能またはコンピュータ読み取り可能な媒体は、限定するものではないが、例えば、電子的、磁気的、光学的、電磁気的、赤外線の、あるいは半導体のシステム、機器、装置、または伝達媒体であることが可能である。コンピュータ読み取り可能な媒体のより具体的な例としては（完全なリストではないが）、１つまたは複数の配線を有する電子回路、取り外し可能なコンピュータディスケット、ＲＡＭ（random access memory）、ＲＯＭ（read-only memory）、ＥＰＲＯＭメモリ（erasable programmable read-only memory）もしくはフラッシュメモリ（Flash memory）、光ファイバ、および携帯可能なＣＤ−ＲＯＭ（compact disc read-only memory）などが含まれる。注意として、コンピュータ使用可能またはコンピュータ読み取り可能な媒体はプログラムがその上に印刷された紙または別の適当な媒体であってよく、その場合はその紙または別の媒体の上を例えば光学的に走査することによりプログラムを電子的に取り込み、続いてそれをコンパイル、インタプリットし、それ以外にも必要なら適切な方法で処理してからコンピュータメモリに記憶することができる。
【００２７】
本発明はパケットをその相対的な順序を維持しながら並列変換処理するためのシステム、方法、および／またはコンピュータプログラム製品として実施することができる。次に本発明の実施態様を図１乃至図７を参照しながら説明する。図１乃至図７は本発明の実施態様を取り入れた並列暗号処理システムの働きを説明するためのフロー図、概略ブロックである。本発明の実施態様は暗号処理に関連して説明されるが、当業者であれば本発明は任意タイプの並列パケット変換に利用することができることは理解できるであろう。従って、例えば並列圧縮処理も本発明の教示から利益が得られるかもしれない。つまり、本発明は暗号処理に限定したものとして構成されるべきものではない。
【００２８】
フロー図および／またはブロック図および／または略構成図の各ブロック、およびフロー図および／またはブロック図および／または略構成図のブロックの組み合わせはコンピュータプログラム命令によって実施できる。これらのプログラム命令はプロセッサに提供されて、そのプロセッサ上で実行される命令がフロー図および／またはブロック図および／または略構成図のブロックにおいて指定される機能を実現するための手段を生成するようなマシン（machine）が作り出されるようになっていてよい。またコンピュータプログラム命令はプロセッサによって実行されて、そのプロセッサによって実行されるべき一連の動作段階によって、プロセッサ上で実行される命令がフロー図および／またはブロック図および／または略構成図のブロックにおいて指定される機能を実現するための段階を提供するようなコンピュータ実施されるプロセスが作り出されるようになっていてよい。
【００２９】
従って、フロー図および／またはブロック図および／または略構成図のブロックは、特定の機能を実行するための手段の組み合わせ、特定の機能を実行するための段階の組み合わせ、および特定の機能を実行するためのプログラム命令手段をサポートする。また、フロー図および／またはブロック図および／または略構成図の各ブロック、およびフロー図および／またはブロック図および／または略構成図のブロックの組み合わせは、特定の機能または段階を実行する特定目的のハードウェアベースのシステム、あるいは特定目的のハードウェアとコンピュータ命令との組み合わせによって実施できることは理解されるであろう。
【００３０】
図１に、ＩＰｓｅｃパケットまたはＳＳＬパケットといったパケットを暗号化し解読するといった並列暗号処理に利用されることができる本発明の特定の実施態様を示す。図１に示されるように、パケット入力デマルチプレクサ（packet-input demutiliplexer）（図では暗号デマルチプレクサ（crypto-demux）２００）は、暗号パケットの入力ストリームを受信する。暗号パケットの入力ストリームは、ここでは、アウトバウンドパケット（outbound packets）と称されるそれ以前に（平文から暗号文に）処理されていない未処理のパケットであるか、あるいは、インバウンドパケット（inbound packets）と称される（暗号文から平文に）処理済みのパケットである場合がある。ここ用いられる暗号パケットという用語はインバウンドパケットおよび／またはアウトバウンドパケットを指す。デマルチプレクサ２００はパケットのシリアルストリームを受信し、それらを複数の暗号処理ユニット（暗号ユニット（crypto-units））２５、２５’、２５’’、２５’’’および２５’’’’に多重化する。暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’は、ここに説明された動作を実行することが可能な任意タイプの暗号プロセッサとすることができ、かつ全て同じであっても異なっていてもよい。例えば、図１に示された暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’は異なる処理能力を持ち、あるいは異なる処理速度を持ち、あるいは同じタイプの複数のプロセッサであってよい。さらに、図１は本発明の暗号処理の実施態様を示すものであるが、こうした並列システムにおいて他のパケット変換動作も実行されることがある。つまり、図１に示された暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’は、圧縮プロセッサ等といった一般的に本発明の特定の実施態様において利用されてよい他のパケット変換処理プロセッサに置き換えられることがある。
【００３１】
さらに、暗号入力デマルチプレクサ（crypto-input demux）２００は、総当たり方式（round-robin basis）で、あるいは動作負担のバランスを取るために暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の一特定ユニットの処理特性に基づいて、あるいは暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’へのパケットの他の配信基準に基づいて、暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’にパケットを提供することがある。処理後において、暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’は処理済みパケットをパケット出力マルチプレクサ（mux）（図では暗号出力マルチプレクサ（crypto-output mux）２１０）、に提供する。暗号出力マルチプレクサ２１０は暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’からのパケットを順序付けし直して出力パケットをシリアルストリームで提供するようにする。
【００３２】
また暗号入力デマルチプレクサ２００は、シーケンス識別子（sequence identifier）の割り当ても行い、次に受信されるパケットに割り当てるための最新のシーケンス識別子の同定を維持する。本発明の特定の実施態様においては、シーケンス識別子は関連付けされたパケットに割り当てられ、それらの関連付けされたパケットの順序を定める。図１に示された実施態様では、関連付けされたパケットは１つの「フロー」と同一視されて、入力フロー識別子とシーケンス番号が各受信パケットに付随し、与えられたフローの最新の（current）シーケンス番号が入力フローおよびシーケンス番号のテーブル２２０に保持されるようにする。上述したように、入力パケットはインバウンドパケットまたはアウトバウンドパケットのいずれかとして特徴付けられてよい。同様に、インバウンドパケットのフローはインバウンドフローと称されることがあり、アウトバウンドパケットのフローはアウトバンドフローと称されることがある。
【００３３】
暗号出力マルチプレクサ２１０は、処理済みパケットのシーケンス識別子に基づいて暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’から処理済みパケットを受信する。フロー識別子を利用する本発明の実施態様に対して、異なったフローからのパケットにわたって、暗号出力マルチプレクサ２１０は、パケットが暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’で「行き詰まる」ことがないことを確実にするために、総当たり配信方式に基づいて、あるいは公平方式に基づいて、あるいは暗号履歴（crypto history）に基づいて、出力用パケットを受け容れることがある。出力用パケットをシーケンス識別子の順序で受け容れることによって、暗号出力マルチプレクサ２１０はパケットをシーケンス順序で出力し、このため、パケットのシーケンスをそれらのパケットが順序付けし直しを必要としないように維持しながらパケットの並列処理が遂行されることができる。
【００３４】
暗号出力マルチプレクサ２１０は、シーケンスにおける次のシーケンス識別子を保持し、記憶された次のシーケンス識別子と処理済みパケットのシーケンス識別子とを比較してその処理済みのパケットがそのパケット・シーケンスの次のパケットであるかどうかを判定する。シーケンス識別子が関連付けされたパケットに割り当てられて関連付けされたパケットの順序が確定される本発明の特定の実施態様では、シーケンス識別子は、別々に関連付けされたパケットのそれぞれについて定められる。図１の実施態様では、関連付けされたパケットは１つのフローと同一視され、フロー識別子とシーケンス番号がそれぞれの受信パケットに割り当てられるようにする。こうした実施態様では、暗号出力マルチプレクサ２１０は与えられたフローの次のシーケンス番号を出力フローおよびシーケンス番号のテーブル２３０に保持する。
【００３５】
次に図１の並列暗号システムの動作を図２と図３を参照して説明する。図２と図３はそれぞれ暗号入力デマルチプレクサ２００と暗号出力マルチプレクサ２１０の動作のフロー図を示す。図２に示されるように、暗号入力デマルチプレクサ２００は暗号パケットを受信して（ブロック３００）、関連付けされたパケットを判定するために受信されたパケットを評価する（ブロック３０５）。このような評価は、例えば、送信元および／または宛先のＩＰアドレス、セキュリティプロトコル、ＩＰｓｅｃ（IP Security Protocol）、ＳＰＩ（Security Parameters Index）、あるいはＴＣＰおよび／またはＵＤＰの送信元および／または宛先ポート等といった他の情報を評価することによって行われることができる。いずれにせよ、互いに関連付けされたパケットが特定され、関連付けされたパケットの順序における受信パケットの場所を特定するために関連付けされたパケットに基づいてシーケンス番号が決められる（ブロック３１０）。パケットおよびシーケンス識別子は暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の１つに送られる（ブロック３１５）。
【００３６】
暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’はパケットを処理して処理済みパケットを提供する。図３に、処理済みパケットが暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’のいずれかから入手できるときの暗号出力マルチプレクサ２１０の動作を示す。図３に示されるように、暗号出力マルチプレクサ２１０は暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’のいずれかが、出力準備のできた処理済みパケットを有するかどうかを判定する（ブロック４００）。暗号出力マルチプレクサ２１０はその処理済みパケットを評価して関連付けされたパケットが存在するかどうかを判定し（ブロック４０５）、その処理済みパケットのシーケンス識別子が関連付けされたパケットに対する出力されるべき次のシーケンス識別子かどうかを判定する（ブロック４１０）。その処理済みパケットのシーケンス識別子が関連付けされたパケットに対する出力されるべき次のシーケンス識別子である場合（ブロック４１０）には、その処理済みパケットが出力され、そして次のシーケンス識別子が増分される（ブロック４１５）。その処理済みパケットのシーケンス識別子が関連付けされたパケットに対する出力されるべき次のシーケンス識別子でない場合（ブロック４１０）は、暗号出力マルチプレクサ２１０は、別の処理済みパケットが出力準備できるのを待つ。これらの動作は処理済みパケットのシーケンス識別子が出力されるべき次のシーケンス識別子に到達し、そのパケットが出力されるまで継続される。
【００３７】
上述したように、暗号パケットは、それが既に受信された暗号パケットと関連付けされたものであるかどうかを判定するために評価されて、パケットが割り当てられる暗号ユニットの処理時間が異なる場合でも、関連付けされたパケットのシーケンスが維持されるようにすることができる。
【００３８】
次に本発明の特定の実施態様を図４乃至図８を参照して説明する。上述したように、高速インターネットプロトコル（ＩＰ）ベースの暗号システムの開発においては、暗号変換エンジン（すなわち暗号ユニット）を並列に配列して集約（aggregation）を通じてシステム暗号性能のスケーリング（拡大縮小）を可能にすることが有益な場合がある。この集約を使用すれば、シリコンテクノロジーの現在の限界（ゲート速度と集密度の両方における）によって性能が制約されることがある個々の暗号ユニットは、集約されることにより、それらが持つ元々の性能の何倍もの性能を実現することが可能である。本発明の特定の実施態様において、ＩＰパケットを、それに関連するコンテクスト情報とともにカプセル化（encapsulation）することによって並列処理が促進される場合がある。こうしたカプセル化を図４に示す。図４に示されるように、パケットオブジェクト（packet object）５００は、パケットオブジェクトヘッダ（Packet-Object header）５０５、その次にユーザワード（user words）５１０、更に暗号ヘッダ（crypto header）５１５、そして実際のＩＰパケット自体を含むデータ５２０を含む。このパケットオブジェクトは、ＩＰｓｅｃまたはＳＳＬといった標準的なセキュリティプロトコルにより必要とされるパケット変換を実施するために中核となるＩＰパケット上で実行される必要がある連続する動作を並列化するパイプライン型ハードウェアアーキテクチャ（pipelined hardware architecture）を横断する。こうしたパケットオブジェクトを利用して、性能Ｙ（ビット／秒、変換量／秒）の個々の暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’が集約され、Ｙ×Ｚ（ビット／秒、変換量／秒）に達する合成スループットを実現することが可能である。ここでＺは集約されたユニットの数である。
【００３９】
本発明の一定の実施態様は、従来技術と比較したときに、待ち時間とデジタル論理回路における必要なゲート総数とメモリ所要量とを減らしあるいは最小化する場合がある。特に本発明の実施態様は、パケットオブジェクトの分類と、１フロー毎のパケットオブジェクトの番号付け、およびパケットオブジェクトの出力許可（output admission）を提供することがある。こうした動作を図６Ａと図６Ｂに示す。
【００４０】
図５Ａ、図５Ｂ、図６Ａ、および図６Ｂに示された実施態様において、パケットの選択されたフィールドに基づいてフローが分類される。アウトバウンドフロー（outbound flow）または暗号化フロー（encrypting flow）に関しては、その選択されたフィールド（セレクタ）は、送信元ＩＰアドレス（３２ビット）、宛先ＩＰアドレス（３２ビット）およびプロトコル（８ビット）である。インバウンドフロー（inbound flow）または解読フロー（decrypting flow）に関しては、セレクタフィールドは、宛先ＩＰアドレス（３２ビット）、ＳＰＩ（IPsec Security Parameter Index、３２ビット）およびプロトコル（８ビット）である。本発明の他の実施態様では、より多くのまたはより少ないフィールドを使ってフローを分類することが可能である。
【００４１】
分類は、暗号入力デマルチプレクサ２００において行われる。分類とフロー毎のシーケンス番号の割り当てについて図６Ａに示す。図６Ａに示されるように、暗号入力デマルチプレクサ２００に入ってくる各パケットオブジェクト毎に、フロー分類のためのセレクタがパケットオブジェクトから取り出される（ブロック６００）。セレクタはハッシュ（hash）され、フロー識別子として利用されるハッシュ結果（hash result）が作り出される（ブロック６０５）。フロー識別子は、入力フローおよびシーケンス番号テーブル２２０に索引付けしてそのフロー識別子に対応するフローの最新のフロー毎シーケンス番号（ＰＦＳＮ：per flow sequence number）を検索するために使用される（ブロック６１０）。フロー識別子とＰＦＳＮはパケットオブジェクトのあるフィールドに記憶され（ブロック６１５）、ＰＦＳＮが増分され、そして入力フローおよびシーケンス番号テーブル２２０に記憶し戻される（ブロック６２０）。パケットオブジェクトは利用可能な最初の暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’に向けて発送される（ブロック６２５）。
【００４２】
上述したように、フロー識別子はパケットからのセレクタをハッシュすることによって生成されてよい。この分類は、パケットがインバウンドパケットかアウトバウンドパケットかに応じて、異なるハッシュ関数（hash functions）を利用して行われる。従って、次のようなハッシュ演算が実行されてよい。
Hash outbound=(Src*383+Dst*257+Protocol*7919)%M
Hash inbound=(SPI*383+Dst*257+Protocol*7919)%M
ここでＭは２Mを超えない最大の素数で、Ｍはフロー識別子のビット数である。従って、１０ビットのハッシュ結果に対してはＭ＝１０２１、１１ビットのハッシュ結果に対してはＭ＝２０３９、１２ビットのハッシュ結果に対してはＭ＝４０９３である。Ｓｃｒは送信元ＩＰアドレスで、Ｄｓｔは宛先ＩＰアドレスである。
【００４３】
好ましくは、ハッシング演算（hashing operations）は一連の演算に分割され、そうすることにより演算の特定の段階において必要とされるビット数が減少する場合がある。こうして、モジュロ算法（modulo arithmetic）の分配特性を利用して、乗算および総和のモジュロ演算は、乗算器および加算器のビット数が小さくなるように、分割される場合がある。例えば、Scr、DstおよびProtocolのＭを法とする数が決定され、次に素数が掛けられた後に総和されてよい。従って、乗算に必要なビット数は元々の値ではなくモジュロ結果の乗算に必要なビット数である。
【００４４】
値３８３、２５７、７９１９は全て素数である（それらは全て２または３個の符号付き部分積として表すこともでき、そうすれば、実装が簡易になることがある）。故に、これらの数は全て互いに素である。このことは、鍵の異なる成分がそれらの最小公倍数の整数倍に対してＭを法として一致するのみであることを意味する。それらは全て素数であるので、それらは全て奇数で、かつ２の累乗と互いに素である。故に、テーブルサイズが小さくなるように数学的にhash%2nを見つけてハッシュの上位ビットを遮蔽（mask off）することは、単に別の相対的に素な数を法とした数を与えることであり、ハッシュ値の広がりを保存する。当業者によって理解されるように、他のハッシュ関数並びに上述したハッシュ関数の修正は本発明の教示からなお恩恵を受けつつ利用されることがある。
【００４５】
これらのハッシュ値は分類目的のためにフロー識別子として使用される。複数のフローが同一の値にハッシュされる場合があり得る。存在し得る異なるフローが２72個あって、実際には２10個のフローのみがハッシュ関数を通じて区別される状況では、衝突（collision）が存在することは不可避かもしれない。しかし、この影響は、同じフローのものでないパケットがシステムを通じて順序付けされることになるが、システムレベルではわずからな非能率を結果としてもたらすにすぎない。出力されるパケットの相対的順序はそれらが受信される相対的順序となおも同じであろう。暗号システムに実際に存在するフローの数の範囲が与えられたときには、いつであっても、衝突の結果として同じシーケンス番号を使用する異なるフローが生じる蓋然性は、それが問題にならないほど十分低いであろう。しかし、本発明の実施態様が大きな範囲のセレクタ値が存在しない状況で利用される場合には、衝突数を減らすためにより大きなハッシュ長（ビットで）を使用する必要があるかもしれない。しかしながら、より大きなハッシュ長を使用すれば、シーケンス番号テーブルのサイズが増す結果となる。
【００４６】
上述したように、識別された各フロー毎に、シーケンス番号、この場合には識別されたフローのパケットの順序付けを特定するフロー毎シーケンス番号（ＰＦＳＮ）が保持される。各フロー毎にＰＦＳＮは０に初期化され、フロー毎に識別された各パケット毎にシーケンス番号がそのパケットに適用され、増分される。更新されたＰＦＳＮは暗号入力デマルチプレクサ２００の入力フローおよびシーケンス番号テーブル２２０に記憶され、フロー識別子を利用して索引付けされる。ＰＦＳＮのビットサイズは暗号入力デマルチプレクサ２００と暗号出力マルチプレクサ２１０との間にある例示された全ての暗号ユニットの集合体内を伝送中である可能性のあるパケットの最大数の二倍とすることができる。このようなサイズにより、ＰＦＳＮカウンタは暗号ユニットにまだ存在する任意のパケットのＰＦＳＮが重複することなく包括することができる。
【００４７】
暗号ユニットを経由してパケットの順序付けを保つ目的のため、フロー識別子とＰＦＳＮは図４のパケットオブジェクトに事前に付加され、その際そのパケットオブジェクトのその他のフィールドは全く変更されない。この配置によって、フロー識別子とＰＦＳＮの値は、暗号入力デマルチプレクサ２００と暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の間を、そして暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’と暗号出力マルチプレクサ２１０の間を帯域内で通過することが可能となる。インバウンドパケットのパケットオブジェクトの例を図５Ａに、アウトバウンドパケットのパケットオブジェクトの例を図５Ｂに示す。図５Ａと図５Ｂに示されたパケットオブジェクトにおいて、ＳＥｎビットは暗号出力マルチプレクサ２１０がこのパケットに対する順序付け（ordering）を無視することを命ずるフラグである。こうしたフラグはパケットのコンテンツやそのパケットに関連するサービス情報のクォリティ等の評価に基づいて暗号入力デマルチプレクサ２００によって設定されることができ、そうすることにより、順序付けを必要としないそれらのパケットがパケットの厳密な順序付けを必要とすることなく並列処理システムを通り抜けることが可能となる。こうした順序付けられないパケットに対しては個々のＰＦＳＮカウンタを使用して、ＳＥｎフラグが設定された場合にＰＦＳＮがその他のフローと同様に比較できるように暗号出力マルチプレクサ２１０の論理を単純化することができ、そして最も古い順序付けられていないパケットに暗号出力マルチプレクサ２１０における優先権が与えられることを確実にすることができる。別法として、２nを超えない最大素数と２nとの間の値といった固定されたＰＦＳＮ値を利用して、順序付けを必要としないパケットがそれらが利用可能になるとすぐに出力できるようにすることができる。
【００４８】
図６Ｂに本発明の総当たり方式態様におけるパケット出力の動作を示す。図６Ｂに示されるように、暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’に順次問い合わせてパケットオブジェクトが出力の準備ができたかどうかを判定する（ブロック６５０）ようにしてよい。準備ができていれば、暗号出力マルチプレクサ２１０はパケットのフローＩＤを使用してそのフローの最新の出力ＰＦＳＮを出力フローおよびシーケンス番号テーブル２３０において調べる（ブロック６５５）。パケットオブジェクトのＰＦＳＮが暗号出力マルチプレクサ２１０によって決定されたＰＦＳＮに等しくない場合、パケットオブジェクトは出力されず、総当たりの順序で暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の次のユニットが評価されて（ブロック６６２）、パケットオブジェクトが出力の準備ができたかどうかが判定される（ブロック６５０）。
【００４９】
パケットオブジェクトのＰＦＳＮがそのパケットオブジェクトのフローＩＤの最新の出力ＰＦＳＮに等しい場合（ブロック６６０）、利用可能なパケットオブジェクトに出力ポリシーが適用される（ブロック６６５）。こうした出力ポリシー（output policies）は例えば、出力可能なパケットオブジェクトの総当たり選択か、あるいは公平性（fairness）、プロセッサの出力許可の間の所要時間、フローもしくはパケットに関連する期限に基づく出力許可ポリシーあるいは当業者には周知のこの類の他の出力許可ポリシーといった、他の出力許可体系でよい。出力ポリシーがそのパケットオブジェクトが出力されるべきものであることを指定しない場合（ブロック６７０）、総当たりの順序で暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の次のユニットが評価されて、パケットオブジェクトが出力の準備ができたかどうかが判定されて（ブロック６５０）、動作が継続される。出力ポリシーがそのパケットオブジェクトが出力されるべきものであることを指定する場合（ブロック６７０）、暗号出力マルチプレクサ２１０によってそのパケットオブジェクトのフローＩＤのＰＦＳＮが増分されて入力およびシーケンス番号テーブル２３０に記憶され（ブロック６７５）、そのパケットオブジェクトが出力される（ブロック６８０）。総当たりの順序で暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の次のユニットが評価されて（ブロック６６２）、パケットオブジェクトが出力の準備ができたかどうかが判定される（ブロック６５０）。これらの動作は暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’によってパケットオブジェクトが出力可能なものとされる限り継続されることができる。
【００５０】
上述したように、ＰＦＳＮのビットサイズは暗号入力デマルチプレクサ２００と暗号出力マルチプレクサ２１０との間にある例示された全ての暗号ユニットの集合体内を伝送中である可能性があるパケットの最大数の二倍とすることができる。各暗号ユニット毎に入力バッファにパケットが唯一個、かつ出力バッファにパケットが唯一個あることを最初に仮定すると、暗号ユニットが５つあるシステムでは伝送中のパケットの総数はかなり小さな数である（すなわち１０）。しかし、大きなパケットがユニット＃１に入り、続いて４つの小さなパケットが暗号ユニット＃２〜＃５に入る場合には、それら小さなパケットは全て暗号ユニット＃１のパケットの処理が終了することに依存し、その際、暗号ユニット＃２〜＃５における処理素子はそれらのパケット変換を終わらせて暗号ユニット＃１の大きなパケットの処理が終了して出力されるまでアイドル（idle）状態になる。この結果、パイプラインにおいて多大な非能率がもたらされる。
【００５１】
パイプラインのこうしたボトルネックを避けるために、複数のパケットが各暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の出力バッファに入力されるようにすることができる。最適でない順序での順序付けにもかかわらず小サイズから中間サイズまでのパケットに対しては、これによって、とりわけ、ずっと大きなバス帯域幅が暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’全体で利用でき、出力バスが入力バスで使用できる場合においては、かなりの効率的な利得が得られる。追加のパケットオブジェクトが暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’の出力バッファに許される場合、パケットがまだパイプラインに存在する間により大きなシーケンス番号がシーケンス番号のロールオーバ（rollover）を防止するために必要とされることがある。しかし、一般的な動作では、１０ビットのシーケンス番号が許容できるかもしれない。例えば、大きなパケットは約９Ｋバイト、つまり４６バイトのパケットを約１９６個有する場合がある。このため、並列した４つの暗号ユニットは（バス転送時間と、より小さなパケットが暗号ユニットにおいてbit-for-bitでより大きなパケットよりもゆっくりと処理されるという事実と、異なるパケットが必要な処理(ESP/AES 128 only vs ESPAES256+MD5)に応じて異なる処理時間を持つという事実を無視すれば）約２００＊４＝８００パケットを保持することがある。これらの非能率性を考慮するために、パケットの最大数が５００パケットまでスケールバック（規模が縮小）される場合、最大数の二倍は１０００パケットである。こうしたケースでは、１０ビットのシーケンス番号であれば十分かもしれない。
【００５２】
図７に、本発明の実施態様に基づく暗号システムの出力判定に関する特定の態様を示す。特に、図７は暗号出力マルチプレクサ２１０の出力許可論理（output admission logic）を示す。図１の暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’はパケットオブジェクトによって指定される暗号処理を実行し、こうした処理が完了すると、処理済みのパケットオブジェクトを図１の暗号出力マルチプレクサ２１０に向けて図７の出力バス７００、７００’および７００’’上に送り出す。各暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’はあらゆるパケットオブジェクトのフローＩＤ７０５，７０５’および７０５’’とＰＦＳＮ７１０、７１０’および７１０’’を含む最初のワードを出力バスに直接通す必要があるだけである。暗号ユニット２５、２５’、２５’’、２５’’’および２５’’’’はパケットオブジェクトの処理を終了すると、Ready信号を利用してこのことを暗号出力マルチプレクサ２１０に信号として送る。暗号出力マルチプレクサ２１０は利用可能な準備できたパケットオブジェクトを評価して、どれを出力バスに通すかを決定する。
【００５３】
暗号出力マルチプレクサ２１０は入力デマルチプレクサ用テーブル２２０のようなＰＦＳＮテーブル７１５を保持するが、しかし本ケースにおいては、与えられたフローＩＤに関して暗号出力マルチプレクサ２１０は出力バス７００、７００’、７００’’上のフローＩＤ７０５、７０５’、７０５’’を使用してテーブルを参照し、それぞれの比較器７２０、７２０’、７２０’’においてテーブル７１５のＰＦＳＮをＰＦＳＮ７１０、７１０’、７１０’’と比較する。テーブル７１５の最新（現在）のＰＦＳＮがＰＦＳＮ７１０、７１０’、７１０’’と合致した場合、Ready信号がアクティブになり、そのパケットオブジェクトは出力バスを通過する用意ができており、その利用可能なパケットオブジェクトが当該フローの次のシーケンス内パケット（in-sequence packet）であることが出力許可ポリシー７３０に通知される。デマルチプレクサ２００のテーブル２２０と同様、テーブル７１５はゼロに初期化され、その後、パケットが入ってきて出力ＰＦＳＮテーブル７１５の値と合致すると、そのパケットは出力バスへの通過許可が与えられてテーブルのＰＦＳＮ値が更新される。出力バスに通すことが可能なパケットオブジェクトを選ぶ出力許可ポリシー７３０は、総当たり方式等といった任意の出力ポリシーでよい。出力許可の優先順位は任意の暗号ユニットにおいてパケットオブジェクトが一つも行き詰まらないことを保証するために暗号履歴に基づく（crypto history based）ものでよい。
【００５４】
本発明はパケットを評価して関連付けされたパケットを決めることに関して説明がなされてきたが、本開示から当業者が理解するように、こうした動作をスキップして、パケットが受信される順序が複数のフロー全体にわたって維持されるようにシーケンス識別子を各パケットに割り当てることができる。しかしながら、パケットの順序付けが維持されうるが、順序付けの必要のないデータあるいは異なる処理時間を必要とするデータのスループットが長い処理所要時間を要するパケットによって悪影響を受けることから、こうした動作は好ましくない。
【００５５】
さらに、本発明の実施態様は特定のパケットオブジェクトに関して説明がなされてきたが、他のフォーマットも利用されることができる。従って、本発明の実施態様はここに述べたパケットオブジェクトの使用に限定されるものとして構築されるべきではない。
【００５６】
本発明はマルチプレクサ（多重装置）、デマルチプレクサ（逆多重装置）、および暗号プロセッサに関して個々の機能が暗号処理システムに統合されたものとして説明がなされてきたが、当業者が理解するように、こうした機能は互いに協働することのある別個の機能、オブジェクトあるいはアプリケーションとして提供されてよい。さらに、本発明は特定の手順の動作に関して説明がなされてきた。しかし、当業者が理解するように、本発明の教えからなお恩恵を得て他の手順が利用されてよい。従って、本発明は特定の区分の機能または事象系列に関して記述がなされてきたが、こうした区分または系列は本発明の特定の実施態様をただ記述するためのもので、本発明はこうした実施態様に限定されるものと解するべきではない。
【００５７】
本明細書および図面において、本発明の一般的な好ましい実施の態様が開示されてきた。そこには特定の用語が採用されているが、それらは限定目的のみからではなく総称的かつ説明的な意味で使用されているものである。本発明の範囲は特許請求の範囲によって明示される。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施態様を具体化した並列暗号処理システムのブロック図である。
【図２】本発明の実施態様におけるパケットの逆多重化と順序付けの動作を示したフロー図である。
【図３】本発明の実施態様における並列した暗号処理ユニットからの処理済みパケットを多重化する動作を示したフロー図である。
【図４】本発明の実施態様に基づくパケットオブジェクトのブロック図である。
【図５】図５Ａおよび図５Ｂは、それぞれ本発明の実施態様に基づくアウトバウンド暗号パケットとインバウンド暗号パケットのパケットオブジェクトを示したブロック図である。
【図６】図６Ａおよび図６Ｂは、それぞれ本発明の実施態様に基づく暗号入力デマルチプレクサと暗号出力マルチプレクサの動作を示したフロー図である。
【図７】本発明の実施態様におけるパケットを順序付けし直すための出力選択論理を示した概略図である。
【図１】
2005507614.tif 000003
【図２】
2005507614.tif 000004
【図３】
2005507614.tif 000005
【図４】
2005507614.tif 000006
【図５】
2005507614.tif 000007
【図６Ａ】
2005507614.tif 000008
【図６Ｂ】
2005507614.tif 000009
【図７】
2005507614.tif 000010
【国際公開パンフレット】
2005507614.tif 000011
2005507614.tif 000012
2005507614.tif 000013
2005507614.tif 000014
2005507614.tif 000015
2005507614.tif 000016
2005507614.tif 000017
2005507614.tif 000018
2005507614.tif 000019
2005507614.tif 000020
2005507614.tif 000021
2005507614.tif 000022
2005507614.tif 000023
2005507614.tif 000024
2005507614.tif 000025
2005507614.tif 000026
2005507614.tif 000027
2005507614.tif 000028
2005507614.tif 000029
2005507614.tif 000030
2005507614.tif 000031
2005507614.tif 000032
2005507614.tif 000033
2005507614.tif 000034
2005507614.tif 000035
2005507614.tif 000036
2005507614.tif 000037
2005507614.tif 000038
2005507614.tif 000039
2005507614.tif 000040
2005507614.tif 000041
2005507614.tif 000042
2005507614.tif 000043
2005507614.tif 000044
2005507614.tif 000045
2005507614.tif 000046
2005507614.tif 000047
2005507614.tif 000048
2005507614.tif 000049
2005507614.tif 000050
【国際公開パンフレット（コレクトバージョン）】
2005507614.tif 000051
2005507614.tif 000052
【国際調査報告】
2005507614.tif 000053
2005507614.tif 000054
2005507614.tif 000055