説明

IPsec回路及びIPsec処理方法

【課題】安価に高速なIPsecパケットの送受信処理を行うことができる回路を提供する。
【解決手段】前置処理部641は、受信パケットがIPsecパケットであると判断した場合に、カット型のFIFOバッファであるバッファ642にパケットデータを出力する。認証処理部643は、バッファ642からパケットデータの入力を受けると、ICVにより認証を行い、ストア型のFIFOバッファであるバッファ644へパケットデータを出力する。復号処理部646は、バッファ644から出力されたパケットデータ内の暗号化データを復号し、復号したデータを書き戻してパケットデータをストア型のFIFOバッファであるバッファ647へ出力する。後置処理部649は、バッファ647が出力したパケットデータからデカプセル化したIPパケットのデータを生成して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IPsecパケットの送受信処理を行うIPsec回路及びIPsec処理方法に関する。
【背景技術】
【0002】
近年、IP(Internet Protocol)通信を安全に行うために、IPパケットの認証・暗号化を行うIPsec(Security Architecture for Internet Protocol)が使用されている。IPsecの信号を送受信するための従来のIPsec回路は、CPU(central processing unit)、外部インタフェース、メモリ、暗号・復号、署名・認証の各ブロックから生成され、各ブロック間は、バスを介して接続されている(例えば、非特許文献1参照)。この従来のIPsec回路において、外部インタフェースから入力されたパケットデータは、バスを介して各ブロック間で複数回転送されてIPパケットのデカプセル化やカプセル化が行われ、外部インタフェースから出力される。
【非特許文献1】富士通株式会社、“ネットワークに接続されたホームエレクトロニクス製品のためのセキュリティ機能を備えたシングル−チップシステムLSI(Single-Chip System LSI Equipped with Security Function for Network-Connected Home Electronics Appliances)”、[online]、[平成17年8月12日]、インターネット<URL:http://edevice.fujitsu.com/fj/MARCOM/find/22-3e/pdf/3.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0003】
上述した従来のIPsec回路では、IPsec処理を高速に行うためには、暗号・復号や署名・認証のワイヤードロジックで組まれたブロックの高速化のみならず、各ブロック間を接続するうバスの広帯域化が必要となり、かつ、各ブロック間のバス使用を調停するCPUの高性能化が必要となる。このため、高速のIPsec回路は、極めて高価になるという問題があった。
【0004】
本発明は、上記問題を解決するためになされたもので、その目的は、安価に高速なIPsecパケットの送受信処理を行うことができるIPsec回路及びIPsec処理方法を提供することにある。
【課題を解決するための手段】
【0005】
上記問題を解決するために、本発明は、受信パケットのパケットデータの入力を受け、受信パケットがIPsecパケットであるか否かを判断する前置処理部と、前記前置処理部によりIPsecパケットであると判断され、出力された前記パケットデータを蓄積する第1のバッファと、前記第1のバッファからパケットデータの入力を受け、前記IPsecパケットが認証処理対象である場合に、IPsecパケット内のICVにより認証を行い、パケットデータを出力する認証処理部と、前記認証処理部により出力されたパケットデータを蓄積する第2のバッファと、前記第2のバッファからパケットデータの入力を受け、前記IPsecパケットにIPデータが暗号化されてカプセル化されている場合に、該パケットデータ内の暗号化データを復号してIPパケットを取得し、この復号したIPパケットが設定されたパケットデータを出力する復号処理部と、前記復号処理部により出力されたパケットデータを蓄積する第3のバッファと、前記第3のバッファからパケットデータの入力を受け、該パケットデータを基にデカプセル化したIPパケットのデータを生成して出力する後置処理部とを備え、前記第1のバッファ、前記第2のバッファ、及び、前記第3のバッファはファースト・イン・ファースト・アウトのバッファであり、前記第2のバッファ及び前記第3のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、ことを特徴とするIPsec回路である。
【0006】
また、本発明は、上述するIPsec回路であって、中間鍵を保持するメモリと、CPUから出力された該認証鍵を基に中間鍵を生成して前記メモリに書き込む認証用中間鍵生成部とをさらに備え、前記認証処理部は、前記パケットデータから抽出したデータと、前記メモリから読み出した中間鍵とを用いてICVを算出するICV算出部を備えており、前記ICV算出部が算出したICVと、前記パケットデータ内のICVとを比較して認証を行う、ことを特徴とする。
【0007】
また、本発明は、送信パケットのパケットデータと、該パケットデータがIPsec処理対象であることを示すデータとの入力を受ける前置処理部と、前記前置処理部がIPsec処理対象であることを示すデータの入力を受けた場合に出力した前記パケットデータを蓄積する第4のバッファと、前記第4のバッファからパケットデータの入力を受け、トレーラを生成して前記パケットデータに付加するとともに、IPパケットの暗号化を行う場合に、生成したトレーラと受信したパケットデータとを暗号化し、暗号化したデータが書き込まれた前記パケットデータを出力する暗号処理部と、前記暗号処理部から出力されたパケットデータを蓄積する第5のバッファと、前記第5のバッファからパケットデータの入力を受け、IPsecパケットが認証対象である場合にICVを生成し、生成したICVを前記パケットデータに付加して出力する認証データ生成処理部と、前記ICV生成処理部から出力されたパケットデータを蓄積する第6のバッファと、前記第6のバッファからパケットデータの入力を受け、前記パケットデータを基にIPsecパケットを生成して出力する後置処理部とを備え、前記第4のバッファ、前記第5のバッファ、及び、前記第6のバッファはファースト・イン・ファースト・アウトのバッファであり、前記第4のバッファ及び前記第5のバッファは、パケットデータの入力途中から該パケットデータの出力が可能であるカット型のバッファであり、前記第6のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、ことを特徴とするIPsec回路である。
【0008】
また、本発明は、上述するIPsec回路であって、中間鍵を保持するメモリと、CPUから出力された該認証鍵を基に中間鍵を生成して前記メモリに書き込む認証用中間鍵生成部とをさらに備え、前記ICV生成処理部は、前記パケットデータから抽出したデータと、前記メモリから読み出した中間鍵とを用いてICVを算出するICV算出部を備える、ことを特徴とする。
【0009】
また、本発明は、上述するIPsec回路であって、前記中間鍵は、入力中間鍵及び出力中間鍵からなり、前記ICV算出部は、前記パケットデータから抽出したデータと、入力中間鍵とを用いてハッシュ値を算出する主ハッシュ演算部と、主ハッシュ演算部が算出したハッシュ値と、出力中間鍵とを用いてハッシュ値を算出し、算出したハッシュ値からICVを生成する副ハッシュ演算部とを備える、ことを特徴とする。
【0010】
また、本発明は、上述するIPsec回路であって、前記主ハッシュ演算部及び前記副ハッシュ演算部は、1クロックで2ステップのハッシュ演算を行うハッシュ演算部を備えることを特徴とする。
【0011】
また、本発明は、IPsec回路に用いられるIPsec処理方法であって、前置処理部が、受信パケットのパケットデータの入力を受け、受信パケットがIPsecパケットであるか否かを判断し、第1のバッファが、前記前置処理部によりIPsecパケットであると判断され、出力された前記パケットデータを蓄積し、認証処理部が、前記第1のバッファからパケットデータの入力を受け、前記IPsecパケットが認証処理対象である場合に、IPsecパケット内のICVにより認証を行ってパケットデータを出力し、第2のバッファが、前記認証処理部により出力されたパケットデータを蓄積し、復号処理部が、前記第2のバッファからパケットデータの入力を受け、前記IPsecパケットにIPデータが暗号化されてカプセル化されている場合に、該パケットデータ内の暗号化データを復号してIPパケットを取得し、この復号したIPパケットが設定されたパケットデータを出力し、第3のバッファが、前記復号処理部により出力されたパケットデータを蓄積し、後置処理部が、前記第3のバッファからパケットデータの入力を受け、該パケットデータを基にデカプセル化したIPパケットのデータを生成して出力することを特徴とし、前記第1のバッファ、前記第2のバッファ、及び、前記第3のバッファはファースト・イン・ファースト・アウトのバッファであり、前記第2のバッファ及び前記第3のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、ことを特徴とするIPsec処理方法である。
【0012】
また、本発明は、IPsec回路に用いられるIPsec処理方法であって、前置処理部が、送信パケットのパケットデータと、該パケットデータがIPsec処理対象であることを示すデータとの入力を受け、第4のバッファが、前記前置処理部がIPsec処理対象であることを示すデータの入力を受けた場合に出力した前記パケットデータを蓄積し、暗号処理部が、前記第4のバッファからパケットデータの入力を受け、トレーラを生成して前記パケットデータに付加するとともに、IPパケットの暗号化を行う場合に、生成したトレーラと受信したパケットデータとを暗号化し、暗号化したデータが書き込まれた前記パケットデータを出力し、第5のバッファが、前記暗号処理部から出力されたパケットデータを蓄積し、ICV生成処理部が、前記第5のバッファからパケットデータの入力を受け、IPsecパケットが認証対象である場合にICVを生成し、生成したICVを前記パケットデータに付加して出力し、第6のバッファが、前記ICV生成処理部から出力されたパケットデータを蓄積し、後置処理部が、前記第6のバッファからパケットデータの入力を受け、前記パケットデータを基にIPsecパケットを生成して出力することを特徴とし、前記第4のバッファ、前記第5のバッファ、及び、前記第6のバッファはファースト・イン・ファースト・アウトのバッファであり、前記第4のバッファ及び前記第5のバッファは、パケットデータの入力途中から該パケットデータの出力が可能であるカット型のバッファであり、前記第6のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、ことを特徴とするIPsec処理方法である。
【発明の効果】
【0013】
この発明によれば、ワイヤードロジックにより構成され、安価で、かつ、高速のIPsec処理を行うIPsec回路を実現することが可能となる。
【発明を実施するための最良の形態】
【0014】
以下、本発明の実施形態を図面を参照して説明する。
【0015】
まず最初にIPsec(Security Architecture for Internet Protocol)について説明する。図8は、IPsecパケットの構成を説明するための図である。IPsecには、トンネルモードとトランスポートモードがあるが、ここでは、トンネルモードについてのみ説明する。
なお、本明細書においては、OSI(Open Systems Interconnection)参照モデルの第2層にあたるデータリンク層において送受信されるデータをフレームと記載し、第3層において送受信されるデータ、すなわちフレームからMAC(Media Access Control)ヘッダやVLAN(Virtual Local Area Network)ヘッダを除いたものをパケットと記載する。例えば、IPパケットは、IPヘッダ及びIPデータからなる。
【0016】
IPsecは、IPにESP(Encapsulating Security Payload)などのプロトコルを追加して構成される。送受信データを暗号化する場合、トンネルモードのIPsecでは、IPパケット710を暗号化して暗号化パケット720を生成し、トレーラ730を付加する。さらに、新たなIPヘッダ740及びIPsecヘッダ750を付加して、暗号化パケット720及びトレーラ730がカプセル化されたIPsecパケットを生成する。ここでは、IPsecパケットに設定される新たなIPヘッダ740を外側IPヘッダとよぶ。ESPを用いる場合、IPsecヘッダ750にはESPヘッダが用いられる。ESPヘッダは、SPI(セキュリティパラメータインデックス)751と、シーケンス番号752からなる。SPI751は、IPsecにおける論理的なコネクションであるSA(セキュリティアソシエーション)を管理するSAD(セキュリティアソシエーションデータベース)の検索に用いられる値を示す。また、シーケンス番号752は、パケットの順番を示す。
【0017】
暗号化に用いられるアルゴリズムには、NULL暗号アルゴリズム(暗号化機能を使用しない)、CBC−AES(Cipher Block Chaining - Advanced Encryption Standard)などがある。CBC−AESを使用する場合、次の暗号化に用いるための情報であるIV(初期ベクトル)760がIPsecヘッダ(ESPヘッダ)750と暗号化パケット720との間に設定される。また、暗号化パケット720を生成する際は、IPパケット710にパディング721を付加して暗号化する。パディング721の長さは、生成された暗号化パケット720とトレーラ730を合わせた長さが、所定のバイト数の整数倍となるように決められる。トレーラ730は、パディング長731と、次ヘッダ732を含むデータであり、NULL暗号アルゴリズム以外では暗号化される。パディング長731とは、暗号化パケット720を生成する際にIPパケット710に行ったパディング721の長さを示す。また、次ヘッダ732とは、パケット内でIPsecヘッダ(ESPヘッダ)750の次に来るヘッダのプロトコルを示し、同図においては、トンネルモードであるのでIPを示す値が設定される。認証を行う場合は、認証データであるICV(Integrity Check Value)770がトレーラ730の後ろに付加される。
【0018】
図1は、本発明の一実施の形態によるIPsec回路としてのIPsec部210を備えた通信装置100の構成を示す図である。
本実施の形態で送受信するIPsecは、IPv6によるトンネルモードのESPを使用する。
【0019】
同図において、通信装置100は、GMII(Gigabit Medium Independent Interface)やMII(Medium Independent Interface)の規格のインタフェースを介してWANに接続する物理I/F(Interface)500及びLANに接続する物理I/F501と接続し、LAN側から送信されるパケットをWAN側へ転送し、また、WAN側から送信されるパケットをLAN側へ転送する。本実施形態の通信装置100では、OSIの第3層にあたるネットワーク層では、IPv4あるいはIPv6のパケットの送受信を行い、OSIの第2層にあたるデータリンク層では、イーサネット(登録商標)のフレームの送受信を行う。
【0020】
通信装置100は、転送処理の高速化を図るため半導体素子で構成される通信処理回路200と、CPU400と、DDR−SDRAM(Double Data Rate-Synchronous Dynamic Random Access Memory)300とを備えている。
【0021】
DDR−SDRAM300は、半導体記憶素子であり、一定容量値、例えば2キロバイトごとに領域分割され、フレーム長が長いフレームであっても、短いフレームであっても分割した1つの領域を割り当てて記憶する。なお、分割されたそれぞれの領域は、後述するハンドル管理部255が付与するハンドル番号に対応付けられる。
【0022】
CPU400は、主に通信処理回路200で転送処理を行うことができないフレームを通信処理回路200から受信し、受信したフレームに対する転送先を検出する等の処理を予め内部で動作するソフトウェアに基づいて行う。CPU400が備えるドライバ400aは、通信処理回路200がCPU400に入力するパケットのCPU400の内部のメモリへの書き込み及び読み出しを行い、また、通信処理回路200の各機能部の動作を制御する情報の設定を各機能部に対して行う。
【0023】
通信処理回路200において、WAN用MAC(Media Access Control) I/F205は、WANに接続される物理I/F500へ接続する接続インタフェースである。LAN用MAC I/F275は、LANに接続される物理I/F501へ接続する接続インタフェースである。WAN用MAC I/F205及び、LAN用MAC I/F275は、上記したGMII及びMIIに準拠した規格を有し、送受信するイーサネット(登録商標)のフレーム(以下、フレームと記載)に対してIEEE802.3準拠のMAC処理を行い、また、物理I/F500あるいは501との間で送受信されるフレームに対してCRC(Cyclic Redundancy Check)処理などを行う。
【0024】
IPsec部210(IPsec回路)は、WAN用MAC I/F205、書き込みスケジューラ部215、及び、フレーム生成部260に接続される。IPsec部210は、RFC(Request for Comments)2406準拠のIPsec処理に基づき、WANに送信するパケットに対して暗号処理を行い、また、WANから受信するパケットに対して復号処理を行う。ここで、RFC2406準拠のIPsec処理とは、RFC2403/2404準拠のHMAC−MD5(Keyed Hashing for Message Authentication Code-Message Digest 5)やHMAC−SHA−1(HMAC-Secure Hash Algorithm-1)の認証機能や、RFC2410/2451のNULL,CBC−AES(Cipher Block Chaining - Advanced Encryption Standard)の暗号機能などによるIPv4及びIPv6パケットに対する暗号及び復号処理である。
【0025】
書き込みスケジューラ部215は、IPsec部210と、LAN用MAC I/F275と、CPU400に接続するCPU I/F265とに接続され、ラウンドロビン方式により、IPsec部210と、LAN用MAC I/F275と、CPU I/F265の順に、これら3つの機能部によって情報が付加されたフレーム(以下、前記3つの機能部によって情報が付加されたフレームをフレーム情報と記載)を出力する。
【0026】
CPU I/F265は、通信処理回路200の各機能部と、書き込みスケジューラ部215と、メモリコントローラ部220とCPU400とに接続され、CPU400から出力されるフレームを書き込みスケジューラ部215に入力する。CPU400が通信処理回路200の各機能部に対して設定を行う際、CPU I/F265は、設定情報を該当する機能部に入力する。また、メモリコントローラ部220から出力されるフレーム情報をCPU400に入力する。
【0027】
DDR−SDRAM I/F225は、メモリコントローラ部220とDDR−SDRAM300に接続され、メモリコントローラ部220とDDR−SDRAM300の間でフレームの入出力を行う。
【0028】
メモリコントローラ部220は、書き込みスケジューラ部215と、フレーム生成部260と、DDR−SDRAM I/F225と、パーサ部230と、ハンドル管理部255と、QoS部250とに接続されている。メモリコントローラ部220は、書き込みスケジューラ部215から入力されるフレーム情報に対し、ハンドル管理部255から付与された空きハンドルのハンドル番号に対応するDDR−SDRAM300の分割された領域に、DDR−SDRAM I/F225を介してDDR−SDRAM300に書き込む。また、メモリコントローラ部220は、書き込みスケジューラ部215から入力されるフレーム情報に対し、ハンドル管理部255から付与されたハンドル番号を付加してパーサ部230に出力する。また、メモリコントローラ部220は、後述するQoS部250から出力されるジョブ情報に含まれるハンドル番号に対応するDDR−SDRAM300の領域からDDR−SDRAM I/F225を介してフレーム情報を読み出し、読み出したフレーム情報に対してジョブ情報に基づく情報を付加し、フレーム生成部260に出力、あるいはCPU I/F265を介してCPU400に出力する。
【0029】
パーサ部230は、メモリコントローラ部220によりハンドル番号が付加されたフレーム情報に対して解析を行い、フレーム情報から転送処理に係る情報であるヘッダ情報などを抽出し、解析結果情報としてメモリコントローラ部220が付加したハンドル番号等の情報とともに出力する。
【0030】
検索部235は、パーサ部230から入力される解析結果情報に基づいて、予めCPU400により検索部235の内部に設定される転送条件情報を参照し、転送条件情報に基づいて、当該フレームを破棄するか、通過させるか、CPU400へ転送、すなわちCPU400へ入力するかを示すフィルタ検索結果情報、及び品質クラスなどの情報を示す分類検索結果などを検出し、検出したフィルタ検索結果情報及び分類検索結果と、パーサ部230から入力される解析結果情報の一部の情報、例えば、フレーム長等とをCPU転送判定部240に出力する。ここで、転送条件情報に含まれる条件としては、MACアドレス、IPアドレス、ポート番号などがあり、解析結果情報に含まれるフレームのヘッダ情報がこれらの転送条件情報に一致するか否かの検索が行われる。
【0031】
検索部235は、パーサ部230にエラーを検出したフレームと、CPU I/F265を介してCPU400から入力されたフレームに対しては、検索を行わない。検索は、受信論理I/F検索、NAT(Network Address Translation)/NAPT(Network Address Port Translation)検索、経路検索、フィルタ検索、分類検索である。各検索では、解析結果情報に含まれる各種情報の全てまたは一部(検索によって対象となる情報が異なる)と、CPU400から設定された判定条件及び前記判定条件毎の判定マスク(判定条件の無効や一部ビットの無効などの指定であり、マスクがない判定条件もある)により構成される規則(検索毎に複数個の規則を設定できる)と、適合判定を行う。前述の適合判定では、前記判定マスクによって無効とならなかった各判定条件について、入力されたフレームからパーサ部230が得た解析結果情報との一致・不一致を得る比較演算を実施し、前記判定条件の全てについて一致を得た場合にのみ、前記規則に適合すると判定される。その後、各検索は、適合した規則(複数個の適合した規則がみつかった場合は、規則毎に設定された優先度を比較し、より優先度の高い規則)に付加された検索結果を出力する。
【0032】
受信論理I/F検索の規則を構成する判定条件は、受信物理I/F、送信元MACアドレス、VLAN有無、VLAN有のときのVLAN ID、PPPoE有無、PPPoE有のときのPPPoEセッションID、受信IPsec有無、受信IPsec有のときの受信SA番号であり、検索結果は、受信論理I/F番号、CPU転送の有無、NAT/NAPTの有無である。ここで、受信論理I/F番号とは、パケットを受信した論理I/Fを識別する番号であり、VLANやIPsec VPNによって1個の物理I/Fに複数個の論理I/Fを設定できる。また、前記でNAT/NAPT有の結果を得たパケットのみが、後述のNAT/NAPT検索(グローバル→ローカル)の対象となる。
【0033】
NAT/NAPT検索(グローバル→ローカル)の規則を構成する検索条件は、宛先IPアドレスと宛先TCP/UDPポート番号(NAPTのみ)であり、検索結果は、付け替え後のIPアドレスと宛先TCP/UDPポート番号(NAPTのみ)である。ここで、NAT/NAPT検索(グローバル→ローカル)の対象となったパケットに対する、経路検索、フィルタ検索、分類検索の各々は、解析結果情報に含まれる宛先IPアドレスと宛先TCP/UDPポートではなく、NAT/NAPT検索結果である付け替え後の宛先IPアドレスと宛先TCP/UDPポートを検索対象として、前述の検索の規則との適合判定を行う(グローバル→ローカルNAT/NAPTを行うパケットについては、ローカルアドレスやポート番号に基づく検索が行われる)。また、NAT/NAPT検索(グローバル→ローカル)の対象となったパケットで、適合する規則が見つからなかった場合は、CPU転送要因にNAT/NAPT(グローバル→ローカル)検索ミスヒットの情報が付加される。
【0034】
経路検索の規則を構成する判定条件は、受信論理I/F番号、送信元IPアドレス、宛先IPアドレスであり、検索結果は、送信論理I/F番号、宛先MACアドレス、MTU(Maximum Transmission Unit)長、NAT/NAPT有無、MACアドレス未解決有無、自宛有無である。ここで、送信論理I/F番号とは、パケットを送信する論理I/Fを識別する番号(受信論理I/Fと送信論理I/Fが同一である場合は番号も共通)である。また、前記でNAT/NAPT有の結果を得たパケットのみが。後述のNAT/NAPT検索(ローカル→グローバル)の対象となる。また、前記MTU長とパケット長が比較され、パケット長のほうが長い場合に、CPU転送要因にMTU長超過の情報が付加される。また、MACアドレス未解決有のパケットには、CPU転送要因にMACアドレス未解決の情報が付加される。また、自宛有のパケットには、CPU転送要因に自宛パケットの情報が付加される。
【0035】
NAT/NAPT検索(ローカル→グローバル)の規則を構成する検索条件は、送信元IPアドレスと送信元TCP/UDPポート番号(NAPTのみ)であり、検索結果は、付け替え後の送信元IPアドレスと送信元TCP/UDPポート番号(NAPTのみ)である。ここで、NAT/NAPT検索(ローカル→グローバル)の対象となったパケットで、適合する規則が見つからなかった場合は、CPU転送要因にNAT/NAPT(ローカル→グローバル)検索ミスヒットの情報が付加される。
【0036】
フィルタ検索及び分類検索の規則を構成する判定条件は、受信論理I/F番号、送信論理I/F番号、VLAN優先度、IPv4/IPv6、送信元IPアドレス、宛先IPアドレス、TOS/トラフィック・クラス(IPv4の場合はTOSを、IPv6の場合はトラフィック・クラスを使用する)、オプション・拡張ヘッダ有無、フラグメント状態(フラグメント無、先頭/最後尾/中間)、TOS/トラフィック・クラス、上位プロトコル、送信元ポート番号、宛先ポート番号、TCPフラグ、ICMPタイプ・コードを条件として検索する。フィルタ検索結果は、破棄/通過/CPU転送の指定であり、分類検索結果は、品質クラスに関する各種情報(送信時のVLAN優先度、リマークの有無、リマーク時のTOS/トラフィック・クラス、キューの指定など)である。
【0037】
CPU転送判定部240は、検索部235においてCPU400へ転送する要因があるとして検出されたフレームに対して、CPU転送要因を示す情報、すなわち後述するCPU転送要因フラグを付与し、CPU400へ転送するか、あるいは破棄するかを判定し、判定した判定結果情報を、検索部235から出力される情報とともに出力する。
【0038】
キュー選択部245は、CPU転送判定部240から入力される情報に含まれる品質クラス情報や送信先の論理I/Fの情報に基づいてQoS部250がキューを選択する際に参照するキュー番号を検出し、CPU転送判定部240から出力される情報と、検出したキュー番号とを出力する。
【0039】
QoS部250は、キュー選択部245から出力される情報に基づいてジョブ情報を生成し、同じくキュー選択部245から出力されるキュー番号に基づいて、生成したジョブ情報を該当するキューに記録する。また、QoS部250は、キューに記録されているジョブ情報を予め定められているキューごとの優先度に基づいて読み出し、メモリコントローラ部220へ出力する。また、メモリコントローラ部220へ出力する際に、ハンドル番号を返却するためハンドル管理部255へ出力する。ここで、ジョブ情報とは、WAN用MAC I/F205やLAN用MAC I/F275から送信されるフレームに対しては、受信フレーム長、送信フレーム長、送信論理I/F、宛先MACアドレス、NAT/NAPT指定、DSCPやVLAN priority等の情報に対応する品質クラス、ハンドル番号等の情報から構成されている。また、CPU400に転送されるフレームに対しては、ジョブ情報は、受信フレーム長、送信フレーム長、受信論理I/F、CPU転送理由、品質クラス、ハンドル番号等の情報から構成される。
【0040】
ハンドル管理部255は、QoS(Quality of Service)部250と、メモリコントローラ部220とに接続され、DDR−SDRAM300の分割された領域のそれぞれに対応するハンドル番号に基づいてDDR−SDRAM300の分割された領域の空塞管理を行う。ここで、空塞管理とは、メモリコントローラ部220へは空きハンドル番号を出力して使用中のハンドル番号として管理し、QoS部250から入力されるフレーム破棄により返却対象となるハンドル番号や、送信により返却対象となるハンドル番号については領域が空きとなるため、空きのハンドル番号として管理する。また、ハンドル管理部255は、マルチキャストフレームの場合には、マルチキャストの回数分送信が終了するまで、フレームを削除できないため、QoS部250が、メモリコントローラ部220にジョブ情報を出力した情報をQoS部250からメモリコントローラ部220へ直接接続する接続線から分岐する線により参照して、送信開始時に定められるマルチキャストの回数を管理する。
【0041】
フレーム生成部260は、予めCPU400のドライバ400aから設定される情報に基づいて、メモリコントローラ部220から出力されるフレームに対して送信先の論理インタフェースに応じたVLANタグやPPPoE(Point to Point Protocol over Ethernet(登録商標))ヘッダの挿入を行い、当該挿入を行ったフレームを出力する。また、フレーム生成部260は、宛先MACアドレスの付け替え、NAT(Network Address Translation)/NAPT(Network Address Port Translation)のためのIPアドレス及びポート番号の付け替えを行う。また、フレーム生成部260は、IPsec部210に出力するフレーム対してIPsec SAの情報の付加を行う。また、フレーム生成部260は、DSCP(DiffServ Code Point)のIPパケットのヘッダへの付加、VLAN priorityのフレームのヘッダへの付加を行う。DSCPやVLAN priorityは、優先制御の際に参照される品質クラス情報となる。ここで、品質クラス情報とは、転送されるフレームに含まれる情報の種別を分類する分類情報であり、分類情報によって示される情報の種別が例えば音声の場合には、当該分類種別を有するフレームには遅延が少ない高い品質の通信処理が適用されることになる。
【0042】
なお、CPU転送判定部240において破棄すると判定されたフレームついてはCPU転送判定部240あるいはQoS部250のいずれかにより破棄されることとなる。
【0043】
次に、図1に示す通信処理回路200におけるIPsec処理手順の概要について説明する。
まず、受信パケットの入力時の処理概要について説明する。IPsec部210は、WAN用MAC I/F205からIPsecパケットを含むフレームを受信する。IPsecパケットは、外側IPヘッダ、SPIとシーケンス番号から構成されたESPヘッダ、IV(CBCモードの暗号アルゴリズムの場合のみ)、暗号化された内側IPパケット(NULL暗号化を含む)、暗号化されたトレーラ(パッド、パッド長、内側IPパケットのプロトコル)、及び、ICV(認証ありの場合のみ)から構成される。
【0044】
IPsec部210は、SA(受信)に対応させて、外側IPヘッダの宛先IPアドレスと、ESPヘッダ内のSPIを、SA判定条件として記憶している。IPsec部210は、WAN用MAC I/F205から受信したIPsecパケットから抽出した外側IPヘッダの宛先IPアドレスと、ESPヘッダに含まれるSPIが前述したSA判定条件と一致するSA(受信)を取得する。IPsecパケットを含まないフレームや、IPsecパケットを含むが一致するSA(受信)が見つからなかったフレームについては、IPsec部210は、前記フレームに、受信IPsec無を示す情報を付加して、書き込みスケジューラ部215へ出力する。
【0045】
以下に、SA(受信)が見つかったIPsecパケットに対するIPsec部210の動作を説明する。
IPsec部210は、SA(受信)に対応させて、暗号アルゴリズム、暗号鍵(NULL暗号以外の場合)、認証アルゴリズム、認証鍵(認証ありの場合)、アンチリプレイの有無を、SA処理条件(受信)として記憶している。IPsec部210は、受信したIPsecパケットのSA(受信)に基づいて、SA処理条件(受信)を取得する。
【0046】
IPsec部210は、この取得したSA処理条件(受信)を使用して、認証と復号とデカプセル化の各処理を行い、復号された内側IPパケットを取得する。さらに、復号された内側IPパケットを含むフレームに、受信IPsec有を示す情報とSA(受信)を識別する受信SA番号を付加して、書き込みスケジューラ部215に出力する。なお、SA処理条件(受信)のアンチリプレイが有りの場合は、アンチリプレイの処理が行われる。以下に、認証、復号、デカプセル、アンチリプレイの各処理の動作を説明する。
【0047】
受信したIPsecパケットに対する認証処理では、前記IPsecパケットのESPヘッダ先頭から暗号化されたトレーラ終了までの復号前のデータに対して、所定の認証アルゴリズムと認証鍵を使用して、ICVを計算し、前記IPsecパケット内のICVとの一致を判定する。この判定で一致を得た場合は認証成功であり、不一致の場合は認証失敗となる。なお、認証アルゴリズムとして認証なしが指定されている場合は、前述の認証処理を行わず、認証成功とみなす。前述の認証処理において失敗と判定されたパケットや、受信したIPsecパケットからICVを得られなかった場合(パケット長が短すぎる場合など)は、IPsec部210内で破棄される。
【0048】
受信したIPsecパケットに対する復号処理では、前記IPsecパケット内の暗号化された内側IPパケットから暗号化されたトレーラ終了までの復号前のデータを、所定の暗号アルゴリズム、暗号鍵を使用して復号する。なお、CBCモードでの復号演算の初期値として、前記IPsecパケット内のIVを使用する。暗号アルゴリズムとしてNULL暗号(暗号なし)が指定されている場合は、前述の復号処理を行わない。なお、復号対象のデータ長が、暗号アルゴリズムによって予め決められたブロック長の整数倍となっていない場合は、IPsec部210内で破棄される。
【0049】
受信したIPsecパケットに対するデカプセル処理では、前記IPsecパケットから外側IPヘッダ、IV、トレーラ、ICVを削除し、復号された内側IPパケットを取得する。このとき、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側IPパケットのプロトコルに基づいて、フレームのレイヤ3プロトコルとして、IPv4あるいはIPv6を指定する。すなわち、イーサネット(登録商標)フレームのTypeフィールドを、内側IPパケットのプロトコルに相当する値に書き換える。
【0050】
受信したIPsecパケットに対するアンチリプレイ処理では、認証に成功したIPsecパケットのESPヘッダ内のシーケンス番号と、IPsec部210がSA(受信)別に管理しているシーケンス番号の状態情報により、アンチリプレイの成功・失敗を判定し、前記シーケンス番号の状態情報の更新(アンチリプレイ処理の成功時のみ)を行う。このアンチリプレイ処理では、シーケンス番号の状態情報としてスライディング受信ウィンドウを使用する。前記ウィンドウの右端は、このSAで受信され、認証に成功したパケットについてシーケンス番号の最大値を表す。ウィンドウの左端より小さいシーケンス番号を含むパケットは拒否される。ウィンドウ内に収まるパケットは、ウィンドウ内で受信したパケットのリストに対して既受信としてチェックされる。受信されたパケットがウィンドウに収まり、かつ新しい(既受信としてチェックされていない)場合、あるいは受信されたパケットがウィンドウの右端にある場合、アンチリプレイに成功したと判定する。前記において失敗と判定されたパケットは、IPsec部210内で破棄される。
【0051】
なお、IPsec部210が、書き込みスケジューラ部215へデータを出力した以降の動作は、上述した図1における各部の説明を参照のこと。
【0052】
次に、送信パケットの入力時の処理概要について説明する。
IPsec部210は、フレーム生成部260より、送信IPsecの有無を示す情報と、SA(送信)を識別する送信SA番号とが付加された、WAN用MAC I/F205から送信すべきフレームの入力を受ける。IPsec部210は、送信IPsec無を示す情報が付加されている場合、当該フレームをそのままWAN用MAC I/F205へ出力する。
【0053】
以下に、送信IPsec有の場合の送信フレームに対するIPsec部210の動作を説明する。
IPsec部210は、SA(送信)に対応させて、暗号アルゴリズムと、暗号鍵(NULL暗号以外の場合)、認証アルゴリズム、認証鍵(認証ありの場合)を、SA処理条件(送信)として記憶する。IPsec部210は、SA(送信)に基づいて、SA処理条件(送信)を取得する。
【0054】
また、IPsec部210は、SA(送信)に対応させて、外側IPヘッダの宛先IPドレス、送信元IPアドレス、ホップ・リミット(外側IPヘッダがIPv4の場合はTTL)、及び、トラフィック・クラス(外側IPヘッダがIPv4の場合はTOS)(内側IPパケットのトラフィック・クラスを外側IPヘッダに複製することも可能)と、ESPヘッダのSPIとをカプセル化条件として記憶している。IPsec部210は、SA(送信)に基づいて、カプセル化条件を取得する。
【0055】
さらに、IPsec部210は、SA(送信)に対応させて、送信するIPパケットのESPヘッダ内のシーケンス番号を管理する。すなわち、SA(送信)別に送信したIPパケットの個数を計測し、シーケンス番号とする。IPsec部210は、SA(送信)に基づいて、シーケンス番号を取得する。
【0056】
IPsec部210は、フレーム生成部260より入力されたフレームに含まれるIPパケットに対して、上記の取得したSA処理条件SA(送信)、カプセル化条件、シーケンス番号を使用して、暗号とICV生成とカプセルの各処理を行う。以下に、暗号、ICV生成、カプセルの各処理の動作を説明する。
【0057】
暗号処理では、IPsec部210は、フレーム生成部260より入力されたフレームに含まれるIPパケットを、IPsecパケットの内側IPパケットとするため、所定のトレーラを当該IPパケットの直後に付加する。前記トレーラは、パッド、当該パッドのパッド長、内側IPパケットのプロトコルから構成されるが、前記パッドを付加するパディング処理において、当該IPパケットとトレーラを合計した長さが、これらを暗号化するときの暗号アルゴリズムによって予め決められたブロック長の整数倍となるよう、パッド長を取得する。
【0058】
IPsec部210は、前記内側IPパケット及び前記トレーラを、所定の暗号アルゴリズムと暗号鍵を使用して暗号化する。CBCモードの暗号アルゴリズムを使用する場合は、暗号演算の初期値としてIVが必要となるが、前回暗号化した結果をIVとして利用することが可能である。さらに、前記IVを、前記内側IPパケットの直前に挿入する(CBCモードの暗号アルゴリズムの場合のみ)。なお、暗号アルゴリズムとしてNULL暗号(暗号なし)が指定された場合は、この暗号処理を行わない。
【0059】
ICV生成処理では、IPsec部210は、取得したカプセル化条件のSPIとシーケンス番号に基づいてESPヘッダを生成し、挿入する。この挿入位置は、IV(IVがない場合は内側IPパケット)の直前である。さらに、ESPヘッダ先頭から暗号化されたトレーラ終了までの復号前のデータに対して、所定の認証アルゴリズムと認証鍵を使用してICVを計算し、トレーラの直後に計算したICVを付加する。
【0060】
カプセル処理では、IPsec部210は、取得したカプセル化条件のうち外側IPヘッダに関する条件(宛先IPアドレス、送信元IPアドレス、ホップ・リミット、トラフィック・クラス)と、ESPヘッダ先頭から暗号化されたトレーラ終了までの長さに基づいて、外側IPヘッダを生成し、ESPヘッダ直前に挿入する。さらにフレームのレイヤ3プロトコルとして、外側IPヘッダのプロトコル(IPv4あるいはIPv6)を指定する。すなわち、イーサネット(登録商標)フレームのTypeフィールドを、外側IPパケットのプロトコルに相当する値に書き換える。
【0061】
図2は、IPsec部210の構成を示すブロック図である。
同図において、IPsec部210は、IPsecレジスタ610、認証用中間鍵生成部620、暗号用拡大鍵生成部630、受信IPsec処理部640、及び、送信IPsec処理部650を備える。IPsec部210内の各部は、全てワイヤードロジックにより構成する。このように、複雑な調停が必要となる1個のバスで各部を接続するのではなく、パケット処理手順に従ってブロック間を接続する。従って、高性能CPUが不要となる。
【0062】
IPsecレジスタ610は、CPUバスとのインタフェースを有するレジスタであり、SA判定条件テーブル、受信側SA処理条件テーブル、送信側SA処理条件テーブル、カプセル化条件テーブルを保持する。これらのテーブルは、CPU400によって設定される。
SA判定条件テーブルの各エントリは、受信SA番号と、外側IPヘッダの宛先IPアドレス及びESPヘッダ内のSPIとの対応を示す。受信側SA処理条件テーブルの各エントリは、受信SA番号と、暗号アルゴリズム、暗号鍵(NULL暗号以外の場合)、認証アルゴリズム、認証鍵(認証ありの場合)、アンチリプレイ有無との対応を示す。送信側SA処理条件テーブルの各エントリは、送信SA番号と、暗号アルゴリズム、暗号鍵(NULL暗号以外の場合)、認証アルゴリズム、認証鍵(認証ありの場合)との対応を示す。カプセル化条件テーブルの各エントリは、送信SA番号と、外側IPヘッダの宛先IPアドレス、送信元IPアドレス、ホップ・リミット、トラフィック・クラス、ESPヘッダのSPIとの対応を示す。
【0063】
認証用中間鍵生成部620は、受信側認証用中間鍵テーブルと、送信側認証用中間鍵テーブルとを保持する。
受信側認証用中間鍵テーブルの各エントリは、受信SA番号と、受信IPsec処理部640で使用される認証用中間鍵(認証ありの場合)との対応を示す。認証用中間鍵生成部620は、受信側SA処理条件テーブルの認証アルゴリズムと認証鍵がCPU400によって設定されたことを契機に、認証用中間鍵を生成して受信側認証用中間鍵テーブルへ登録する。
また、送信側認証用中間鍵テーブルの各エントリは、送信SA番号と、送信IPsec処理部650で使用される認証用中間鍵(認証ありの場合)との対応を示す。認証用中間鍵生成部620は、送信側SA処理条件テーブルの認証アルゴリズムと認証鍵がCPU400によって設定されたことを契機に、認証用中間鍵を生成して送信側認証用中間鍵テーブルへ登録する。
【0064】
暗号用拡大鍵生成部630は、受信側暗号用拡大鍵テーブルと、送信側暗号用拡大鍵テーブルとを保持する。
受信側暗号用拡大鍵テーブルの各エントリは、受信SA番号と、受信IPsec処理部640で使用される暗号用拡大鍵(DESやAESなど拡大鍵を使用する暗号の場合)との対応を示す。暗号用拡大鍵生成部630は、受信側SA処理条件テーブルの暗号アルゴリズムと暗号鍵がCPU400によって設定されたことを契機に、暗号用拡大鍵を生成して受信側暗号用拡大鍵テーブルへ登録する。
また、送信側暗号用拡大鍵テーブルの各エントリは、送信SA番号と、送信IPsec処理部650で使用される暗号用拡大鍵(DESやAESなど拡大鍵を使用する暗号の場合)との対応を示す。暗号用拡大鍵生成部630は、送信側SA処理条件テーブルの暗号アルゴリズムと暗号鍵がCPU400によって設定されたことを契機に、暗号用拡大鍵を生成して受信側暗号用拡大鍵テーブルへ登録する。
【0065】
受信IPsec処理部640は、前置処理部641、バッファ642、認証処理部643、バッファ644、不正パケット廃棄部645、復号処理部646、バッファ647、不正パケット廃棄部648、及び、後置処理部649を有している。前置処理部641、バッファ642、認証処理部643、バッファ644、不正パケット廃棄部645、復号処理部646、バッファ647、不正パケット廃棄部648、後置処理部649は順に直列に接続され、また、前置処理部641と後置処理部649とが接続される。
【0066】
バッファ642は、カット型のFIFO(First-In First-Out)バッファであり、バッファ644、及び、バッファ647は、ストア型のFIFOバッファである。FIFOとは先に格納されたデータから順に出力することをいう。また、カット型のバッファとは、1個のパケットのデータの入力が完了するまで待たずに、後段ブロックにデータの出力が可能なバッファである。これに対し、ストア型のバッファとは、1個のパケットのデータ(最大パケット長)が格納可能であり、1個のパケットのデータの入力が完了するまで出力を保留し、データの入力が完了した時点で、後段ブロックに出力可能なバッファである。なお、バッファ642をストア型バッファとしてもよい。不正パケット廃棄部645は、バッファ644にバッファリング(格納)された不正パケットを破棄し、不正パケット廃棄部648は、バッファ647にバッファリングされた不正パケットを破棄する。
【0067】
前置処理部641は、WAN用MAC I/F205から入力されたフレームに含まれるパケットのヘッダを参照し、IPsec対象パケットであるか否かを判定する。認証処理部643は、認証用中間鍵生成部620が生成した認証データ検証用の認証用中間鍵を用いて、IPsecパケットの認証処理を行う。復号処理部646は、暗号用拡大鍵生成部630が生成した復号用の暗号用拡大鍵を用いてIPsecパケット内の暗号化データを復号する。後置処理部649は、書き込みスケジューラ部215へデカプセル化したIPパケットを出力する。
【0068】
上述するように、ストア型バッファであるバッファ644、及び、バッファ647を有することにより、認証処理部643における認証処理、復号処理部646における復号処理において、不正パケットと判定される時点(パケットの最後尾を処理した後)まで、後段のブロックにパケットが渡されない。これにより、不正パケットについては、後段の処理を行うことなく破棄することが可能となる。
【0069】
送信IPsec処理部650は、前置処理部651、バッファ652、暗号処理部653、バッファ654、ICV生成処理部655、バッファ656、後置処理部657、及び、バッファ658を有する。前置処理部651、バッファ652、暗号処理部653、バッファ654、ICV生成処理部655、バッファ656、及び、後置処理部657は、順に直列に接続され、前置処理部651と後置処理部657とはバッファ658を介して接続される。バッファ652、及び、バッファ654は、カット型のFIFOバッファであり、バッファ656、及び、バッファ658は、ストア型のFIFOバッファである。
【0070】
前置処理部651は、フレーム生成部260から入力されたフレームに付加された送信IPsec有無の情報を用いてIPsec対象パケットであるか否かを判定し、IPsec対象パケットであればバッファ652に、IPsec非対象パケットであればバッファ658にジョブをバッファリングする。暗号処理部653は、暗号用拡大鍵生成部630が生成した暗号用の暗号用拡大鍵を用いてIPパケットやトレーラの暗号処理を行う。ICV生成処理部655は、認証用中間鍵生成部620が生成した認証データ生成用の認証用中間鍵を用いて、ICVを生成する。後置処理部657は、バッファ656及びバッファ658にバッファリングされたジョブを優先度等に応じて読み出し、WAN用MAC I/F205へフレームデータを出力する。
【0071】
上述するように、送信IPsec部650では、暗号処理前後にカット型バッファを採用していることを特徴としている。このカット型バッファの容量は、最大長の1フレーム全てを蓄積するだけの容量が必要なストア型バッファよりも小さくすることが可能であり、回路規模の削減が可能となる。また、カット型バッファで蓄積される時間は、1フレームのバッファ入力を待たずにバッファから出力が可能であるため、バッファでの遅延を小さくすることが可能である。このため、非対象パケットを長い間待たせる必要がない。つまり、スケジューラ直前(後置処理部657)のストア型バッファ(バッファ656及びバッファ658)の容量を小さくすることが可能であり、回路規模の削減が可能となる。
【0072】
次に、IPsec部210の詳細な動作について説明する。
IPsecレジスタ610は、SA判定条件テーブル、受信側SA処理条件テーブル、送信側SA処理条件テーブル、カプセル化条件テーブルを保持する。CPU400は、CPU I/F265を介して、各テーブルの読み書きを行う。
【0073】
認証用中間鍵生成部620は、受信側認証用中間鍵テーブル及び送信側認証用中間鍵テーブルをを予め保持しており、暗号用拡大鍵生成部630は、受信側暗号用拡大鍵テーブルと、送信側暗号用拡大鍵テーブルとを予め保持している。
受信側SA処理条件テーブルの暗号アルゴリズムと暗号鍵がCPU400によって設定された場合、認証用中間鍵生成部620は、認証用中間鍵を生成して受信側認証用中間鍵テーブルへ登録し、暗号用拡大鍵生成部630は、暗号用拡大鍵を生成して受信側暗号用拡大鍵テーブルへ登録する。
同様に、送信側SA処理条件テーブルの認証アルゴリズムと認証鍵がCPU400によって設定された場合、認証用中間鍵生成部620は、認証用中間鍵を生成して送信側認証用中間鍵テーブルへ登録し、暗号用拡大鍵生成部630は、暗号用拡大鍵を生成して受信側暗号用拡大鍵テーブルへ登録する。
【0074】
図3は、受信IPsec処理部640の構成を示す図である。
まず、前置処理部641の動作を説明する。前置処理部641は、パーサ・検索部1010、バッファ1020、及び、IPsec対象判定部1030からなる。
パーサ・検索部1010は、WAN用MAC I/F205から受信したフレームが、受信IPsec処理対象であるか否かの判定(受信IPsec有無の判定)を行い、受信IPsecありのIPsecパケットについては、受信SA番号を取得する。すなわち、パーサ・検索部1010は、受信したフレームについて、IPパケット有無、IPパケット有の場合のIPヘッダの宛先IPアドレスとESPヘッダの有無、ESPヘッダ有の場合のESPヘッダ内のSPIを各々抽出する。その後、パーサ・検索部1010は、IPパケット無もしくはESPヘッダ無の場合は、受信IPsec無と判定する。さらに、SA判定条件テーブルのエントリ毎に、前記エントリに記憶されている宛先IPアドレスとSPIが、抽出した宛先IPアドレスとSPIに一致するか否かを判定する。一致したエントリが見つかった場合は、前記エントリから受信SA番号を取得する。パーサ・検索部1010は、SA判定条件テーブル内のいずれのエントリとも一致しない場合は、受信IPsec無と判定する。
【0075】
バッファ1020は、パーサ・検索部1010におけるパーサ・検索処理後のフレームデータと、受信IPsec有無、受信SA番号、IPヘッダ位置等の位置情報をに一時蓄積する。このバッファ1020はストア型である。IPsec対象判定部1030は、前記バッファ1020から出力するフレームについて、IPsec対象であるか否かを判定する。IPsec対象判定部1030は、受信IPsec無の場合、IPsec非対象パケットとして、フレームデータを後置処理部649に入力する。
【0076】
IPsec対象判定部1030は、受信IPsec有の場合、フレームデータをバッファ642に入力する。なお、本実施例では、外側IPヘッダのプロトコルは、IPv6のみであるため、IPv4パケットは受信IPsec無と判定される。さらに、IPフラグメントされたパケットについても、フラグメントの再構成を行うことができないため、受信IPsec無と判定される。さらに、IPフラグメントされたパケットについても、フラグメントの再構成を行うことができないため、受信IPsec無と判定される。IPsec対象判定部1030は、バッファ1020から出力されたフレームに位置情報のデータを付加してバッファ642へ出力する。
【0077】
バッファ642は、カット型バッファであり、認証処理部643への入力が可能な状態において、蓄積中のデータを出力する(ステップS1040)。
【0078】
次に、認証処理部643の動作を説明する。認証処理部643は、外側IPヘッダ削除・ICV計算前処理部1050、SHA−1 ICV計算部1060、MD−5 ICV計算部1070、バッファ1080、ICV検査&ICV削除部1090、及び、シーケンス番号検査部1100からなる。外側IPヘッダ削除・ICV計算前処理部1050は、バッファ642から入力されたフレームデータから外側IPヘッダにあたるデータを、IPヘッダ位置等の位置情報に基づいて削除する。そして、受信SA番号に基づいて、IPsecレジスタ610内の受信側SA処理条件テーブルから認証アルゴリズムを取得し、取得した認証アルゴリズムに対応するICV計算処理に、ESPヘッダ先頭からトレーラ最後までのデータを、ICV計算のブロック長単位で入力する。これにより、認証アルゴリズムがSHA−1であればSHA−1 ICV計算部1060において、認証アルゴリズムがMD−5であればMD−5 ICV計算部1070において、ICV計算を行う。このICV計算では、受信SA番号に基づいて受信側認証用中間鍵テーブルから認証用中間鍵を取得し使用する。また、認証中のデータは、1ブロック分の処理を行っている間バッファ1080に一時蓄積され、出力される。
【0079】
その後、ICV検査&ICV削除処理部1090において、SHA−1 ICV計算部1060、あるいは、MD−5 ICV計算部1070において計算されたICVと、入力されたフレームデータ内に含まれるIPsecパケットのICVとの一致・不一致により認証が成功したかを判定するとともに、当該フレームデータからICVを削除する。続いて、シーケンス番号検査部1100は、受信SA番号に基づいて、受信側SA処理条件テーブルからアンチリプレイ有無を取得し、アンチリプレイ有の場合は、シーケンス番号検査処理を行い、ESPヘッダ内のシーケンス番号を検査する。このシーケンス番号検査において、入力したデータからIPヘッダ位置等の位置情報に基づいてシーケンス番号を取得し、このシーケンス番号と受信SA番号に対応するシーケンス番号の状態情報に基づいて、アンチリプレイの成功・失敗の判定と、シーケンス番号の状態情報の更新(成功時のみ)を行う。シーケンス番号検査部1100は、フレームデータ、位置情報のデータ、及び、認証の成功・失敗の判定結果、アンチリプレイの成功・失敗の判定結果とを示すデータを出力する。
【0080】
シーケンス番号検査部1100が出力するデータは、バッファ644に入力される。バッファ644は、ストア型バッファであり、1フレーム分のデータが蓄積される。不正パケット廃棄部645は、認証の成功・失敗の判定結果と、アンチリプレイ有の場合のアンチリプレイの成功・失敗の判定結果を得る。不正パケット廃棄部645は、認証の失敗もしくはアンチリプレイの失敗であるとき、復号処理部646へのデータの入力を行わず、このフレーム破棄する。1フレーム分のデータが蓄積され、前記フレームについて認証が成功し、かつ、アンチリプレイに成功した(あるいはアンチリプレイ無)場合に、復号処理部646への入力が可能な状態において、前記フレームデータ及び位置情報のデータを、復号処理部646へ入力する。
【0081】
次に、復号処理部646の動作を説明する。復号処理部646は、ESPヘッダ削除部1130、復号化部1140、及び、IV削除・トレーラ削除部1150からなる。ESPヘッダ削除部1130は、ESPヘッダ削除処理において、バッファ644からフレームデータと位置情報のデータの入力を受ける。ESPヘッダ削除部1130は、IPヘッダ位置等の位置情報のデータに基づいて、フレームデータからESPヘッダを削除する。復号化部1140は、受信SA番号に基づいて、IPsecレジスタ610内の受信側SA処理条件テーブルから暗号化アルゴリズムを取得し、IVからトレーラ最後までのデータを暗号のブロック長単位で、取得した暗号アルゴリズムに対応する復号処理に入力し、復号処理を行う。この復号処理では、受信SA番号に基づいて受信側暗号用拡大鍵テーブルから暗号用拡大鍵を取得して使用する。さらに、復号化部1140は、IPヘッダ位置等の位置情報のデータに基づいて、前記フレームデータからIVを取得して、CBCモードでの復号の初期値として使用する。なお、暗号アルゴリズムによって予め決められたブロック長の整数倍となっていない場合は、復号に失敗したと判定する。
【0082】
IV削除・トレーラ削除部1150は、フレームデータからIV及びトレーラを削除する。IV削除・トレーラ削除部1150は、復号されたトレーラのパッド長に基づいてパッドの削除を行い、内側IPパケットのプロトコルに基づいて、フレームのレイヤ3プロトコルとして、IPv4あるいはIPv6を取得する。ただし、この処理において、内側IPパケットのプロトコルがIPv4あるいはIPv6のどちらでもない場合や、内側IPパケットのバージョンと一致しない場合は、復号に失敗したと判定する。IV削除・トレーラ削除部1150は、フレームデータと、復号の成功・失敗の判定結果のデータをバッファ647へ出力する。
【0083】
IV削除・トレーラ削除部1150が出力したデータは、バッファ647に入力される。バッファ647は、ストア型バッファであり、1フレーム分のデータが蓄積される。不正パケット廃棄部648は、復号の成功・失敗の判定結果を得る。不正パケット廃棄部648は、復号失敗であるとき、後置処理部649へのフレームデータの入力を行わず、このフレームを破棄する。1フレーム分のデータが蓄積され、前記フレームについて復号が成功した場合に、後置処理部649への入力が可能な状態において、前記フレームデータを、後置処理部649へ入力する。
【0084】
次に、後置処理部649の動作を説明する。後置処理部649は、Etherヘッダ書換部1180、及び、スケジューラ部1190からなる。Etherヘッダ書換部1180は、復号処理部646が出力したフレームデータのうち、イーサネット(登録商標)フレームのTypeフィールドの値を、内側IPパケットのプロトコルに合致するように書き換える。その後、スケジューラ部1190は、内側IPパケットのフレームを、IPsec非対象パケットとして入力したフレームとスケジューラで合流させて書き込みスケジューラ部215へ出力する。
【0085】
図4は、IPsec送信時の送信IPsec処理部650の構成を示す図である。
まず、前置処理部651の動作を説明する。前置処理部651は、バッファ2010、IPsec対象判定部2020、及び、パーサ部2030からなる。バッファ2010は、ストア型のバッファであり、フレーム生成部260から入力されたフレームデータ、送信IPsecの有無を示す情報、送信SA番号を一時蓄積する。
【0086】
IPsec対象判定部2020は、前記バッファ2010から出力されるフレームについて、IPsec対象であるか否かを判定する。IPsec対象判定部2020は、送信IPsec無の場合、IPsec非対象パケットとして、フレームデータをバッファ658へ出力する。送信IPsec有の場合、パーサ部2030は、L2ヘッダ終了位置等の位置情報のデータをフレームデータに付加し、バッファ652へ出力する。
【0087】
バッファ652は、カット型バッファであり、暗号処理部653への入力が可能な状態において、蓄積中のデータを出力する。
【0088】
次に、暗号処理部653の動作について説明する。暗号処理部653は、ESPパディング部2050、暗号化部2060、及び、シーケンス番号生成・ESPヘッダ&IV挿入処理部2070からなる。ESPパディング部2050は、送信SA番号に基づいて、IPsecレジスタ610内の送信側SA処理条件テーブルから、暗号アルゴリズムを取得する。ESPパディング部2050は、フレームデータ内のIPパケット(内側IPパケット)の直後に、パッド、当該パッドのパッド長、次ヘッダから構成されるトレーラを付加する。このとき、IPパケットとトレーラを合計した長さが、これらを暗号化するときの暗号アルゴリズムによって予め決められたブロック長の整数倍となるよう、パッド長を決定する。次ヘッダは、内側IPパケットのプロトコルに対応する。
【0089】
暗号化部2060は、暗号処理において、暗号アルゴリズムがNULL暗号以外の場合、暗号アルゴリズムに従って、フレームデータ内のIPパケット及びトレーラを暗号化する。このとき、暗号化部2060は、送信SA番号に基づいて送信側暗号用拡大鍵テーブルから暗号用拡大鍵を取得して使用する。そして、暗号化部2060は、暗号化した結果のデータにより、フレームデータ内のIPパケット及びトレーラを書き換える。
【0090】
シーケンス番号生成・ESPヘッダ&IV挿入処理部2070は、ESPヘッダ&IV挿入処理を行う。すなわち、シーケンス番号生成・ESPヘッダ&IV挿入処理部2070は、送信SA番号に基づいて、内部に保持している送信SA番号毎の送信IPパケットの個数を読み出し、この読み出した個数を基にシーケンス番号を生成する。そして、当該送信SA番号に対応した送信IPパケットの個数を増加させる。さらに、シーケンス番号生成・ESPヘッダ&IV挿入処理部2070は、送信SA番号に基づいて、IPsecレジスタ610内のカプセル化条件テーブルからSPI値を読み出す。シーケンス番号生成・ESPヘッダ&IV挿入処理部2070は、生成したシーケンス番号と、読み出したSPI値を用いてESPヘッダを作成し、フレームデータ内の暗号化データの前に挿入する。また、暗号アルゴリズムがCBCモードの場合、IVをESPヘッダと暗号化データの間に挿入する。IVは、前回暗号化した結果を利用する。シーケンス番号生成・ESPヘッダ&IV挿入処理部2070は、フレームデータをバッファ654へ出力する。
【0091】
バッファ654は、カット型バッファであり、ICV生成処理部655への入力が可能な状態において、蓄積中のデータを出力する。
【0092】
次に、ICV生成処理部655の動作を説明する。ICV生成処理部655は、ICV計算前処理部2100、SHA−1 ICV計算部2110、MD−5 ICV計算部2120、バッファ2130、及び、外側IPヘッダ挿入・ICV挿入部2140からなる。ICV計算前処理部2100は、送信SA番号に基づいて、IPsecレジスタ610内の送信側SA処理条件テーブルから認証アルゴリズムを取得し、取得した認証アルゴリズムに対応するICV計算処理に、ESPヘッダ先頭からトレーラ最後までのデータを、ICV計算のブロック長単位で入力する。これにより、認証アルゴリズムがSHA−1の場合SHA−1 ICV計算部2110が、認証アルゴリズムがMD−5の場合MD−5 ICV計算部2120がICV計算を行う。このICV計算では、送信SA番号に基づいて送信側認証用中間鍵テーブルから認証用中間鍵を取得し使用する。また、ICV生成中のデータは、バッファ2130に1ブロック分の処理を行っている間一時蓄積され、出力される。
【0093】
外側IPヘッダ挿入・ICV挿入部2140は、送信SA番号に基づいて、IPsecレジスタ610内のカプセル化条件テーブルから、外側IPヘッダの宛先IPアドレス、送信元IPアドレス、ホップ・リミット、トラフィック・クラスを取得する。そして、取得したこれらの情報と、ESPヘッダ先頭から暗号化されたトレーラ終了までの長さとに基づいて外側IPヘッダを生成し、フレームデータ内のESPヘッダ直前に挿入する。外側IPヘッダ挿入・ICV挿入部2140は、さらにフレームのレイヤ3プロトコルとして、外側IPヘッダのプロトコルを指定する。すなわち、イーサネット(登録商標)フレームのTypeフィールドを、外側IPパケットのプロトコルに相当する値に書き換える。加えて、外側IPヘッダ挿入・ICV挿入部2140は、SHA−1 ICV計算部2110、または、MD−5 ICV計算部2120において計算されたICVを、フレームデータ内のトレーラの直後に挿入する。外側IPヘッダ挿入・ICV挿入部2140は、フレームデータをバッファ656に出力する。
【0094】
ICV生成処理部655から出力するフレームデータは、バッファ656に入力される。また、前置処理部651のIPsec対象判定部2020から出力するフレームデータは、バッファ658に入力される。バッファ656及び658は、ストア型バッファであり、1フレーム分のデータが蓄積される。バッファ656及び658は、1フレーム分のデータが蓄積され、後置処理部657への入力が可能な状態において、前記フレームデータを、後置処理部657へ入力する。
【0095】
後置処理部657は、スケジューラ部2170を備える。スケジューラ部2170は、バッファ656から出力されたIPsecパケットのフレーム、及び、バッファ658から出力されたIPsec非対象パケットのフレームを出力する。
【0096】
図5は、認証用中間鍵生成部620における中間鍵生成処理を示す図である。
認証用中間鍵生成部620は、CPU400から出力された認証鍵に基づいての認証用中間鍵(以下、単に「中間鍵」と記載)を生成し、認証用中間鍵生成部620内のテーブルに格納しておく。そして、上述した認証処理部643及びICV生成処理部655のICV計算においては、認証対象のパケットの到着に応じて中間鍵を読み出して使用する。中間鍵は、IPsec SA毎に、入力中間鍵、及び、出力中間鍵の2つがある。中間鍵を生成してメモリに記憶しておくことにより、パケットの受信あるいは送信毎に計算処理を行う必要がなくなり、認証処理の高速化を可能とする。
【0097】
認証用中間鍵生成部620は、CPU400が出力した160ビット長の認証鍵、IPsec SA番号、認証アルゴリズムの情報を受信する。認証データ検証用の認証用中間鍵(以下、単に「認証データ検証用中間鍵」と記載)を生成する場合、IPsec SA番号は、受信SA番号に相当し、認証データ生成用の認証用中間鍵(以下、単に「認証データ生成用中間鍵」と記載)を生成する場合、IPsec SA番号は、送信SA番号に相当する。
【0098】
認証用中間鍵生成部620は、認証鍵の前に0x0の連続を付加し、512ビット長の伸張鍵とする(ステップS3010)。なお、「0x」とは、16進数を示す。そして、ipadと伸張鍵の排他的論理和(以下、「ExOR」と記載)を算出するとともに、opdaと伸張鍵の排他的論理和(以下、「ExOR」と記載)を算出する(ステップS3020)。なお、ipadとは、0x36の繰り返しパターンからなる512ビット長のデータであり、opadとは、0x5cの繰り返しパターンからなる512ビット長のデータである。
【0099】
認証用中間鍵生成部620は、認証アルゴリズムがSHA−1である場合、SHA−1中間鍵用のハッシュ演算を実行し(ステップS3030)、認証アルゴリズムがMD−5である場合、MD−5中間鍵用のハッシュ演算を実行する(ステップS3040)。ステップS3030では、ipadと伸張鍵とのExOR演算結果に対してSHA−1中間鍵用のハッシュ値演算を行って160ビット長の入力中間鍵を生成するとともに、opadと伸張鍵とのExOR演算結果に対してSHA−1中間鍵用のハッシュ値演算を行って160ビット長の出力中間鍵を生成し、出力する。一方、ステップS3040では、ipadと伸張鍵とのExOR演算結果に対してMD−5中間鍵用のハッシュ値演算を行って128ビット長の入力中間鍵を生成し、opadと伸張鍵とのExOR演算結果に対してMD−5中間鍵用のハッシュ値演算を行って128ビット長の出力中間鍵を生成し、出力する。
【0100】
認証用中間鍵生成部620は、ステップS3030あるいはステップS3040において生成した中間鍵である入力中間鍵及び出力中間鍵を、IPsec SA番号に対応させて中間鍵テーブルに格納する(ステップS3050)。中間鍵テーブルは、中間鍵が認証データ検証用中間鍵である場合は、受信側認証用中間鍵テーブルであり、中間鍵が認証データ生成用中間鍵である場合は、送信側認証用中間鍵テーブルである。
【0101】
図6は、認証処理部643及びICV生成処理部655に用いられるICV計算部の構成を示すブロック図である。下記では、認証処理部643におけるICV計算部670について説明する。
ICV計算部670は、入力中間鍵を初期値として、入力メッセージ(フレームデータ内のESPヘッダからトレーラまで)に対するハッシュ値を計算する主ハッシュ演算部671と、出力中間鍵を初期値として、主ハッシュ演算部671が出力するハッシュ値に対するハッシュ値を計算する副ハッシュ演算部672からなる2段のパイプライン構成とする。これにより、スループット向上が可能となる。
【0102】
ICV計算部670は、フレームデータ内のESPヘッダからトレーラまでの入力メッセージを受けると、IPsec SA番号(受信SA番号)をIPsecレジスタ610に出力する。主ハッシュ演算部671は、IPsecレジスタ610からIPsec SA番号に対応した認証データ検証用中間鍵の入力中間鍵を取得して主ハッシュ演算を行い、ハッシュ値を出力する。ハッシュ値は、SHA−1の場合は、160bit、MC−5の場合は128bit長である。主ハッシュ演算部671は、ハッシュ値の出力後は、次の入力を受付可能とする。
【0103】
続いて、副ハッシュ演算部672は、IPsecレジスタ610からIPsec SA番号に対応した認証データ検証用中間鍵の出力中間鍵を取得して、主ハッシュ演算部671が出力したハッシュ値に対する副ハッシュ演算を行う。演算結果のハッシュ値は、SHA−1の場合は160bit、MC−5の場合は128bit長である。副ハッシュ演算部672は、ハッシュ値の先頭から96ビットを取り出して、ICV値とする。副ハッシュ演算部672は、ハッシュ値の出力後は、次の入力を受付可能とする。
【0104】
なお、ICV生成処理部655におけるICV計算部についても同様の処理を実行するが、受信SA番号は送信SA番号に、認証データ検証用中間鍵は認証データ生成用中間鍵に読みかえる。
【0105】
図7は、図6に示す主ハッシュ演算部671及び副ハッシュ演算部672に用いられるハッシュ演算部680の構成を示すブロック図である。同図におけるハッシュ演算部680は、SHA−1ハッシュ演算を行う。ハッシュ演算部680が実行するハッシュ演算として、512ビット長のブロック毎に、80ステップ(t=0〜79)の計算が規定されている。ハッシュ演算部680においては、t=0及びt=1の演算を1クロックで行い、同様に、t=i×2及びt=i×2+1(t=0〜39)についての演算を1クロックで行う。このようにして、80ステップの計算を40サイクル(40クロック)で完了させる。これにより、ハッシュ演算における倍速クロック動作を必要とせず、スループットの向上が可能となる。
【0106】
ハッシュ演算状態制御部681は、制御信号を受信する。制御信号は、先頭/終了ブロックの有無、データの入力タイミングや中間鍵の入力タイミングを示す信号など、ハッシュ演算を制御するために必要な信号であればよい。
ハッシュ演算状態制御部681は、クロック(CLK)のタイミングにより、ダブル演算関数(以下、「W演算関数」と記載)を制御する信号をW演算関数処理部682へ、ハッシュ値演算関数を制御する信号をハッシュ値演算関数処理部683へ同時に出力する。これにより、W演算関数処理部682におけるt=i×2及びt=i×2+1のステップの演算と、ハッシュ値演算関数処理部683におけるt=i×2及びt=i×2+1のステップの演算が同時に実行されることになる。
【0107】
W演算関数処理部682には、フレームデータ内のESPからトレーラまでを512ビット長ブロックに分割し、最後のブロックについては、HMACトレーラ(0b1000..のパターン+ESPからトレーラまでのビット数を表す64ビット)を付与して512ビット長化した入力データが入力され、この入力データは初期値としてWレジスタ群684内のレジスタWi(i=0〜15)に格納される。また、ハッシュ値演算関数処理部683には160ビット長の中間鍵が入力され、初期値としてハッシュ値レジスタ群685内のレジスタA、B、C、D、Eに格納される。レジスタWi(i=0〜15)、及び、レジスタA、B、C、D、Eは、それぞれ32ビット長のレジスタである。
【0108】
W演算関数処理部682、及び、ハッシュ値演算関数処理部683は、ハッシュ演算状態制御部681から出力される信号を受信し、Wレジスタ群684内のレジスタWi(i=0〜15)、及び、ハッシュ値レジスタ群685内のレジスタA、B、C、D、E内に格納された値を用いて演算を行う。そして、Wレジスタ群684には、W演算関数処理部682による算出結果が、ハッシュ値レジスタ群685には、ハッシュ値演算関数処理部683による算出結果がクロックのタイミングで書き込まれる。これを繰り返し、データの入力からクロック40サイクル後に、ハッシュ値レジスタ群685内のレジスタA、B、C、D、Eに格納された値により示される、入力データに対するハッシュ値演算結果と、ハッシュ演算状態制御部681からのハッシュ値演算終了を示す信号とが出力される。
【0109】
次に、W演算関数処理部682及びハッシュ値演算関数処理部683が実行する演算の詳細について説明する。なお、演算は、Verilog−HDL言語を用いて記述している。
【0110】
まず、W演算関数処理部682が実行する演算を以下に示す。
W演算関数処理部682は、演算停止中、以下のように、各レジスタWi(i=0〜15)の値を保持している。
【0111】
【数1】

