(57)【要約】【課題】認証処理と暗号化処理の様々な方式と、その方式をハードウェアにてアクセラレートする場合、認証処理と暗号化処理の並列処理および連続処理をより効率的に行うことが可能な暗号処理装置および方法を提供する。【解決手段】ＤＭＡＣ１５がデータ格納メモリ１２から処理すべき転送データを指示する情報となるＤＭＡディスクリプタに、認証処理を指示するフィールドと、暗号化処理を指示するフィールドと、認証処理と暗号化処理の並列処理を指示するフィールドと、認証処理と暗号化処理の連続処理を指示するフィールドを有するディスクリプタフォーマットになっており、さらに、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを使用するか否か指示するフィールドを有するディスクリプタフォーマットになっている。【選択図】      図１
2006041684.tif 000002
【特許請求の範囲】
【請求項１】
ハッシュアルゴリズムによる認証処理と共通鍵暗号による暗号化処理に加え、認証処理と暗号化処理の並列処理機能および連続処理機能を備えた暗号処理装置であって、
処理対象データを格納するデータ格納メモリと、
ハッシュアルゴリズムによる認証処理を行うハッシュブロックと、
共通鍵暗号による暗号化処理を行う共通鍵暗号ブロックと、
上記データ格納メモリから処理すべき転送データを指示する情報であるディスクリプタに基づいて、上記データ格納メモリから上記ハッシュブロックおよび上記共通鍵暗号ブロックへのデータ転送を制御するメモリアクセスコントローラと、を有し、
上記メモリアクセスコントローラが上記データ格納メモリから処理すべき転送データを指示するディスクリプタに、ハッシュアルゴリズムを用いた認証処理の指示と、共通鍵暗号アルゴリズムを用いた暗号化処理の指示に加え、認証処理と暗号化処理の並列実行処理の指示と、認証処理と暗号化処理の連続実行処理の指示が選択可能なディスクリプタフォーマットを含み、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを使用するか否かをディスクリプタにて指示できるディスクリプタフォーマットを含む
暗号処理装置。
【請求項２】
前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを保持する手段と、
上記端数データを連結して使用するためにデータアライメントを行う手段と
を有する請求項１記載の暗号処理装置。
【請求項３】
処理すべきデータが、認証処理が対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて認証処理の指示を指定する
請求項１記載の暗号処理装置。
【請求項４】
処理すべきデータが、認証処理と暗号化処理の連続処理の対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて連続処理の指示を指定する
請求項１記載の暗号処理装置。
【請求項５】
前段のディスクリプタで指定した領域が認証アルゴリズムの処理単位に満たなかった場合でかつ連続処理においても当該端数データを連結して使用する場合、上記ディスクリプタでは連結の指示を指定する
請求項１記載の暗号処理装置。
【請求項６】
処理すべきデータが、暗号化処理の対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて暗号化処理の指示を指定する
請求項１記載の暗号処理装置。
【請求項７】
前段のディスクリプタで指示した領域が暗号アルゴリズムの処理単位に満たなかった場合でかつ暗号化処理においても当該端数データを連結して使用する場合、上記ディスクリプタでは連結の指示を指定する
請求項１記載の暗号処理装置。
【請求項８】
ディスクリプタに基づいてデータ格納メモリから処理すべき転送データを指示し、ハッシュアルゴリズムによる認証処理と共通鍵暗号による暗号化処理に加え、認証処理と暗号化処理の並列処理および連続処理を行う暗号処理方法であって、
上記ディスクリプタに、ハッシュアルゴリズムを用いた認証処理の指示と、共通鍵暗号アルゴリズムを用いた暗号化処理の指示に加え、認証処理と暗号化処理の並列実行処理の指示と、認証処理と暗号化処理の連続実行処理の指示が選択可能なディスクリプタフォーマットを含み、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを使用するか否かをディスクリプタにて指示できるディスクリプタフォーマットを含む
暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハッシュアルゴリズムによる認証処理と共通鍵暗号による暗号化処理に加え、認証処理と暗号化処理の並列処理機能および連続処理機能を備えた暗号処理装置および暗号処理方法に関するものである。
【背景技術】
【０００２】
各種暗号処理の用途としてはメディアに格納されたコンテンツの復号や、ネットワークを介して送受信されるデータの暗号化／復号など、用途としては様々である（たとえば特許文献１参照）。
【０００３】
そして、各種暗号処理におけるアクセラレート方法は様々であるが、たとえばＩＰsec(IP Security Protocol)やＳＳＬ（Secure Socket Layer) / TLS(Transport Layer Security)に代表されるネットワークセキュリティプロトコルでは、主にペイロードに対しては、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などの共通鍵暗号を用いた暗号化／復号処理と、ＭＤ５（Message Digest #5 ）やＳＨＡ−１（Secure Hash Algorithm ）などのハッシュアルゴリズムを用いた認証処理が義務づけられている。
【０００４】
また、ペイロードの送受信に対しては一定の通信速度を保証するQoS(Quality Of Service)を実現するために、これらの処理をアクセラレートするためにハードウェア処理を行うものがある。
さらには、暗号化処理と認証処理の連続処理や並列処理機能を実現させてアクセラレートする手段が取られる。
【特許文献１】特開２００３−２７３３８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、ＳＳＬ／ＴＬＳのパケット構成に代表されるように、暗号化対象となる領域と認証対象となる領域は一般的に異なっており、さらに、連続処理／並列処理を行うべき、処理の開始位置と終了位置に関しては、各種暗号アルゴリズムの処理単位で区切られていない場合がある。
ここで、各種暗号アルゴリズムの処理単位とは、ＤＥＳの場合は８バイトの倍数、ＡＥＳの場合は１６バイトの倍数、ＭＤ５，ＳＨＡ−１の場合は５１２バイトの倍数を示す。
【０００６】
そのため、連続処理／並列処理の機能を有しているだけでは、様々なセキュリティプロトコルに対して、連続処理／並列処理を適応して、処理対象データに対して、１度のデータ読み込みですべて処理することができないという点で問題があった。
【０００７】
本発明の目的は、認証処理と暗号化処理の様々な方式と、その方式をハードウェアにてアクセラレートする場合、認証処理と暗号化処理の並列処理および連続処理をより効率的に行うことが可能な暗号処理装置および暗号処理方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の観点は、ハッシュアルゴリズムによる認証処理と共通鍵暗号による暗号化処理に加え、認証処理と暗号化処理の並列処理機能および連続処理機能を備えた暗号処理装置であって、処理対象データを格納するデータ格納メモリと、ハッシュアルゴリズムによる認証処理を行うハッシュブロックと、共通鍵暗号による暗号化処理を行う共通鍵暗号ブロックと、上記データ格納メモリから処理すべき転送データを指示する情報であるディスクリプタに基づいて、上記データ格納メモリから上記ハッシュブロックおよび上記共通鍵暗号ブロックへのデータ転送を制御するメモリアクセスコントローラと、を有し、上記メモリアクセスコントローラが上記データ格納メモリから処理すべき転送データを指示するディスクリプタに、ハッシュアルゴリズムを用いた認証処理の指示と、共通鍵暗号アルゴリズムを用いた暗号化処理の指示に加え、認証処理と暗号化処理の並列実行処理の指示と、認証処理と暗号化処理の連続実行処理の指示が選択可能なディスクリプタフォーマットを含み、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを使用するか否かをディスクリプタにて指示できるディスクリプタフォーマットを含む。
【０００９】
好適には、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを保持する手段と、上記端数データを連結して使用するためにデータアライメントを行う手段とを有する。
【００１０】
好適には、処理すべきデータが、認証処理が対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて認証処理の指示を指定する。
【００１１】
好適には、処理すべきデータが、認証処理と暗号化処理の連続処理の対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて連続処理の指示を指定する。
【００１２】
好適には、前段のディスクリプタで指定した領域が認証アルゴリズムの処理単位に満たなかった場合でかつ連続処理においても当該端数データを連結して使用する場合、上記ディスクリプタでは連結の指示を指定する。
【００１３】
好適には、処理すべきデータが、暗号化処理の対象となる場合、上記ディスクリプタでは転送開始位置と転送サイズの指定に加えて暗号化処理の指示を指定する。
【００１４】
好適には、前段のディスクリプタで指示した領域が暗号アルゴリズムの処理単位に満たなかった場合でかつ暗号化処理においても当該端数データを連結して使用する場合、上記ディスクリプタでは連結の指示を指定する。
【００１５】
本発明の第２の観点は、ディスクリプタに基づいてデータ格納メモリから処理すべき転送データを指示し、ハッシュアルゴリズムによる認証処理と共通鍵暗号による暗号化処理に加え、認証処理と暗号化処理の並列処理および連続処理を行う暗号処理方法であって、上記ディスクリプタに、ハッシュアルゴリズムを用いた認証処理の指示と、共通鍵暗号アルゴリズムを用いた暗号化処理の指示に加え、認証処理と暗号化処理の並列実行処理の指示と、認証処理と暗号化処理の連続実行処理の指示が選択可能なディスクリプタフォーマットを含み、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、当該端数データを使用するか否かをディスクリプタにて指示できるディスクリプタフォーマットを含む。
【００１６】
本発明によれば、メモリアクセスコントローラがデータ格納メモリから処理すべき転送データを指示する情報となるディスクリプタに、認証処理を指示するフィールドと、暗号化処理を指示するフィールドと、認証処理と暗号化処理の並列処理を指示するフィールドと、認証処理と暗号化処理の連続処理を指示するフィールドを有するディスクリプタフォーマットになっており、さらに、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを使用するか否か指示するフィールドを有するディスクリプタフォーマットになっている。
このようなフォーマットを設けることにより、データ格納メモリに格納された全ての処理対象データのうち、認証処理のみに該当する処理対象データに対しては転送データ位置と転送データサイズと認証処理の指示を、また、暗号化処理のみに該当する処理対象データに対しては転送データ位置と転送データサイズと暗号処理の指示を、また、並列処理に該当する処理対象データに対しては転送データ位置と転送データサイズと並列処理の指示を、また、連続処理に該当する処理対象データに対しては転送データ位置と転送データサイズと連続処理の指示を、それぞれの処理対象データに対して指示する。
さらに、前段のディスクリプタで指示した処理対象データが、たとえばＤＥＳの処理を指示していて、かつ、ＤＥＳの処理単位（８バイト）に満たないデータサイズを指示していた場合に、次段で認証処理と暗号化処理の並列処理を指示して、前段の端数データとの連結を指示することにより、並列処理であったとしても、ＤＥＳの暗号化処理に関しては継続実行することと等価となる。
【００１７】
また、ディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを保持する。そして、ディスクリプタにて端数データを連結して使用すると指示した場合に、その端数データと新たに転送されるデータを連結して使用するためにデータアライメントを行う。
このような手段によると、端数データを連結して使用する際に、新たに転送されるデータに対して、端数データのデータ長を加味してデータ格納メモリ上などで、ソフトウエア等で事前にアライメント処理をする必要が無くなる。
【発明の効果】
【００１８】
本発明によれば、ネットワークセキュリティプロトコルに代表される認証処理と暗号化処理の様々な方式と、その方式をハードウェアにてアクセラレートする場合、認証処理と暗号化処理の並列処理および連続処理をより効率的に行うことが可能となる利点がある。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明の実施形態を図面に関連付けて説明する。
【００２０】
図１は、本発明に係る暗号処理装置の一実施形態を示すブロック図である。
【００２１】
本実施形態に係る暗号処理装置１０は、図１に示すように、ＣＰＵ１１、データ格納メモリ１２、データバス１３、イーサネット（登録商標）ＭＡＣ（Ethernet（登録商標） MAC）１４、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ；Direct Memory Access Controller ）１５、第１ローカルバス（Ａ）１６、セレクタ回路１７、データアライメント回路１８、データバッファ１９、ハッシュ処理ブロック２０、セレクタ回路２１、データアライメント回路２２、データバッファ２３、共通鍵暗号ブロック２４、第２ローカルバス（Ｂ）２５、および第３ローカルバス（Ｃ）２６を有する。
【００２２】
本実施形態の暗号処理装置１０は、以下の特徴を有する。
ＤＭＡＣ１５がデータ格納メモリ１２から処理すべき転送データを指示する情報となるＤＭＡディスクリプタに、認証処理を指示するフィールドと、暗号化処理を指示するフィールドと、認証処理と暗号化処理の並列処理を指示するフィールドと、認証処理と暗号化処理の連続処理を指示するフィールドを有するディスクリプタフォーマットになっており、さらに、前段のＤＭＡディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを使用するか否か指示するフィールドを有するディスクリプタフォーマットになっている。
これにより、データ格納メモリ１２に格納された全ての処理対象データのうち、認証処理のみに該当する処理対象データに対しては転送データ位置と転送データサイズと認証処理の指示を、また、暗号化処理のみに該当する処理対象データに対しては転送データ位置と転送データサイズと暗号処理の指示を、また、並列処理に該当する処理対象データに対しては転送データ位置と転送データサイズと並列処理の指示を、また、連続処理に該当する処理対象データに対しては転送データ位置と転送データサイズと連続処理の指示を、それぞれの処理対象データに対して指示可能としている。
さらに、前段のディスクリプタで指示した処理対象データが、たとえばＤＥＳの処理を指示していて、かつ、ＤＥＳの処理単位（８バイト）に満たないデータサイズを指示していた場合に、次段で認証処理と暗号化処理の並列処理を指示して、前段の端数データとの連結を指示することにより、並列処理であったとしても、ＤＥＳの暗号化処理に関しては継続実行することと等価となる。
【００２３】
また、ＤＭＡディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを保持する記憶手段と、ディスクリプタにて端数データを連結して使用すると指示した場合に、その端数データと新たに転送されるデータを連結して使用するためにデータアライメントを行う手段を有する。
これにより、端数データを連結して使用する際に、新たに転送されるデータに対して、端数データのデータ長を加味してデータ格納メモリ上などで、ソフトウエア等で事前にアライメント処理をする必要を無くしている。
【００２４】
本実施形態の暗号処理装置１０においては、データ格納メモリ１２が、データバス１３に接続され、同じくデータバス１３に接続されたＣＰＵ１１からの指示により、認証処理および暗号化処理を行うための処理対象データと、処理対象データの格納先と処理方法を指示するＤＭＡディスクリプタが、データ格納メモリ１２に格納される。
また、同じくデータバス１３に接続されたＤＭＡＣ１５は、データ格納メモリ１２に格納された処理すべき対象データの転送を行う。
【００２５】
ハッシュブロック２０はデータバッファ１９に接続され、データバッファ１９はハッシュアルゴリズムの処理単位になるまでデータを保持する。
さらに、データバッファ１９はデータアライメント回路１８に接続され、データアライメント回路１８はデータバッファ１９内に端数データが保持されていた場合に、それと連結するためのアライメント処理を行う。
さらに、データアライメント回路１８はセレクタ回路１７に接続され、セレクタ回路１７は、第１ローカルバス（Ａ）１６に接続されているＤＭＡＣ１５の出力データか、第２ローカルバス（Ｂ）２５に接続されている共通鍵暗号ブロック２４の出力データのいずれかを選択してデータアライメント回路１８に入力させる。
【００２６】
共通鍵暗号ブロック２４はデータバッファ２３に接続され、データバッファ２３は暗号アルゴリズムの処理単位になるまでデータを保持する。
さらに、データバッファ２３はデータアライメント回路２２に接続され、データアライメント回路２２はデータバッファ２３内に端数データが保持されていた場合に、それと連結するためのアライメント処理を行う。
データアライメント回路２２には第１ローカルバス（Ａ）１６に接続されているＤＭＡＣ１５の出力データが入力される。
セレクタ回路２１は、ハッシュブロック２０と共通鍵暗号ブロック２４の出力が接続され、それぞれのモジュールでの演算結果のいずれかを選択して、その出力はＤＭＡＣ１５に入力される。
イーサネットＭＡＣ（Ethernet MAC）１４はデータバス１３に接続され、認証処理や暗号処理を終えた処理データがＤＭＡＣ１５の出力として、イーサネットＭＡＣ（Ethernet MAC）１４に供給される。
【００２７】
以下に、上記構成による動作をさらに詳細に説明する。
【００２８】
図２は、一般的なＤＭＡディスクリプタのリンクの様子と、認証処理、暗号化処理、並列処理、連続処理を行うために必要な情報を格納する方法を示す図である。
ここで示す例は一般的にはスキャッタ・ギャザ方式と呼ばれ、メモリ上に散在するデータを取り込むためにＤＭＡディスクリプタを用い、ＤＭＡディスクリプタの内容に従い、取り込むべきデータを処理するものである。
【００２９】
図２のＤＭＡディスクリプタＡ１には、処理すべきデータＡ４の情報が格納されている。ここでは例として、第１１ワード目が処理すべきデータＡ４の先頭アドレス、第２ワード目が処理すべきデータＡ４の長さ、第４ワード目が次に処理すべきＤＭＡディスクリプタＡ２の先頭アドレスを示す構成例となっている。
同様に、ＤＭＡディスクリプタＡ２は処理すべきデータＡ５に対応し、ＤＭＡディスクリプタＡ３は処理すべきデータＡ６に対応している。
ここでは、ＤＭＡディスクリプタＡ１，Ａ２，Ａ３の第３ワード目は他の処理情報とは重なってはいない。このため、その第３ワード目に、認証処理、暗号化処理、並列処理、連続処理を行うために必要な情報を格納する領域として割り当てる。
また、第３ワード目には、端数データを使用するか否か（連結／非連結）を指示する情報も併せて割り当てる。
【００３０】
処理すべきデータが、Ａ４で示される認証処理が対象となる領域の場合、ＤＭＡディスクリプタでは転送開始位置と転送サイズの指定に加えて認証処理の指示を指定する。
処理すべきデータが、Ａ５で示される認証処理と暗号化処理の連続処理が対象となる領域の場合、ＤＭＡディスクリプタでは転送開始位置と転送サイズの指定に加えて連続処理の指示を指定する。
また、前段のＤＭＡディスクリプタで指定した領域が認証アルゴリズムの処理単位に満たなかった場合でかつ連続処理においてもその端数データを連結して使用する場合、ＤＭＡディスクリプタには連結の指示を指定する。
処理すべきデータが、Ａ６で示される暗号化処理の対象となる領域の場合、ＤＭＡディスクリプタでは転送開始位置と転送サイズの指定に加えて暗号化処理の指示を指定する。
また、前段のＤＭＡディスクリプタで指示した領域が暗号アルゴリズムの処理単位に満たなかった場合でかつ暗号化処理においてもその端数データを連結して使用する場合、ＤＭＡディスクリプタには連結の指示を指定する。
【００３１】
図３は、実例として、ＴＬＳ送信処理時を例にして、平文状態の処理対象データに対して本発明を用いて暗号化および認証処理を行う手順を示す図である。
具体的には、図３は本実施の形態の実例を、ＴＬＳ送信処理時の場合を例にとり、認証処理の対象となるデータ領域と、認証処理と暗号化処理の並列処理の対象となるデータ領域と、暗号化処理の対象となるデータ領域を示し、連結処理に該当するデータ領域と、データアライメントされる様子を示した説明図である。
【００３２】
TLSPlaintextからTLSCiphertextへの変換は、まず認証アルゴリズムによりＭＡＣを生成し、次に暗号化を行うという手順となる。
ＭＡＣはシーケンス番号（sequence numbe；コネクション端点で保持される内部変数で送信パケットには含まれない)とTLSPlaintextのタイプ（type）, バージョン（version), 長さ(length), フラグメント(fragment) を結合したデータに対してＨＭＡＣ(Hashing Message Authentication Code)を掛けることで生成する。
暗号化は、TLSPlaintextのフラグメント（fragment）と先に生成したＭＡＣに、データの長さが暗号化アルゴリズムにおけるブロック長の倍数となるようにパディングを加えた領域に対して行う。パディングの最後には、パディング自身の長さを示す１バイトのデータが付加される。
【００３３】
図３は、暗号アルゴリズムとしてDES-CBC、認証アルゴリズムとしてHMAC-MD5を用いて送信処理をおこなうときのディスクリプタ設定と、各ディスクリプタによってメインメモリにセットされたデータが処理されてゆく様子を示している。
ＤＥＳのＣＢＣモードで必要となるＩＶと鍵、およびＨＭＡＣモードで必要となる鍵は、ここでは予めセットされていることを前提としている。
この例では、ディスクリプタは４つ使用している。メインメモリには、TLSCiphertextの雛型となるデータを用意する。また、シーケンス番号（sequence number ）は送信データの一部ではないが、認証処理の計算の一部として使用されるので併せて用意しておく。
【００３４】
ディスクリプタＤＳＰＴ１の処理では、シーケンス番号（sequence number ），タイプ(type), バージョン(version),長さ(length)に対して、ＨＭＡＣ−ＭＤ５による認証処理を指示する。これにより、ＤＭＡ転送されるデータＤＴ１〜データＤＴ９は、ハッシュブロックに入力される。
【００３５】
次に、ディスクリプタＤＳＰＴ２の処理では、fragmentに対して、HMAC-MD5による認証処理とＤＥＳ−ＣＢＣによる暗号化処理の並列処理を指示する。
ＴＬＳでは、認証アルゴリズムによりＭＡＣを生成し、次に暗号化を行うという手順となるため、並列処理を指示する。
これにより、ＤＭＡ転送されるデータＤＴ１０〜データＤＴ３６は、ハッシュブロックと暗号ブロックの双方に入力される。
ここで、前段のディスクリプタＤＳＰＴ１で指示した処理対象データは、ＭＤ５の処理単位である５１２バイトの倍数ではないため、ディスクリプタＤＳＰＴ２では端数データの使用（連結）を指示する。
これにより、ハッシュブロック入力には、保持している端数データとアライメント回路１８によりデータアライメントされたデータが入力される。
【００３６】
次に、ディスクリプタＤＳＰＴ３の処理では、ハッシュ計算結果を格納する定領域(MAC)に対して、通常のデータ転送（図３ではコピーモードと記す）を指示する。これによりハッシュ演算結果がデータＤＴ３７〜データＤＴ５２の領域にセットされる。
【００３７】
次に、ディスクリプタＤＳＰＴ４の処理では、MAC, padding, pad len に対して、ＤＥＳ−ＣＢＣによる暗号化処理を指示する。
これにより、ＤＭＡ転送されるデータＤＴ３７〜データＤＴ５７は、暗号ブロックに入力される。ここで、前段のディスクリプタ２で指示した処理対象データは、ＤＥＳの処理単位である８バイトの倍数ではないため、ディスクリプタＤＳＰＴ４では端数データの使用（連結）を指示する。
これにより、暗号ブロック入力には、保持している端数データとアライメント回路２２によりデータアライメントされたデータが入力される。
【００３８】
これら一連の処理により、一つの送信データの処理が完了する。処理済みのデータは、たとえば、図１に示すブロック図のイーサネットＭＡＣ（Ethernet MAC）モジュール１４内に有するＦＩＦＯやＲＡＭ等のデータ格納メモリに対して順次ＤＭＡ転送することにより、順次イーサネット（Ethernet）から送出可能となる。
【００３９】
図４は、実例として、ＩＰsec ＥＳＰ送信処理時を例にして、平文状態の処理対象データに対して本発明を用いて暗号化および認証処理を行う手順を示す図である。
具体的には、図４は本実施の形態の実例を、ＩＰsec ＥＳＰ送信処理時の場合を例にとり、認証処理の対象となるデータ領域と、認証処理と暗号化処理の連続処理の対象となるデータ領域と、暗号化処理の対象となるデータ領域を示し、連結処理に該当するデータ領域と、データアライメントされる様子を示した説明図である。
【００４０】
ＩＰsec ＥＳＰにおけるＥＳＰパケットの生成は、まず暗号化アルゴリズムによりペイロードデータを暗号化し、次にＥＳＰヘッダと暗号化を行なったペイロードデータに対してＭＡＣを生成するという手順となる。
ＥＳＰヘッダはＳＰＩとシーケンス番号で構成される。また、ＣＢＣモードの暗号化アルゴリズムを用いた場合は、ＥＳＰヘッダとペイロードデータの間にＩＶを入れる必要がある。
暗号化は、ペイロードとパディング、パディング長、次ヘッダ番号を結合したデータに対して暗号化を行う。
認証処理は、ＥＳＰヘッダ（ＳＰＩとシーケンス番号）とＩＶと暗号化データに対してＨＭＡＣ(Hashing Message Authentication Code)を掛けることで生成し、ハッシュ計算結果は認証データとして、暗号化データの次に付加される。
【００４１】
図４は、暗号アルゴリズムとしてＤＥＳ−ＣＢＣ、認証アルゴリズムとしてＨＭＡＣ−ＭＤ５を用いて送信処理を行うときのディスクリプタ設定と、各ディスクリプタによってメインメモリにセットされたデータが処理されてゆく様子を示している。
【００４２】
ＤＥＳ−ＣＢＣモードで必要となるＩＶと鍵、およびＨＭＡＣモードで必要となる鍵は、ここでは予めセットされていることを前提としている。
この例では、ディスクリプタを４つ使用している。メインメモリには、ＥＳＰヘッダ（ＳＰＩとシーケンス番号）、ＩＶ、ペイロード、パディング、パディング長、次ヘッダ番号を用意しておく。
【００４３】
ディスクリプタＤＳＰＴ１の処理では、ＥＳＰヘッダ（ＳＰＩとシーケンス番号）とＩＶに対して、ＨＭＡＣ−ＭＤ５による認証処理を指示する。
これにより、ＤＭＡ転送されるデータＤＴ１〜データＤＴ１６は、暗号ブロックに入力される。
【００４４】
次に、ディスクリプタＤＳＰＴ２の処理では、ペイロード、パディング、パディング長、次ヘッダ番号に対して、ＨＭＡＣ−ＭＤ５による認証処理とＤＥＳ−ＣＢＣによる暗号化処理の連続処理を指示する。
ＩＰsec ＥＳＰでは、暗号化を行った後、認証アルゴリズムにより認証データを生成するという手順となるため、連続処理を指示する。
これにより、ＤＭＡ転送されるデータＤＴ１７〜データＤＴ５２は、最初に暗号ブロックに入力され、暗号化されたデータが続けてハッシュブロックに入力される。
ここで、前段のディスクリプタＤＳＰＴ１で指示した処理対象データは、ＭＤ５の処理単位である５１２バイトの倍数ではないため、ディスクリプタＤＳＰＴ２では端数データの使用（連結）を指示する。
これにより、ハッシュブロック入力には、保持している端数データとアライメント回路１８によりデータアライメントされたデータが入力される。
【００４５】
次に、ディスクリプタＤＳＰＴ３の処理では、ハッシュ計算結果を格納する所定領域（認証データ）に対して、通常のデータ転送（図４ではコピーモードと記す）を指示する。
これにより、ハッシュ演算結果がデータＤＴ５３〜データＤＴ６４の領域にセットされる。
【００４６】
これら一連の処理により、一つの送信データの処理が完了する。処理済みのデータは、たとえば、図１に示すブロック図のイーサネットＭＡＣ（ Ethernet MAC ）モジュール１４内に有するＦＩＦＯやＲＡＭ等のデータ格納メモリに対して順次ＤＭＡ転送することにより、順次イーサネット（Ethernet）から送出可能となる。
【００４７】
ここで取り上げた実例では、暗号化アルゴリズムはＤＥＳを用いる例を示しているが、使用する暗号アルゴリズムはＡＥＳなどの他のアルゴリズムであっても構わない。
他のアルゴリズムを適応される場合は、たとえばＡＥＳの場合は処理単位が１６バイトのため図１のデータバッファ２３は１６バイト分保持させれば良い。
同様に、ハッシュアルゴリズムはＭＤ５を用いる例を示しているが、使用するハッシュアルゴリズムはＳＨＡ−１などの他のアルゴリズムであっても構わない。
【００４８】
以上説明したように、本実施形態によれば、ＤＭＡＣ１５がデータ格納メモリ１２から処理すべき転送データを指示する情報となるＤＭＡディスクリプタに、認証処理を指示するフィールドと、暗号化処理を指示するフィールドと、認証処理と暗号化処理の並列処理を指示するフィールドと、認証処理と暗号化処理の連続処理を指示するフィールドを有するディスクリプタフォーマットになっており、さらに、前段のディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを使用するか否か指示するフィールドを有するディスクリプタフォーマットになっているため、データ格納メモリに格納された処理対象データに対して、対応する処理内容（認証処理、暗号化処理、並列処理、連続処理）と転送データ位置および転送サイズをそれぞれ指定することが可能となる。
さらに、前段のディスクリプタで指示した処理対象データが、例えばDESの処理を指示していて、かつ、ＤＥＳの処理単位（８バイト）に満たないデータサイズを指示していた場合に、次段で認証処理と暗号化処理の並列処理を指示して、前段の端数データとの連結を指示することにより、並列処理であったとしても、ＤＥＳの暗号化処理に関しては継続実行することと等価の動作になり、一回のデータ読み込みで処理ができ、バス使用効率の向上、および、QoS実現の効果が見込まれる。
【００４９】
ディスクリプタで指示した処理対象データが、各種暗号アルゴリズムの処理単位に満たなかった場合に、その端数データを保持する記憶手段と、ディスクリプタにて端数データを連結して使用すると指示した場合に、その端数データと新たに転送されるデータを連結して使用するためにデータアライメントを行う手段を有しているため、上記効果に加えて、端数データを連結して使用する際に、新たに転送されるデータに対して、端数データのデータ長を加味してソフトウエア等で事前にアライメント処理をする必要が無くなるという利点がある。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施の形態の構成を示すブロック図である。
【図２】一般的なＤＭＡディスクリプタのリンクの様子と、暗号化処理／認証処理／並列処理／連続処理、および端数データの連結処理を行うために必要な情報を格納する方法を示した説明図である。
【図３】本実施の形態の実例を、ＴＬＳ送信処理時の場合を例にして示した説明図である。
【図４】本実施の形態の実例を、ＩＰsec ＥＳＰ送信処理時の場合を例にして示した説明図である。
【符号の説明】
【００５１】
１０…暗号処理装置、１１…ＣＰＵ、１２…データ格納メモリ、１３…データバス、１４…イーサネットＭＡＣ（Ethernet MAC）、１５…ＤＭＡＣ、１６…第１ローカルバス（Ａ）、１７…セレクタ回路、１８…データアライメント回路、１９…データバッファ、２０…ハッシュ処理ブロック、２１…セレクタ回路、２２…データアライメント回路、２３…データバッファ、２４…共通鍵暗号ブロック、２５…第２ローカルバス（Ｂ）、２６…第３ローカルバス（Ｃ）。
【図１】
2006041684.tif 000003
【図２】
2006041684.tif 000004
【図３】
2006041684.tif 000005
【図４】
2006041684.tif 000006