(57)【要約】【課題】複数のメッセージに対する暗号・認証処理を効率的に並行して実行する。【解決手段】情報処理装置において、各々が、暗号処理および認証処理を所定のブロック単位で切替えて処理可能であり、互いに並行して動作可能に構成された複数の暗号・認証手段と、暗号および認証の処理要求に伴う処理対象データを前記複数の暗号・認証手段に分配するデータ転送制御手段と、を有し、前記データ転送制御手段は、複数の処理要求に含まれる各々の処理要求について、前記複数の暗号・認証手段の各々が、前記暗号処理と前記認証処理とを前記所定のブロック単位で交互に行うように、前記処理対象データを分配する。【選択図】図１
2010154500.tif 000002
【特許請求の範囲】
【請求項１】
各々が、AES-CBCの暗号処理およびAES-XCBC-MAC-96の認証処理の双方を処理可能であり、互いに並行して動作可能に構成された複数の暗号・認証手段と、
暗号および認証の処理要求に伴う処理対象データを前記複数の暗号・認証手段に分配するデータ転送制御手段と、
を有し、
前記データ転送制御手段は、一つの処理要求について、前記複数の暗号・認証手段の一つが前記暗号処理を行い、前記複数の暗号・認証手段の他の少なくとも一つが前記認証処理を行うように、前記処理対象データを分配することを特徴とする情報処理装置。
【請求項２】
各々が、AES-CBCの暗号処理およびAES-XCBC-MAC-96の認証処理を所定のブロック単位で切替えて処理可能であり、互いに並行して動作可能に構成された複数の暗号・認証手段と、
暗号および認証の処理要求に伴う処理対象データを前記複数の暗号・認証手段に分配するデータ転送制御手段と、
を有し、
前記データ転送制御手段は、複数の処理要求に含まれる各々の処理要求について、前記複数の暗号・認証手段の各々が、前記暗号処理と前記認証処理とを前記所定のブロック単位で交互に行うように、前記処理対象データを分配することを特徴とする情報処理装置。
【請求項３】
各々が、AES-CBCの暗号処理およびAES-XCBC-MAC-96の認証処理を所定のブロック単位で切替えて処理可能であり、互いに並行して動作可能に構成された複数の暗号・認証手段と、
暗号および認証の処理要求に伴う処理対象データを前記複数の暗号・認証手段に分配するデータ転送制御手段と、
前記処理要求の発生状況に応じて、前記データ転送制御手段における動作モードの切り替えを行う切替手段と、
を有し、
前記データ転送制御手段は、
前記複数の暗号・認証手段の一つが前記暗号処理を行い、前記複数の暗号・認証手段の他の少なくとも一つが前記認証処理を行うように前記処理対象データを分配する第１の動作モードと、
前記複数の暗号・認証手段の各々が、前記暗号処理と前記認証処理とを所定のブロック単位で交互に行うように、前記処理対象データを分配する第２の動作モードと、
の２つの動作モードを有する
ことを特徴とする情報処理装置。
【請求項４】
前記切替手段は、前記処理要求が１つである場合に前記第１の動作モードに切り替え、前記処理要求が複数個である場合に前記第２の動作モードに切り替えることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記複数の暗号・認証手段は、前記暗号処理と前記認証処理とを同一サイズのブロック単位で実行することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記データ転送制御手段は、クロスバスイッチを用いて前記処理対象データを前記複数の暗号・認証手段に分配することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
互いに並行して動作可能に構成された、AES-CBCの暗号処理を行なう暗号手段とAES-XCBC-MAC-96の認証処理を行なう認証手段と
暗号および認証の処理要求に伴う処理対象データを前記暗号手段または前記認証手段に分配するデータ転送制御手段と、
を有し、
前記データ転送制御手段は、複数の処理要求に含まれる各々の処理要求について、前記暗号手段による前記暗号処理と前記認証手段による前記認証処理とが、所定のブロック単位で交互に行われるように、前記処理対象データを分配することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号／暗号復号処理と認証処理の双方にAES(Advanced Encryption Standard)アルゴリズムを適用した情報処理装置に関するものである。
【背景技術】
【０００２】
近年、インターネットを介した大容量の通信が普及している。これに伴って通信のセキュリティを確保するために、デジタルデータは所定のアルゴリズムによって暗号化されると共に、通信途中の改竄を検出できるように所定のアルゴリズムによってメッセージ認証処理が行われる。最近、セキュアな通信を実現する為のプロトコルの１つであるIPSEC(IP Security)において、認証アルゴリズムとして処理速度が速く、安全性が高いという特徴を持つAESベースのAES-XCBC-MAC-96が採用されることとなった。
【０００３】
従来、メッセージ認証を行うためのMAC（Message Authentication Code）値を生成するハッシュ関数としては、入力データを64バイト毎のブロック単位で取り扱うMD5或いはSHA-1というハッシュ関数が用いられている。しかしながら、これらのハッシュ関数においては、ブロック長が64バイトと大きいために処理を高速化できず、また、160ビットのMAC値を用いる場合におけるセキュリティ上の脆弱性が指摘され始めてきた。
【０００４】
ここで、複数のメッセージに対して並行してIPSECのプロトコル処理を行う必要がある場合について考えると、通常IPSECにおける暗号処理および認証処理を実行するリソースは各々１つであるために、効率的な並行処理を行うことは困難であった。すなわち、一方のメッセージを処理した後、当該メッセージの処理を一旦中断し、他方のメッセージを処理し、その後に最初のメッセージの処理を再開するために、暗号処理、メッセージ認証処理を中断および再開させるソフトウエア制御が必要であった。
【０００５】
そこで、例えば、特許文献１には、暗号処理と認証処理の各処理範囲が異なる場合に、重複部分のデータ転送を１回で行い並列処理する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１４８８９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の特許文献１に記載された技術においては、複数のメッセージを並行に処理するためには、暗号処理部および認証処理部の入力データおよび出力データをソフトウエア制御により切替えて、各メッセージの処理を中断および再開する必要がある。そのため、ソフトウエア制御による処理オーバーヘッドが大きくなってしまうという問題がある。
【０００８】
また、例えば、IPSECにおいてブロック長16バイトの暗号アルゴリズムであるAES-CBCと、ブロック長64バイトの認証処理アルゴリズムであるSHA-1を組み合わせて用いた場合、以下のような問題があった。すなわち、IPSECでは暗号処理した後に認証処理を行なうといったように処理間に依存関係があるため、最小処理単位の大きい処理（この場合、認証処理）の処理タイミングに合わせて、データを他方に受け渡す必要がある。したがって、たとえ暗号処置と認証処理を単純にパイプライン的に並列動作させたとしても、処理単位が同じ場合に比較して高速化には限界があった。
【０００９】
本発明は上述の問題点に鑑みなされたものであり、IPSECの暗号処理および認証処理の並行動作をより高速に実行可能とする技術を提供する。
【課題を解決するための手段】
【００１０】
上述の１以上の問題点を解決するため、本発明の情報処理装置は以下の構成を備える。すなわち、情報処理装置において、各々が、AES-CBCの暗号処理およびAES-XCBC-MAC-96の認証処理を所定のブロック単位で切替えて処理可能であり、互いに並行して動作可能に構成された複数の暗号・認証手段と、暗号および認証の処理要求に伴う処理対象データを前記複数の暗号・認証手段に分配するデータ接続制御手段と、を有し、前記データ接続制御手段は、複数の処理要求に含まれる各々の処理要求について、前記複数の暗号・認証手段の各々が、前記暗号処理と前記認証処理とを前記所定のブロック単位で交互に行うように、前記処理対象データを分配する。
【発明の効果】
【００１１】
本発明によれば、複数のメッセージに対するIPSECの暗号処理および認証処理を並行して行う際に、高速化が実現される。
【図面の簡単な説明】
【００１２】
【図１】本発明に係る第１実施形態における暗号処理装置の構成を示すブロック図である。
【図２】IPv4におけるトランスポートモードの場合の、IPSECのESPのパケット形式の一例を示した図である。
【図３】第１実施形態において、一方のAES暗号・認証コアを認証処理に、他方を暗号処理に使用したパイプライン動作のタイミングチャートを示す図である。
【図４】第１実施形態において、１つのAES暗号・認証コアを認証処理と暗号処理の交互に使用したパイプライン動作のタイミングチャートを示す図である。
【図５】第２実施形態におけるAES暗号コアの構成を示すブロック図である。
【図６】第２実施形態におけるAES認証コアの構成を示すブロック図である。
【図７】１つの処理要求に対し、AES暗号コアにおいて暗号の符号化処理を行ない、AES認証コアにおいて認証処理を行なう場合の動作のタイミングチャートを示す図である。
【図８】１つの処理要求に対し、AES暗号コアにおいて暗号の復号化処理を行ない、AES認証コアにおいて認証処理を行なう場合の動作のタイミングチャートを示す図である。
【図９】２つの処理要求に対し、AES暗号コアにおいて暗号の符号化処理を行ない、AES認証コアにおいて認証処理を行なう場合の動作のタイミングチャートを示す図である。
【発明を実施するための形態】
【００１３】
以下、添付の図面を参照して、本発明を好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。なお、用語”暗号処理”は所定の暗号アルゴリズムを用いた暗号（符号）化処理および暗号復号化処理の双方を示しており、用語”認証処理”は所定の認証アルゴリズムを用いたメッセージ認証符号の生成処理を示している。
【００１４】
＜第１実施形態＞
第１実施形態においては、セキュアな通信プロトコルとしてIPSECを使用するため、データ転送プロトコルとしてESP（Encapsulating Security Payload）を利用する。特に、暗号アルゴリズムとしてAES-CBCを使用する暗号処理、認証アルゴリズムとしてAES-XCBC-MAC-96を使用する認証処理（以降、”暗号／認証処理”と略す）の双方を処理可能なAES暗号・認証コアを用いる例について説明する。また、第１実施形態においては、互いに並行して動作可能に構成された２つの同一構成のAES暗号・認証コアを用いる例について説明する。
【００１５】
●装置構成
図１は、第１実施形態における情報処理装置である暗号処理装置の構成を示すブロック図である。同図において、１００はIPSECを実現する暗号処理装置であり、特にデータ転送時に行われる暗号・認証処理に関わる構成要素のみを記載している。
【００１６】
暗号処理装置１００において、１０１は装置全体の制御を司るメインCPUであり、１０２はメインCPU１０１の主記憶部として機能するメモリである。１０３はデータ信号、アドレス信号、制御信号等から構成されるシステムバスである。１０４，１０５はそれぞれ、メモリ１０２と後述するデータ転送制御部１０６との間でデータを転送するDMAコントローラ（DMAC_A，DMAC_B）である。
【００１７】
１０７，１０８はそれぞれ、AES-CBCあるいはAES-XCBC-MAC-96の処理を行なう処理部として機能するAES暗号・認証コア１，AES暗号・認証コア２であり、以降、単に暗号・認証コア１０７，１０８、と称する。１０６は、DMAC_A１０４，DMAC_B１０５，暗号・認証コア１０７，暗号・認証コア１０８間において、所定の接続形態でデータ転送を実現するデータ転送制御部である。
【００１８】
以下、暗号・認証コア１０７，暗号・認証コア１０８の詳細構成について説明する。なお、暗号・認証コア１０７と暗号・認証コア１０８は基本的に同様の構成からなるため、ここでは特に暗号・認証コア１０７について説明する。すなわち図１では、暗号・認証コア１０７の内部構成に付した参照番号の第１桁である「２」を、暗号・認証コア１０８においては「３」として示している。
【００１９】
暗号・認証コア１０７において、２００はAESの16バイト（128ビット）の１ブロック分の入力データに対するブロック符号化処理を行うAESコアである。２０１は暗号・認証コア１０７の全体制御を司るAES制御部である。２０２はAES-CBCの初期ベクタを格納した暗号初期値であり、２０３はAES-XCBC-MAC-96の初期ベクタを格納した認証初期値である。２０４は、AES-XCBC-MAC-96の最終ブロックの処理においてメッセージ長がブロック長の倍数であるか否かに応じて選択的に鍵K2或いはK3を加算する鍵K2／K3部であり、２０５は５入力の排他的論理和として機能する加算器である。
【００２０】
２０６は、AESコア２００からの暗号出力データを保持する暗号出力保持部であり、２０７はAESコア２００からの認証出力データを保持する認証出力保持部である。２０８は暗号初期値２０２と暗号出力保持部２０６をブロック番号に応じて切替えるためのセレクタであり、２０９は認証初期値２０３と認証出力保持部２０７をブロック番号に応じて切替えるためのセレクタである。
【００２１】
２１０は、加算器２０５の出力、セレクタ２０８の出力、セレクタ２０９の出力、を選択的に切替えるためのセレクタである。２１１は、データ転送制御部１０６から出力される暗号処理用メッセージを暗号・認証コア１０７に入力する暗号処理用入力である。２１２は、データ転送制御部１０６から出力される認証処理用メッセージを暗号・認証コア１０７に入力する認証処理用入力である。２１３は鍵K2／K3部２０４の出力であり、２１４はセレクタ２０８の出力、２１５はセレクタ２０９の出力である。また、２１６は加算器２０５の出力であり、２１７はセレクタ２１０の出力である。
【００２２】
以下、データ転送制御部１０６の詳細構成について説明する。
【００２３】
データ転送制御部１０６において、４００はDMAC_A１０４，DMAC_B１０５，暗号・認証コア１０７，暗号・認証コア１０８間でのデータ転送の接続経路を構成するクロスバスイッチである。４０１は、DMAC_A１０４，DMAC_B１０５から転送されるメッセージに対する暗号・認証処理要求を管理する処理要求制御部である。４０２は、暗号・認証コア１０７，１０８の処理状態を監視するコア制御部である。
【００２４】
４０３，４０４は各々、DMAC_A１０４，DMAC_B１０５からの転送データを保持する処理データ保持部A，処理データ保持部Bである。４０５，４０６は各々、DMAC_A１０４，DMAC_B１０５，暗号・認証コア１０７，１０８からの転送データより、被暗号処理データ（暗号化の対象となるデータ）および被認証処理データ（認証の対象となるデータ）を形成する、処理データ加工部A，処理データ加工部Bである。このデータ形成方法としては、転送データより暗号処理および認証処理に必要な範囲のデータを切り取り、必要に応じて付加データを挿入することによって、被暗号処理データおよび被認証処理データを形成する。４０７，４０８は各々、DMAC_A１０４，DMAC_B１０５からの転送データより形成された暗号処理用データを保持する暗号データ保持部A，暗号データ保持部Bである。４０９，４１０は各々、DMAC_A１０４，DMAC_B１０５からの転送データより形成された認証処理用データを保持する認証データ保持部A，認証データ保持部Bである。
【００２５】
４１１，４１２は各々、暗号・認証コア１０７，１０８からの出力データを保持する出力データ保持部１，出力データ保持部２であり、以降、単に出力データ保持部４１１，４１２と称する。
【００２６】
以下、処理要求制御部４０１の詳細構成について説明する。
【００２７】
４１３は、IPSECの暗号・認証処理等、処理要求の種別を保持する処理種別保持部である。４１４は、処理種別保持部４１３に保持された処理要求に関わる暗号・認証処理の各処理ブロック長を保持する処理ブロック長保持部である。４１５は、各処理要求に対する処理の優先度を保持する処理優先度保持部である。
【００２８】
以下、コア制御部４０２の詳細構成について説明する。
【００２９】
４１６は、接続される各暗号・認証コアの稼動状態を保持するコア状態保持部である。４１７，４１９は各々、暗号・認証コア１０７，１０８における暗号処理の処理ブロック数をカウントする暗号ブロックカウンタ１，２である。４１８，４２０は各々、暗号・認証コア１０７，１０８における認証処理の処理ブロック数をカウントする認証ブロックカウンタ１，２である。
【００３０】
また、メモリ１０２には、処理要求１および処理要求２用の処理データ１および処理データ２が、それぞれ５００，５０１として格納されている。
【００３１】
●パケット形式
図２に、IPv4におけるトランスポートモードの場合の、IPSECのESPパケット形式例を示す。同図において、被暗号処理データ（暗号化の対象となるデータ）であるPayloadは、TCPヘッダ、データ（通信内容）、ESPトレーラ、から成る。ESPトレーラは、任意長のパディングデータとパディング長、および次ヘッダから成る。
【００３２】
また被認証処理データ（認証の対象となるデータ）は、ESPヘッダと暗号アルゴリズムの初期ベクタ（Initial Vector:IV）、および上述した被暗号処理データを暗号化（符号化）した暗号データ、から成る。ESPヘッダは、4バイトのSPI（Security Pointer Index）と4バイトのシーケンス番号から成る。
【００３３】
そしてESPは、上述した被認証処理データと、該被認証処理データから算出されるMAC値から構成される。更に、ESPにIPヘッダが付加され、通信相手に送信される。
【００３４】
●各コアを固定利用したパイプライン動作（第１の動作モード）
第１実施形態の暗号処理装置においては、１つのIPSEC処理要求に対して、暗号・認証コア１０７，１０８の片方を暗号用として、他方を認証用として固定的に利用することによって、パイプライン動作を実現する。
【００３５】
図３は、１つのIPSEC処理要求に対して、暗号・認証コア１０７，１０８の片方を暗号用として、他方を認証用として固定的に利用した場合のパイプライン動作を示すタイミングチャートである。第１実施形態では、この場合のパイプライン動作を第１の動作モードとする。図３において、J1-＊はある１つの処理要求（処理要求１）に関するデータであることを示す。例えば、J1-D0は処理要求１の被暗号化データの１番目のブロックデータを示し、またJ1-C0は、処理要求１の被暗号化データの１番目のブロックデータに対する暗号処理結果（暗号化データの１番目のブロックデータ）を示す。またJ1-M0は、処理要求１の被認証処理データの１番目のブロックデータを示し、J1-H0は、処理要求１の被認証処理データの１番目のブロックデータに対する認証処理の途中結果のデータを示す。
【００３６】
以下、暗号・認証コア１０７，１０８をそれぞれ暗号用、認証用のいずれかに固定利用した、第１の動作モードによるパイプライン動作について詳細に説明する。
【００３７】
メインCPU１０１は１つのIPSECの処理要求を処理する場合、メモリ１０２内に格納された当該処理要求用のデータをデータ転送制御部１０６に転送する必要がある。そのためにメインCPU１０１は、DMAC_A１０４にDMA要求を発行するように、データ転送制御部１０６内の処理要求制御部４０１を制御する。尚、メインCPU１０１は不図示のレジスタアクセスにより、処理要求制御部４０１の処理種別保持部４１３に、「IPSEC（暗号アルゴリズム：AES-CBC，認証アルゴリズム：AES-XCBC-MAC-96）」を設定する。同様に、処理ブロック長保持部４１４にはペイロードのブロック長を、処理優先度保持部４１５には通常優先度を設定する。
【００３８】
データ転送制御部１０６は、処理要求が１つの場合には上述したように、暗号・認証コア１０７を暗号処理に、暗号・認証コア１０８を認証処理に使用するように、処理対象データを分配制御する。すなわちデータ転送制御部１０６は、暗号・認証コア１０７が暗号処理を実行し、暗号・認証コア１０８が認証処理を実行するように、AES制御部２０１，３０１のそれぞれを制御する。
【００３９】
なお、２つの処理要求が同時に発生している場合には、データ転送制御部１０６は、暗号・認証コア１０７，１０８の各々に対して暗号処理と認証処理を交互に実行させるように処理対象データを分配制御するが、その詳細については後述する。
【００４０】
処理要求が１つの場合、データ転送制御部１０６は、DMAC_A１０４によってメモリ１０２内の当該処理要求用のデータが転送されると、これを処理データ保持部A４０３に格納する。そして処理データ加工部A４０５において、処理データ保持部A４０３に保持されたデータに対してパディングビット、パディング長、次ヘッダから成るESPトレーラを付加して、被暗号処理データであるペイロードを形成する。このように形成されたペイロードは、暗号データ保持部A４０７に16バイトのブロック長毎に出力される。そしてデータ転送制御部１０６は、暗号データ保持部A４０７に保持したペイロードのデータを、クロスバスイッチ４００を介して、暗号・認証コア１０７内の暗号処理用入力２１１に接続する。
【００４１】
また、データ転送制御部１０６は、暗号・認証コア１０７から転送される暗号化データを出力データ保持部４１１に格納し、クロスバスイッチ４００を介して処理データ加工部A４０５に接続する。そして処理データ加工部A４０５において、ESPヘッダ、IV、16バイトのブロック長毎に、出力データ保持部４１１に格納した暗号化データから被認証処理データを形成して、認証データ保持部A４０９に16バイトのブロック長毎に出力する。そしてデータ転送制御部１０６は、認証データ保持部A４０９に保持した被認証処理用データを、クロスバスイッチ４００を介して、暗号・認証コア１０８の認証処理用入力３１２に接続する。
【００４２】
暗号・認証コア１０７では、16バイトのブロック毎に、加算器２０５でセレクタ２０８の出力２１４と暗号処理用入力２１１としての被暗号処理データを加算した上で、AESコア２００においてAESブロック暗号演算処理を行う。そして、該暗号演算処理結果を暗号出力保持部２０６に保持するという動作を繰り返す。尚、セレクタ２０８は、１番目のブロックの場合は暗号初期値２０２を選択し、２番目以降のブロックの場合は暗号出力保持部２０６を選択する。またセレクタ２１０は、セレクタ２０８の出力２１４を選択して、暗号・認証コア出力２１７としてデータ転送制御部１０６に出力する。
【００４３】
暗号・認証コア１０８では、16バイトのブロック毎に、加算器３０５でセレクタ３０９の出力３１５と認証処理用入力３１２としての被認証処理データを加算した上で、AESコア３００においてAESブロック暗号演算処理を行う。そして、該暗号演算処理結果を認証出力保持部３０７に保持するという動作を繰り返す。尚、セレクタ３０９は、１番目のブロックの場合は認証初期値３０３を選択し、２番目以降のブロックの場合は認証出力保持部３０７を選択する。また、鍵K2／K3部３０４は、最後のブロックの場合は、メッセージ長がブロック長の倍数であるか否かに応じて、各々K2，K3を加算器３０５に出力する。セレクタ３１０はセレクタ３０９の出力３１５を選択して、暗号・認証コア３１７としてデータ転送制御部１０６に出力する。
【００４４】
尚、暗号・認証コア１０７，１０８における各暗号処理あるいは認証処理のブロック数は、データ転送制御部１０６内のコア制御部４０２における各カウンタでカウントされる。
【００４５】
第１実施形態では以上で説明したように、１つのIPSEC処理要求に対して、暗号・認証コア１０７，１０８のそれぞれによる暗号処理、認証処理のパイプライン動作が実現される。図３に示す第１の動作モードによれば、暗号・認証コア１０７において暗号処理が、暗号・認証コア１０８において認証処理が、互いに並行に行われていることが分かる。
【００４６】
●各コアを交互利用したパイプライン動作（第２の動作モード）
以上、各コアを固定利用したパイプライン動作について説明したが、第１実施形態の暗号処理装置においては、各コアを交互利用したパイプライン動作を行うことも可能である。すなわち、複数個（例えば２つ）のIPSEC処理要求に対して、暗号・認証コア１０７，１０８のそれぞれを暗号処理と認証処理に交互に利用することによって、パイプライン動作を実現する。
【００４７】
図４は、２つのIPSECの処理要求（処理要求１，２）に対して、暗号・認証コア１０７，１０８のそれぞれを暗号処理と認証処理に交互に使用した場合のパイプライン動作を示すタイミングチャートである。第１実施形態では、この場合のパイプライン動作を第２の動作モードとする。図４において、J1-＊は処理要求１に関するデータであることを示し、J2-＊は処理要求２に関するデータであることを示す。なお、各データJ*-D*，J*-C*，J*-M*，J*-H*については、図３と同様であるため説明を省略する。
【００４８】
以下、２つのIPSEC処理要求に対して、暗号・認証コア１０７，１０８のいずれか一方を、暗号用および認証用に交互に利用した、第２の動作モードによるパイプライン動作について詳細に説明する。
【００４９】
メインCPU１０１は２つのIPSECの処理要求を処理する場合、メモリ１０２内に格納された処理要求１，２用の各処理データ５０１，５０２を、データ転送制御部１０６に転送する必要がある。そのためにメインCPU１０１は、DMAC_A１０４，DMAC_B１０５のそれぞれにDMA要求を発行するように、データ転送制御部１０６内の処理要求制御部４０１を制御する。尚、メインCPU１０１は不図示のレジスタアクセスにより、処理要求制御部４０１の処理種別保持部４１３に、処理要求ごとに「IPSEC（暗号アルゴリズム：AES-CBC，認証アルゴリズム：AES-XCBC-MAC-96）」を設定する。同様に、処理ブロック長保持部４１４にはペイロードのブロック長を、処理優先度保持部４１５には通常優先度を設定する。
【００５０】
データ転送制御部１０６は、２つの処理要求が同時に発生している場合には、暗号・認証コア１０７が処理要求１に対応する暗号処理と認証処理を交互に実行するように、処理対象データを分配してAES制御部２０１を制御する。そして、暗号・認証コア１０８が処理要求２に対応する暗号処理と認証処理を交互に実行するように、処理対象データを分配してAES制御部３０１を制御する。
【００５１】
ここで、まず暗号・認証コア１０７における処理要求１の処理について説明する。
【００５２】
データ転送制御部１０６は、DMAC_A１０４によってメモリ１０２内の当該処理要求１用の処理データ５００が転送されると、これを処理データ保持部A４０３に格納する。そして処理データ加工部A４０５において、処理データ保持部A４０３に保持されたデータに対してパディングビット、パディング長、次ヘッダから成るESPトレーラを付加して、被暗号処理データであるペイロードを形成する。このように形成されたペイロードは、暗号データ保持部A４０７に16バイトのブロック長毎に出力される。そしてデータ転送制御部１０６は、暗号データ保持部A４０７に保持したペイロードのデータを、クロスバスイッチ４００を介して、暗号・認証コア１０７内の暗号処理用入力２１１に接続する。
【００５３】
また、データ転送制御部１０６は、暗号・認証コア１０７から転送される暗号化データを出力データ保持部４１１に格納し、クロスバスイッチ４００を介して処理データ加工部A４０５に接続する。そして処理データ加工部A４０５において、ESPヘッダ、IV、16バイトのブロック長毎に、出力データ保持部４１１に格納した暗号化データから被認証処理データを形成して、認証データ保持部A４０９に16バイトのブロック長毎に出力する。そしてデータ転送制御部１０６は、認証データ保持部A４０９に保持した被認証処理用データを、クロスバスイッチ４００を介して、暗号・認証コア１０７の認証処理用入力２１２に接続する。
【００５４】
このように暗号・認証コア１０７は、16バイトのブロック長（同一サイズの所定のブロック単位）を処理する基本クロック毎に、交互に認証処理と暗号処理を切替えて実行する。すなわち、例えば１ブロック分の認証処理を実行した後に、１ブロック分の暗号処理を実行するのであるが、以下、これら認証処理および暗号処理について詳細に説明する。
【００５５】
まず以下のように、１ブロック分の認証処理を実行する。
【００５６】
暗号・認証コア１０７は、16バイトの認証用の奇数ブロック処理相当の基本クロック毎に、加算器２０５でセレクタ２０９の出力２１５と認証処理用入力２１２としての被認証処理データを加算する。そのうえで、AESコア２００においてAESブロック暗号演算処理を行う。そして、該暗号演算処理結果を認証出力保持部２０７に保持するという動作を繰り返す。尚、セレクタ２０９は、１番目の認証用ブロックの場合は認証初期値２０３を選択し、２番目以降の認証用ブロックの場合は認証出力保持部２０７を選択する。また、鍵K2／K3部２０４は、最後の認証用ブロックの場合は、メッセージ長がブロック長の倍数であるか否かに応じて、各々K2，K3を加算器２０５に出力する。またセレクタ２１０は、セレクタ２０９の出力２１５を選択して、暗号・認証コア出力２１７としてデータ転送制御部１０６に出力する。
【００５７】
以上のように１ブロック分の認証処理が終了すると、次に以下のように、１ブロック分の暗号処理を実行する。
【００５８】
暗号・認証コア１０７は、16バイトの暗号用の偶数ブロック処理相当の基本クロック毎に、加算器２０５でセレクタ２０８の出力２１４と暗号処理用入力２１１としての被暗号処理データを加算する。そのうえで、AESコア２００においてAESブロック暗号演算処理を行う。そして、該暗号演算処理結果を暗号出力保持部２０６に保持するという動作を繰り返す。尚、セレクタ２０８は、１番目の暗号用ブロックの場合は暗号初期値２０２を選択し、２番目以降の暗号用ブロックの場合は暗号出力保持部２０６を選択する。またセレクタ２１０は、セレクタ２０８の出力２１４を選択して、暗号・認証コア出力２１７としてデータ転送制御部１０６に出力する。
【００５９】
以上、データ転送制御部１０６は、DMAC_A１０４によってメモリ１０２内の処理要求１用の処理データ５００が転送されると、暗号・認証コア１０７において、認証・暗号処理をブロック処理の基本クロック毎に交互に実行するように制御する。
【００６０】
次に、暗号・認証コア１０８における処理要求２の処理について説明する。
【００６１】
データ転送制御部１０６では、DMAC_B１０５によってメモリ１０２内の当該処理要求２用の処理データ５０１が転送されると、上述した処理要求１に対する暗号・認証処理用と同様の制御を行う。すなわち、暗号・認証コア１０８を用いて、認証処理、暗号処理をブロック処理基本クロック毎に交互に実行するように制御する。
【００６２】
以上で説明したように、２つのIPSEC処理要求に対して、暗号・認証コア１０７，１０８のそれぞれを暗号処理と認証処理に交互に使用したパイプライン動作が実現される。図４に示す第２の動作モードによれば、暗号・認証コア１０７において処理要求１に係る暗号処理と認証処理が、暗号・認証コア１０８において処理要求２に係る認証処理が、互いに並行に行われていることが分かる。
【００６３】
以上説明したように第１実施形態によれば、データ転送制御部１０６が２つの暗号・認証コア１０７，１０８のそれぞれを、処理要求の発生状況に応じて所定の動作モードとなるように制御する。これにより、複数のメッセージを処理する際に、各暗号・認証コア１０７，１０８に対して中断、再開等のソフトウエア制御の負荷をかけることなく、暗号処理と認証処理を並行して行うことが可能となる。また、これら暗号処理と認証処理を同サイズのブロック単位（この場合16バイト単位）とすることにより、効率の良い並行処理が可能となり、全体としてのスループットも向上する。
【００６４】
なお、図４に示すタイミングチャートにおいては、初めから２つの処理要求に対して、２つの暗号・認証コア１０７，１０８に認証処理と暗号処理を交互に実行させる例を示した。しかしながら本発明は、２つの処理要求に対して常にこのように認証処理と暗号処理を交互実行するものではない。例えば、まず１番目の処理要求に対しては、図３に示した第１の動作モード、すなわち２つの暗号・認証コアに認証処理と暗号処理を分担させて実行させる。そしてこの状態から、２番目の処理要求の発生に伴って、図４に示した第２の動作モード、すなわち各暗号・認証コアで認証処理と暗号処理を交互に実行させる状態に動的に切替えることも可能である。
【００６５】
また以上の説明においては、図２に示すような、IPv4の場合のトランスポートモードのIPSECを例として説明したが、IPSECの形態は上記に限らず、IPv6、或いはトンネルモードに対しても適用できる。
【００６６】
また上述の説明においては、２つのDMACと２つの暗号・認証コアを有する構成を示したが、DMACの個数および暗号・認証コアの個数は２つに限定されるものではない。すなわち本発明によれば、暗号・認証コアの個数と等しい個数の処理要求に対して、図４に示したような第２の動作モードによる並行処理を実行することができる。または、例えば暗号・認証コアを偶数個備えた場合に、その２つを１組として第１の動作モードを実行することにより、各組で１つの処理要求に対応し、全体として複数の処理要求に対応することも可能である。
【００６７】
さらに、AES-CBCの暗号処理と、AES-XCBC-MAC-96の認証処理とを切替えて動作させるための構成は、図１に示した暗号・認証コア１０７，１０８に限定されず、種々に変更可能である。
【００６８】
＜第２実施形態＞
第２実施形態では、暗号処理専用のAES暗号コアと認証処理専用のAES認証コアとを用いた、IPsecのESPプロトコル処理について説明する。第１実施形態と同様に暗号アルゴリズムとしてAES-CBCを、認証アルゴリズムとしてAES-XCBC-MAC-96をそれぞれ使用して、暗号・認証処理を行う。
【００６９】
●装置構成
暗号処理装置１００は第１実施形態と同じ構成であるので説明を省略する。また扱うパケット形式も第１実施形態で説明したものと同じである。暗号処理専用のAES暗号コアと認証処理専用のAES認証コアとを用いる点が第１実施形態と異なる。
【００７０】
図５は、第２実施形態においてAES-CBCを用いた暗号処理機能をもつAES暗号コアの構成を示すブロック図である。
【００７１】
２５０は暗号処理において１クロックサイクルに１ラウンドのラウンド処理を行なう符号化ラウンド処理部であり、各ラウンドの処理結果を一時保持しておくための保持部を内蔵している。２５１は復号化処理において１クロックサイクルに１ラウンドのラウンド処理を行なう復号化ラウンド処理部であり、各ラウンドの処理結果を一時保持しておくための保持部を内蔵している。２５２はAES暗号コアの全体制御を司るAES制御部である。２５３はAES-CBCの初期ベクタ（IV）である。２５５、２５６は排他的論理和処理のための加算器である。
【００７２】
２５８は処理データ保持部２６３の出力データと初期ベクタ２５３を切り替えるためのセレクタである。２５９は、暗号処理用入力データ２４３と加算器２５５からの出力データとを切り替えるためのセレクタである。２６０は保持部２６２が保持している１ブロック前のAES暗号コアの入力データと初期ベクタ２５３とを切り替えるためのセレクタである。２６１は、ラウンド処理部２５０の出力データと加算器２５６の出力データを切り替えるためのセレクタである。２６２は１ブロック前のAES暗号コアの入力データを一次保持しておくための保持部である。２６３は、AES暗号コアからの暗号・復号出力データを保持するための処理データ保持部である。２６４は処理データ保持部２６３が一次保持しているAES暗号コアの出力データである。
【００７３】
図６は、第２実施形態においてAES-XCBC-MAC-96の処理機能をもつAES認証コアの構成を示すブロック図である。
【００７４】
３５０は１クロックサイクルに１ラウンドのラウンド処理を行なう符号化ラウンド処理部であり、各ラウンドの処理結果を一時保持しておくための保持部を内蔵している。３５２はAES暗号コアの全体制御を司るAES制御部である。３５４は、AES-XCBC-MAC-96の最終ブロックの処理においてメッセージ長がブロック長の倍数であるか否かに応じて選択する鍵K2／K3である。３５５は排他的論理和処理のための加算器である。３５７は最終ブロックにおける処理に用いる鍵K2／K3とその他のブロックの処理に用いる”000...000”を選択するためのセレクタ、３５９は、認証処理用入力データ３４３と加算器３５５からの出力データとを切り替えるためのセレクタである。３６３は、AES暗号コアからの暗号・復号出力データを保持するための処理データ保持部である。３６４は処理データ保持部３６３が一次保持しているAES認証出力データである。
【００７５】
●各コアを固定利用したパイプライン動作（第１の動作モード）
１つのIPsec処理要求（処理要求１）に対しては第１実施形態で説明したのと同様に１ブロックずつ暗号コアにより暗号処理を、認証コアにより認証処理を行うことによりパイプライン動作を実現することができる。他の暗号・認証処理装置１００における動作は第１実施形態と同様である。
【００７６】
図７は、１つのIPSEC処理要求に対するAES暗号コア、AES認証コアによるパイプライン動作を示すタイミングチャートである。
【００７７】
第１実施形態と同様、図７において、J1-＊は処理要求１に関するデータであることを示す。例えば、J1-D0は処理要求１の被暗号化データ（Payload）の１番目のブロックデータを示し、またJ1-C0は、処理要求１の被暗号化データの１番目のブロックデータに対する暗号処理結果（暗号化データの１番目のブロックデータ）を示す。またJ1-M0は、処理要求１の被認証処理データの１番目のブロックデータを示し、J1-H0は、処理要求１の被認証処理データの１番目のブロックデータに対する認証処理の途中結果のデータを示す。
【００７８】
・AES暗号コアにおける暗号の符号化処理
図７においてT0の期間では最初のブロックデータJ1-D0の暗号処理が行われる。セレクタ２５８には初期ベクタ２５３と保持部２６３の出力データ２６４が入力されるが、AES制御部２５２によりセレクタ２５８は初期ベクタ２５３を選択し、セレクタ２５８の出力データとする。加算器２５５は、セレクタ２５８の出力データと暗号処理用入力データ２６３を加算し、セレクタ２５９に入力する。セレクタ２５９ではAES制御部２５２により暗号処理用入力データ２６３と加算器２５５の出力データのうち、加算器２５５の出力データを選択し、ラウンド処理部２５０においてラウンド処理を行う。
【００７９】
第１実施形態においては１クロックサイクルで１ブロックに対する全ラウンドの処理を行っていたが、第２実施形態では１クロックサイクルで１ラウンドずつ処理を行う。ラウンド処理部２５０に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。また、セレクタ２５９の出力データは、復号化のためのラウンド処理部２５１にも入力しており、同様に１クロックサイクルで１ラウンドずつ処理を行う。
【００８０】
ラウンド処理部２５１に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。ラウンド処理部２５１の出力データはセレクタ２６０の出力データと加算器２５６で加算され、ラウンド処理部２５０の出力データとともにセレクタ２６１に入力される。AES制御部２５２によりセレクタ２６１は出力データ２６４としてラウンド処理部２５０の出力データを選択する。
【００８１】
このようにして、最初のブロックデータJ1-D0の暗号処理が行われ、処理データ保持部２６３には最初のブロックデータJ1-D0に対応する暗号処理結果J1-C0が入力される。
【００８２】
次にT１の期間では処理データ保持部２６３は暗号処理結果J1-C0を保持し続けるとともに、２番目のブロックデータJ1-D１の暗号処理が行われる。セレクタ２５８には初期ベクタ２５３と保持部２６３の出力データ２６４が入力されるが、AES制御部２５２によりセレクタ２５８は保持部２６３の出力データ２６４を選択し、セレクタ２５８の出力データとする。加算器２５５は、セレクタ２５８の出力データと暗号処理用入力データ２４３を加算し、セレクタ２５９に入力する。以下最初のブロックデータと同じ処理が２番目のブロックデータに対して行われ、処理データ保持部２６３には２番目のブロックデータJ1-D1に対応する暗号処理結果J1-C1が入力される。
【００８３】
以降、3番目のブロックデータJ1-D2、4番目のブロックデータJ1-D3に対して同様の処理が行われ、それぞれ対応する暗号処理結果J1-C2 、J1-C3が得られる。
【００８４】
・AES認証コアにおける認証処理
図７においてT0の期間では最初のブロックデータJ1-M0の認証処理が行われる。セレクタ３５７には鍵データK2/K3と全てのビットの値が’0’で鍵長と同じビット数であるデータ ”000...000” が入力されるが、AES制御部３５２によりセレクタ３５７はデータ ”000...000”を選択し、セレクタ３５７の出力データとする。加算器３５５は、セレクタ３５７の出力データ、認証処理用入力データ３４３、AES認証コアの出力データ３６４を加算処理し、セレクタ３５９に入力する。なお、出力データ３６４は全てのビットの値が’0’に初期化されているものとする。
【００８５】
セレクタ３５９ではAES制御部３５２により認証処理用入力データ３４３と加算器３５５の出力のうち、認証処理用入力データ３４３を選択し、ラウンド処理部３５０においてラウンド処理を行う。第１実施形態においては１クロックサイクルで１ブロックの全ラウンドの処理を行っていたが、第２実施形態では１クロックサイクルで１ラウンドずつ処理を行う。ラウンド処理部３５０に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。
【００８６】
このようにして、最初のブロックデータJ1-M0の認証処理が行われ、処理データ保持部３６３には最初のブロックデータJ1-M0に対応する認証処理結果J1-H0が入力される。
【００８７】
次にT１の期間では処理データ保持部３６３は認証処理結果J1-H0を保持し続けるとともに、２番目のブロックデータJ1-M１の認証処理が行われる。最初のブロックデータと同様の処理が２番目のブロックデータに対して行われ、処理データ保持部３６３には２番目のブロックデータJ1-M1に対応する暗号処理結果J1-H1が入力される。
【００８８】
以降、T2からT4までの期間において3番目以降のブロックデータに対しても順次同様の処理が繰り返される。T5の期間において最後のブロックデータJ1-M5に対してはセレクタ３５７には鍵データK2/K3と全てのビットの値が’0’で鍵長と同じビット数であるデータ ”000...000” が入力し、AES制御部３５２によりセレクタ３５７は鍵データ K2/K3を選択し、セレクタ３５７の出力データとする。
【００８９】
鍵データK2/K3の選択はペイロード・データがブロック長の整数倍であるか否かに応じて選択される。加算器３５５は、セレクタ３５７の出力データ、認証処理用入力データ３４３、AES認証コアの出力データ３６４を加算処理し、セレクタ３５９に入力する。以降の処理は最後のブロック以外のブロックの処理と同様である。
【００９０】
なお、T6の期間に最後のブロックに対する認証処理結果J1-H5がAES認証コアから出力データとして出力されるが、AES-XCBC-MAC-96の処理結果として使用されるのは認証処理結果J1-H5の96ビット分のみであり、認証処理結果J1-H0からJ1-H4まで認証処理出力データは直接使われない。
【００９１】
なお、図８におけるAES認証コアにおける認証処理の動作は図７の場合と同様である。
【００９２】
・AES暗号コアにおける暗号の復号化処理
図８においてT0の期間では最初のブロックデータJ1-C0の復号化処理が行われる。セレクタ２５８には初期ベクタ２５３と保持部２６３の出力データ２６４が入力されるが、AES制御部２５２によりセレクタ２５８は初期ベクタ２５３を選択し、セレクタ２５８の出力データとする。加算器２５５は、セレクタ２５８の出力データと暗号処理用入力データ２４３を加算し、セレクタ２５９に入力する。セレクタ２５９ではAES制御部２５２により暗号処理用入力データ２４３と加算器２５５の出力データのうち、暗号処理用入力データ２４３を選択し、ラウンド処理部２５０においてラウンド処理を行う。ラウンド処理部２５０に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。
【００９３】
また、セレクタ２５９の出力データは、復号化のためのラウンド処理部２５１にも入力しており、同様に１クロックサイクルで１ラウンドずつ処理を行う。ラウンド処理部２５１に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。セレクタ２６０には初期ベクタ２５３と保持部２６２に保持されている1つ前のブロックのブロックデータが入力し、AES制御部２５２により初期ベクタ２５３が選択される。ラウンド処理部２５１の出力データとセレクタ２６０の出力データは加算器２５６で加算され、ラウンド処理部２５０の出力データとともにセレクタ２６１に入力される。AES制御部２５２によりセレクタ２６１は出力データ２６４として加算器２５６の出力データを選択する。
【００９４】
このようにして、最初のブロックデータJ1-C0の復号化処理が行われ、処理データ保持部２６３には最初のブロックデータJ1-C0に対応する復号処理結果J1-D0が入力される。
【００９５】
次にT１の期間では処理データ保持部２６３は復号処理結果J1-D0を保持し続けるとともに、２番目のブロックデータJ1-C１の復号化処理が行われる。セレクタ２５８には初期ベクタ２５３と保持部２６３の出力データ２６４が入力されるが、AES制御部２５２によりセレクタ２５８は保持部２６３の出力データ２６４を選択し、セレクタ２５８の出力データとする。加算器２５５は、セレクタ２５８の出力データと暗号処理用入力データ２４３を加算し、セレクタ２５９に入力する。セレクタ２５９ではAES制御部２５２により暗号処理用入力データ２４３と加算器２５５の出力データのうち、暗号処理用入力データ２４３を選択し、ラウンド処理部２５０においてラウンド処理を行う。ラウンド処理部２５０に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。
【００９６】
また、セレクタ２５９の出力データは、復号化のためのラウンド処理部２５１にも入力しており、同様に１クロックサイクルで１ラウンドずつ処理を行う。ラウンド処理部２５１に内蔵されている保持部に１クロックサイクル毎に各ラウンドの処理結果が保持され、所定のラウンド数分の処理を行う。セレクタ２６０には初期ベクタ２５３と保持部２６２に保持されている1つ前のブロックのブロックデータが入力し、AES制御部２５２により保持部２６２に保持されている1つ前のブロックのブロックデータが選択される。ラウンド処理部２５１の出力データとセレクタ２６０の出力データは加算器２５６で加算され、ラウンド処理部２５０の出力データとともにセレクタ２６１に入力される。AES制御部２５２によりセレクタ２６１は出力データ２６４として加算器２５６の出力データを選択する。
【００９７】
このようにして2番目のブロックデータJ1-C1の復号化処理が行われ、処理データ保持部２６３には2番目のブロックデータJ1-C1に対応する復号処理結果J1-D1が入力される。以降、3番目のブロックデータJ1-C2、4番目のブロックデータJ1-C3に対して同様の処理が行われ、それぞれ対応する暗号処理結果J1-D2 、J1-D3が得られる。
【００９８】
●各コアを交互利用したパイプライン動作（第２の動作モード）
２つのIPsec処理要求（処理要求１，２）に対しては、１ブロックずつ暗号コアにより暗号処理を認証コアにより認証処理をそれぞれ行なわせることによりパイプライン動作を実現することができる。
【００９９】
図９は、２つのIPSEC処理要求（処理要求１，２）に対するAES暗号コア、AES認証コアによるパイプライン動作の１例を示すタイミングチャートである。
【０１００】
図９において、J1-＊は処理要求１に関するデータ、J2-＊は処理要求2に関するデータであることを示す。例えば、J1-D0、J2-D0はそれぞれ処理要求１、処理要求２の被暗号化データ（Payload）の１番目のブロックデータを示す。またJ1-C0、J2-C1は、処理要求１、処理要求２の被暗号化データの１番目のブロックデータに対する暗号処理結果（暗号化データの１番目のブロックデータ）を示す。またJ1-M0、J2-M0は、それぞれ処理要求１、処理要求２の被認証処理データの１番目のブロックデータを示し、J1-H0、J2-H0は、それぞれ処理要求１、処理要求２の被認証処理データの１番目のブロックデータに対する認証処理の途中結果のデータを示す。
【０１０１】
ここでは処理要求１、処理要求２は共に４ブロック分のペイロード長であり、処理要求１の２ブロックを処理中に処理要求２が発生したため、処理要求１が終了して処理要求が１つのみになるまで２つの処理要求に対して交互に処理を行ない、処理要求１が終了後、処理要求２に対する処理のみを行なう場合を想定している。なお、AES暗号コアにおける最初のブロックから最後のブロックまで１ブロック単位の暗号処理の動作は第１の動作モードと同様であるので省略する。
【０１０２】
図９に示されるように、AES暗号コアにおいて処理されるブロックと出力データの関係は以下のようになる。T0では、処理要求１の１番目のブロックデータJ1-D0がAES暗号コアに入力され、AES暗号コアにより暗号の符号化処理がされる。T1では、処理要求１の２番目のブロックデータJ1-D1がAES暗号コアに入力され、AES暗号コアにより暗号の符号化処理がされる。また、T1では、並行して、T0で符号化処理されたブロックJ1-D0に対する暗号処理結果J1-C0が出力される。T2では、処理要求２の１番目のブロックデータJ2-D0がAES暗号コアに入力され、AES暗号コアにより暗号の符号化処理がされる。また、T2では、並行して、T1で符号化処理されたブロックJ1-D1に対する暗号処理結果J1-C1が出力される。同様にして、T8では、T7で符号化処理されたブロックJ2-D3に対する暗号処理結果J2-C3が出力される。
【０１０３】
また、図９に示されるように、AES認証コアにおいて処理されるブロックと出力データの関係は以下のようになる。T0では、処理要求１の１番目のブロックデータJ1-M0がAES認証コアに入力され、AES認証コアにより認証処理がされる。T1では、処理要求１の２番目のブロックデータJ1-M1がAES認証コアに入力され、AES認証コアにより認証処理がされる。また、T1では、並行して、T0で認証処理されたブロックJ1-M0に対する認証処理結果J1-H0が出力される。T2では、処理要求２の１番目のブロックデータJ2-M0がAES認証コアに入力され、AES認証コアにより認証処理がされる。また、T2では、並行して、T1で認証処理されたブロックJ1-M1に対する認証処理結果J1-H1が出力される。同様にして、T12では、T11で認証処理されたブロックJ2-M5に対する認証処理結果J2-H5が出力される。
【０１０４】
このように２つのIPSEC処理要求（処理要求１、処理要求２）に対して、AES暗号コア、AES認証コアを用いて効率的にパイプライン動作が実現できる。
【０１０５】
以上説明したように、第２実施形態では、AES-CBC処理を行なうAES暗号コアとAES-XCBC-MAC-96処理を行なうAES認証コアとを独立に設けた。これにより、複数の処理要求が発生した場合でも、AES暗号コア、AES認証コアに対して中断、再開等のソフトウエア制御を行なうことなく、暗号処理と認証処理を並行して行なうことが可能となる。そのため、ソフトウエア処理の追加のオーバーヘッドを生じること無く処理性能を向上させることが可能となる。また、暗号処理および認証処理の各々を専門に行なう専用のAES暗号コアおよびAES認証コアを設けることにより、第１実施形態に比較し回路規模を削減することが可能となる。
【図１】
2010154500.tif 000003
【図２】
2010154500.tif 000004
【図３】
2010154500.tif 000005
【図４】
2010154500.tif 000006
【図５】
2010154500.tif 000007
【図６】
2010154500.tif 000008
【図７】
2010154500.tif 000009
【図８】
2010154500.tif 000010
【図９】
2010154500.tif 000011