【0112】
W演算関数処理部682は、データ入力直後、以下のように、レジスタWi(i=0〜15)に、512ビット長の入力データをセットする。
【0113】
【数2】

【0114】
W演算関数処理部682は、演算開始(演算カウンタ=0)から8サイクル経過(演算カウンタ=7)までの期間は、以下の演算を行う。
【0115】
【数3】

【0116】
W演算関数処理部682は、演算開始より9サイクル経過(演算カウンタ=8)から演算終了(演算カウンタ=39)までの期間は、以下の演算を行う。
【0117】
【数4】

【0118】
次に、図7のハッシュ値演算関数処理部683が実行する演算を以下に示す。なお、式中では、レジスタA、B、C、D、Eを単にA、B、C、D、Eと記述している。
ハッシュ値演算関数処理部683は、演算停止中、以下のように、各レジスタA〜Eの値を保持している。
【0119】
【数5】

【0120】
ハッシュ値演算関数処理部683は、先頭ブロックの入力直後、以下のように、中間鍵をセットする。
【0121】
【数6】

【0122】
ハッシュ値演算関数処理部683は、演算開始(演算カウンタ=0)から演算終了(演算カウンタ=39)までの期間は、以下の演算を行う。
【0123】
【数7】

【0124】
なお、
【0125】
【数8】

