(57)【特許請求の範囲】
【請求項１】
入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理装置であって、
２つのデータの排他的論理和を出力する第１の排他的論理和回路と、
前記第１の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、
ワークレジスタ部と、
入力パケットデータを前記ブロック単位の１／ｍ（ｍは偶数）ずつ記憶するレジスタを３ｍ／２個有する入力レジスタ部と、
前記入力レジスタ部の先頭からｍ個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭からｍ個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせた後に、前記入力レジスタ部のデータをレジスタｍ個分シフトさせ、入力パケットデータの続きのデータを末尾からｍ個分のレジスタに記憶させ、その後に前記入力レジスタ部の末尾からｍ個のレジスタに記憶されたデータについて、前記入力レジスタ部の末尾からｍ個のレジスタに記憶されたデータと、一つ前のブロック単位に対する暗号化処理の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせ、当該暗号化処理により暗号化された暗号化データを前記ワークレジスタに格納させると共に前記入力レジスタ部の末尾からｍ個のレジスタに記憶させることを繰り返し実行するように制御する制御手段と、
を備えた情報処理装置。
【請求項２】
入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理装置であって、
２つのデータの排他的論理和を出力する第１の排他的論理和回路と、
前記第１の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて１６ｂｙｔｅ単位でブロック暗号化する暗号化回路と、
ワークレジスタ部と、
入力パケットデータを８ｂｙｔｅずつ記憶するレジスタを３個有する入力レジスタ部と、
前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせた後に、前記入力レジスタ部のデータをレジスタ２個分シフトさせ、入力パケットデータの続きのデータを末尾から２個分のレジスタに記憶させ、その後に前記入力レジスタ部の末尾から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の末尾から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する暗号化処理の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせ、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾から２個のレジスタに記憶させることを繰り返し実行するように制御するＣＢＣモードと、
前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、入力パケットデータのＩＶの前後に乱数とカウント値とを付加して前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせた後に、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の先頭から２個のレジスタに記憶させ、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせ、その後に前記入力レジスタ部のデータをレジスタ２個分シフトさせ、入力パケットデータの続きのデータを末尾から２個分のレジスタに記憶させることを繰り返し実行するように制御するＣＴＲモードと、
の何れかに制御する制御手段と、
を備えた情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＰｓｅｃに使用される暗号化及び認証を行なう情報処理装置、特に、ＡＥＳアルゴリズムを使用するＡＥＳ−ＣＴＲ、ＡＥＳ−ＣＢＣ暗号化及びＸＣＢＣ認証値の作成を行なう情報処理装置に関する。
【背景技術】
【０００２】
インターネットにおける通信においてはセキュリティの重要性が認識されており、通信の秘匿性（内容が傍受者にわからないこと）及び通信の正当性（内容が通信途中で改変されていないこと）を実現する種々の方法が提案されている。
【０００３】
従来、データの暗号化及び認証に関する技術として、例えば、特許文献１には、暗号鍵の更新を容易に行なうべく、変換器から出力されるイニシャルベクタと、受信信号中から得られたイニシャルベクタが同一である場合に、その後に得られる暗号鍵が送信装置のものと同一であると判断することが提案されている。
【０００４】
また、特許文献１では、暗号鍵が送信装置のものであると判断した場合、変換器から出力されたイニシャルベクタを最初のワードとして暗号器に供給し、暗号鍵記憶器からの暗号鍵を用いて暗号化して、暗号器の出力の一部をレジスタに戻して次のワードとして公知のＯＦＢ（Output Feedback）モードを形成する一方、暗号器の出力を暗号鍵として加算器に供給し、同期検出器からの受信信号の暗号解読を行なう。
【０００５】
一方、特許文献２には、機器認証システムの安全性を高めるために従来の２倍長の認証データを用いて認証を行うことが提案されている。
【０００６】
具体的には、まず、認証装置側で６４ビットの乱数を発生させて当該乱数を被認証装置に送信する。そして、認証装置及び被認証装置により、それぞれ当該乱数を２つの３２ビットデータに分離すると共に、それぞれの装置において、得られた一方のデータを他方のデータを鍵として変換する。その後、被認証装置は変換結果を認証装置に送信し、認証装置は被認証装置から受信した変換結果と自己の変換結果とを比較することにより認証を行なう。
【０００７】
ここで、上記通信の秘匿性及び正当性を実現するための方法として、ＩＰｓｅｃ（Security Architecture for Internet Protocol）が適用される場合がある。
【０００８】
ＩＰｓｅｃは、暗号アルゴリズムと認証アルゴリズムを使用して実現されており、暗号アルゴリズムとしては、従来、ＤＥＳ（Data Encryption Standard）及びトリプルＤＥＳが使用されていた。
【０００９】
近年、ＤＥＳの安全性に問題が見つかり、今後は暗号アルゴリズムとしてＡＥＳ（Advanced Encryption Standard）を用いることが一般的になると予測される。
【００１０】
また、認証アルゴリズムとしては、従来、ＳＨＡ−１（Secure Hash Algorithm-1）又はＭＤ−５（Message Digest Algorithm-5）が使用されていたが、ＤＥＳ同様、脆弱性が見つかり、ＡＥＳアルゴリズムを基本としたＸＣＢＣ方式が一般的になると予測される。
【特許文献１】特開２００５−１１０２２３公報
【特許文献２】特開平１０−２３３７７１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来は、ＡＥＳアルゴリズムを使用して暗号化と認証を行なう場合、暗号化を実行する回路と認証値を作成する回路は別々に設けられており、回路規模が増大する、という問題点があった。
【００１２】
ここで、１の情報処理回路により暗号化と認証値作成を行なうとすると、まず、情報処理回路に入力される１パケット分のデータに対して順次暗号化処理を実行し、順次出力すると共にバッファメモリに蓄積し、その後に回路構成を切り替えてから、バッファメモリに蓄積された１パケット分の暗号化データに基づいて認証値作成処理を実行することが考えられる。この場合、１パケット分のデータを格納できる容量のバッファメモリを準備する必要がある。１パケット分のデータは、２Ｋ〜１０Ｋｂｙｔｅ程度になる場合があるため、単純に１の情報処理回路で暗号化及び認証値作成を実行しようとすると、回路規模が増大してしまう。
【００１３】
本発明は上記問題点を解決するためになされたものであり、回路規模を増大させることなく暗号化及び認証値作成を実行できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、請求項１の発明は、入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理装置であって、２つのデータの排他的論理和を出力する第１の排他的論理和回路と、前記第１の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、ワークレジスタ部と、入力パケットデータを前記ブロック単位の１／ｍ（ｍは偶数）ずつ記憶するレジスタを３ｍ／２個有する入力レジスタ部と、前記入力レジスタ部の先頭からｍ個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭からｍ個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせた後に、前記入力レジスタ部のデータをレジスタｍ個分シフトさせ、入力パケットデータの続きのデータを末尾からｍ個分のレジスタに記憶させ、その後に前記入力レジスタ部の末尾からｍ個のレジスタに記憶されたデータについて、前記入力レジスタ部の末尾からｍ個のレジスタに記憶されたデータと、一つ前のブロック単位に対する暗号化処理の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせ、当該暗号化処理により暗号化された暗号化データを前記ワークレジスタに格納させると共に前記入力レジスタ部の末尾からｍ個のレジスタに記憶させることを繰り返し実行するように制御する制御手段と、を備えている。
【００１６】
更に、上記目的を達成するために、請求項２の発明は、入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理装置であって、２つのデータの排他的論理和を出力する第１の排他的論理和回路と、前記第１の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて１６ｂｙｔｅ単位でブロック暗号化する暗号化回路と、ワークレジスタ部と、入力パケットデータを８ｂｙｔｅずつ記憶するレジスタを３個有する入力レジスタ部と、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせた後に、前記入力レジスタ部のデータをレジスタ２個分シフトさせ、入力パケットデータの続きのデータを末尾から２個分のレジスタに記憶させ、その後に前記入力レジスタ部の末尾から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の末尾から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する暗号化処理の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせ、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾から２個のレジスタに記憶させることを繰り返し実行するように制御するＣＢＣモードと、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、入力パケットデータのＩＶの前後に乱数とカウント値とを付加して前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた暗号化処理を行わせた後に、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の先頭から２個のレジスタに記憶させ、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータについて、前記入力レジスタ部の先頭から２個のレジスタに記憶されたデータと、一つ前のブロック単位に対する認証値作成の演算結果として前記ワークレジスタに格納されているデータとを前記２つのデータとして、前記第１の排他的論理和回路及び前記暗号化回路を用いた演算を行わせ、演算結果を前記ワークレジスタに格納する認証値作成処理を行わせ、その後に前記入力レジスタ部のデータをレジスタ２個分シフトさせ、入力パケットデータの続きのデータを末尾から２個分のレジスタに記憶させることを繰り返し実行するように制御するＣＴＲモードと、の何れかに制御する制御手段と、を備えている。
【発明の効果】
【００１８】
以上説明したように、本発明は、回路規模を増大させることなく暗号化及び認証値作成を実行できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して、本発明の実施形態を詳細に説明する。なお、本実施形態では、ＩＰ（Internet Protocol）通信を行なうに際し、ＩＰｓｅｃ（Security Architecture for Internet Protocol）を適用する場合に搭載されるＩＰｓｅｃ装置に本発明を適用し、ＩＰｓｅｃのセキュリティプロトコルとして、ＥＳＰ（Encapsulating Security Payload）を使用する場合について説明する。
【００２０】
また、本実施形態では、暗号アルゴリズムとして、ブロック暗号化方式によりデータを１２８ｂｉｔのブロック単位で暗号化するＡＥＳ（Advanced Encryption Standard）を、認証アルゴリズムとしてＸＣＢＣを、それぞれ適用する場合について説明する。
【００２１】
図１には、本実施形態に係る情報処理回路１０の概略構成が示されている。なお、当該情報処理回路１０は、ＩＰｓｅｃ装置を構成する回路のうち、主として暗号化処理、復号化処理及び認証値作成処理を実行する部位を抜き出したものである。
【００２２】
同図に示されるように、情報処理回路１０は、演算回路として、第１の排他的論理和（ＥＸＯＲ）回路１２、ＡＥＳ回路１４及び第２のＥＸＯＲ回路１６を含んで構成されている。第１のＥＸＯＲ回路１２の出力端はＡＥＳ回路１４の入力端に、ＡＥＳ回路１４の出力端は第２のＥＸＯＲ回路１６の入力端に、それぞれ接続されている。
【００２３】
なお、同図に示す６０〜８６はセレクタであり、各セレクタに入力されるデータを選択的に出力可能である。また、各セレクタは、それぞれ不図示の制御回路から出力される制御信号に基づいて動作されるようになっており、例えば、制御信号が入力されたタイミングで、当該制御信号に基づくデータを選択して出力する。
【００２４】
また、情報処理回路１０は、各回路で用いるデータや各回路から出力されたデータを一時的に格納するために、出力レジスタ（Ｏｕｔ＿ｒｅｇ）１８、入力レジスタ部２０、データ格納部３０、鍵管理部３２及びワークレジスタ４０を含んで構成されている。
【００２５】
出力レジスタ１８には、当該情報処理回路１０に設けられた上記各演算回路による演算結果が入力されるようになっており、演算結果が一時的に保持される。当該出力レジスタ１８は、セレクタ８６を介して外部と接続されている。
【００２６】
入力レジスタ部２０には、ＩＰｓｅｃ装置全体の動作を司る不図示の制御部等が接続されたＢＵＳに接続され、外部から受信したＩＰパケットが入力可能に構成されている。また、入力レジスタ部２０は、セレクタ６８を介して第１のＥＸＯＲ回路１２に接続されると共に、セレクタ８４を介して第２のＥＸＯＲ回路１６に接続されている。さらに、入力レジスタ部２０の入力端は、第２のＥＸＯＲ回路１６の出力端とも接続されている。
【００２７】
また、入力レジスタ部２０は、同じ容量のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２の３つのレジスタ２２，２４，２６により構成されており、各レジスタ２２，２４，２６の入力端には、それぞれセレクタ６０，６２，６４が設けられている。これにより、各レジスタ２２，２４，２６には、各セレクタ６０，６２，６４を介して、ＢＵＳを介して入力されるＩＰパケット又は第２のＥＸＯＲ回路１６の出力端から出力される演算結果の何れかが選択的に入力される。
【００２８】
データ格納部３０には、４つの所定長のデータが格納されると共に、出力端にセレクタ７０が設けられている。データ格納部３０に格納されたデータは、セレクタ７０により選択的に出力される。なお、データ格納部３０に格納されている４つのデータのうち、３つはＩＰｓｅｃの規格に応じたパターンのデータであり、残りの１つは”０”に相当するデータである。
【００２９】
また、データ格納部３０は、セレクタ６８を介して第１のＥＸＯＲ回路１２に接続されている。セレクタ６８は、入力レジスタ部２０及びデータ格納部３０に格納されたデータを選択的に第１のＥＸＯＲ回路１２に入力する。
【００３０】
鍵格納部３２は、暗号鍵が保持されるＫｙｉｎ３４と、認証鍵が保持されるＸＣＢＣｋｙ３６と、ワーク鍵が保持されるＫｅｙ＿ｒｅｇ３８と、の３つのレジスタを含んで構成されている。Ｋｙｉｎ３４はセレクタ８０を介してＡＥＳ回路１４に接続されており、ＸＣＢＣｋｙ３６及びＫｅｙ＿ｒｅｇ３８は、セレクタ８２及びセレクタ８０を介してＡＥＳ回路１４に接続されている。
【００３１】
なお、ＡＥＳ回路１４が暗号化及び復号化の処理に利用される場合には、Ｋｙｉｎ３４に保持された暗号鍵がＡＥＳ回路１４に入力される。また、ＡＥＳ回路１４がワーク鍵の生成に利用される場合にはＸＣＢＣＫｙ３６に保持された認証鍵が、ＡＥＳ回路１４が認証値の作成に利用される場合には、Ｋｅｙ＿ｒｅｇ３８に保持されたワーク鍵が、それぞれＡＥＳ回路１４に入力される。
【００３２】
ワークレジスタ４０は、ＩＶ＿ｒｅｇ４２及びＸＣＢＣ＿ｒｅｇ４４を含んで構成されており、それぞれセレクタ７４及びセレクタ７２を介して第１のＥＸＯＲ回路１２に接続されている。また、ＩＶ＿ｒｅｇ４２の入力端には、セレクタ７６が設けられており、ＢＵＳ、セレクタ６６の出力端、及び第２のＥＸＯＲ回路１６の出力端の何れかと選択的に接続される。一方、ＸＣＢＣ＿ｒｅｇ４４の入力端には、セレクタ７８が設けられており、”０”又は第２のＥＸＯＲ回路１６から出力された演算結果の何れかが選択的に入力される。
【００３３】
セレクタ７４は、情報処理回路１０において暗号化及び復号化が実行される場合にはＩＶ＿ｒｅｇ４２に格納されたデータを、情報処理回路１０において認証値の作成が実行される場合にはＸＣＢＣ＿ｒｅｇ４４に格納されたデータを、それぞれ出力する。
【００３４】
また、セレクタ７２は、第１のＥＸＯＲ回路１２を機能させる場合（排他的論理和を演算する場合）にはセレクタ７４の出力を選択し、第１のＥＸＯＲ回路１２を機能させない場合（セレクタ６８からの出力をそのままＡＥＳ回路１４に入力する場合）には”０”を選択する。
【００３５】
なお、ワークレジスタ４０の出力端は、セレクタ８４にも接続されている。さらに、ＸＣＢＣ＿ｒｅｇ４４の出力端は、セレクタ８６に接続されている。
【００３６】
セレクタ８４は、第２のＥＸＯＲ回路１６を機能させる場合（排他的論理和を演算する場合）にはセレクタ７４の出力又はセレクタ６６の出力を選択し、第２のＥＸＯＲ回路１６を機能させない場合（ＡＥＳ回路１４の演算結果をそのまま利用又は出力する場合）には”０”を選択する。
【００３７】
ここで、本実施形態に係る情報処理回路１０は、ＡＥＳ−ＣＢＣ（Cipher Block Chaining）及びＡＥＳ−ＣＴＲ（Counter）の両方に対応可能に構成されている。
【００３８】
図２（Ａ）には、ＡＥＳ−ＣＢＣでＩＰｓｅｃ化されたパケット５０Ａの構成の一例が示されている。同図に示されるように、パケット５０Ａは、ＥＳＰヘッダ（ＥＳＰ−ＨＤ）５２と、ＩＶ（Initialization Vector）５４と、ペイロード（Payload）５６と、認証値（ＩＣＶ：Integrity Check Value）５８と、により構成されている。
【００３９】
ＥＳＰヘッダ５２は、８ｂｙｔｅのデータであり、ＩＰｓｅｃ装置間におけるパケット送受信前のネゴシエーションにより決定されたＩＰｓｅｃのパラメータを示す情報であり、パラメータとしては、暗号鍵、認証鍵、ＡＥＳのモード等が含まれる。
【００４０】
また、ＩＶ５４は、ＡＥＳによるブロック暗号化のブロック長１２８ｂｉｔ（＝１６ｂｙｔｅ）と同じ長さのデータであり、ＣＢＣモードにおいてペイロード５６の最初のブロックの暗号化及び復号化に用いるデータである。すなわち、ＣＢＣモードにおいては、暗号化しようとするブロックｎのデータＤｎと、前のブロックｎ−１を暗号化した暗号化データｄｎ−１との排他的論理和（Ｄｎ  ｅｘｏｒ  ｄｎ−１）を暗号鍵を用いてＡＥＳ暗号化してブロックｎの暗号化データｄｎとする（ｄｎ＝ＡＥＳ暗号鍵（Ｄｎ  ｅｘｏｒ  ｄｎ−１））。最初の１ブロック目の暗号化及び復号化処理においては、前のブロックが存在しないため、最初の１ブロック目のデータについてはＩＶ５４との排他的論理和を暗号化する（ｄ１＝ＡＥＳ暗号鍵（Ｄ１  ｅｘｏｒ  ＩＶ））。
【００４１】
ペイロード５６は、１６ｂｙｔｅのＮ倍の長さの暗号化されたデータである。すなわち、ＡＥＳにおいては、暗号化を行なう際に、最後のブロックが１２８ｂｉｔに満たない場合、最後のブロックが１２８ｂｉｔになるように末尾にデータを追加してから暗号化を行なうため、どのようなデータを暗号化しても１６ｂｙｔｅのＮ倍の長さになる。
【００４２】
ＩＣＶ５８は、１２ｂｙｔｅの長さのデータであり、ＸＣＢＣにより導出された認証値である。
【００４３】
一方、図２（Ｂ）には、ＡＥＳ−ＣＴＲでＩＰｓｅｃ化されたパケット５０Ｂの構成の一例が示されている。同図に示されるように、当該パケット５０Ｂは、ＩＶ５４が８ｂｙｔｅである以外は、上記ＡＥＳ−ＣＢＣによるパケット５０Ａと同様の構成となっている。すなわち、ＡＥＳ−ＣＴＲでは、例えば、ネゴシエーションにより予め決定された４ｂｙｔｅの乱数（ｎｏｎｃｅ）と、８ｂｙｔｅのＩＶ５４と、カウンタによる４ｂｙｔｅのカウント値ｎと、により構成される１６ｂｙｔｅのデータＣＴＲｎと、ペイロードのブロックｎのデータＤｎとの排他的論理和を暗号化する（ｄｎ＝ＡＥＳ暗号鍵（ＣＴＲｎ  ｅｘｏｒ  Ｄｎ））。
【００４４】
そこで、本実施形態に係る情報処理回路１０では、ワークレジスタ４０のＩＶ＿ｒｅｇ４２の構成を、ＡＥＳ−ＣＢＣとＡＥＳ−ＣＴＲの両方に対応できるようにしている。
【００４５】
図３には、ワークレジスタ４０の詳細な構成図が示されている。同図に示されるように、ＩＶ＿ｒｅｇ４２は、３つのブロック４２Ａ〜４２Ｃに分かれた構成とされている。これらの各ブロック４２Ａ〜４２Ｃの出力端は、セレクタ７４に接続されており、まとめて１つのデータ列として読み出される。
【００４６】
ＩＶ＿ｒｅｇ４２は、暗号化するブロックのデータ長に応じた８ｂｙｔｅであり、そのうち、ＮＯＮＣＥブロック４２Ａは、ＡＥＳ−ＣＴＲを実行する際の乱数のデータ長に応じた３２ｂｉｔとされており、ＩＶブロック４２Ｂは、ＡＥＳ−ＣＴＲのＩＶ５４のデータ長に応じた６４ｂｉｔとされている。残りの３２ｂｉｔは、ｃｏｕｎｔｅｒブロック４２Ｃに割り当てられている。
【００４７】
また、各ブロック４２Ａ〜４２Ｃの入力端には、セレクタ９０〜９４が設けられており、上述した各セレクタと同様に、情報処理回路１０の動作状態に応じて制御される。各セレクタ９０〜９４には、セレクタ７６を介して入力されるデータの他に、それぞれ乱数、ＩＶ、カウント値が入力される。
【００４８】
さらに、ｃｏｕｎｔｅｒブロック４２Ｃの出力端はセレクタ８８を介してカウントアップ器４６の入力端に接続されており、カウントアップ器４６の出力端はセレクタ９４を介してｃｏｕｎｔｅｒブロック４２Ｃに接続されている。１ブロックの暗号化処理が完了する毎にカウントアップされる。なお、セレクタ８８により”０”を出力することで、ｃｏｕｎｔｅｒブロック４２Ｃのカウント値が初期化される（図１３、図１５も参照）。
【００４９】
なお、ＩＶ＿ｒｅｇ４２は、ＡＥＳ−ＣＢＣ暗号化を実行する場合には、処理開始時にブロック４２Ａ〜４２Ｃにまたがって１６ｂｙｔｅのＩＶ５４が入力され、１ブロックの暗号化処理が完了する毎に、暗号化されたデータｄｎに置き換えられる。
【００５０】
さらに、ＩＶ＿ｒｅｇ４２は、ＡＥＳ−ＣＢＣ復号化を実行する場合には、処理開始時にブロック４２Ａ〜４２Ｃにまたがって１６ｂｙｔｅのＩＶ５４が入力され、その後、各ブロックｎの復号化が完了する毎に、復号されたブロックｎの復号前のデータｄｎに置き換えられる。
【００５１】
以下に、本実施形態の作用を説明する。
【００５２】
本実施形態に係る情報処理回路１０は、ＩＰｓｅｃを適用したＩＰ通信によりパケットを送信又は受信する際に、暗号化及び認証値作成に用いられ、不図示の制御回路により、送信するパケット又は受信したパケットの暗号化モードに応じて動作が制御される。
【００５３】
なお、本実施形態に係る情報処理回路１０は、ＡＥＳ−ＣＢＣ及びＡＥＳ−ＣＴＲの２種類の暗号化モードに対応しているので、以下、モード別、暗号化、復号化処理別に説明する。
【００５４】
（ＡＥＳ−ＣＢＣモード  暗号化・認証値作成）
図４には、ＡＥＳ−ＣＢＣモードでパケットを暗号化する際の情報処回路１０を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路１０のＡＥＳ−ＣＢＣモードでの暗号化認証値作成処理における動作を説明する。
【００５５】
まず、ステップ１００に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路１０が組み込まれたＩＰｓｅｃ装置により、通信先のＩＰｓｅｃ装置とのネゴシエーションにより決定される。暗号鍵はＫｙｉｎ３４に、認証鍵はＫＣＢＣｋｙ３６に、それぞれ入力されてセットされる。
【００５６】
次のステップ１０２では、認証値作成（ＸＣＢＣ）処理に用いるワーク鍵Ｋ１の生成及び生成したワーク鍵Ｋ１のＫｅｙ＿ｒｅｇ３８への格納を行ない、その後にステップ１０４に移行する。
【００５７】
ワーク鍵Ｋ１の生成及び格納時には、図８に太線及び太枠で示されるように回路内をデータが流れるように、情報処理回路１０内の各セレクタの動作が制御される。すなわち、データ格納部３０に格納されたデータ”０ｘ０１０１・・・”及びＸＣＢＣＫｙ３６にセットされた認証鍵をＡＥＳ回路１４に入力する。これにより、ＡＥＳ回路１４の出力は、ＡＥＳ認証鍵（”０ｘ０１０１・・・”）となる。また、ＡＥＳ回路１４による暗号化の結果をワーク鍵Ｋ１としてＫｅｙ＿ｒｅｇ３８に格納する。
【００５８】
ステップ１０４では、初期化処理として、ＸＣＢＣ＿ｒｅｇ４４に”０”をセットするようにセレクタ７８を動作させ、その後にステップ１０６に移行する。
【００５９】
ステップ１０６では、入力パケットの先頭の２４ｂｙｔｅのデータを、入力レジスタ部２０の各Ｉｎ＿ｒｅｇ０〜Ｉｎ＿ｒｅｇ２に８ｂｙｔｅずつ格納すると共に、次のステップ１０８で、ＩＶ＿ｒｅｇ４２にＩＶを格納し、その後にステップ１１０に移行する。
【００６０】
図９には、ＩＶ＿ｒｅｇ４２へのＩＶの格納時のワークレジスタ４０におけるデータの流れが示されている。同図に示されるように、セレクタ７６は、ＢＵＳから入力されるデータを出力するように制御され、ＩＶをＩＶ＿ｒｅｇ４２に入力する。
【００６１】
また、セレクタ９０、９２、９４は、それぞれセレクタ７６から出力されたデータを各ブロックに出力するように制御される。これにより、ＢＵＳから入力されたＩＶの先頭部分の３２ｂｉｔがＮＯＮＣＥブロック４２Ａに、次の６４ｂｉｔがＩＶブロック４２Ｂに、残りの３２ｂｉｔがＣｏｕｎｔｅｒブロック４２Ｃに、それぞれ入力される。
【００６２】
次のステップ１１０では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ１１２に移行する。なお、ＡＥＳ−ＣＢＣモードで暗号化されるパケットは、先頭に８ｂｙｔｅのＥＳＰ−ＨＤ５２及び１６ｂｙｔｅのＩＶ５４が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、暗号化処理は施さない。
【００６３】
ここで、図１０には、認証値作成処理を実行する際の情報処理回路１０におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ６６、セレクタ６８、セレクタ７２及びセレクタ７４は、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータと、ＸＣＢＣ＿ｒｅｇ４４に格納されたデータ（ステップ１１０では、初期値”０”）とを第１のＥＸＯＲ回路１２に入力するように制御される。
【００６４】
また、セレクタ８０及びセレクタ８２は、Ｋｅｙ＿ｒｅｇ３８に格納されたワーク鍵（ステップ１００ではワーク鍵Ｋ１）がＡＥＳ回路１４に入力されるように制御される。これにより、ＡＥＳ回路１４には、第１のＥＸＯＲ回路１２の出力とＫｅｙ＿ｒｅｇ３８に格納されたワーク鍵とが入力される。
【００６５】
また、セレクタ８４は、この時点では第２のＥＸＯＲ回路１６による演算を行なわないように、”０”を出力するように制御される。さらに、セレクタ７８は、第２のＥＸＯＲ回路１６からの出力をＸＣＢＣ＿ｒｅｇ４４に格納するように制御される。
【００６６】
すなわち、認証値作成処理は、以下の（１）に示す演算を行い、演算結果をＸＣＢＣ＿ｒｅｇに格納することにより行なわれる。なお、この処理をパケットの末尾まで繰り返することにより、認証値ＩＣＶが導出されるので、パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路１０から出力しない。
AESＫ１（XCBC_reg  exor  In_reg０,１）・・・（１）
【００６７】
ステップ１１２では、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ１１４で、Ｉｎ＿ｒｅｇ１及びＩｎ＿ｒｅｇ２にそれぞれパケットの続きを格納する。
【００６８】
次のステップ１１６では、入力レジスタ部２０のＩｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータに対して暗号化処理を実行し、その後にステップ１１８に移行する。
【００６９】
ここで、図１１には、暗号化処理を実行する際の情報処理回路１０におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ６６、セレクタ６８、セレクタ７２及びセレクタ７４は、Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータと、ＩＶ＿ｒｅｇ４２に格納されたデータ（最初のブロックに対する処理では、ＩＶとなる）とを第１のＥＸＯＲ回路１２に入力するように制御される。また、セレクタ８０は、Ｋｙｉｎ３４に格納された暗号鍵がＡＥＳ回路１４に入力されるように制御される。これにより、ＡＥＳ回路１４には、第１のＥＸＯＲ回路１２の出力とＫｙｉｎ３４に格納された暗号鍵とが入力される。また、セレクタ８４は、この時点では第２のＥＸＯＲ回路１６による演算を行なわないように、”０”を出力するように制御される。
【００７０】
そして、第２のＥＸＯＲ回路１６からの出力を出力レジスタ１８に格納し、セレクタ８６を介して情報処理回路１０から出力する。
【００７１】
また、セレクタ７６は、第２のＥＸＯＲ回路１６からの出力をＩＶ＿ｒｅｇ４２に格納するように制御される。さらに、セレクタ６２及び６４も、第２のＥＸＯＲ回路１６からの出力をＩｎ＿ｒｅｇ１，２に格納するように制御される。
【００７２】
すなわち、暗号化処理では、情報処理回路１０により、以下の（２）に示す演算を行い、演算結果を情報処理回路１０から出力すると共に、演算結果を次のブロックの暗号化処理に用いるためにＩＶ＿ｒｅｇ４２に格納する。また、演算結果（暗号化したデータ）を認証値作成処理に利用するために、Ｉｎ＿ｒｅｇ１，２に格納する。
AES暗号鍵（IV_reg  exor  In_reg１,２）・・・（２）
【００７３】
次のステップ１１８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ１２０に移行する。
【００７４】
ステップ１２０では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ１１２に戻り、ステップ１１２〜１１８の処理を繰り返す。
【００７５】
一方、ステップ１２０で肯定判定となった場合は、ステップ１２２に移行して、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ１２４では、Ｉｎ＿ｒｅｇ１にブランクデータを格納する。
【００７６】
次のステップ１２６では、ＩＰｓｅｃの規格に基づいて、入力パケットの末尾にブランクデータを挿入して最終的な認証値の作成を行なう場合に使用するワーク鍵Ｋ３を用いた処理を実行する。
【００７７】
図１７に示されるように、このワーク鍵Ｋ３を用いた処理では、セレクタ７０は、データ格納部３０から”０ｘ０３０３・・・”を出力するように制御されると共に、セレクタ７２は”０”を出力するように制御される。また、セレクタ８０及びセレクタ８２は、ＸＣＢＣＫｙ３６に格納された認証鍵を出力するように制御される。これにより、ワーク鍵Ｋ３（Ｋ３＝（ＡＥＳ認証鍵”０ｘ０３０３・・・”）））が生成される。
【００７８】
更に、セレクタ７４及びセレクタ８４は、ＸＣＢＣ＿ｒｅｇ４４に格納されたデータを出力するように制御され、セレクタ７８は第２のＥＸＯＲ回路１６の出力をＸＣＢＣ＿ｒｅｇ４４に格納するように制御される。
【００７９】
このようにして、ワーク鍵Ｋ３を用いた処理では、以下の（３）に示す演算の結果が格納されることになる。
（AES認証鍵（"0x0303・・・"）  exor  XCBC_reg）・・・（３）
【００８０】
次のステップ１２８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対し、Ｋｅｙ＿ｒｅｇ３８に格納されたＫ１を用いて認証値作成処理を行い、その後にステップ１３０に移行する。なお、ステップ１２８の処理により、以下の（４）に示す演算の結果がＸＣＢＣ＿ｒｅｇ４４に格納される。
AESK1（（AES認証鍵（"0x0303・・・"）  exor  XCBC_reg）  exor  In_reg0,1）・・・（４）
【００８１】
ステップ１３０では、ステップ１２８の処理により導出された認証値を情報処理回路１０から出力し、その後に暗号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ８６は、ＸＣＢＣ＿ｒｅｇ４４に格納された認証値をそのまま情報処理回路１０から出力するように制御される。
【００８２】
（ＡＥＳ−ＣＢＣモード  復号化・認証値作成）
図５には、ＡＥＳ−ＣＢＣモードで暗号化されたパケットを復号化する際の情報処回路１０を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路１０のＡＥＳ−ＣＢＣモードでの復号化認証値作成処理における動作を説明する。
【００８３】
まず、ステップ１５０に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路１０が組み込まれたＩＰｓｅｃ装置により、通信先のＩＰｓｅｃ装置とのネゴシエーションにより決定される。暗号鍵はＫｙｉｎ３４に、認証鍵はＫＣＢＣｋｙ３６に、それぞれ入力されてセットされる。
【００８４】
次のステップ１５２では、認証値作成（ＸＣＢＣ）処理に用いるワーク鍵Ｋ１の生成及び生成したワーク鍵Ｋ１のＫｅｙ＿ｒｅｇ３８への格納を行ない、その後にステップ１５４に移行する。なお、ここでのワーク鍵Ｋ１の生成及び格納は、上記暗号化認証値作成処理と同様であるので、説明を省略する（図８参照）。
【００８５】
ステップ１５４では、初期化処理として、ＸＣＢＣ＿ｒｅｇ４４に”０”をセットするようにセレクタ７８を動作させ、その後にステップ１５６に移行する。
【００８６】
ステップ１５６では、入力パケットの先頭の２４ｂｙｔｅのデータを、入力レジスタ部２０の各Ｉｎ＿ｒｅｇ０〜Ｉｎ＿ｒｅｇ２に８ｂｙｔｅずつ格納すると共に、次のステップ１５８で、ＩＶ＿ｒｅｇ４２にＩＶを格納し、その後にステップ１６０に移行する。
【００８７】
なお、ＩＶ＿ｒｅｇ４２へのＩＶの格納については、上記暗号化認証値作成処理と同様であるので、説明を省略する（図９参照）。
【００８８】
次のステップ１６０では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ１６２に移行する。なお、ＡＥＳ−ＣＢＣモードで暗号化されるパケットは、先頭に８ｂｙｔｅのＥＳＰ−ＨＤ５２及び１６ｂｙｔｅのＩＶ５４が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、復号化処理は施さなくてよい。なお、認証値作成処理については、上記暗号化認証値作成処理と同様であるので、説明を省略する（図１０参照）。また、上記暗号化認証値作成処理と同様パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路１０から出力しない。
【００８９】
ステップ１６２では、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ１６４で、Ｉｎ＿ｒｅｇ１及びＩｎ＿ｒｅｇ２にそれぞれパケットの続きを格納する。
【００９０】
次のステップ１６６では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ１６８に移行して、入力レジスタ部２０のＩｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータに対して復号化処理を実行し、その後にステップ１７０に移行する。すなわち、入力パケットに付加されている認証値は暗号化されたデータに基づいて導出されたものであるため、復号化時の認証値作成処理は、復号前のデータに基づいて認証値の演算を行なう。
【００９１】
ここで、図１２には、復号化処理を実行する際の情報処理回路１０におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ６６、セレクタ６８及びセレクタ７２は、Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータと、”０”とを第１のＥＸＯＲ回路１２に入力するように制御される。これにより、第１のＥＸＯＲ回路１２の出力は、Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータと同一となる。
【００９２】
また、セレクタ８０は、Ｋｙｉｎ３４に格納された暗号鍵がＡＥＳ回路１４に入力されるように制御される。これにより、ＡＥＳ回路１４には、Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されたデータとＫｙｉｎ３４に格納された暗号鍵とが入力される。
【００９３】
一方、セレクタ７４及びセレクタ８４は、第２のＥＸＯＲ回路１６にＩＶ＿ｒｅｇ４２に格納されたデータ（最初のブロックに対する処理では、ＩＶとなる）を入力するように制御される。
【００９４】
そして、第２のＥＸＯＲ回路１６からの出力を出力レジスタ１８に格納し、セレクタ８６を介して情報処理回路１０から出力する。
【００９５】
また、セレクタ７６は、今回復号化処理の対象となったデータ（この時点で、Ｉｎ＿ｒｅｇ１，Ｉｎ＿ｒｅｇ２に格納されているデータ）をＩＶ＿ｒｅｇ４２に格納するように制御される。
【００９６】
すなわち、復号化処理では、情報処理回路１０により、以下の（５）に示す演算を行い、演算結果を情報処理回路１０から出力すると共に、今回復号化処理の対象となったデータを次のブロックの復号化処理に用いるためにＩＶ＿ｒｅｇ４２に格納する。
（AES暗号鍵（In_reg１,２）  exor  IV_reg）・・・（５）
【００９７】
ステップ１７０では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ１６２に戻り、ステップ１６２〜１６８の処理を繰り返す。
【００９８】
一方、ステップ１７０で肯定判定となった場合は、ステップ１７２に移行して、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ１７４では、Ｉｎ＿ｒｅｇ１にブランクデータを格納する。
【００９９】
次のステップ１７６では、ＩＰｓｅｃの規格に基づいて、入力パケットの末尾にブランクデータを挿入して最終的な認証値の作成を行なう場合に使用するワーク鍵Ｋ３を用いた処理を実行する。なお、当該ワーク鍵Ｋ３を用いた処理は、上記暗号化認証値作成処理で説明した処理と同様である（図１７参照）。
【０１００】
次のステップ１７８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対し、Ｋｅｙ＿ｒｅｇ３８に格納されたＫ１を用いて認証値作成処理を行い、その後にステップ１８０に移行する。なお、ステップ１７８の処理により、上記（４）に示す演算の結果がＸＣＢＣ＿ｒｅｇ４４に格納される。
【０１０１】
ステップ１８０では、ステップ１７８の処理により導出された認証値を情報処理回路１０から出力し、その後に復号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ８６は、ＸＣＢＣ＿ｒｅｇ４４に格納された認証値をそのまま情報処理回路１０から出力するように制御される。
【０１０２】
（ＡＥＳ−ＣＴＲモード  暗号化・認証値作成）
図６には、ＡＥＳ−ＣＴＲモードでパケットを暗号化する際の情報処回路１０を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路１０のＡＥＳ−ＣＴＲモードでの暗号化認証値作成処理における動作を説明する。
【０１０３】
まず、ステップ２００に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路１０が組み込まれたＩＰｓｅｃ装置により、通信先のＩＰｓｅｃ装置とのネゴシエーションにより決定される。暗号鍵はＫｙｉｎ３４に、認証鍵はＫＣＢＣｋｙ３６に、それぞれ入力されてセットされる。
【０１０４】
次のステップ２０２では、認証値作成（ＸＣＢＣ）処理に用いるワーク鍵Ｋ１の生成及び生成したワーク鍵Ｋ１のＫｅｙ＿ｒｅｇ３８への格納を行ない、その後にステップ２０４に移行する。なお、ワーク鍵Ｋ１の生成及び格納は、上記ＡＥＳ−ＣＢＣモードと同様であるので、説明を省略する（図８参照）。
【０１０５】
ステップ２０４では、初期化処理として、ＸＣＢＣ＿ｒｅｇ４４に”０”をセットするようにセレクタ７８を動作させ、その後にステップ２０６に移行する。
【０１０６】
ステップ２０６では、入力パケットの先頭の２４ｂｙｔｅのデータを、入力レジスタ部２０の各Ｉｎ＿ｒｅｇ０〜Ｉｎ＿ｒｅｇ２に８ｂｙｔｅずつ格納すると共に、次のステップ２０８で、ＩＶ＿ｒｅｇ４２にＩＶを格納し、その後にステップ２１０に移行する。
【０１０７】
ここで、図１３には、ＡＥＳ−ＣＴＲモードにおいてＩＶ＿ｒｅｇ４２にＩＶを格納する際のワークレジスタ４０のデータの流れが太線及び太枠で示されている。同図に示されるように、ＩＶ＿ｒｅｇ４２には、乱数ｎｏｎｃｅと、入力パケットに含まれるＩＶが入力される。このとき、セレクタ９０は乱数ｎｏｎｃｅをＮＯＮＣＥブロック４２Ａに入力するように制御され、セレクタ９２はＩＶをＩＶブロック４２Ｂに格納するように制御される。
【０１０８】
一方、セレクタ８８は、”０”をカウントアップ器４６に出力すると共に、セレクタ９４は、カウントアップ器４６の出力をＣｏｕｎｔｅｒブロック４２Ｃに格納するように制御される。すなわち、ＡＥＳ−ＣＴＲモードのパケット構成は、ＩＶが８ｂｙｔｅとなっており（図２（Ｂ）参照）、ＡＥＳ−ＣＴＲモードでは、ＩＶの前後に、乱数ｎｏｎｃｅとカウント値とを付加して暗号化及び復号化に用いる。
【０１０９】
次のステップ２１０では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行した後にステップ２１２に移行する。なお、認証値作成処理は、上記ＡＥＳ−ＣＢＣモードと同様であるので、説明を省略する（図１０参照）。
【０１１０】
なお、ＡＥＳ−ＣＴＲモードで暗号化されるパケット５０Ｂは、先頭に８ｂｙｔｅのＥＳＰ−ＨＤ５２及び８ｂｙｔｅのＩＶ５４が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、暗号化処理は施さない。
【０１１１】
ステップ２１２では、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ２１４で、Ｉｎ＿ｒｅｇ１及びＩｎ＿ｒｅｇ２にそれぞれパケットの続きを格納する。
【０１１２】
次のステップ２１６では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して暗号化処理を実行し、その後にステップ２１８に移行する。
【０１１３】
ここで、図１４には、暗号化処理を実行する際の情報処理回路１０におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ６６、セレクタ６８、セレクタ７２及びセレクタ７４は、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータと、ＩＶ＿ｒｅｇ４２に格納されたデータＣＴＲｎとを第１のＥＸＯＲ回路１２に入力するように制御される。
【０１１４】
また、セレクタ８０は、Ｋｙｉｎ３４に格納された暗号鍵がＡＥＳ回路１４に入力されるように制御される。これにより、ＡＥＳ回路１４には、第１のＥＸＯＲ回路１２の出力とＫｙｉｎ３４に格納された暗号鍵とが入力される。
【０１１５】
さらに、セレクタ８４は、この時点では第２のＥＸＯＲ回路１６による演算を行なわないように、”０”を出力するように制御される。
【０１１６】
そして、第２のＥＸＯＲ回路１６からの出力を出力レジスタ１８に格納し、セレクタ８６を介して情報処理回路１０から出力する。
【０１１７】
また、セレクタ６０及び６２は、第２のＥＸＯＲ回路１６からの出力をＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納するように制御される。
【０１１８】
すなわち、暗号化処理では、情報処理回路１０により、以下の（６）に示す演算を行い、演算結果を情報処理回路１０から出力すると共に、演算結果（暗号化したデータ）を認証値作成処理に利用するために、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納する。
AES暗号鍵（IV_reg  exor  In_reg０，１）・・・（６）
【０１１９】
また、図１５に示されるように、ＩＶ＿ｒｅｇ４２からＣＴＲｎを出力する際に、Ｃｏｕｎｔｅｒブロック４２Ｃのデータは、次のブロックの暗号化に備え、セレクタ８８を介してカウントアップ器４６にも出力される。カウントアップ器４６によりインクリメントされたカウント値は、セレクタ９４を介してＣｏｕｎｔｅｒ４２Ｃに格納される。すなわち、ＡＥＳ−ＣＴＲモードでは、各ブロックは、それぞれ異なるＣＴＲｎを用いて暗号化される。
【０１２０】
次のステップ２１８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ２２０に移行する。
【０１２１】
ステップ２２０では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ２１２に戻り、ステップ２１２〜２１８の処理を繰り返す。
【０１２２】
一方、ステップ２２０で肯定判定となった場合は、ステップ２２２に移行して、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトする。
【０１２３】
次のステップ２２６では、ＩＰｓｅｃの規格に基づいて、入力パケットの末尾にブランクデータを付加することなく最終的な認証値の作成を行なう場合に使用するワーク鍵Ｋ２を用いた処理を実行する。なお、当該ワーク鍵Ｋ２を用いた処理は、セレクタ７０が、データ格納部３０から”０ｘ０２０２・・・”を出力するように制御されること以外は、上記ＡＥＳ−ＣＢＣモードで説明したワーク鍵Ｋ３を用いた処理と同様である（図１７参照）。
【０１２４】
次のステップ２２８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対し、Ｋｅｙ＿ｒｅｇ３８に格納されたＫ１を用いて認証値作成処理を行い、その後にステップ２３０に移行する。なお、ステップ２２８の処理により、以下の（７）に示す演算の結果がＸＣＢＣ＿ｒｅｇ４４に格納される。
AESK1（（AES認証鍵（"0x0202・・・"）  exor  XCBC_reg）  exor  In_reg0,1）・・・（７）
【０１２５】
ステップ２３０では、ステップ２２８の処理により導出された認証値を情報処理回路１０から出力し、その後に暗号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ８６は、ＸＣＢＣ＿ｒｅｇ４４に格納された認証値をそのまま情報処理回路１０から出力するように制御される。
【０１２６】
（ＡＥＳ−ＣＴＲモード  復号化・認証値作成）
図７には、ＡＥＳ−ＣＴＲモードで暗号化されたパケットを復号化する際の情報処回路１０を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路１０のＡＥＳ−ＣＴＲモードでの復号化認証値作成処理における動作を説明する。
【０１２７】
まず、ステップ２５０に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路１０が組み込まれたＩＰｓｅｃ装置により、通信先のＩＰｓｅｃ装置とのネゴシエーションにより決定される。暗号鍵はＫｙｉｎ３４に、認証鍵はＫＣＢＣｋｙ３６に、それぞれ入力されてセットされる。
【０１２８】
次のステップ２５２では、認証値作成処理に用いるワーク鍵Ｋ１の生成及び生成したワーク鍵Ｋ１のＫｅｙ＿ｒｅｇ３８への格納を行ない、その後にステップ１５４に移行する。なお、ここでのワーク鍵Ｋ１の生成及び格納は、上記暗号化認証値作成処理と同様であるので、説明を省略する（図８参照）。
【０１２９】
ステップ２５４では、初期化処理として、ＸＣＢＣ＿ｒｅｇ４４に”０”をセットするようにセレクタ７８を動作させ、その後にステップ２５６に移行する。
【０１３０】
ステップ２５６では、入力パケットの先頭の２４ｂｙｔｅのデータを、入力レジスタ部２０の各Ｉｎ＿ｒｅｇ０〜Ｉｎ＿ｒｅｇ２に８ｂｙｔｅずつ格納すると共に、次のステップ２５８で、ＩＶ＿ｒｅｇ４２にＩＶを格納し、その後にステップ２６０に移行する。
【０１３１】
なお、ＩＶ＿ｒｅｇ４２へのＩＶの格納については、上記暗号化認証値作成処理と同様であるので、説明を省略する（図１３参照）。
【０１３２】
次のステップ２６０では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ２６２に移行する。なお、ＡＥＳ−ＣＴＲモードで暗号化されるパケットは、先頭に８ｂｙｔｅのＥＳＰ−ＨＤ５２及び８ｂｙｔｅのＩＶ５４が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、復号化処理は施さなくてよい。なお、認証値作成処理については、上記各処理と同様であるので、説明を省略する（図１０参照）。また、上記暗号化認証値作成処理と同様パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路１０から出力しない。
【０１３３】
ステップ２６２では、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトし、次のステップ１６４で、Ｉｎ＿ｒｅｇ１及びＩｎ＿ｒｅｇ２にそれぞれパケットの続きを格納する。
【０１３４】
次のステップ２６６では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して認証値作成処理を実行し、その後にステップ２６８に移行して、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対して復号化処理を実行し、その後にステップ２７０に移行する。すなわち、入力パケットに付加されている認証値は暗号化されたデータに基づいて導出されたものであるため、復号化時の認証値作成処理は、復号前のデータに基づいて認証値の演算を行なう。
【０１３５】
ここで、図１６には、復号化処理を実行する際の情報処理回路１０におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ６６、セレクタ６８及びセレクタ７２は、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータと、”０”とを第１のＥＸＯＲ回路１２に入力するように制御される。これにより、第１のＥＸＯＲ回路１２の出力は、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータと同一となる。
【０１３６】
また、セレクタ８０は、Ｋｙｉｎ３４に格納された暗号鍵がＡＥＳ回路１４に入力されるように制御される。これにより、ＡＥＳ回路１４には、Ｉｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータとＫｙｉｎ３４に格納された暗号鍵とが入力される。
【０１３７】
一方、セレクタ７４及びセレクタ８４は、第２のＥＸＯＲ回路１６にＩＶ＿ｒｅｇ４２に格納されたデータＣＴＲｎを入力するように制御される。
【０１３８】
そして、第２のＥＸＯＲ回路１６からの出力を出力レジスタ１８に格納し、セレクタ８６を介して情報処理回路１０から出力する。
【０１３９】
なお、このときも、上記暗号化認証値作成処理のＣＴＲｎ読出し時と同様に、ＩＶ＿ｒｅｇ４２のＣｏｕｎｔｅｒブロック４２Ｃのカウント値はインクリメントされる（図１５参照）。
【０１４０】
すなわち、復号化処理では、情報処理回路１０により、以下の（８）に示す演算を行い、演算結果を情報処理回路１０から出力すると共に、次のブロックの復号化処理に備え、ＩＶ＿ｒｅｇ４２のカウント値をインクリメントする。
（AES暗号鍵（In_reg０,１）  exor  IV_reg）・・・（８）
【０１４１】
ステップ２７０では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ２６２に戻り、ステップ２６２〜２６８の処理を繰り返す。
【０１４２】
一方、ステップ２７０で肯定判定となった場合は、ステップ２７２に移行して、入力レジスタ部２０に格納されているデータを１６ｂｙｔｅシフトする。
【０１４３】
次のステップ２７６では、ＩＰｓｅｃの規格に基づいて、入力パケットの末尾にブランクデータを付加することなく最終的な認証値の作成を行なう場合に使用するワーク鍵Ｋ２を用いた処理を実行する。なお、当該ワーク鍵Ｋ２を用いた処理は、セレクタ７０が、データ格納部３０から”０ｘ０２０２・・・”を出力するように制御されること以外は、上記暗号化認証値作成処理で説明したワーク鍵Ｋ２を用いた処理と同様である。
【０１４４】
次のステップ２７８では、入力レジスタ部２０のＩｎ＿ｒｅｇ０，Ｉｎ＿ｒｅｇ１に格納されたデータに対し、Ｋｅｙ＿ｒｅｇ３８に格納されたＫ１を用いて認証値作成処理を行い、その後にステップ２８０に移行する。なお、ステップ２７８の処理により、上記（７）に示す演算の結果がＸＣＢＣ＿ｒｅｇ４４に格納される。
【０１４５】
ステップ２８０では、ステップ２７８の処理により導出された認証値を情報処理回路１０から出力し、その後に復号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ８６は、ＸＣＢＣ＿ｒｅｇ４４に格納された認証値をそのまま情報処理回路１０から出力するように制御される。
【０１４６】
以上説明したように、本実施形態によれば、各セレクタにより情報処理回路１０のデータの流れを切り替えるように制御して、認証値作成処理と暗号化処理とを入力レジスタ部２０のレジスタ２個単位で交互に実行することにより、回路規模を増大させることなく暗号化及び認証値作成を実行できる。
【０１４７】
特に、ＡＥＳ−ＣＢＣモードでの処理においては、認証値作成処理と暗号化処理とで処理対象とする入力レジスタ部２０のレジスタをずらすことで、効率よく処理を行うことができる。
【０１４８】
また、ワークレジスタのＩＶ＿ｒｅｇ４２を分割して構成すると共に、ＩＶ＿ｒｅｇ４２にカウンタ機能を持たせたので、ＡＥＳ−ＣＴＲモードにも対応することができる。
【０１４９】
更に、２つのＥＸＯＲ回路１２，１６をＡＥＳ回路１４の前段及び後段にそれぞれ設けたことにより、複雑な構成を用いることなく暗号化処理と復号処理とを実行可能にしている。
【０１５０】
また、２つのＥＸＯＲ回路１２，１６をＡＥＳ回路１４の前段及び後段にそれぞれ設けたことにより、ＩＰｓｅｃの規格に基づくワーク鍵Ｋ２及びＫ３を用いた処理を、ワーク鍵Ｋ２及びＫ３を格納するレジスタ等を別途設けなくても実行することができる。なお、第１のＥＸＯＲ回路１２及びＡＥＳ回路１４を用いたワーク鍵を作成するための処理を実行する際に、更に第２のＥＸＯＲ回路１６を用いてＥＸＯＲ演算を行なうことができるので、一度に（３）に示される演算が実行でき、処理時間も短縮される。
【０１５１】
なお、実施の形態で説明した情報処理回路１０の構成（図１、図３参照）や各種処理の流れ（図４〜７参照）は、一例であり、本発明の主旨を逸脱しない範囲で適宜変更可能であることは言うまでもない。
【０１５２】
例えば、上記実施形態では、ＩＶをＢＵＳから取得してＩＶ＿ｒｅｇ４２に格納する形態について説明したが、ＩＶは入力レジスタ部２０にも入力されるので、入力レジスタ部２０から読出して格納するようにしてもよい。
【０１５３】
また、上記実施形態では、入力レジスタ部２０を、８ｂｙｔｅの３個のレジスタ２２，２４，２６備えた構成とする形態について説明したが、１ブロックのデータを１／ｍ（ｍは偶数）ずつ記憶するレジスタを３ｍ／２個備えた構成とすることもできる。例えば、４ｂｙｔｅのレジスタを６個備えた構成としてもよい。
【図面の簡単な説明】
【０１５４】
【図１】実施形態に係る情報処理回路の構成を概略的に示すブロック図である。
【図２】（Ａ）はＡＥＳ−ＣＢＣモードで暗号化されたパケットの構成を、（Ｂ）はＡＥＳ−ＣＴＲモードで暗号化されたパケットの構成を、それぞれ示す模式図である。
【図３】実施形態に係る情報処理回路のワークレジスタの詳細な構成を示すブロック図である。
【図４】実施形態に係る情報処理回路を用いたＡＥＳ−ＣＢＣモードによる暗号化認証値作成処理の流れを示すフローチャートである。
【図５】実施形態に係る情報処理回路を用いたＡＥＳ−ＣＢＣモードによる復号化認証値作成処理の流れを示すフローチャートである。
【図６】実施形態に係る情報処理回路を用いたＡＥＳ−ＣＴＲモードによる暗号化認証値作成処理の流れを示すフローチャートである。
【図７】実施形態に係る情報処理回路を用いたＡＥＳ−ＣＴＲモードによる復号化認証値作成処理の流れを示すフローチャートである。
【図８】実施形態に係る情報処理回路によりワーク鍵の生成及び格納を行なう場合のデータの流れを示すブロック図である。
【図９】ＡＥＳ−ＣＢＣモードにおいて、実施形態に係るワークレジスタにＩＶを格納する際のデータの流れを示すブロック図である。
【図１０】実施形態に係る情報処理回路により認証値作成を行なう場合のデータの流れを示すブロック図である。
【図１１】実施形態に係る情報処理回路によりＡＥＳ−ＣＢＣモードでの暗号化を行なう場合のデータの流れを示すブロック図である。
【図１２】実施形態に係る情報処理回路によりＡＥＳ−ＣＢＣモードでの復号化を行なう場合のデータの流れを示すブロック図である。
【図１３】ＡＥＳ−ＣＴＲモードにおいて、実施形態に係るワークレジスタにＩＶを格納する際のデータの流れを示すブロック図である。
【図１４】実施形態に係る情報処理回路によりＡＥＳ−ＣＴＲモードでの暗号化を行なう場合のデータの流れを示すブロック図である。
【図１５】ＡＥＳ−ＣＴＲモードにおいて、実施形態に係るワークレジスタからＩＶ＿ｒｅｇに格納されたデータを出力する際のデータの流れを示すブロック図である。
【図１６】実施形態に係る情報処理回路によりＡＥＳ−ＣＴＲモードでの復号化を行なう場合のデータの流れを示すブロック図である。
【図１７】実施形態に係る情報処理回路により最後のブロックについてＸＣＢＣ処理を行うに際し、ワーク鍵Ｋ３を用いた処理を実行する場合のデータの流れを示すブロック図である。
【符号の説明】
【０１５５】
１０  情報処理回路
１２  第１のＥＸＯＲ回路
１４  ＡＥＳ回路（暗号化回路）
１６  第２のＥＸＯＲ回路
１８  出力レジスタ
２０  入力レジスタ部
３０  データ格納部
３２  鍵管理部
４０  ワークレジスタ
６０，６２，６４，６６，６８，７０,７２,７４,７６,７８，８０，８２，８４，８６，８８，９０，９２，９４  セレクタ（制御手段）
【図１】
0004395527.tif 000002
【図２】
0004395527.tif 000003
【図３】
0004395527.tif 000004
【図４】
0004395527.tif 000005
【図５】
0004395527.tif 000006
【図６】
0004395527.tif 000007
【図７】
0004395527.tif 000008
【図８】
0004395527.tif 000009
【図９】
0004395527.tif 000010
【図１０】
0004395527.tif 000011
【図１１】
0004395527.tif 000012
【図１２】
0004395527.tif 000013
【図１３】
0004395527.tif 000014
【図１４】
0004395527.tif 000015
【図１５】
0004395527.tif 000016
【図１６】
0004395527.tif 000017
【図１７】
0004395527.tif 000018