(57)【要約】【課題】暗復号処理及び認証処理を必要とする通信パケットデータの送受信処理を効率的に実行するハードウェア処理回路（アクセラレータ）を提供する。【解決手段】データを受信し、及びデータを送信する通信装置であって、受信したデータを解析する受信解析部を備え、受信解析部は、受信情報を受信する受信部と、受信情報を格納するレジスタと、受信情報を一時的に格納する一以上の第１の一時レジスタから構成される、第１の遅延レジスタと、遅延レジスタから選択された所定の長さの受信情報を出力する第１のデータセレクタ部と、認証処理を実行する認証部と、復号処理を実行する復号部と、解析処理を実行し、認証処理の結果、復号処理の結果、及び解析処理の結果を解析結果として出力する解析部と、処理を実行するためのマイクロプログラムと、解釈されたマイクロプログラムを出力する第１の解釈部と、を備えることを特徴とする。【選択図】図２
2010268293.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続され、前記ネットワークからデータを受信し、及び前記ネットワークにデータを送信する通信装置であって、
プロセッサと、前記プロセッサと接続されるメモリと、前記プロセッサに接続され、前記通信装置に機器を接続するための周辺インタフェースと、前記受信したデータ及び前記送信すべきデータを制御及び管理する制御部と、前記受信したデータ及び前記送信すべきデータを格納するバッファ部と、前記プロセッサと前記制御部及び前記バッファ部とを接続するためのホストバスインタフェースと、前記受信したデータを解析する受信解析部と、前記ネットワークからデータを受信し、又は前記ネットワークにデータを送信する通信部と、を備え、
前記通信部は、前記ネットワークから受信したデータを所定の長さに分割し、前記所定の長さに分割されたデータを受信情報として前記受信解析部に出力し、
前記受信解析部は、
前記制御部、前記バッファ部、及び前記通信部とそれぞれ接続され、
前記制御部から入力される情報又は前記受信情報を受信する受信部と、
前記受信情報を格納するレジスタと、
前記受信情報を一時的に格納する一以上の第１の一時レジスタから構成される、第１の遅延レジスタと、
所定の長さの前記受信情報を前記第１の遅延レジスタから選択し、前記選択された所定の長さの受信情報を出力する第１のデータセレクタ部と、
前記第１のデータセレクタ部から入力された受信情報に対して認証処理を実行する認証部と、
前記第１のデータセレクタ部から入力された受信情報に対して復号処理を実行する復号部と、
前記第１のデータセレクタ部から入力された受信情報に対して解析処理を実行し、前記認証処理の結果、前記復号処理の結果、及び前記解析処理の結果を解析結果として出力する第１の解析部と、
前記認証部、前記復号部、及び前記第１の解析部の処理を実行するためのマイクロプログラムと、
前記マイクロプログラムを解釈し、前記認証部、前記復号部、及び前記第１の解析部の少なくとも一つに、前記解釈されたマイクロプログラムを出力する第１の解釈部と、
前記制御部と接続するための制御部インタフェースと、
前記バッファ部に接続するためのインタフェースと、
前記通信部と接続するためのインタフェースと、を備えることを特徴とする通信装置。
【請求項２】
前記受信解析部は、周期的に処理を実行し、
前記第１の遅延レジスタは、
前記受信情報が入力された場合、一つの前記第１の一時レジスタに前記受信情報を格納し、
次の周期に、前記受信情報を次の前記第１の一時レジスタに格納し、次に入力された前記受信情報を前記第１の一時レジスタに格納し、
所定の時間が経過した後に、前記受信情報を破棄することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１の一時レジスタは、第１数のバイト長の前記受信情報を格納し、
前記第１の遅延レジスタは、第２数の前記第１の一時レジスタを含み、
前記第１数は、前記第１の解析部が処理する前記受信情報のデータ長以上に設定され、
前記第２数は、前記第１数と前記第２数との積が、前記認証部、前記復号部、及び前記第１の解析部のそれぞれが処理する前記受信情報のデータ長の最小公倍数以上の数に設定されることを特徴とする請求項１に記載の通信装置。
【請求項４】
前記第１の解析部は、前記受信情報のうち暗号化されていない部分について解析処理を実行し、
前記受信解析部は、
前記復号部から入力される復号結果を一時的に格納する一以上の第２の一時レジスタから構成される、第２の遅延レジスタと、
所定の長さの前記復号結果を前記第２の遅延レジスタから選択し、前記選択された復号結果を出力する第２のデータセレクタ部と、
前記第２のデータセレクタ部から入力された復号結果に対して解析処理を実行する第２の解析部と、
前記マイクロプログラムを解釈し、前記第２の解析部に前記解釈されたマイクロプログラムを出力する第２の解釈部と、
を備えることを特徴とする請求項１に記載の通信装置。
【請求項５】
ネットワークに接続され、前記ネットワークからデータを受信し、及び前記ネットワークにデータを送信する通信装置であって、
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、前記通信装置に機器を接続するための周辺インタフェースと、前記受信したデータ及び前記送信すべきデータを制御及び管理する制御部と、前記受信したデータ及び前記送信すべきデータを格納するバッファ部と、前記プロセッサと前記制御部及び前記バッファ部とを接続するためのホストバスインタフェースと、前記送信すべきデータを生成する送信生成部と、前記ネットワークからデータを受信し、又は前記ネットワークにデータを送信する通信部と、を備え、
前記送信生成部は、
前記制御部、前記バッファ部、及び前記通信部とそれぞれ接続され、
前記制御部又は前記バッファ部から入力された情報を格納するレジスタと、
入力された情報に対して認証処理を実行する認証部と、
入力された情報に対して暗号処理を実行する暗号部と、
入力された情報に基づいて前記送信すべきデータの生成処理を実行し、前記認証処理の結果、前記暗号処理の結果、及び前記生成処理の結果を生成結果として出力する第１の生成部と、
前記認証部、前記暗号部、及び前記第１の生成部の処理内容を実行するためのマイクロプログラムと、
前記マイクロプログラムを解釈し、前記認証部、前記暗号部、及び前記第１の生成部の少なくとも一つに、前記解釈されたマイクロプログラムを出力する第１の解釈部と、
前記暗号部から入力される暗号化された情報を一時的に格納する一以上の第１の一時レジスタから構成される、第１の遅延レジスタと、
前記認証部及び前記第１の生成部が必要とする、所定の長さの前記暗号化された情報を前記第１の遅延レジスタから選択し、前記選択され、暗号化された情報を前記認証部及び前記第１の生成部に出力する第１のデータセレクタ部と、
前記制御部と接続するための制御部インタフェースと、
前記バッファ部に接続するためのインタフェースと、
前記通信部と接続するためのインタフェースと、
を備えることを特徴とする通信装置。
【請求項６】
前記送信生成部は、周期的に処理を実行し、
前記第１の遅延レジスタは、
前記暗号化された情報が入力された場合、一つの前記第１の一時レジスタに前記暗号化された情報を格納し、
次の周期に、前記暗号化された情報を次の前記１時レジスタに格納し、次に入力された前記暗号化された情報を前記第１の一時レジスタに格納し、
所定の時間が経過した後に、前記暗号化された情報を破棄することを特徴とする請求項５に記載の通信装置。
【請求項７】
前記第１の一時レジスタは、第１数のバイト長の前記暗号化された情報を格納し、
前記第１の遅延レジスタは、第２数の前記第１の一時レジスタを含み、
前記第１数は、前記暗号部が処理する前記入力された情報のデータ長と同一に設定され、
前記第２数は、前記認証処理の遅延及び前記暗号処理の遅延を考慮し、かつ、前記第１数と前記第２数との積が、前記認証部が処理する前記入力された情報のデータ長以上の数に設定されることを特徴とする請求項５に記載の通信装置。
【請求項８】
前記第１の生成部は、前記送信すべきデータのうち暗号化しない部分の生成処理を実行し、
前記送信生成部は、
前記生成結果を一時的に格納する一以上の第２の一時レジスタから構成される、第２の遅延レジスタと、
所定の長さの前記生成結果を前記第２の遅延レジスタから選択し、前記選択された生成結果を出力する第２のデータセレクタ部と、
前記第２のデータセレクタ部から入力された生成結果に基づいて前記送信データの生成処理を実行する第２の生成部と、
前記マイクロプログラムを解釈し、前記第２の生成部に前記解釈されたマイクロプログラムを出力する第２の解釈部と、
を備えることを特徴とする請求項５に記載の通信装置。
【請求項９】
ネットワークに接続され、前記ネットワークからデータを受信し、及び前記ネットワークにデータを送信する通信装置における通信処理方法であって、
前記通信装置は、
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、前記通信装置に機器を接続するための周辺インタフェースと、前記受信したデータ及び前記送信すべきデータを制御及び管理する制御部と、前記受信したデータ及び前記送信すべきデータを格納するバッファ部と、前記プロセッサと前記制御部及び前記バッファ部とを接続するためのホストバスインタフェースと、前記受信したデータを解析する受信解析部と、前記ネットワークからデータを受信し、又は前記ネットワークにデータを送信する通信部と、を備え、
前記通信部は、前記ネットワークから受信したデータを所定の長さに分割し、前記所定の長さに分割されたデータを受信情報として前記受信解析部に出力し、
前記受信解析部は、
前記制御部、前記バッファ部、及び前記通信部とそれぞれ接続され、
前記制御部から入力される情報又は前記受信情報を受信する受信部と、
前記受信情報を格納する第１のレジスタと、
前記受信情報を一時的に格納する一以上の第１の一時レジスタから構成される、第１の遅延レジスタと、
所定の長さの前記受信情報を出力する第１のデータセレクタ部と、
前記受信情報に対して認証処理を実行する第１の認証部と、
前記受信情報に対して復号処理を実行する復号部と、
前記受信情報に対して解析処理を実行する第１の解析部と、
前記第１の認証部、前記復号部、前記第１の解析部の処理を実行するための第１のマイクロプログラムと、
前記第１のマイクロプログラムを解釈し、前記第１の認証部、前記復号部、及び前記第１の解析部の少なくとも一つに、前記解釈された第１のマイクロプログラムを出力する第１の解釈部と、
前記制御部と接続するための第１の制御部インタフェースと、
前記バッファ部に接続するための第１のバッファ部インタフェースと、
前記通信部と接続するための第１の通信部インタフェースと、
を備え、
前記方法は、
前記第１のデータセレクタ部が、前記第１の認証部、前記復号部、及び前記第１の解析部が必要とする所定の長さの前記受信情報を前記第１の遅延レジスタから選択するステップと、
前記第１のデータセレクタ部が、前記選択された所定の長さの受信情報を前記第１の認証部、前記復号部、及び前記第１の解析部にそれぞれ出力するステップと、
前記第１の認証部が、前記第１のデータセレクタ部から入力された前記所定の長さの受信情報に対して前記認証処理を実行するステップと、
前記復号部が、前記第の１データセレクタ部から入力された前記所定の長さの受信情報に対して前記復号処理を実行するステップと、
前記第１の解析部が、前記第の１データセレクタ部から入力された前記所定の長さの受信情報に対して前記解析処理を実行するステップと、
前記第１の解析部が、前記認証処理の結果、前記復号処理の結果、及び前記解析処理の結果を解析結果として出力するステップと、を含むことを特徴とする通信処理方法。
【請求項１０】
前記通信装置は、さらに、前記送信すべきデータを生成する送信生成部を備え、
前記送信生成部は、
前記制御部、前記バッファ部及び前記通信部とそれぞれ接続され、
前記制御部又は前記バッファ部から入力された情報を格納する第２のレジスタと、
前記制御部又は前記バッファ部から入力された情報に対して認証処理を実行する第２の認証部と、
前記制御部又は前記バッファ部から入力された情報に対して暗号処理を実行する暗号部と、
前記制御部又は前記バッファ部から入力された情報に基づいて前記送信すべきデータの生成処理を実行する第１の生成部と、
前記第２の認証部、前記暗号部、及び前記第１の生成部の処理を実行するための第２のマイクロプログラムと、
前記第２のマイクロプログラムを解釈し、前記第２の認証部、前記暗号部、及び前記第１の生成部の少なくとも一つに、前記解釈された第２のマイクロプログラムを出力する第２の解釈部と、
前記暗号部から入力される暗号化された情報を一時的に格納する一以上の第２の一時レジスタから構成される、第２の遅延レジスタと、
所定の長さの前記暗号化された情報を出力する第２のデータセレクタ部と、
前記制御部と接続するための第２の制御部インタフェースと、
前記バッファ部に接続するための第２のバッファ部インタフェースと、
前記通信部と接続するための第２の通信部インタフェースと、
を備え、
前記方法は、
前記第２のデータセレクタ部が、前記認証部及び前記第１の生成部が必要とする所定の長さの前記暗号化された情報を選択するステップと、
前記第２のデータセレクタ部が、前記選択され、暗号化された情報を前記認証部及び前記第１の生成部にそれぞれ出力するステップと、
前記第１の生成部が、前記制御部又は前記バッファ部から入力された情報、及び前記第２のデータセレクタ部から入力された前記所定の長さの暗号化された情報とに基づいて、前記送信データの生成処理を実行するステップと、
前記第２の認証部が、前記制御部又は前記バッファ部から入力された情報、及び前記第２のデータセレクタ部から入力された前記所定の長さの暗号化された情報に対して認証処理を実行するステップと、
前記第１の生成部が、前記認証処理の結果、前記暗号処理の結果、及び前記生成処理の結果を生成結果として出力するステップと、を含むことを特徴とする請求項９に記載の通信処理方法。
【請求項１１】
前記受信解析部及び前記送信生成部は、周期的に処理を実行し、
前記第１の遅延レジスタは、
前記受信情報が入力された場合、一つの前記第１の一時レジスタに前記受信情報を格納し、
次の周期に、前記受信情報を次の前記第１の一時レジスタに格納し、
次に入力された前記受信情報を前記第１の一時レジスタに格納し、
所定の時間が経過した後に、前記受信情報を破棄し、
前記第２の遅延レジスタは、
前記暗号化された情報が入力された場合、一つの前記第２の一時レジスタに前記暗号化された情報を格納し、
次の周期に、前記暗号化された情報を次の前記第２の一時レジスタに格納し、次に入力された前記暗号化された情報を前記第２の一時レジスタに格納し、
所定の時間が経過した後に、前記暗号化された情報を破棄することを特徴とする請求項１０に記載の通信処理方法。
【請求項１２】
前記第１の一時レジスタは、第１数のバイト長の前記受信情報を格納し、
前記第１の遅延レジスタは、第２数の前記第１の一時レジスタを含み、
前記第１数は、前記第１の解析部が処理する前記受信情報のデータ長以上に設定され、
前記第２数は、前記第１数と前記第２数との積が、前記第１の認証部、前記復号部、及び前記第１の解析部のそれぞれが処理する前記受信情報のデータ長の最小公倍数以上の数に設定され、
前記第２の一時レジスタは、第３数のバイト長の前記暗号化された情報を格納し、
前記第２の遅延レジスタは、第４数の前記第２の一時レジスタを含み、
前記第３数は、前記暗号部が処理する前記入力された情報のデータ長と同一に設定され、
前記第４数は、前記第２の認証部が実行する認証処理の遅延及び前記暗号部が実行する暗号処理の遅延を考慮し、かつ、前記第３数と前記第４数との積が、前記第２の認証部が処理する、前記制御部又は前記バッファ部から入力された情報のデータ長以上の数に設定されることを特徴とする請求項１０に記載の通信処理方法。
【請求項１３】
前記第１の解析部は、前記受信情報のうち暗号化されていない部分について解析処理を実行し、
前記受信解析部は、前記復号部から入力される復号結果を一時的に格納する一以上の第３の一時レジスタから構成される、第３の遅延レジスタと、前記復号結果に対して解析処理を実行する第２の解析部と、前記復号結果を出力する第３のデータセレクタ部と、前記第１のマイクロプログラムを解釈し、前記第２の解析部に前記解釈された第１のマイクロプログラムを出力する第３の解釈部と、を備え、
前記第１の生成部は、前記送信すべきデータのうち暗号化しない部分の生成処理を実行し、
前記送信生成部は、前記生成結果を一時的に格納する一以上の第４の一時レジスタから構成される、第４の遅延レジスタと、前記生成結果に基づいて前記送信データの生成処理を実行する第２の生成部と、前記生成結果を出力する第４のデータセレクタ部と、前記第２のマイクロプログラムを解釈し、前記第２の生成部に前記解釈された第２のマイクロプログラムを出力する第４の解釈部と、を備え、
前記方法は、
前記第３のデータセレクタ部が、前記第２の解析部が必要とする所定の長さの前記復号結果を前記第３の遅延レジスタから選択するステップと、
前記第３のデータセレクタ部が、前記選択された所定の長さの復号結果を前記第２の解析部に出力するステップと、
前記第３の解析部が、前記第の３データセレクタ部から入力された前記所定の長さの復号結果に対して前記解析処理を実行するステップと、
前記第４のデータセレクタ部が、前記第２の生成部が必要とする所定の長さの前記生成結果を前記第４の遅延レジスタから選択するステップと、
前記第４のデータセレクタ部が、前記選択された所定の長さの生成結果を前記第２の生成部に出力するステップと、
前記第２の生成部が、前記第４のデータセレクタ部から入力された前記所定の長さの生成結果に基づいて、前記送信データの生成処理を実行するステップと、を含むことを特徴とする請求項１０に記載の通信処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び通信処理方法に関し、特に、暗復号・認証処理が必要な通信プロトコルに則した受信パケットの解析及び送信パケットの生成をする技術に関する。
【背景技術】
【０００２】
現在、サーバ及びパーソナルコンピュータのみならず、テレビを代表とするＡＶ機器、携帯電話を代表とするモバイル機器、さらに、冷蔵庫を代表とする白物家電等、様々な機器がデジタル通信のための通信インタフェース及び通信機能を備え、通信ネットワーク網を構成している。
【０００３】
これら通信の分野では、安全にデータを送受信するための秘匿技術として、送信側でデータを暗号化して配信し、受信側で配信されたデータを復号化することによって、盗聴、改竄、及びなりすましを防止し、機密性、完全性、及び可用性を確保する方法が知られている。
【０００４】
例えば、ネットワークを用いたデータ通信では、データの機密性及び完全性を確保するために暗復号及びメッセージ認証の技術が用いられている。暗復号及びメッセージ認証等の処理アルゴリズムは様々存在する。
【０００５】
ネットワークを用いたデータ通信において代表的なセキュリティプロトコルとして、例えば、ＩＰｓｅｃ（Ｓｅｃｕｒｉｔｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）がある。ＩＰｓｅｃでは、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などの共通鍵暗号を用いた暗復号処理と、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）やＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）等、ハッシュアルゴリズムを用いたメッセージ認証処理が義務付けられている。
【０００６】
従来、前述した暗復号、又はメッセージ認証を含む通信パケットデータ処理の技術は、主にソフトウェアで実行されていた。前述したような処理をソフトウェアが行う仕組みでは、柔軟な運用が可能であるが、所定の処理が複雑になるにつれて処理時間が長くなり、処理スループットの低下が問題となる。
【０００７】
これを解決する一つの方法として、暗復号やメッセージ認証の処理をハードウェア処理回路で行うことによってアクセラレート(高速化)する手法が考えられている（例えば、特許文献１参照）。特許文献１によれば、特定の処理が複雑であっても、処理スループットの低下を防ぐことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−１６６２７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来技術のハードウェア処理回路を用いた通信パケットデータの処理を実行する場合、以下のような課題がある。
【００１０】
特許文献１に記載の技術は、ＩＰｓｅｃの暗復号及び認証の処理に特化したアクセラレータについて記載されているが、通信パケットデータの解析及び生成の処理をするに当たって、同一データに対して複数種類の処理が実行される場合等には、十分な高速化が実現されない。
【００１１】
例えば、通信パケットデータを処理する場合、同一のデータ部分に対して、ＩＰｓｅｃの処理以外にチェックサム等の処理が必要となる。また、通信パケットデータ処理には、コネクション情報からのパケットの生成、及び受信したパケットの解析なども合わせて必要である。
【００１２】
従来技術では、前述したＩＰｓｅｃ以外の処理するためのソフトウェア又は各種アクセラレータが個々に必要である。また、従来技術では、前述したように複数種類の処理が実行される場合、各々の処理が実行される度に同一のデータにアクセスする必要がある。そのため、例えば、メモリの同一アドレスに対するデータ読み出しや書き込みの重複によって、処理効率が低くなるという問題がある。
【００１３】
さらに、データ処理のステップごとにデータ全体をバッファに保持しているため、バッファの大きさが問題となる。また、バッファにデータ全体が保持されるまで処理が実行されないという問題がある。
【００１４】
本発明は、通信パケットデータの処理をハードウェア処理回路（アクセラレータ）が実行する構成において、通信パケットデータの処理に対して、データ処理に使用されるバッファの低減と、データへのアクセスの低減とによって、低コストで、かつ、通信パケット処理の高速化及び処理スループットの低下の防止が可能となる技術を提供することである。
【課題を解決するための手段】
【００１５】
本発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークに接続され、前記ネットワークからデータを受信し、及び前記ネットワークにデータを送信する通信装置であって、プロセッサと、前記プロセッサと接続されるメモリと、前記プロセッサに接続され、前記通信装置に機器を接続するための周辺インタフェースと、前記受信したデータ及び前記送信すべきデータを制御及び管理する制御部と、前記受信したデータ及び前記送信すべきデータを格納するバッファ部と、前記プロセッサと前記制御部及び前記バッファ部とを接続するためのホストバスインタフェースと、前記受信したデータを解析する受信解析部と、前記ネットワークからデータを受信し、又は前記ネットワークにデータを送信する通信部と、を備え、前記通信部は、前記ネットワークから受信したデータを所定の長さに分割し、前記所定の長さに分割されたデータを受信情報として前記受信解析部に出力し、前記受信解析部は、前記制御部、前記バッファ部、及び前記通信部とそれぞれ接続され、前記制御部から入力される情報又は前記受信情報を受信する受信部と、前記受信情報を格納するレジスタと、前記受信情報を一時的に格納する一以上の第１の一時レジスタから構成される、第１の遅延レジスタと、所定の長さの前記受信情報を前記第１の遅延レジスタから選択し、前記選択された所定の長さの受信情報を出力する第１のデータセレクタ部と、前記第１のデータセレクタ部から入力された受信情報に対して認証処理を実行する認証部と、前記第１のデータセレクタ部から入力された受信情報に対して復号処理を実行する復号部と、前記第１のデータセレクタ部から入力された受信情報に対して解析処理を実行し、前記認証処理の結果、前記復号処理の結果、及び前記解析処理の結果を解析結果として出力する第１の解析部と、前記認証部、前記復号部、及び前記第１の解析部の処理を実行するためのマイクロプログラムと、前記マイクロプログラムを解釈し、前記認証部、前記復号部、及び前記第１の解析部の少なくとも一つに、前記解釈されたマイクロプログラムを出力する第１の解釈部と、前記制御部と接続するための制御部インタフェースと、前記バッファ部に接続するためのインタフェースと、前記通信部と接続するためのインタフェースと、を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、低コストで、かつ、スループットの低減を防ぐことのできる、通信装置及び通信処理方法を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態のネットワーク機器の構成を説明するブロック図である。
【図２】本発明の実施形態の受信解析部の構成を示すブロック図である。
【図３】本発明の実施形態の送信生成部の構成を示すブロック図である。
【図４】本発明の実施形態の受信解析部の処理の流れの一例を説明するシーケンス図である。
【図５】本発明の実施形態の送信生成部の処理の流れの一例を説明するシーケンス図である。
【図６】本発明の実施形態におけるＩＰｓｅｃパケットの構成を示す説明図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面に基づいて詳細に説明する。なお、本発明の実施形態を説明する図において、同一部には同一の符号を付し、その繰り返しの説明は、省略する事とする。
【００１９】
最初にＩＰｓｅｃについて説明する。
【００２０】
図６は、本発明の実施形態におけるＩＰｓｅｃパケットの構成を示す説明図である。なお、ＩＰｓｅｃには、トンネルモードとトランスポートモードとがあるが、本実施形態ではトンネルモードについて説明する。ただし、本発明は、トランスポートモードの場合であっても適用可能である。
【００２１】
ＩＰｓｅｃは、ＩＰパケットにＥＳＰ（Ｅｎｃａｐｓｕｌａｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｐａｙｌｏａｄ）６１０などのヘッダフィールドを追加して構成される。
【００２２】
本実施例で示すトンネルモードにおいてＥＳＰが用いられる場合、まずＩＰパケット６３０にパディング６３５とトレーラ６４０とが付加されて暗号化される。
【００２３】
パディング６３５の長さは、生成された暗号化パケット６６０とトレーラ６４０とを合わせた長さが、所定のバイト数の整数倍となるように決められる。トレーラ６４０はパディング長６４５と次ヘッダ６５０とを含むデータである。
【００２４】
パディング長６４５は、パディング６３５の長さである。次ヘッダ６５０は、パケット内でＩＰｓｅｃヘッダ（ここ場合、ＥＳＰヘッダ６１０を示す）の次にくるヘッダのプロトコル種別を示す。図６に示す例では、トンネルモードであるため、ヘッダ６５０には、ＩＰｖ４を示す「４」又はＩＰｖ６を示す「４１」が設定される。ＩＰパケット６３０、パディング６３５、トレーラ６４０が暗号化範囲となる。
【００２５】
暗号化されたＩＰパケットには、ＥＳＰヘッダ６１０、メッセージ認証のための初期化ベクタ（Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ：ＩＶ）６２５、及び完全性検証値（Ｉｎｔｅｇｒｉｔｙ  Ｃｈｅｃｋ  Ｖａｌｕｅ：ＩＣＶ）６５５と呼ばれる認証データが付加される。
【００２６】
さらに、ＩＰｓｅｃパケットには、新たに外側ＩＰヘッダ６０５が設定され、ＥＳＰヘッダ６１０以下がカプセル化されることで、ＩＰｓｅｃパケットが生成される。
【００２７】
ＥＳＰヘッダ６１０は、ＳＰＩ（Ｓｅｃｕｒｉｔｙ  Ｐａｒａｍｅｔｅｒ  Ｉｎｄｅｘ）６１５とシーケンス番号６２０とからなる。
【００２８】
ＳＰＩ６１５は、セキュリティアソシエーションデータベース（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ  Ｄａｔａｂａｓｅ：ＳＡＤ）で管理されているＩＰｓｅｃに関するセキュリティの各種パラメータである、セキュリティアソシエーション（Ｓｅｃｕｒｉｔｙ  Ａｓｓｏｃｉａｔｉｏｎ：ＳＡ）を検索するための値である。シーケンス番号６２０は、パケットの順番を示す値である。
【００２９】
ＩＰｓｅｃパケットの暗号化に用いられるアルゴリズムには、ＮＵＬＬ暗号アルゴリズム（暗号機能を使用しない）、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、３ＤＥＳ（ｔｒｉｐｌｅ−ＤＥＳ）、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などがある。
【００３０】
前述したアルゴリズムは、ある特定のビット数のまとまり（ブロック長）で平文をまとめて暗号処理するブロック暗号である。例えば、ＮＵＬＬ暗号アルゴリズムのブロック長は１バイトであり、ＤＥＳや３ＤＥＳのブロック長は８バイト、ＡＥＳのブロック長は１６バイトである。
【００３１】
ブロック暗号アルゴリズムは、固定長のブロックを暗号化するアルゴリズムであるが、暗号化したい平文がブロック長に収まらない場合、ブロック暗号アルゴリズムを繰り返して、長い平文全てを暗号化することとなる。
【００３２】
前述の繰り返しの方法（モード）についてはさまざまな種類があるが、ＩＰｓｅｃでは主に暗号ブロック連鎖モード（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ  ｍｏｄｅ：ＣＢＣモード）が用いられる。
【００３３】
ＣＢＣモードとは、１つ前の暗号文ブロックと平文ブロックのＸＯＲ（ｅｘｃｌｕｓｉｖｅ  ｏｒ）を取得してから暗号化を行うモードである。最初の平文を暗号化するときは、１つ前の暗号文ブロックは存在しないため、１つ前の暗号文ブロックの代わりにＩＶ６２５が使用される。
【００３４】
ＩＰｓｅｃパケットのメッセージ認証に用いられるハッシュ関数アルゴリズムには、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）、ＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）、ＳＨＡ−２２４、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２などがある。
【００３５】
これらはすべてハッシュ値からメッセージを逆算できない一方向性の性質を持つ。ＭＤ５は１６バイト、ＳＨＡ−１は２０バイト、ＳＨＡ−２２４は２８バイト、ＳＨＡ−２５６は３２バイト、ＳＨＡ−３８４は４８バイト、及びＳＨＡ−５１２は６４バイトのハッシュ値が計算される。
【００３６】
ハッシュ値は、メッセージ（認証計算範囲となるデータ）に対して６４バイト単位の区切りで算出される。対象データが６４バイトに満たない場合、ハッシュ値は、パディングを付加して算出される。メッセージの末尾には必ずメッセージの終端を表す１とメッセージの長さを表す８バイトの値が挿入されるため、メッセージ本体とメッセージの終端表示（１ビット）とメッセージ長（８バイト）との合計が６４バイトの倍数になるように、メッセージ終端表示とメッセージ長の間に必要なビット数分０が挿入される。
【００３７】
これらハッシュ関数アルゴリズムに鍵付きハッシュ関数アルゴリズム（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ：ＨＭＡＣ）を組み込んだメッセージ認証アルゴリズムがＩＰｓｅｃでは使用される。ＭＤ５、ＳＨＡ−１を使うＨＭＡＣをそれぞれＨＭＡＣ−ＭＤ５、ＨＭＡＣ−ＳＨＡ１と呼ぶ。これらによって算出された値がＩＣＶ６５５値として使用される。
【００３８】
ＩＰｓｅｃの処理は、ＲＦＣ（Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ）２４０６準拠のＩＰｓｅｃ処理に基づいて、送信パケットについては暗号化とメッセージ認証とが付加され、受信パケットについては復号化とメッセージ認証とがチェックされる。ここで、ＲＦＣ２４０６準拠のＩＰｓｅｃ処理とは、ＲＦＣ２４０３、ＲＦＣ２４０４準拠のＨＭＡＣ−ＭＤ５やＨＭＡＣ−ＳＨＡ−１の認証機能及び、ＲＦＣ２４１０、ＲＦＣ２４５１のＮＵＬＬ、ＣＢＣ−ＡＥＳの暗号機能などによるＩＰｖ４及びＩＰｖ６パケットに対する暗号及び復号処理である。
【００３９】
図１は、本発明の実施形態のネットワーク機器１００の構成を説明するブロック図である。
【００４０】
ネットワーク機器１００は、ネットワーク１５５を介して、通信相手のネットワーク機器（図示省略）と通信する。
【００４１】
ネットワーク機器１００は、ホストＣＰＵ１０５、ホストメモリ１１０、周辺Ｉ／Ｆ１１５、アクセラレータ１２５、通信データ変調・復調部１５０、及びホストバスＩ／Ｆ部１２０を備える。なお、ネットワーク機器１００は、適用される通信サービスに応じて、任意の専用回路、表示パネル、又は磁気ディスクを備えていてもよい。
【００４２】
ホストＣＰＵ１０５は、ホストメモリ１１０に展開されたプログラム等と実行する。ホストメモリ１１０は、ネットワーク機器１００が実行する処理を実現するためのプログラム等を格納する。周辺Ｉ／Ｆ１１５は、ネットワーク機器１００に接続されたキーボード、又はモニタなどと接続するためのインタフェースである。
【００４３】
ホストバスＩ／Ｆ部１２０は、ホストＣＰＵ１０５、ホストメモリ１１０、及び周辺Ｉ／Ｆ１１５と、アクセラレータ１２５とを接続するためのインタフェースである。
【００４４】
通信データ変調・復調部１５０は、ネットワーク機器１００とネットワーク１５５とを接続するための回路である。つまり、ネットワーク機器１００は、通信データ変調・復調部１５０を介してネットワーク１５５と接続される。なお、ネットワーク機器１００とネットワーク１５５との間の接続の形態は有線接続でもよいし、無線接続でもよい。
【００４５】
アクセラレータ１２５は、通信パケットデータの処理を実行する。具体的には、アクセラレータ１２５は、受信パケットの解析、送信パケットの生成、セッション情報の管理、暗復号処理、及びメッセージ認証処理等を実行する。アクセラレータ１２５は、通信情報管理・制御部１３０、送受信一時バッファ部１３５、送信生成部１４０、及び受信解析部１４５を備える。
【００４６】
通信データ変調・復調部１５０、送信生成部１４０、受信解析部１４５、通信情報管理・制御部１３０、及び送受信一時バッファ部１３５は、一定の動作周期で処理を実行している。以下の説明において、一定の動作周期をサイクルと記載する。例えば、動作周期の数を表す場合、１サイクルと記載し、また、動作周期の順番を表す場合、１サイクル目と記載する。
【００４７】
通信データ変調・復調部１５０は、ネットワーク１５５から受信した信号を復調し、復調された受信信号を任意のバイト数で区切り、当該区切られた受信信号を受信パケットとして受信解析部１４５に出力する。なお、受信信号は、１サイクル毎に、任意のバイト数で区切られる。
【００４８】
また、通信データ変調・復調部１５０は、送信生成部１４０から送信され、任意のバイト数で区切られた送信パケットを変調し、変調された送信パケットをネットワーク１５５へ送信する。
【００４９】
以下、アクセラレータ１２５が備える各構成について説明する。
【００５０】
受信解析部１４５は、通信データ変調・復調部１５０から入力された受信パケットに含まれるヘッダ部分を解析する。なお、受信パケットに含まれるヘッダ部分には、受信相手のアドレス、及び受信パケットの種別等のパケット自体の通信情報が格納される。
【００５１】
受信解析部１４５は、解析結果として送信相手のアドレス情報、及びポート番号等を通信情報管理・制御部１３０に出力する。このとき、処理対象とする受信パケットが暗号化されており、復号処理及びメッセージ認証処理が必要な場合、受信解析部１４５は、復号処理及びメッセージ認証処理を実行し、前述した通信情報を取得する。
【００５２】
また、受信解析部１４５は、受信パケットに含まれるデータ本体の情報を格納するペイロード部分の位置を特定し、特定されたペイロードの位置、ペイロード長、及び受信パケットのパケット長等を通信情報管理・制御部１３０に出力する。また、受信解析部１４５は、受信パケットを送受信一時バッファ部１３５に出力する。
【００５３】
また、受信解析部１４５は、ホストＣＰＵ１０５、ホストメモリ１１０、周辺Ｉ／Ｆ、又はホストバスＩ／Ｆ部１２０を介してアクセラレータ１２５から、送受信一時バッファ部１３５に格納されるデータ、ヘッダを含むデータ、又は通信情報などを取得することができる。
【００５４】
送信生成部１４０は、通信情報管理・制御部１３０から入力された送信相手のアドレス情報、ポート番号、及び送受信一時バッファ部１３５に格納された送信用データの位置等の情報に基づいて送信パケットのヘッダを生成する。送信生成部１４０は、処理対象とする送信パケットについて暗号処理及びメッセージ認証処理が必要な場合、暗号処理及びメッセージ認証処理を実行し、送信パケットを生成する。
【００５５】
さらに、送信生成部１４０は、生成されたヘッダと送受信一時バッファ部１３５に格納された送信用データとを、送信パケットとして、通信データ変調・復調部１５０に出力する。なお、当該送信パケットは、生成されたヘッダ及び送受信一時バッファ部１３５に格納された送信用データを含む信号を、１サイクルごとに任意のバイト数に区切ったものである。
【００５６】
通信情報管理・制御部１３０は、受信解析部１４５の解析結果に含まれる、コネクション情報、ポート管理、及び受信したデータ等、更にＳＡを含むＳＡＤを管理する。また、通信情報管理・制御部１３０は、対象となるペイロードデータが送受信一時バッファ部１３５のどの位置に格納されているかを管理する。
【００５７】
送受信一時バッファ部１３５は、受信パケット、及び送信用のペイロードデータを格納する記憶領域である。なお、送受信一時バッファ部１３５は、通信情報管理・制御部１３０との間で、格納状況を入出力する。
【００５８】
以下、送信生成部１４０及び受信解析部１４５の詳細について説明する。
【００５９】
＜受信解析部１４５＞
図２は、本発明の実施形態の受信解析部１４５の構成を示すブロック図である。
【００６０】
図２に示す例では、受信解析部１４５が、受信パケットＡ２００、受信パケットＢ２０５及び受信パケットＣ２１０を受信した場合を例に説明する。なお、受信パケットＡ２００及び受信パケットＢ２０５はＩＰｓｅｃパケットを示し、受信パケットＣ２１０はＩＰｓｅｃ以外のパケットを示す。
【００６１】
受信解析部１４５は、通信データ変調・復調部Ｉ／Ｆ２１５、ワーキングレジスタ２２０、受信解析部本体２２５、通信情報管理・制御部Ｉ／Ｆ２３０、及び送受信一時バッファ部Ｉ／Ｆ２９０を備える。
【００６２】
通信データ変調・復調部Ｉ／Ｆ２１５は、ネットワーク１５５から受信した信号を復調し、復調された受信信号を任意のバイト数で区切り、当該区切られた受信信号を受信パケットとして、受信解析部１４５に出力するインタフェースである。具体的には、受信パケットは、Ｎバイトレジスタ２３５とデータセレクタ２４０とに入力される。
【００６３】
図２に示す例では、通信データ変調・復調部Ｉ／Ｆ２１５は、受信パケットＡ２００、受信パケットＢ２０５及び受信パケットＣ２１０を、それぞれＮバイトずつに区切り、当該区切られた受信パケットをＮバイトレジスタ２３５に出力する。
【００６４】
ワーキングレジスタ２２０は、受信解析部１４５の状態を制御するための情報、メッセージ認証処理及び復号処理中に使用される一時データ、並びに、受信パケットの長さ及びチェックサム計算値途中の一時データを格納する。
【００６５】
具体的には、ワーキングレジスタ２２０は、プログラムカウンタ、制御レジスタ、パケット種別、パケット長、ペイロードオフセット、ペイロード長、最終入出力パケット長、桁上循環加算結果、及び計算途中データを格納する。
【００６６】
プログラムカウンタは、次に読み出されるマイクロプログラムを指定するアドレスを格納する。制御レジスタは、受信解析部１４５の状態を格納する。パケット種別は、受信パケットの種別を格納する。
【００６７】
パケット長は、受信パケットの長さを格納する。ペイロードオフセットは、パケットにおけるヘッダとペイロードとの境界の位置を格納する。ペイロード長は、ペイロードの長さを格納する。
【００６８】
最終入出力パケット長は、実際に受信したデータの長さを格納する。つまり、任意のバイト数で区切られていない場合のデータの長さが格納される。桁上循環加算結果は、チェックサムの値を格納する。計算途中データは、受信解析部１４５における演算途中のデータを格納する。
【００６９】
通信情報管理・制御部Ｉ／Ｆ２３０は、受信解析部１４５を制御するマイクロプログラム、メッセージ認証のための情報、復号化のためのカギ情報を受信解析部１４５に入力し、受信解析部１４５が受信パケットを解析した結果を通信情報管理・制御部１３０へ出力するインタフェースである。
【００７０】
送受信一時バッファ部Ｉ／Ｆ２９０は、解析が完了した受信パケットを送受信一時バッファ部１３５へ出力するインタフェースである。
【００７１】
受信解析部本体２２５は、受信解析部１４５における各種処理を実行する。受信解析部本体２２５は、Ｎバイトレジスタ２３５、データセレクタ２４０、マイクロプログラム解釈器Ａ２４５、受信解析部エンジン２５０、Ｍバイトレジスタ２７０、データセレクタ２７５、解析エンジンＢ２８０、及びマイクロプログラム解釈器Ｂ２８５を備える。
【００７２】
Ｎバイトレジスタ２３５は、通信データ変調・復調部Ｉ／Ｆ２１５から入力されるＮバイトのデータ（受信パケット）を逐次格納するレジスタである。Ｎバイトレジスタ２３５は、ワーキングレジスタ２２０上に構成される。また、Ｊ段のＮバイトレジスタ２３５から遅延レジスタ２９５−１が構成される。なお、Ｊは、１以上の整数である。
【００７３】
本実施形態では、Ｎバイトレジスタ２３５には、以下に示すようにデータが格納される。
【００７４】
１サイクル目に入力されたＮバイトのデータ１は、２サイクル目にＮバイトレジスタ１（２３５）に格納される。さらに、データ１は、３サイクル目にＮバイトレジスタ２（２３５）に格納される。また、データ１がＮバイトレジスタ２（２３５）に格納されるのと同時に、Ｎバイトレジスタ１（２３５）には、次に入力されたデータ２が格納される。
【００７５】
前述したように、入力されたデータは、１サイクル毎に、Ｎバイトレジスタ１〜Ｊまで順次推移し、当該データが入力されてからＪ＋１サイクル後に破棄される。
【００７６】
データセレクタ２４０は、受信解析部エンジン２５０が必要とするデータを選択し、選択されたデータを受信解析部本体２２５に出力する。
【００７７】
具体的には、データセレクタ２４０は、マイクロプログラム解釈器Ａ２４５から入力されたマイクロプログラムに基づいて、通信データ変調・復調部Ｉ／Ｆ２１５から入力されたＮバイトのデータ（受信パケット）及び遅延レジスタ２９５−１から受信解析部本体２２５が必要とするデータを選択する。さらに、データセレクタ２４０は、選択されたデータを受信解析部本体２２５に出力する。このとき、遅延レジスタ２９５−１の任意のＮバイトレジスタ２３５が選択された場合、当該Ｎバイトレジスタ２３５に格納されたデータが受信解析部本体２２５に出力される。
【００７８】
なお、データセレクタ２４０は、通信データ変調・復調部Ｉ／Ｆ２１５から入力されたデータ（受信パケット）を参照することによって、Ｎバイトレジスタ２３５に格納されているデータ内容を把握することができる。
【００７９】
例えば、前述のデータ１がＮバイトレジスタ２３５に入力されてから３サイクル目において、データセレクタ２４０は、Ｎバイトレジスタ２（２３５）に格納されたデータ１、Ｎバイトレジスタ１（２３５）に格納されたデータ２、さらに、３サイクル目に受信したデータ３のなかから必要となるデータを選択し、当該選択されたデータを受信解析部１４５に出力する。これによって、受信解析部１４５は任意の処理を行うことができる。
【００８０】
受信解析部１４５が実行する受信解析処理に応じてＮ及びＪを的確に設定することによって、無駄のない最適な容量のレジスタで、受信解析処理が可能となる。Ｎ及びＪの設定方法については後述する。
【００８１】
また、受信解析部１４５が遅延レジスタ２９５−１を備えることによって、受信解析部エンジン２５０は、受信パケットをＮバイトずつ逐次処理することが可能となり、受信パケットの受信直後に当該受信パケットの解析を完了することができる。したがって、従来の受信パケット全体がバッファに格納された後に解析する場合と比較して、本発明の受信解析部１４５は、より早くパケットの受信処理及び解析処理を完了することができる。また、受信解析部エンジン２５０が受信パケットを逐次処理できるため、ワーキングレジスタ２２０の容量を小さくでき、コストを削減できる。
【００８２】
マイクロプログラム解釈器Ａ２４５は、１サイクル毎に通信情報管理・制御部１３０に格納されるマイクロプログラムを読み出し、読み出されたマイクロプログラムを解釈する。また、マイクロプログラム解釈器Ａ２４５は、読み出されたマイクロプログラムを所定のデータ長に振り分け、解釈されたマイクロプログラムに基づいて、当該振り分けられた所定のデータ長のマイクロプログラムを受信解析部エンジン２５０に出力する。また、マイクロプログラム解釈器Ａ２４５は、解釈されたマイクロプログラムをデータセレクタ２４０に出力する。
【００８３】
図２に示す例では、通信情報管理・制御部１３０がマイクロプログラムを格納し、管理しているが、受信解析部１４５にマイクロプログラム格納用のメモリを備え、当該メモリからマイクロプログラムが呼び出されるようにしてもよい。
【００８４】
なお、マイクロプログラムは、書き換えが可能であり、適用される通信サービスに応じて設定を変更できる。
【００８５】
受信解析部エンジン２５０は、各種処理を実行する。受信解析部エンジン２５０は、解析エンジンＡ２５５、認証エンジン２６０、及び復号エンジン２６５を備える。解析エンジンＡ２５５、認証エンジン２６０、及び復号エンジン２６５は、互いに処理結果を出力することができる。
【００８６】
解析エンジンＡ２５５は、演算ロジックを備え、入力されたマイクロプログラムに基づいて、内部の処理動作が決定される状態遷移エンジンである。なお、解析エンジンＡ２５５は、通信サービスに応じて、任意の専用回路等を備えてもよい。
【００８７】
解析エンジンＡ２５５は、マイクロプログラム解釈器Ａ２４５から入力されたマイクロプログラム、データセレクタ２４０及びワーキングレジスタ２２０から入力されたデータに基づいて、受信解析部１４５に入力されたデータの解析処理を実行する。具体的には、解析エンジンＡ２５５は、入力された受信パケットを解析し、アドレス情報や長さ情報などの解析結果を取得する。
【００８８】
解析結果は、ワーキングレジスタ２２０、通信情報管理・制御部Ｉ／Ｆ２３０、又は、送受信一時バッファ部Ｉ／Ｆ２９０に出力される。なお、解析結果には、認証エンジン２６０が実行した処理の結果及び復号エンジン２６５が実行した処理の結果が含まれる。
【００８９】
解析エンジンＡ２５５は、演算ロジックとして、一以上の比較器、一以上の格納器、一以上の加減算器、及び一以上の桁上循環加算器を備える。なお、解析エンジンＡ２５５は、他の機能を実現するための部位を備えてもよい。
【００９０】
解析エンジンＡ２５５は、マイクロプログラムの解釈結果に基づいて、前述の各構成要素を動作させる。具体的には、マイクロプログラム解釈結果に基づいて、解析エンジンＡ２５５内部の演算ロジックの各構成要素の接続が変更される。
【００９１】
比較器は、マイクロプログラムの定数、入力データ又はレジスタ値の各々を比較し、比較結果を出力する。つまり、比較器は、二つの入力に対して、一つの結果を出力する。
【００９２】
格納器は、ワーキングレジスタ２２０、通信情報管理・制御部Ｉ／Ｆ２３０又は送受信一時バッファ部Ｉ／Ｆ２９０にデータ及び演算結果を出力する。
【００９３】
加減算器は、入力データ及びレジスタ値を加算又は減算する。桁上循環加算器は、ＴＣＰ／ＩＰなどで使用されるチェックサムを計算する。
【００９４】
認証エンジン２６０は、マイクロプログラムに基づいて、受信解析部１４５に入力されたデータの認証処理を実行する。なお、認証結果は、解析エンジンＡ２５５が出力する解析結果に含めて送信される。
【００９５】
認証エンジン２６０には、通信情報管理・制御部１３０から解析エンジンＡ２５５によって解析された情報に基づいて選択されたメッセージ認証のためのハッシュ関数アルゴリズム及び認証鍵が入力される。
【００９６】
認証エンジン２６０は、通信情報管理・制御部１３０から入力された各情報を用いて、データセレクタ２４０から入力された所定ブロック長分のデータの認証処理を実行する。
【００９７】
認証処理の結果、受信パケットが正常であると判定された場合、認証エンジン２６０は、通信情報管理・制御部１３０に有効受信パケットであることを通知する。
【００９８】
認証処理の結果、認証を失敗した場合、認証エンジン２６０は、受信パケットが不正受信パケットであること、並びに、解析エンジンＡ２５５及び解析エンジンＢ２８０によって通信情報管理・制御部１３０に出力された解析結果が不正受信パケットの解析結果であることを、通信情報管理・制御部１３０に通知する。
【００９９】
また、認証エンジン２６０は、通信情報管理・制御部１３０及び送受信一時バッファ部１３５に、送受信一時バッファ部１３５に格納されたデータが認証失敗したデータであることを通知することも可能である。認証失敗の通知を受けた通信情報管理・制御部１３０及び送受信一時バッファ部１３５は、それぞれ入力されたデータをどう処理するかを決定する。なお、受信解析部１４５は、通信情報管理・制御部１３０及び送受信一時バッファ部１３５に受信解析部１４５から入力されたデータを破棄する旨の命令を出力することもできる。
【０１００】
復号エンジン２６５は、マイクロプログラムに基づいて、受信解析部１４５に入力されたデータの復号処理を実行する。
【０１０１】
復号エンジン２６５には、通信情報管理・制御部１３０から解析エンジンＡ２５５によって解析された情報に基づいて選択された復号のためのアルゴリズム及び復号鍵が入力される。
【０１０２】
復号エンジン２６５は、通信情報管理・制御部１３０から入力された各情報を用いて、データセレクタ２４０から入力された所定のブロック長分のデータの復号処理を実行する。復号エンジン２６５は、Ｍバイトレジスタ１〜Ｋ（２７０）で構成される遅延レジスタ２９５−２に復号処理の結果を出力する。
【０１０３】
Ｍバイトレジスタ２７０は、復号エンジン２６５から出力され、復号が完了した受信パケットを逐次格納するレジスタである。Ｍバイトレジスタ２７０は、ワーキングレジスタ２２０上に構成される。また、Ｋ段のＭバイトレジスタ２７０から遅延レジスタ２９５−２が構成される。なお、Ｋは１以上の整数である。
【０１０４】
Ｎバイトレジスタ２３５と同様に、Ｍバイトレジスタ２７０に入力されたデータは、１サイクル毎に、Ｍバイトレジスタ１〜Ｋ（２７０）まで順次推移し、当該データが入力されてからＫ＋１サイクル後に破棄される。
【０１０５】
データセレクタ２７５は、データセレクタ２４０と同一の構成である。データセレクタ２７５は、解析エンジンＢ２８０が必要とするデータを選択し、選択されたデータを解析エンジンＢ２８０に出力する。
【０１０６】
解析エンジンＢ２８０は、解析エンジンＡ２５５と同一の構成である。データセレクタ２７５から入力されたデータに基づいて、当該データの解析処理を実行する。
【０１０７】
マイクロプログラム解釈器Ｂ２８５は、マイクロプログラム解釈器Ａ２４５と同一の構成である。マイクロプログラム解釈器Ｂ２８５は、通信情報管理・制御部１３０に格納されるマイクロプログラムを読み出し、読み出されたマイクロプログラムを解釈する。また、マイクロプログラム解釈器Ｂ２８５は、読み出されたマイクロプログラムを所定のデータ長に振り分け、解釈されたマイクロプログラムに基づいて、当該振り分けられた所定のデータ長のマイクロプログラムを解析エンジンＢ２８０に出力する。また、マイクロプログラム解釈器Ｂ２８５は、解釈されたマイクロプログラムをデータセレクタ２７５に出力する。
【０１０８】
以下、Ｎバイトレジスタ２３５のバイト幅Ｎ、Ｍバイトレジスタ２７０のバイト幅Ｍ、遅延レジスタ２９５−１の段数Ｊ、及び遅延レジスタ２９５−２の段数Ｋの設定方法の一例を説明する。
【０１０９】
Ｎバイトレジスタ２３５のバイト幅Ｎは、パケットを構成するアドレスデータやサイズデータを考慮し、解析エンジンＡ２５５が処理するのに最適な幅が設定される。遅延レジスタ２９５−１の段数Ｊは、Ｎ×Ｊの値が、一度に処理しなければならないバイト長Ｘ以上となるように設定される。バイト幅Ｎと段数Ｊとは、予め設定されていてもよいし、外部から設定を変更できる構成であってもよい。
【０１１０】
例えば、受信パケットが解析される場合、解析エンジンＡ２５５が処理するチェックサム計算のブロック長、認証エンジン２６０が処理するメッセージ認証のブロック長、及び復号エンジン２６５が処理する復号計算のブロック長の最小公倍数が一度に扱うバイト長の最大値となるため、当該最小公倍数をバイト長Ｘとして、Ｎ及びＪが設定される。
【０１１１】
さらに、遅延レジスタ２９５−１の段数Ｊを増やすことによって、受信パケットを処理するにあたって処理遅延が起きる場合、処理遅延を保証することが可能となる。具体的には、受信解析部１４５は、１サイクル目に入力されたデータの処理を実行し、次のサイクルで入力されたデータに対して、されに何らかの処理を実行する場合、遅延レジスタを１段設けることで、当該データの処理が可能となる。つまり、処理の度にホストメモリ１１０等にアクセスする必要がなくなる。
【０１１２】
なお、認証処理及び復号処理が必要ない場合、遅延レジスタ２９５の段数Ｊは１であってもよい。Ｊが１以上であるのは、前述したように、任意サイクルで入力されたデータの処理後に、参照することができるようにするためである。
【０１１３】
Ｍバイトレジスタ２７０のバイト幅Ｍは、解析エンジンＡ２５５が処理するチェックサム計算のブロック長、認証エンジン２６０が処理するメッセージ認証のブロック長、及び復号エンジン２６５が処理する復号計算のブロック長の最小公倍数であるバイト長Ｘ以上となるように設定される。
【０１１４】
遅延レジスタ２９５−２の段数Ｋは、解析エンジンＢ２８０が必要とする処理遅延のサイクル数分以上に設定される。これによって、データセレクタ２７５は、遅延レジスタ２９５−２から解析対象データを選択し、選択された解析対象データを用いて解析することができ、解析エンジンＢ２８０は遅延解析が可能となる。
【０１１５】
本実施形態では、受信解析部１４５は、図２に示すように解析エンジンＡ２５５及び解析エンジンＢ２８０を備えている。これによって、受信パケットが、復号処理及びメッセージ認証処理が必要なＩＰｓｅｃなどのパケットであった場合、解析エンジンＡ２５５が復号しなければならない領域までを解析し、解析エンジンＢ２８０が復号後の部分について解析する。
【０１１６】
受信パケットの復号処理が必要でない場合、解析エンジンＡ２５５は、受信パケット全体の解析を行う。この場合、受信解析部１４５は、解析エンジンＢ２８０を備えていなくてもよい。
【０１１７】
図２に示す例では、受信解析部１４５は、解析エンジンＡ２５５と解析エンジンＢ２８０とをそれぞれ備えているが、一つの解析エンジンだけを備えていてもよい。
【０１１８】
また、解析エンジンＡ２５５は復号化する前の受信パケット部分を処理する専用の機能のみを備え、解析エンジンＢ２８０は復号後の受信パケットを解析する処理機能のみを備える構成であってもよい。
【０１１９】
例えば、図６に示したＩＰｓｅｃパケットにおいて、Ｌ２ヘッダ６００、外側ＩＰヘッダ６０５、ＥＳＰヘッダ６１０、ＩＶ６２５、及びＩＣＶ６５５を処理する機能を解析エンジンＡ２５５が備え、ＩＰパケット６３０、パディング６３５、トレーラ６４０を処理する機能を解析エンジンＢ２８０が備える等が考えられる。
【０１２０】
また、ＩＰｓｅｃの中にＩＰｓｅｃが含まれるパケットを処理する場合、受信解析部１４５は、解析エンジンＢ２８０、認証エンジン、及び復号エンジンを備える受信解析部本体を備えていてもよい。
【０１２１】
受信解析処理の場合、ネットワーク機器１００は、通信データ変調・復調部１５０を介してＩＰｓｅｃが適用されたＴＣＰ／ＩＰパケットを受信する。
【０１２２】
図４は、本発明の実施形態の受信解析部１４５の処理の流れの一例を説明するシーケンス図である。Ｔ４００〜Ｔ４７０は、それぞれ各処理の区切りの時間を示している。
【０１２３】
ネットワーク機器１００は、ＩＰｓｅｃを受信すると受信解析処理を開始する。
【０１２４】
まず、通信データ変調・復調部１５０はネットワーク１５５からデータを受信し、受信したデータを遅延レジスタ２９５−１に含まれるＮバイトレジスタ１（２３５）に格納し、また、受信したデータをデータセレクタ２４０に出力する。前述の処理によって、データセレクタ２４０は、受信解析部本体２２５が必要とするデータを選択できる状態となり、解析エンジンＡ２５５で処理が開始される（Ｔ４００）。
【０１２５】
なお、データセレクタ２４０は、マイクロプログラム解釈器Ａ２４５が出力するマイクロプログラムに基づいて、所定のＮバイトレジスタ２３５を選択し、選択されたＮバイトレジスタ２３５に格納されたデータを解析エンジンＡ２５５、認証エンジン２６０、及び復号エンジン２６５に出力する。なお、データセレクタ２４０は、データセレクタ２４０に入力され、かつ、まだＮバイトレジスタ２３５に格納されていないデータを出力することをできる。
【０１２６】
解析エンジンＡ２５５は、受信したデータがＩＰｓｅｃパケットであると判定した後、当該データを認証エンジン２６０及び復号エンジン２６５にそれぞれ出力する。解析エンジンＡ２５５からの入力を受け、認証エンジン２６０はメッセージ認証処理を開始し（Ｔ４１０）、また、復号エンジン２６５は復号処理を開始する（Ｔ４２０）。なお、受信したデータの解析処理、認証処理、及び復号処理は並行して実行される。
【０１２７】
復号エンジン２６５は、復号結果を遅延レジスタ２９５−２に含まれるＭバイトレジスタ１（２７０）に格納し、また、復号結果をデータセレクタ２７５に出力する。前述の処理によって、データセレクタ２７５は、解析エンジンＢ２８０が必要とするデータを選択できる状態となり、解析エンジンＢ２８０で処理が開始される（Ｔ４３０）。
【０１２８】
なお、データセレクタ２７５は、マイクロプログラム解釈器Ｂ２８５が出力するマイクロプログラムに基づいて、所定のＭバイトレジスタ２７０を選択し、選択されたＭバイトレジスタ２７０に格納されたデータを解析エンジンＢ２８０に出力する。なお、データセレクタ２７５は、データセレクタ２７５に入力され、かつ、まだＭバイトレジスタ２７０に格納されていないデータを出力することをできる。
【０１２９】
また、認証エンジン２６０及び復号エンジン２６５は、データセレクタ２４０から出力されるデータ、及び通信データ変調・復調部１５０から出力されるデータを用いて、それぞれ処理を実行する。解析エンジンＢ２８０は、データセレクタ２７５から出力されるデータ、通信データ変調・復調部１５０から出力されるデータ、及び復号エンジン２６５から出力されるデータを用いて、処理を実行する。
【０１３０】
認証エンジン２６０、復号エンジン２６５、及び解析エンジンＢ２８０は、それぞれ、ワーキングレジスタ２２０、通信情報管理・制御部１３０及び送受信一時バッファ部１３５に処理結果を出力する。
【０１３１】
ネットワーク機器１００が暗号化されたデータの受信を完了し、復号エンジン２６５が当該暗号化されたデータの復号処理を完了させた後（Ｔ４４０）、解析エンジンＢ２８０は、復号データの解析処理を完了する（Ｔ４５０）。
【０１３２】
ネットワーク機器１００が全受信パケットの受信を完了するのに合わせて（Ｔ４６０）、認証エンジン２６０及び解析エンジンＡ２５５は、それぞれ処理を完了する（Ｔ４７０）。なお、認証エンジン２６０及び解析エンジンＡ２５５が実行する処理の完了は、同時でなくてもよい。図４においては、解析エンジンＡ２５５が受信パケットの最終処理を行っている例を示しているが、解析エンジンＡ２５５の代わりに、解析エンジンＢ２８０が受信パケットの最終処理を行ってもよい。
【０１３３】
以上のように、受信解析部１４５が、Ｊ段のＮバイトレジスタ２３５から構成される遅延レジスタ２９５−１と、Ｋ段のＭバイトレジスタ２７０から構成される遅延レジスタ２９５−２とを備えることによって、図４に示すような逐次処理を実現することができる。
【０１３４】
また、バイト幅Ｎ及びバイト幅Ｍを、各エンジン（解析エンジンＡ２５５、認証エンジン２６０、復号エンジン２６５、及び解析エンジンＢ２８０）で処理されるブロック長を考慮して（例えば、各エンジンで処理されるブロック長の最小公倍数以上）設定することによって、効率よく処理を実行することができる。
【０１３５】
また、前述したように受信解析部１４５が逐次処理を実行できるため、ネットワーク機器１００は、全パケットを格納することのできる容量のバッファを備える必要がない。
【０１３６】
なお、データセレクタ２４０及びデータセレクタ２７５は、遅延レジスタ２９５−１及び遅延レジスタ２９５−２から必要となるバイト幅のデータを出力することができる。出力されるデータのバイト幅は、Ｎ又はＭより小さくてもよい。
【０１３７】
＜送信生成部１４０＞
図３は、本発明の実施形態の送信生成部１４０の構成を示すブロック図である。
【０１３８】
図３に示す例では、送信生成部１４０、送信パケットＡ３００、送信パケットＢ３０５及び送信パケットＣ３１０を生成し、生成されたパケットを送信する場合を例に説明する。なお、送信パケットＡ３００及び送信パケットＢ３０５はＩＰｓｅｃパケットを示し、送信パケットＣ３１０はＩＰｓｅｃ以外のパケットを示す。
【０１３９】
送信生成部１４０は、通信情報管理・制御部Ｉ／Ｆ３１５、通信データ変調・復調部Ｉ／Ｆ３２０、ワーキングレジスタ３２５、送受信一時バッファ部Ｉ／Ｆ３７５、及び送信生成部本体３８５を備える。
【０１４０】
通信データ変調・復調部Ｉ／Ｆ３２０は、送信生成部１４０が生成した信号を変調し、変調された送信任意のバイト数の区切り、当該区切られた送信信号を送信パケットとして変調し、さらに、当該送信パケットをネットワーク１５５に出力するインタフェースである。
【０１４１】
ワーキングレジスタ３２５は、送信生成部１４０の状態を制御する情報、メッセージ認証、暗号化中に使用する一時データ、並びに、送信パケットの長さ及びチェックサム計算値途中の一時データを格納する。前述した各情報は、例えば、通信情報管理・制御部１３０又は送受信一時バッファ部１３５から入力される。
【０１４２】
具体的には、ワーキングレジスタ３２５は、プログラムカウンタ、制御レジスタ、パケット種別、パケット長、ペイロード長、送信データが格納されている送受信一時バッファ部１３５の先頭アドレス、最終入出力パケット長、桁上循環加算結果、及び計算途中データを格納する。
【０１４３】
プログラムカウンタは、次に読み出されるマイクロプログラムを指定するアドレスを格納する。制御レジスタは、送信生成部１４０の状態を格納する。パケット種別は、生成される送信パケットの種別を格納する。
【０１４４】
パケット長は、生成パケットの長さを格納する。ペイロード長は、ペイロードの長さを格納する。最終入出力パケット長は、実際に送信するデータの長さを格納する。つまり、任意のバイト数で区切られていない場合のデータの長さが格納される。桁上循環加算結果は、チェックサムの値を格納する。計算途中データは、送信生成部１４０における演算途中のデータを格納する。
【０１４５】
通信情報管理・制御部Ｉ／Ｆ３１５は、送信生成部１４０を制御するマイクロプログラム、メッセージ認証のための情報、及び暗号化のためのカギ情報を送信生成部１４０に入力し、通信情報管理・制御部１３０が送信生成部１４０に送信パケットを生成するためのアドレスなどの情報を入力するインタフェースである。
【０１４６】
送受信一時バッファ部Ｉ／Ｆ３７５は、パケット生成するためのペイロードデータ部分を送信生成部１４０へ出力するインタフェースである。
【０１４７】
送信生成部本体３８５は、送信生成部１４０における各種処理を実行する。送信生成部本体３８５は、マイクロプログラム解釈器３３０、送信生成部エンジン３３５、Ｍバイトレジスタ３５５、データセレクタ３６０、Ｎバイトレジスタ３６５、及びデータセレクタ３７０を備える。
【０１４８】
Ｍバイトレジスタ３５５は、暗号化されたデータを逐次格納するレジスタである。Ｍバイトレジスタ３５５は、ワーキングレジスタ３２５上に構成される。また、Ｋ段のＭバイトレジスタ３５５から遅延レジスタ３８０−１が構成される。なお、Ｋは、１以上の整数である。
【０１４９】
ここで、受信解析部１４５におけるＮバイトレジスタ２３５及びＭバイトレジスタ２７０と送信生成部１４０におけるＮバイトレジスタ３６５及びＭバイトレジスタ３５５とのレジスタ幅を示すＮバイト、Ｍバイト及び段数を示すＪ段、Ｋ段は、送信処理が受信処理の逆処理であることを踏まえ同一の値に設定してもよいし、それぞれ受信解析部１４５と送信生成部１４０とで異なる値を設定してもよいものとする。
【０１５０】
Ｍバイトレジスタ３５５のデータ格納方法は、Ｎバイトレジスタ２３５と同一である。例えば、入力されたデータは、１サイクル毎に、Ｍバイトレジスタ１〜Ｋ（３５５）まで順次推移し、当該データが入力されてからＫ＋１サイクル後に破棄される。
【０１５１】
データセレクタ３６０は、送信生成部エンジン３３５が必要とするデータを選択し、送信生成部エンジン３３５に選択されたデータを出力する。
【０１５２】
具体的には、データセレクタ３６０は、マイクロプログラム解釈器３３０から入力されたマイクロプログラムに基づいて、暗号エンジン３４０から入力されたデータ及び遅延レジスタ３８０−１から送信生成部エンジン３３５が必要とするデータを選択する。さらに、データセレクタ３６０は、選択されたデータを送信生成部エンジン３３５に出力する。このとき、遅延レジスタ３８０−１の任意のＭバイトレジスタ３５５が選択された場合、当該Ｍバイトレジスタ３５５に格納されたデータが送信生成部エンジン３３５に出力される。
【０１５３】
ＭとＫを的確に選択することによって、無駄のない最適な容量のレジスタで、生成送信処理が可能となる。
【０１５４】
さらに、送信生成部エンジン３３５は、送信パケットをＭバイトずつ逐次生成することが可能となり、送信パケットの生成直後に当該送信パケットの送信が完了となる。したがって、従来の逐次生成された情報をバッファに格納し、送信パケット全体がバッファに格納された後に送信する場合と比較して、本発明の送信生成部１４０は、より速くパケットの生成処理及び送信処理を完了することができる。
【０１５５】
マイクロプログラム解釈器３３０は、１サイクル毎に通信情報管理・制御部１３０に格納されているマイクロプログラムを読み出し、当該マイクロプログラムを解釈する。また、マイクロプログラム解釈器３３０は、読み出されたマイクロプログラムを所定のデータ長に振り分け、解釈されたマイクロプログラムにしたがって、当該振り分けられた所定のデータ長のマイクロプログラムを送信生成部エンジン３３５に出力する。また、マイクロプログラム解釈器３３０は、解釈されたマイクロプログラムをデータセレクタ３６０に出力する。
【０１５６】
図３に示す例では、通信情報管理・制御部１３０がマイクロプログラムを格納し、管理しているが、送信生成部１４０にマイクロプログラム格納用のメモリを備え、当該メモリからマイクロプログラムが呼び出されるようにしてもよい。
【０１５７】
なお、マイクロプログラムは、書き換えが可能であり、適用される通信サービスに応じて、設定を変更できる。
【０１５８】
送信生成部エンジン３３５は、各種処理を実行する。送信生成部エンジン３３５は、暗号エンジン３４０、生成エンジン３４５、及び認証エンジン３５０を備える。
【０１５９】
暗号エンジン３４０は、マイクロプログラムに基づいて、生成エンジン３４５が生成したデータ、並び、通信情報管理・制御部１３０及び送受信一時バッファ部１３５から入力されたデータの暗号処理を実行する。
【０１６０】
暗号エンジン３４０には、通信情報管理・制御部１３０から暗号化のアルゴリズム及び暗号鍵が入力される。
【０１６１】
暗号エンジン３４０は、通信情報管理・制御部１３０から入力された各情報を用いて、生成エンジン３４５から入力された所定のブロック長分のデータについて暗号処理を実行する。
【０１６２】
暗号エンジン３４０は、Ｍバイトレジスタ１〜Ｋ（３５５）で構成される遅延レジスタ３８０−１に暗号化処理の結果を出力する。
【０１６３】
生成エンジン３４５は、演算ロジックを備え、マイクロプログラムに基づいて、内部の処理機構の動作が決定される状態遷移エンジンである。なお、生成エンジン３４５は、通信サービスに応じて、任意の専用回路等を備えてもよい。
【０１６４】
生成エンジン３４５は、マイクロプログラム解釈器３３０から入力されたマイクロプログラム、並びに、データセレクタ３６０、ワーキングレジスタ３２５及び送受信一時バッファ部Ｉ／Ｆ３７５から入力された情報に基づいて、各種処理を実行する。具体的には、生成エンジン３４５は、例えば、宛先アドレスなどを用いて送信パケットを生成する。
【０１６５】
なお、処理の結果はワーキングレジスタ３２５、遅延レジスタ３８０−１に格納され、また、送信パケットは通信データ変調・復調部Ｉ／Ｆ３２０に出力される。
【０１６６】
生成エンジン３４５は、演算ロジックとして、一以上の比較器、一以上の格納器、一以上の加減算器、及び一以上の桁上循環加算器を備える。なお、生成エンジン３４５は、他の機能を実現するための部位を備えてもよい。
【０１６７】
生成エンジン３４５は、マイクロプログラムの解釈結果に基づいて、前述の各構成要素を動作させる。具体的には、マイクロプログラム解釈結果に基づいて、生成エンジン３４５内部の演算ロジックの各構成要素の接続が変更される。
【０１６８】
比較器は、マイクロプログラムの定数、入力データ又はレジスタ値の各々を比較し、比較結果を出力する。つまり、比較器は、二つの入力に対して、一つの結果を出力する。
【０１６９】
格納器は、ワーキングレジスタ３２５、遅延レジスタ３８０−１に含まれるＭバイトレジスタ３５５又は通信データ変調・復調部Ｉ／Ｆ３２０に入力データ及び演算結果を出力する。
【０１７０】
加減算器は、入力データ及びレジスタ値を加算又は減算する。桁上循環加算器は、ＴＣＰ／ＩＰなどで使用されるチェックサムを計算する。
【０１７１】
認証エンジン３５０は、マイクロプログラムに基づいて、送信生成部１４０に入力されたデータ及び暗号エンジン３４０から入力されたデータの認証処理を実行する。
【０１７２】
認証エンジン３５０には、通信情報管理・制御部１３０から、暗号エンジン３４０によって暗号化された情報に基づいて選択されたメッセージ認証のハッシュ関数アルゴリズム及び認証鍵が入力される。
【０１７３】
認証エンジン３５０は、通信情報管理・制御部１３０から入力された各情報を用いて、データセレクタ３６０から入力された所定のブロック長分のデータの認証処理を実行する。認証エンジン３５０は、認証処理の結果を生成エンジン３４５に出力する。生成エンジン３４５は、当該認証処理の結果を用いて送信パケットを生成する。
【０１７４】
Ｎバイトレジスタ３６５は、通信データ変調・復調部Ｉ／Ｆ３２０に出力されるデータを逐次格納するレジスタである。Ｎバイトレジスタ３６５は、ワーキングレジスタ３２５上に構成される。また、Ｊ段のＮバイトレジスタ３６５から遅延レジスタ３８０−２が構成される。なお、Ｊは、１以上の整数である。
【０１７５】
Ｍバイトレジスタ３５５と同様に、入力されたデータは、１サイクル毎に、Ｎバイトレジスタ１〜Ｊ（３６５）まで順次推移し、当該データが入力されてからＪ＋１サイクル後に破棄される。
【０１７６】
データセレクタ３７０は、マイクロプログラム解釈器３３０から送信されるマイクロプログラムに基づいて、必要となる情報を選択し、選択された情報を送信パケットとして通信データ変調・復調部Ｉ／Ｆ３２０に出力する。
【０１７７】
以下、Ｍバイトレジスタ３５５のバイト幅Ｍ、Ｎバイトレジスタ３６５のバイト幅Ｎ、遅延レジスタ３８０−１の段数Ｋ、及び遅延レジスタ３８０−２の段数Ｊの設定方法の一例を説明する。
【０１７８】
Ｍバイトレジスタ３５５のバイト幅Ｍは、暗号エンジン３４０が実行する暗号処理のブロック長となるように設定される。遅延レジスタ３８０−１の段数Ｋは、Ｍ×Ｋの値が、認証エンジン３５０が実行する認証処理に必要とするブロック長以上になるように設定される。
【０１７９】
さらに、段数Ｋは、認証処理による遅延を考慮して決定される。具体的には、暗号エンジン３４０が暗号処理を完了する速度と認証エンジン３５０が認証処理を完了する速度とを考慮して、遅延レジスタ３８０−１の段数Ｋが決定される。
【０１８０】
なお、認証処理及び暗号処理が必要ない場合、遅延レジスタ３８０−１の段数Ｋは１であってもよい。
【０１８１】
Ｎバイトレジスタ３６５のバイト幅Ｎは、パケットを構成するアドレスデータ及びサイズデータを考慮し、生成エンジン３４５が送信パケットを生成するのに最適なバイト幅が設定される。
【０１８２】
遅延レジスタ３８０−２の段数Ｊは、生成エンジン３４５が送信パケットを生成するにあたって、どれだけ生成遅延が発生するかを考慮して設定される。段数Ｊを増やすことによって、対応できる生成遅延の長さが増加する。
【０１８３】
本実施形態では、送信生成部１４０は、図３に示すように生成エンジン３４５及びマイクロプログラム解釈器３３０を、それぞれ一つずつ備えているが、本発明はこれに限定されない。送信生成部１４０は、機能ごとに分けて２つ以上の生成エンジン３４５及びマイクロプログラム解釈器３３０を備えていてもよい。
【０１８４】
例えば、送信パケットが暗号処理及びメッセージ認証処理が必要なＩＰｓｅｃなどパケットであった場合、一つ目の生成エンジンが暗号化しなければならない領域までの送信パケットを生成し、二つ目の生成エンジンが暗号化後の部分を用いて送信データを生成する。
【０１８５】
また、送信パケットの暗号化が必要でない場合は、一つ目の生成エンジンが送信パケット全体を生成する。
【０１８６】
また、一つ目の生成エンジンは暗号化する前の送信パケット部分を生成する専用の機能のみを備え、二つ目の生成エンジンは暗号化後の送信パケット部分を生成する機能のみを備える構成であってもよい。
【０１８７】
例えば、図６に示したＩＰｓｅｃパケットにおいて、ＩＰパケット６３０、パディング６３５、及びトレーラ６４０を処理する機構を一つ目の生成エンジンが備え、Ｌ２ヘッダ６００、外側ＩＰヘッダ６０５、ＥＳＰヘッダ６１０、ＩＶ６２５、及びＩＣＶ６５５を処理する機構を二つ目の生成エンジンが備える等が考えられる。
【０１８８】
送信生成処理の場合、ネットワーク機器１００は、通信データ変調・復調部１５０を介してＩＰｓｅｃが適用されたＴＣＰ／ＩＰパケットを送信する。
【０１８９】
図５は、本発明の実施形態の送信生成部１４０の処理の流れの一例を説明するシーケンス図である。Ｔ５００〜Ｔ５５０は、それぞれが各処理の区切りの時間を示している。なお、以下送信生成部１４０がＩＰｓｅｃパケットを送信する場合を例に説明する。
【０１９０】
まず、通信情報管理・制御部１３０が生成エンジン３４５に生成情報を出力し、生成エンジン３４５が送信パケットの生成を開始する（Ｔ５００）。
【０１９１】
生成エンジン３４５は、通信情報管理・制御部１３０から入力された生成情報からＩＰｓｅｃパケットであると判定した後、入力された生成情報を暗号エンジン３４０に出力する。生成エンジン３４５からの入力を受け、暗号エンジン３４０は、入力された生成情報について暗号処理を開始する（Ｔ５１０）。なお、暗号処理と送信パケットの生成処理とは同時に開始されてもよい。
【０１９２】
暗号エンジン３４０は、暗号化されたデータを遅延レジスタ３８０−１に格納する。生成エンジン３４５及び認証エンジン３５０は、データセレクタ３６０から選択されたデータを受け取って、生成処理及び認証処理を開始する（Ｔ５２０）。なお、生成処理、暗号処理、及び認証処理は並行して実行される。
【０１９３】
生成エンジン３４５は、通信情報管理・制御部１３０、送受信一時バッファ部１３５、暗号エンジン３４０、認証エンジン３５０、データセレクタ３７０、及びワーキングレジスタ３２５から入力されたデータを用いて処理を実行する。
【０１９４】
また、暗号エンジン３４０は、通信情報管理・制御部１３０、送受信一時バッファ部１３５、生成エンジン３４５、及びワーキングレジスタ３２５から出力されるデータを用いて処理を実行する。また、認証エンジン３５０は、通信情報管理・制御部１３０、データセレクタ３６０、及びワーキングレジスタ３２５から出力されるデータを用いて処理を実行する。
【０１９５】
生成エンジン３４５、暗号エンジン３４０、及び認証エンジン３５０は、それぞれ、ワーキングレジスタ３２５、遅延レジスタ３８０−１、遅延レジスタ３８０−２及び通信データ変調・復調部１５０へ処理結果を出力する。
【０１９６】
暗号エンジン３４０が送信データの暗号処理を完了し（Ｔ５３０）、認証エンジン３５０が認証処理を完了し（Ｔ５４０）、その後、生成エンジン３４５が送信パケットの生成処理を完了する（Ｔ５５０）。送信パケットの生成の完了と同時に当該送信パケットの送信も完了する（Ｔ５５０）。ここで、生成エンジン３４５の生成処理の完了とパケットの送信完了とは同時でもよいし、生成エンジン３４５の生成処理が完了した後に送信が完了してもよい。
【０１９７】
以上のように、送信生成部１４０が、Ｋ段のＭバイトレジスタ３５５から構成される遅延レジスタ３８０−１と、Ｊ段のＮバイトレジスタ３６５から構成される遅延レジスタ３８０−２とを備えることによって、図５に示すような逐次処理を実現することができる。
【０１９８】
バイト幅Ｎは、パケットを構成するアドレスデータ及びサイズデータを考慮して、生成エンジン３４５がデータを生成するのに最適なバイト幅が設定される。また、段数Ｊは、送信パケットを生成するにあたって、どれだけ生成遅延が起きるかを考慮して設定される。
【０１９９】
バイト幅Ｍは、暗号エンジン３４０が処理する暗号化計算のブロック長となるように設定さる。また、段数Ｋは、Ｍ×Ｋの値が認証エンジンが認証処理に必要とするブロック長以上になり、さらに、認証処理による処理遅延を考慮して、暗号エンジン３４０が暗号化したデータを生成する速度と認証エンジン３５０が認証計算完了する速度とを考慮して決定される。
【０２００】
前述したように、バイト幅Ｎ、Ｍ及び段数Ｊ、Ｋが設定されることによって、送信生成部１４０は、効率よく処理を実行することができる。
【０２０１】
また、前述したように送信生成部１４０が逐次処理を実行することができるため、ネットワーク機器１００は、全パケットがバッファに格納される前に各種処理を実行できる。そのため、ネットワーク機器１００は、全パケットを格納するために必要となる容量のバッファを備える必要がない。
【０２０２】
なお、データセレクタ３６０及びデータセレクタ３７０は、遅延レジスタ３８０−１及び遅延レジスタ３８０−２から必要となるバイト幅のデータを出力することができる。出力されるデータのバイト幅は、Ｍ又はＮより小さくてもよい。
【０２０３】
本実施形態では、ネットワーク機器１００は、送信生成部１４０及び受信解析部１４５を備えていたが、本発明はこれに限定されない。例えば、ソフトウェアが送信生成部１４０の代わりに処理を実行する場合、ネットワーク機器１００は、受信解析部１４５だけを備える構成であってもよい。
【０２０４】
本発明の一実施形態によれば、本発明のアクセラレータ１２５を搭載したネットワーク機器１００は、遅延レジスタ（２９５−１、２９５−２、３８０−１、３８０−２）を備えることによって通信パケットを逐次処理することができるため、暗復号処理及びメッセージ認証処理が必要な、受信フレームの解析処理及び送信フレームの生成処理を実行することができる。
【０２０５】
これによって、ネットワーク機器１００は、ホストメモリ１１０等へのアクセスを抑え、かつ、小容量バッファで、暗復号処理及び認証処理を必要とする通信パケットの送受信処理を高速に実行することができる。
【０２０６】
以上、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０２０７】
以上のように、本発明の一実施形態によれば、受信データを処理する通信装置は、一以上の一時レジスタから構成される遅延レジスタを用いた逐次処理を実行することによって、メモリ等へのデータアクセスの回数を低減しつつ、暗復号処理及びメッセージ認証処理を含む受信データの処理が実行できる。これによって、バッファの容量を抑え、かつ、低周波数動作で、効率よいデータ処理が可能となる。したがって、低コストで、かつ、スループットの低減を防ぐことができる、通信装置及び通信処理方法を提供することができる。
【符号の説明】
【０２０８】
１００  ネットワーク機器
１０５  ホストＣＰＵ
１１０  ホストメモリ
１１５  周辺Ｉ／Ｆ
１２０  ホストバスＩ／Ｆ部
１２５  アクセラレータ
１３０  通信情報管理・制御部
１３５  送受信一時バッファ部
１４０  送信生成部
１４５  受信解析部
１５０  通信データ変調・復調部
１５５  ネットワーク
２００  受信パケットＡ
２０５  受信パケットＢ
２１０  受信パケットＣ
２１５  通信データ変調・復調部Ｉ／Ｆ
２２０  ワーキングレジスタ
２２５  受信解析部本体
２３０  通信情報管理・制御部Ｉ／Ｆ
２３５  Ｎバイトレジスタ
２４０  データセレクタ
２４５  マイクロプログラム解釈器Ａ
２５０  受信解析部エンジン
２５５  解析エンジンＡ
２６０  認証エンジン
２６５  復号エンジン
２７０  Ｍバイトレジスタ
２７５  データセレクタ
２８０  解析エンジンＢ
２８５  マイクロプログラム解釈器Ｂ
２９０  送受信一時バッファ部Ｉ／Ｆ
２９５  遅延レジスタ
３００  送信パケットＡ
３０５  送信パケットＢ
３１０  送信パケットＣ
３１５  通信情報管理・制御部Ｉ／Ｆ
３２０  通信データ変調・復調部Ｉ／Ｆ
３２５  ワーキングレジスタ
３３０  マイクロプログラム解釈器
３３５  送信生成部エンジン
３４０  暗号エンジン
３４５  生成エンジン
３５０  認証エンジン
３５５  Ｍバイトレジスタ
３６０  データセレクタ
３６５  Ｎバイトレジスタ
３７０  データセレクタ
３７５  送受信一時バッファ部Ｉ／Ｆ
３８０  遅延レジスタ
３８５  送信生成部本体
６００  Ｌ２ヘッダ
６０５  外側ＩＰヘッダ
６１０  ＥＳＰ（Ｅｎｃａｐｓｕｌａｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｐａｙｌｏａｄ）
６１５  ＳＰＩ（Ｓｅｃｕｒｉｔｙ  Ｐａｒａｍｅｔｅｒ  Ｉｎｄｅｘ）(1)
６２０  シーケンス番号
６２５  ＩＶ
６３０  ＩＰパケット
６３５  パディング
６４０  トレーラ
６４５  パディング長
６５０  ヘッダ
６５５  ＩＣＶ
６６０  暗号化パケット
【図１】
2010268293.tif 000003
【図２】
2010268293.tif 000004
【図３】
2010268293.tif 000005
【図４】
2010268293.tif 000006
【図５】
2010268293.tif 000007
【図６】
2010268293.tif 000008