【0126】
【数9】

【0127】
【数10】

【0128】
【数11】

【0129】
【数12】

【0130】
【数13】

【0131】
【数14】

【0132】
上記実施の形態によれば、ワイヤードロジックにより構成され、高速なIPsecパケットの送受信処理を行うIPsec回路を安価に実現することができる。
【図面の簡単な説明】
【0133】
【図1】本発明の一実施の形態による通信装置の構成を示すブロック図である。
【図2】同実施の形態によるIPsec部の構成を示すブロック図である。
【図3】同実施の形態による受信IPsec処理部の構成を示す図である。
【図4】同実施の形態による送信IPsec処理部の構成を示す図である。
【図5】同実施の形態による認証用中間鍵生成部における中間鍵生成処理を示す図である。
【図6】同実施の形態によるICV計算部の構成を示すブロック図である。
【図7】同実施の形態によるハッシュ演算部の構成を示すブロック図である。
【図8】IPsecパケットの構成を示す図である。
【符号の説明】
【0134】
100…通信装置、 200…通信処理回路、 205…WAN用MAC I/F、 210…IPsec部、 215…書き込みスケジューラ部、 220…メモリコントローラ部、 225…DDR−SDRAM I/F、 230…パーサ部、 235…検索部、 240…CPU転送判定部、245…キュー選択部、 250…QoS部、 255…ハンドル管理部、 260…フレーム生成部、 265…CPU I/F、 275…LAN用MAC I/F、 300…DDR−SDRAM、 400…CPU、 500、501…物理I/F、 610…IPsecレジスタ、 620…認証用中間鍵生成部、 630…暗号用拡大鍵生成部、 640…受信IPsec処理部、 641、651…前置処理部、 642、644、647、652、654、656、658、1020、1080、2010、2130…バッファ、 643…認証処理部、 645、648…不正パケット廃棄部、 646…復号処理部、 649、657…後置処理、 650…送信IPsec処理部、 653…暗号処理部、 655…ICV生成処理部、 670…ICV計算部、 671…主ハッシュ演算部、 672…副ハッシュ演算部、 680…ハッシュ演算部、 681…ハッシュ演算状態制御部、 682…W演算関数処理部、 683…ハッシュ値演算関数処理部、 684…Wレジスタ群、 685…ハッシュ値レジスタ群、 1010…パーサ・検索部、 1030、2020…IPsec対象判定部、 1050…外側IPヘッダ削除・ICV計算前処理部、 1060、2110…SHA−1 ICV計算部、 1070、2120…MD−5 ICV計算部、 1090…ICV検査&ICV削除部、 1100…シーケンス番号検査部、 1130…ESPヘッダ削除部、 1140…復号化部、 1150…IV削除・トレーラ削除部、 1180…Etherヘッダ書換部、 1190、2170…スケジューラ部、 2030…パーサ部、 2050…ESPパディング部、 2060…暗号化部、 2070…シーケンス番号生成・ESPヘッダ&IV挿入処理部、 2100…ICV計算前処理部、 2140…外側IPヘッダ挿入・ICV挿入部


【特許請求の範囲】
【請求項1】
受信パケットのパケットデータの入力を受け、受信パケットがIPsecパケットであるか否かを判断する前置処理部と、
前記前置処理部によりIPsecパケットであると判断され、出力された前記パケットデータを蓄積する第1のバッファと、
前記第1のバッファからパケットデータの入力を受け、前記IPsecパケットが認証処理対象である場合に、IPsecパケット内のICVにより認証を行い、パケットデータを出力する認証処理部と、
前記認証処理部により出力されたパケットデータを蓄積する第2のバッファと、
前記第2のバッファからパケットデータの入力を受け、前記IPsecパケットにIPデータが暗号化されてカプセル化されている場合に、該パケットデータ内の暗号化データを復号してIPパケットを取得し、この復号したIPパケットが設定されたパケットデータを出力する復号処理部と、
前記復号処理部により出力されたパケットデータを蓄積する第3のバッファと、
前記第3のバッファからパケットデータの入力を受け、該パケットデータを基にデカプセル化したIPパケットのデータを生成して出力する後置処理部とを備え、
前記第1のバッファ、前記第2のバッファ、及び、前記第3のバッファはファースト・イン・ファースト・アウトのバッファであり、
前記第2のバッファ及び前記第3のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、
ことを特徴とするIPsec回路。
【請求項2】
中間鍵を保持するメモリと、
CPUから出力された該認証鍵を基に中間鍵を生成して前記メモリに書き込む認証用中間鍵生成部とをさらに備え、
前記認証処理部は、
前記パケットデータから抽出したデータと、前記メモリから読み出した中間鍵とを用いてICVを算出するICV算出部を備えており、
前記ICV算出部が算出したICVと、前記パケットデータ内のICVとを比較して認証を行う、
ことを特徴とする請求項1に記載のIPsec回路。
【請求項3】
送信パケットのパケットデータと、該パケットデータがIPsec処理対象であることを示すデータとの入力を受ける前置処理部と、
前記前置処理部がIPsec処理対象であることを示すデータの入力を受けた場合に出力した前記パケットデータを蓄積する第4のバッファと、
前記第4のバッファからパケットデータの入力を受け、トレーラを生成して前記パケットデータに付加するとともに、IPパケットの暗号化を行う場合に、生成したトレーラと受信したパケットデータとを暗号化し、暗号化したデータが書き込まれた前記パケットデータを出力する暗号処理部と、
前記暗号処理部から出力されたパケットデータを蓄積する第5のバッファと、
前記第5のバッファからパケットデータの入力を受け、IPsecパケットが認証対象である場合にICVを生成し、生成したICVを前記パケットデータに付加して出力する認証データ生成処理部と、
前記ICV生成処理部から出力されたパケットデータを蓄積する第6のバッファと、
前記第6のバッファからパケットデータの入力を受け、前記パケットデータを基にIPsecパケットを生成して出力する後置処理部とを備え、
前記第4のバッファ、前記第5のバッファ、及び、前記第6のバッファはファースト・イン・ファースト・アウトのバッファであり、
前記第4のバッファ及び前記第5のバッファは、パケットデータの入力途中から該パケットデータの出力が可能であるカット型のバッファであり、
前記第6のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、
ことを特徴とするIPsec回路。
【請求項4】
中間鍵を保持するメモリと、
CPUから出力された該認証鍵を基に中間鍵を生成して前記メモリに書き込む認証用中間鍵生成部とをさらに備え、
前記ICV生成処理部は、
前記パケットデータから抽出したデータと、前記メモリから読み出した中間鍵とを用いてICVを算出するICV算出部を備える、
ことを特徴とする請求項3に記載のIPsec回路。
【請求項5】
前記中間鍵は、入力中間鍵及び出力中間鍵からなり、
前記ICV算出部は、
前記パケットデータから抽出したデータと、入力中間鍵とを用いてハッシュ値を算出する主ハッシュ演算部と、
主ハッシュ演算部が算出したハッシュ値と、出力中間鍵とを用いてハッシュ値を算出し、算出したハッシュ値からICVを生成する副ハッシュ演算部とを備える、
ことを特徴とする請求項2または4に記載のIPsec回路。
【請求項6】
前記主ハッシュ演算部及び前記副ハッシュ演算部は、1クロックで2ステップのハッシュ演算を行うハッシュ演算部を備えることを特徴とする請求項5に記載のIPsec回路。
【請求項7】
IPsec回路に用いられるIPsec処理方法であって、
前置処理部が、受信パケットのパケットデータの入力を受け、受信パケットがIPsecパケットであるか否かを判断し、
第1のバッファが、前記前置処理部によりIPsecパケットであると判断され、出力された前記パケットデータを蓄積し、
認証処理部が、前記第1のバッファからパケットデータの入力を受け、前記IPsecパケットが認証処理対象である場合に、IPsecパケット内のICVにより認証を行ってパケットデータを出力し、
第2のバッファが、前記認証処理部により出力されたパケットデータを蓄積し、
復号処理部が、前記第2のバッファからパケットデータの入力を受け、前記IPsecパケットにIPデータが暗号化されてカプセル化されている場合に、該パケットデータ内の暗号化データを復号してIPパケットを取得し、この復号したIPパケットが設定されたパケットデータを出力し、
第3のバッファが、前記復号処理部により出力されたパケットデータを蓄積し、
後置処理部が、前記第3のバッファからパケットデータの入力を受け、該パケットデータを基にデカプセル化したIPパケットのデータを生成して出力することを特徴とし、
前記第1のバッファ、前記第2のバッファ、及び、前記第3のバッファはファースト・イン・ファースト・アウトのバッファであり、
前記第2のバッファ及び前記第3のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、
ことを特徴とするIPsec処理方法。
【請求項8】
IPsec回路に用いられるIPsec処理方法であって、
前置処理部が、送信パケットのパケットデータと、該パケットデータがIPsec処理対象であることを示すデータとの入力を受け、
第4のバッファが、前記前置処理部がIPsec処理対象であることを示すデータの入力を受けた場合に出力した前記パケットデータを蓄積し、
暗号処理部が、前記第4のバッファからパケットデータの入力を受け、トレーラを生成して前記パケットデータに付加するとともに、IPパケットの暗号化を行う場合に、生成したトレーラと受信したパケットデータとを暗号化し、暗号化したデータが書き込まれた前記パケットデータを出力し、
第5のバッファが、前記暗号処理部から出力されたパケットデータを蓄積し、
ICV生成処理部が、前記第5のバッファからパケットデータの入力を受け、IPsecパケットが認証対象である場合にICVを生成し、生成したICVを前記パケットデータに付加して出力し、
第6のバッファが、前記ICV生成処理部から出力されたパケットデータを蓄積し、
後置処理部が、前記第6のバッファからパケットデータの入力を受け、前記パケットデータを基にIPsecパケットを生成して出力することを特徴とし、
前記第4のバッファ、前記第5のバッファ、及び、前記第6のバッファはファースト・イン・ファースト・アウトのバッファであり、
前記第4のバッファ及び前記第5のバッファは、パケットデータの入力途中から該パケットデータの出力が可能であるカット型のバッファであり、
前記第6のバッファは、少なくとも1個のパケットデータが格納可能であり、かつ、パケットデータの入力が完了した後にこのパケットデータを出力するストア型のバッファである、
ことを特徴とするIPsec処理方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2007−166279(P2007−166279A)
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2005−360319(P2005−360319)
【出願日】平成17年12月14日(2005.12.14)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【出願人】(591230295)NTTエレクトロニクス株式会社 (565)
【Fターム(参考)】