説明

情報処理装置

【課題】回路規模を増大させることなく暗号化及び認証値作成を実行できる情報処理装置を提供する。
【解決手段】入力パケットデータに対する暗号化処理及び認証値作成処理を行なうに際し、入力レジスタ部20に入力パケットデータを8byteずつ記憶する3個のレジスタ22,24,26を設け、レジスタ22,24に記憶されたデータについて第1のEXOR回路12及びAES回路14を用いた認証値作成処理を行った後に、レジスタ24,26に記憶されたデータについて第1のEXOR回路12及びAES回路14を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データをレジスタ24,26に記憶し、その後に入力レジスタ部20のデータを16byteシフトし、入力パケットデータの続きの16byteのデータをレジスタ24,26に記憶することを繰り返し実行するように制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IPsecに使用される暗号化及び認証を行なう情報処理装置、特に、AESアルゴリズムを使用するAES−CTR、AES−CBC暗号化及びXCBC認証値の作成を行なう情報処理装置に関する。
【背景技術】
【0002】
インターネットにおける通信においてはセキュリティの重要性が認識されており、通信の秘匿性(内容が傍受者にわからないこと)及び通信の正当性(内容が通信途中で改変されていないこと)を実現する種々の方法が提案されている。
【0003】
従来、データの暗号化及び認証に関する技術として、例えば、特許文献1には、暗号鍵の更新を容易に行なうべく、変換器から出力されるイニシャルベクタと、受信信号中から得られたイニシャルベクタが同一である場合に、その後に得られる暗号鍵が送信装置のものと同一であると判断することが提案されている。
【0004】
また、特許文献1では、暗号鍵が送信装置のものであると判断した場合、変換器から出力されたイニシャルベクタを最初のワードとして暗号器に供給し、暗号鍵記憶器からの暗号鍵を用いて暗号化して、暗号器の出力の一部をレジスタに戻して次のワードとして公知のOFB(Output Feedback)モードを形成する一方、暗号器の出力を暗号鍵として加算器に供給し、同期検出器からの受信信号の暗号解読を行なう。
【0005】
一方、特許文献2には、機器認証システムの安全性を高めるために従来の2倍長の認証データを用いて認証を行うことが提案されている。
【0006】
具体的には、まず、認証装置側で64ビットの乱数を発生させて当該乱数を被認証装置に送信する。そして、認証装置及び被認証装置により、それぞれ当該乱数を2つの32ビットデータに分離すると共に、それぞれの装置において、得られた一方のデータを他方のデータを鍵として変換する。その後、被認証装置は変換結果を認証装置に送信し、認証装置は被認証装置から受信した変換結果と自己の変換結果とを比較することにより認証を行なう。
【0007】
ここで、上記通信の秘匿性及び正当性を実現するための方法として、IPsec(Security Architecture for Internet Protocol)が適用される場合がある。
【0008】
IPsecは、暗号アルゴリズムと認証アルゴリズムを使用して実現されており、暗号アルゴリズムとしては、従来、DES(Data Encryption Standard)及びトリプルDESが使用されていた。
【0009】
近年、DESの安全性に問題が見つかり、今後は暗号アルゴリズムとしてAES(Advanced Encryption Standard)を用いることが一般的になると予測される。
【0010】
また、認証アルゴリズムとしては、従来、SHA−1(Secure Hash Algorithm-1)又はMD−5(Message Digest Algorithm-5)が使用されていたが、DES同様、脆弱性が見つかり、AESアルゴリズムを基本としたXCBC方式が一般的になると予測される。
【特許文献1】特開2005−110223公報
【特許文献2】特開平10−233771号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、従来は、AESアルゴリズムを使用して暗号化と認証を行なう場合、暗号化を実行する回路と認証値を作成する回路は別々に設けられており、回路規模が増大する、という問題点があった。
【0012】
ここで、1の情報処理回路により暗号化と認証値作成を行なうとすると、まず、情報処理回路に入力される1パケット分のデータに対して順次暗号化処理を実行し、順次出力すると共にバッファメモリに蓄積し、その後に回路構成を切り替えてから、バッファメモリに蓄積された1パケット分の暗号化データに基づいて認証値作成処理を実行することが考えられる。この場合、1パケット分のデータを格納できる容量のバッファメモリを準備する必要がある。1パケット分のデータは、2K〜10Kbyte程度になる場合があるため、単純に1の情報処理回路で暗号化及び認証値作成を実行しようとすると、回路規模が増大してしまう。
【0013】
本発明は上記問題点を解決するためになされたものであり、回路規模を増大させることなく暗号化及び認証値作成を実行できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、請求項1の発明は、入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、2つのデータの排他的論理和を出力する第1の排他的論理和回路と、前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、入力パケットデータを前記ブロック単位の1/m(mは偶数)ずつ記憶するレジスタを3m/2個有する入力レジスタ部と、前記入力レジスタ部の先頭からm個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部の末尾からm個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾からm個のレジスタに記憶し、その後に前記入力レジスタ部のデータをレジスタm個分シフトし、入力パケットデータの続きのデータを末尾からm個分のレジスタに記憶することを繰り返し実行するように制御する制御手段と、を備えている。
【0015】
一方、上記目的を達成するために、請求項2の発明は、入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、2つのデータの排他的論理和を出力する第1の排他的論理和回路と、前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、入力パケットデータを1ブロック分記憶する入力レジスタ部と、前記入力レジスタ部に記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部に記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部に記憶し、その後に前記入力レジスタ部に入力パケットデータの続きの1ブロック分のデータを記憶することを繰り返し実行するように制御する制御手段と、を備えている。
【0016】
更に、上記目的を達成するために、請求項3の発明は、入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、2つのデータの排他的論理和を出力する第1の排他的論理和回路と、前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて16byte単位でブロック暗号化する暗号化回路と、入力パケットデータを8byteずつ記憶するレジスタを3個有する入力レジスタ部と、前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部の末尾から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾から2個のレジスタに記憶し、その後に前記入力レジスタ部のデータをレジスタ2個分シフトし、入力パケットデータの続きのデータを末尾から2個分のレジスタに記憶することを繰り返し実行するように制御するCBCモードと、前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記入力レジスタ部の末尾から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行った後に、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の先頭から2個のレジスタに記憶し、前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行い、その後に前記入力レジスタ部のデータをレジスタ2個分シフトし、入力パケットデータの続きのデータを末尾から2個分のレジスタに記憶することを繰り返し実行するように制御するCTRモードと、の何れかに制御する制御手段と、を備えている。
【0017】
本発明は、請求項4の発明にように、2つのデータの排他的論理和を出力する第2の排他的論理和回路を更に備え、前記制御手段は、前記第1の排他的論理和回路と前記第2の排他的論理和回路とを使い分けることにより暗号化された入力パケットデータの復号化を更に実行可能にしてもよい。更に、前記第2の排他的論理和回路を、請求項5の発明のように、前記暗号化回路の出力端側に配置することにより、認証値の作成に伴う複雑な排他的論理和演算を効率よく行なうことができる。
【発明の効果】
【0018】
以上説明したように、本発明は、回路規模を増大させることなく暗号化及び認証値作成を実行できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【0019】
以下、図面を参照して、本発明の実施形態を詳細に説明する。なお、本実施形態では、IP(Internet Protocol)通信を行なうに際し、IPsec(Security Architecture for Internet Protocol)を適用する場合に搭載されるIPsec装置に本発明を適用し、IPsecのセキュリティプロトコルとして、ESP(Encapsulating Security Payload)を使用する場合について説明する。
【0020】
また、本実施形態では、暗号アルゴリズムとして、ブロック暗号化方式によりデータを128bitのブロック単位で暗号化するAES(Advanced Encryption Standard)を、認証アルゴリズムとしてXCBCを、それぞれ適用する場合について説明する。
【0021】
図1には、本実施形態に係る情報処理回路10の概略構成が示されている。なお、当該情報処理回路10は、IPsec装置を構成する回路のうち、主として暗号化処理、復号化処理及び認証値作成処理を実行する部位を抜き出したものである。
【0022】
同図に示されるように、情報処理回路10は、演算回路として、第1の排他的論理和(EXOR)回路12、AES回路14及び第2のEXOR回路16を含んで構成されている。第1のEXOR回路12の出力端はAES回路14の入力端に、AES回路14の出力端は第2のEXOR回路16の入力端に、それぞれ接続されている。
【0023】
なお、同図に示す60〜86はセレクタであり、各セレクタに入力されるデータを選択的に出力可能である。また、各セレクタは、それぞれ不図示の制御回路から出力される制御信号に基づいて動作されるようになっており、例えば、制御信号が入力されたタイミングで、当該制御信号に基づくデータを選択して出力する。
【0024】
また、情報処理回路10は、各回路で用いるデータや各回路から出力されたデータを一時的に格納するために、出力レジスタ(Out_reg)18、入力レジスタ部20、データ格納部30、鍵管理部32及びワークレジスタ40を含んで構成されている。
【0025】
出力レジスタ18には、当該情報処理回路10に設けられた上記各演算回路による演算結果が入力されるようになっており、演算結果が一時的に保持される。当該出力レジスタ18は、セレクタ86を介して外部と接続されている。
【0026】
入力レジスタ部20には、IPsec装置全体の動作を司る不図示の制御部等が接続されたBUSに接続され、外部から受信したIPパケットが入力可能に構成されている。また、入力レジスタ部20は、セレクタ68を介して第1のEXOR回路12に接続されると共に、セレクタ84を介して第2のEXOR回路16に接続されている。さらに、入力レジスタ部20の入力端は、第2のEXOR回路16の出力端とも接続されている。
【0027】
また、入力レジスタ部20は、同じ容量のIn_reg0,In_reg1,In_reg2の3つのレジスタ22,24,26により構成されており、各レジスタ22,24,26の入力端には、それぞれセレクタ60,62,64が設けられている。これにより、各レジスタ22,24,26には、各セレクタ60,62,64を介して、BUSを介して入力されるIPパケット又は第2のEXOR回路16の出力端から出力される演算結果の何れかが選択的に入力される。
【0028】
データ格納部30には、4つの所定長のデータが格納されると共に、出力端にセレクタ70が設けられている。データ格納部30に格納されたデータは、セレクタ70により選択的に出力される。なお、データ格納部30に格納されている4つのデータのうち、3つはIPsecの規格に応じたパターンのデータであり、残りの1つは”0”に相当するデータである。
【0029】
また、データ格納部30は、セレクタ68を介して第1のEXOR回路12に接続されている。セレクタ68は、入力レジスタ部20及びデータ格納部30に格納されたデータを選択的に第1のEXOR回路12に入力する。
【0030】
鍵格納部32は、暗号鍵が保持されるKyin34と、認証鍵が保持されるXCBCky36と、ワーク鍵が保持されるKey_reg38と、の3つのレジスタを含んで構成されている。Kyin34はセレクタ80を介してAES回路14に接続されており、XCBCky36及びKey_reg38は、セレクタ82及びセレクタ80を介してAES回路14に接続されている。
【0031】
なお、AES回路14が暗号化及び復号化の処理に利用される場合には、Kyin34に保持された暗号鍵がAES回路14に入力される。また、AES回路14がワーク鍵の生成に利用される場合にはXCBCKy36に保持された認証鍵が、AES回路14が認証値の作成に利用される場合には、Key_reg38に保持されたワーク鍵が、それぞれAES回路14に入力される。
【0032】
ワークレジスタ40は、IV_reg42及びXCBC_reg44を含んで構成されており、それぞれセレクタ74及びセレクタ72を介して第1のEXOR回路12に接続されている。また、IV_reg42の入力端には、セレクタ76が設けられており、BUS、セレクタ66の出力端、及び第2のEXOR回路16の出力端の何れかと選択的に接続される。一方、XCBC_reg44の入力端には、セレクタ78が設けられており、”0”又は第2のEXOR回路16から出力された演算結果の何れかが選択的に入力される。
【0033】
セレクタ74は、情報処理回路10において暗号化及び復号化が実行される場合にはIV_reg42に格納されたデータを、情報処理回路10において認証値の作成が実行される場合にはXCBC_reg44に格納されたデータを、それぞれ出力する。
【0034】
また、セレクタ72は、第1のEXOR回路12を機能させる場合(排他的論理和を演算する場合)にはセレクタ74の出力を選択し、第1のEXOR回路12を機能させない場合(セレクタ68からの出力をそのままAES回路14に入力する場合)には”0”を選択する。
【0035】
なお、ワークレジスタ40の出力端は、セレクタ84にも接続されている。さらに、XCBC_reg44の出力端は、セレクタ86に接続されている。
【0036】
セレクタ84は、第2のEXOR回路16を機能させる場合(排他的論理和を演算する場合)にはセレクタ74の出力又はセレクタ66の出力を選択し、第2のEXOR回路16を機能させない場合(AES回路14の演算結果をそのまま利用又は出力する場合)には”0”を選択する。
【0037】
ここで、本実施形態に係る情報処理回路10は、AES−CBC(Cipher Block Chaining)及びAES−CTR(Counter)の両方に対応可能に構成されている。
【0038】
図2(A)には、AES−CBCでIPsec化されたパケット50Aの構成の一例が示されている。同図に示されるように、パケット50Aは、ESPヘッダ(ESP−HD)52と、IV(Initialization Vector)54と、ペイロード(Payload)56と、認証値(ICV:Integrity Check Value)58と、により構成されている。
【0039】
ESPヘッダ52は、8byteのデータであり、IPsec装置間におけるパケット送受信前のネゴシエーションにより決定されたIPsecのパラメータを示す情報であり、パラメータとしては、暗号鍵、認証鍵、AESのモード等が含まれる。
【0040】
また、IV54は、AESによるブロック暗号化のブロック長128bit(=16byte)と同じ長さのデータであり、CBCモードにおいてペイロード56の最初のブロックの暗号化及び復号化に用いるデータである。すなわち、CBCモードにおいては、暗号化しようとするブロックnのデータDnと、前のブロックn−1を暗号化した暗号化データdn−1との排他的論理和(Dn exor dn−1)を暗号鍵を用いてAES暗号化してブロックnの暗号化データdnとする(dn=AES暗号鍵(Dn exor dn−1))。最初の1ブロック目の暗号化及び復号化処理においては、前のブロックが存在しないため、最初の1ブロック目のデータについてはIV54との排他的論理和を暗号化する(d1=AES暗号鍵(D1 exor IV))。
【0041】
ペイロード56は、16byteのN倍の長さの暗号化されたデータである。すなわち、AESにおいては、暗号化を行なう際に、最後のブロックが128bitに満たない場合、最後のブロックが128bitになるように末尾にデータを追加してから暗号化を行なうため、どのようなデータを暗号化しても16byteのN倍の長さになる。
【0042】
ICV58は、12byteの長さのデータであり、XCBCにより導出された認証値である。
【0043】
一方、図2(B)には、AES−CTRでIPsec化されたパケット50Bの構成の一例が示されている。同図に示されるように、当該パケット50Bは、IV54が8byteである以外は、上記AES−CBCによるパケット50Aと同様の構成となっている。すなわち、AES−CTRでは、例えば、ネゴシエーションにより予め決定された4byteの乱数(nonce)と、8byteのIV54と、カウンタによる4byteのカウント値nと、により構成される16byteのデータCTRnと、ペイロードのブロックnのデータDnとの排他的論理和を暗号化する(dn=AES暗号鍵(CTRn exor Dn))。
【0044】
そこで、本実施形態に係る情報処理回路10では、ワークレジスタ40のIV_reg42の構成を、AES−CBCとAES−CTRの両方に対応できるようにしている。
【0045】
図3には、ワークレジスタ40の詳細な構成図が示されている。同図に示されるように、IV_reg42は、3つのブロック42A〜42Cに分かれた構成とされている。これらの各ブロック42A〜42Cの出力端は、セレクタ74に接続されており、まとめて1つのデータ列として読み出される。
【0046】
IV_reg42は、暗号化するブロックのデータ長に応じた8byteであり、そのうち、NONCEブロック42Aは、AES−CTRを実行する際の乱数のデータ長に応じた32bitとされており、IVブロック42Bは、AES−CTRのIV54のデータ長に応じた64bitとされている。残りの32bitは、counterブロック42Cに割り当てられている。
【0047】
また、各ブロック42A〜42Cの入力端には、セレクタ90〜94が設けられており、上述した各セレクタと同様に、情報処理回路10の動作状態に応じて制御される。各セレクタ90〜94には、セレクタ76を介して入力されるデータの他に、それぞれ乱数、IV、カウント値が入力される。
【0048】
さらに、counterブロック42Cの出力端はセレクタ88を介してカウントアップ器46の入力端に接続されており、カウントアップ器46の出力端はセレクタ94を介してcounterブロック42Cに接続されている。1ブロックの暗号化処理が完了する毎にカウントアップされる。なお、セレクタ88により”0”を出力することで、counterブロック42Cのカウント値が初期化される(図13、図15も参照)。
【0049】
なお、IV_reg42は、AES−CBC暗号化を実行する場合には、処理開始時にブロック42A〜42Cにまたがって16byteのIV54が入力され、1ブロックの暗号化処理が完了する毎に、暗号化されたデータdnに置き換えられる。
【0050】
さらに、IV_reg42は、AES−CBC復号化を実行する場合には、処理開始時にブロック42A〜42Cにまたがって16byteのIV54が入力され、その後、各ブロックnの復号化が完了する毎に、復号されたブロックnの復号前のデータdnに置き換えられる。
【0051】
以下に、本実施形態の作用を説明する。
【0052】
本実施形態に係る情報処理回路10は、IPsecを適用したIP通信によりパケットを送信又は受信する際に、暗号化及び認証値作成に用いられ、不図示の制御回路により、送信するパケット又は受信したパケットの暗号化モードに応じて動作が制御される。
【0053】
なお、本実施形態に係る情報処理回路10は、AES−CBC及びAES−CTRの2種類の暗号化モードに対応しているので、以下、モード別、暗号化、復号化処理別に説明する。
【0054】
(AES−CBCモード 暗号化・認証値作成)
図4には、AES−CBCモードでパケットを暗号化する際の情報処回路10を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路10のAES−CBCモードでの暗号化認証値作成処理における動作を説明する。
【0055】
まず、ステップ100に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路10が組み込まれたIPsec装置により、通信先のIPsec装置とのネゴシエーションにより決定される。暗号鍵はKyin34に、認証鍵はKCBCky36に、それぞれ入力されてセットされる。
【0056】
次のステップ102では、認証値作成(XCBC)処理に用いるワーク鍵K1の生成及び生成したワーク鍵K1のKey_reg38への格納を行ない、その後にステップ104に移行する。
【0057】
ワーク鍵K1の生成及び格納時には、図8に太線及び太枠で示されるように回路内をデータが流れるように、情報処理回路10内の各セレクタの動作が制御される。すなわち、データ格納部30に格納されたデータ”0x0101・・・”及びXCBCKy36にセットされた認証鍵をAES回路14に入力する。これにより、AES回路14の出力は、AES認証鍵(”0x0101・・・”)となる。また、AES回路14による暗号化の結果をワーク鍵K1としてKey_reg38に格納する。
【0058】
ステップ104では、初期化処理として、XCBC_reg44に”0”をセットするようにセレクタ78を動作させ、その後にステップ106に移行する。
【0059】
ステップ106では、入力パケットの先頭の24byteのデータを、入力レジスタ部20の各In_reg0〜In_reg2に8byteずつ格納すると共に、次のステップ108で、IV_reg42にIVを格納し、その後にステップ110に移行する。
【0060】
図9には、IV_reg42へのIVの格納時のワークレジスタ40におけるデータの流れが示されている。同図に示されるように、セレクタ76は、BUSから入力されるデータを出力するように制御され、IVをIV_reg42に入力する。
【0061】
また、セレクタ90、92、94は、それぞれセレクタ76から出力されたデータを各ブロックに出力するように制御される。これにより、BUSから入力されたIVの先頭部分の32bitがNONCEブロック42Aに、次の64bitがIVブロック42Bに、残りの32bitがCounterブロック42Cに、それぞれ入力される。
【0062】
次のステップ110では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ112に移行する。なお、AES−CBCモードで暗号化されるパケットは、先頭に8byteのESP−HD52及び16byteのIV54が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、暗号化処理は施さない。
【0063】
ここで、図10には、認証値作成処理を実行する際の情報処理回路10におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ66、セレクタ68、セレクタ72及びセレクタ74は、In_reg0,In_reg1に格納されたデータと、XCBC_reg44に格納されたデータ(ステップ110では、初期値”0”)とを第1のEXOR回路12に入力するように制御される。
【0064】
また、セレクタ80及びセレクタ82は、Key_reg38に格納されたワーク鍵(ステップ100ではワーク鍵K1)がAES回路14に入力されるように制御される。これにより、AES回路14には、第1のEXOR回路12の出力とKey_reg38に格納されたワーク鍵とが入力される。
【0065】
また、セレクタ84は、この時点では第2のEXOR回路16による演算を行なわないように、”0”を出力するように制御される。さらに、セレクタ78は、第2のEXOR回路16からの出力をXCBC_reg44に格納するように制御される。
【0066】
すなわち、認証値作成処理は、以下の(1)に示す演算を行い、演算結果をXCBC_regに格納することにより行なわれる。なお、この処理をパケットの末尾まで繰り返することにより、認証値ICVが導出されるので、パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路10から出力しない。
AESK1(XCBC_reg exor In_reg0,1)・・・(1)
【0067】
ステップ112では、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ114で、In_reg1及びIn_reg2にそれぞれパケットの続きを格納する。
【0068】
次のステップ116では、入力レジスタ部20のIn_reg1,In_reg2に格納されたデータに対して暗号化処理を実行し、その後にステップ118に移行する。
【0069】
ここで、図11には、暗号化処理を実行する際の情報処理回路10におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ66、セレクタ68、セレクタ72及びセレクタ74は、In_reg1,In_reg2に格納されたデータと、IV_reg42に格納されたデータ(最初のブロックに対する処理では、IVとなる)とを第1のEXOR回路12に入力するように制御される。また、セレクタ80は、Kyin34に格納された暗号鍵がAES回路14に入力されるように制御される。これにより、AES回路14には、第1のEXOR回路12の出力とKyin34に格納された暗号鍵とが入力される。また、セレクタ84は、この時点では第2のEXOR回路16による演算を行なわないように、”0”を出力するように制御される。
【0070】
そして、第2のEXOR回路16からの出力を出力レジスタ18に格納し、セレクタ86を介して情報処理回路10から出力する。
【0071】
また、セレクタ76は、第2のEXOR回路16からの出力をIV_reg42に格納するように制御される。さらに、セレクタ62及び64も、第2のEXOR回路16からの出力をIn_reg1,2に格納するように制御される。
【0072】
すなわち、暗号化処理では、情報処理回路10により、以下の(2)に示す演算を行い、演算結果を情報処理回路10から出力すると共に、演算結果を次のブロックの暗号化処理に用いるためにIV_reg42に格納する。また、演算結果(暗号化したデータ)を認証値作成処理に利用するために、In_reg1,2に格納する。
AES暗号鍵(IV_reg exor In_reg1,2)・・・(2)
【0073】
次のステップ118では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ120に移行する。
【0074】
ステップ120では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ112に戻り、ステップ112〜118の処理を繰り返す。
【0075】
一方、ステップ120で肯定判定となった場合は、ステップ122に移行して、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ124では、In_reg1にブランクデータを格納する。
【0076】
次のステップ126では、IPsecの規格に基づいて、入力パケットの末尾にブランクデータを挿入して最終的な認証値の作成を行なう場合に使用するワーク鍵K3を用いた処理を実行する。
【0077】
図17に示されるように、このワーク鍵K3を用いた処理では、セレクタ70は、データ格納部30から”0x0303・・・”を出力するように制御されると共に、セレクタ72は”0”を出力するように制御される。また、セレクタ80及びセレクタ82は、XCBCKy36に格納された認証鍵を出力するように制御される。これにより、ワーク鍵K3(K3=(AES認証鍵”0x0303・・・”)))が生成される。
【0078】
更に、セレクタ74及びセレクタ84は、XCBC_reg44に格納されたデータを出力するように制御され、セレクタ78は第2のEXOR回路16の出力をXCBC_reg44に格納するように制御される。
【0079】
このようにして、ワーク鍵K3を用いた処理では、以下の(3)に示す演算の結果が格納されることになる。
(AES認証鍵("0x0303・・・") exor XCBC_reg)・・・(3)
【0080】
次のステップ128では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対し、Key_reg38に格納されたK1を用いて認証値作成処理を行い、その後にステップ130に移行する。なお、ステップ128の処理により、以下の(4)に示す演算の結果がXCBC_reg44に格納される。
AESK1((AES認証鍵("0x0303・・・") exor XCBC_reg) exor In_reg0,1)・・・(4)
【0081】
ステップ130では、ステップ128の処理により導出された認証値を情報処理回路10から出力し、その後に暗号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ86は、XCBC_reg44に格納された認証値をそのまま情報処理回路10から出力するように制御される。
【0082】
(AES−CBCモード 復号化・認証値作成)
図5には、AES−CBCモードで暗号化されたパケットを復号化する際の情報処回路10を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路10のAES−CBCモードでの復号化認証値作成処理における動作を説明する。
【0083】
まず、ステップ150に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路10が組み込まれたIPsec装置により、通信先のIPsec装置とのネゴシエーションにより決定される。暗号鍵はKyin34に、認証鍵はKCBCky36に、それぞれ入力されてセットされる。
【0084】
次のステップ152では、認証値作成(XCBC)処理に用いるワーク鍵K1の生成及び生成したワーク鍵K1のKey_reg38への格納を行ない、その後にステップ154に移行する。なお、ここでのワーク鍵K1の生成及び格納は、上記暗号化認証値作成処理と同様であるので、説明を省略する(図8参照)。
【0085】
ステップ154では、初期化処理として、XCBC_reg44に”0”をセットするようにセレクタ78を動作させ、その後にステップ156に移行する。
【0086】
ステップ156では、入力パケットの先頭の24byteのデータを、入力レジスタ部20の各In_reg0〜In_reg2に8byteずつ格納すると共に、次のステップ158で、IV_reg42にIVを格納し、その後にステップ160に移行する。
【0087】
なお、IV_reg42へのIVの格納については、上記暗号化認証値作成処理と同様であるので、説明を省略する(図9参照)。
【0088】
次のステップ160では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ162に移行する。なお、AES−CBCモードで暗号化されるパケットは、先頭に8byteのESP−HD52及び16byteのIV54が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、復号化処理は施さなくてよい。なお、認証値作成処理については、上記暗号化認証値作成処理と同様であるので、説明を省略する(図10参照)。また、上記暗号化認証値作成処理と同様パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路10から出力しない。
【0089】
ステップ162では、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ164で、In_reg1及びIn_reg2にそれぞれパケットの続きを格納する。
【0090】
次のステップ166では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ168に移行して、入力レジスタ部20のIn_reg1,In_reg2に格納されたデータに対して復号化処理を実行し、その後にステップ170に移行する。すなわち、入力パケットに付加されている認証値は暗号化されたデータに基づいて導出されたものであるため、復号化時の認証値作成処理は、復号前のデータに基づいて認証値の演算を行なう。
【0091】
ここで、図12には、復号化処理を実行する際の情報処理回路10におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ66、セレクタ68及びセレクタ72は、In_reg1,In_reg2に格納されたデータと、”0”とを第1のEXOR回路12に入力するように制御される。これにより、第1のEXOR回路12の出力は、In_reg1,In_reg2に格納されたデータと同一となる。
【0092】
また、セレクタ80は、Kyin34に格納された暗号鍵がAES回路14に入力されるように制御される。これにより、AES回路14には、In_reg1,In_reg2に格納されたデータとKyin34に格納された暗号鍵とが入力される。
【0093】
一方、セレクタ74及びセレクタ84は、第2のEXOR回路16にIV_reg42に格納されたデータ(最初のブロックに対する処理では、IVとなる)を入力するように制御される。
【0094】
そして、第2のEXOR回路16からの出力を出力レジスタ18に格納し、セレクタ86を介して情報処理回路10から出力する。
【0095】
また、セレクタ76は、今回復号化処理の対象となったデータ(この時点で、In_reg1,In_reg2に格納されているデータ)をIV_reg42に格納するように制御される。
【0096】
すなわち、復号化処理では、情報処理回路10により、以下の(5)に示す演算を行い、演算結果を情報処理回路10から出力すると共に、今回復号化処理の対象となったデータを次のブロックの復号化処理に用いるためにIV_reg42に格納する。
(AES暗号鍵(In_reg1,2) exor IV_reg)・・・(5)
【0097】
ステップ170では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ162に戻り、ステップ162〜168の処理を繰り返す。
【0098】
一方、ステップ170で肯定判定となった場合は、ステップ172に移行して、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ174では、In_reg1にブランクデータを格納する。
【0099】
次のステップ176では、IPsecの規格に基づいて、入力パケットの末尾にブランクデータを挿入して最終的な認証値の作成を行なう場合に使用するワーク鍵K3を用いた処理を実行する。なお、当該ワーク鍵K3を用いた処理は、上記暗号化認証値作成処理で説明した処理と同様である(図17参照)。
【0100】
次のステップ178では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対し、Key_reg38に格納されたK1を用いて認証値作成処理を行い、その後にステップ180に移行する。なお、ステップ178の処理により、上記(4)に示す演算の結果がXCBC_reg44に格納される。
【0101】
ステップ180では、ステップ178の処理により導出された認証値を情報処理回路10から出力し、その後に復号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ86は、XCBC_reg44に格納された認証値をそのまま情報処理回路10から出力するように制御される。
【0102】
(AES−CTRモード 暗号化・認証値作成)
図6には、AES−CTRモードでパケットを暗号化する際の情報処回路10を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路10のAES−CTRモードでの暗号化認証値作成処理における動作を説明する。
【0103】
まず、ステップ200に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路10が組み込まれたIPsec装置により、通信先のIPsec装置とのネゴシエーションにより決定される。暗号鍵はKyin34に、認証鍵はKCBCky36に、それぞれ入力されてセットされる。
【0104】
次のステップ202では、認証値作成(XCBC)処理に用いるワーク鍵K1の生成及び生成したワーク鍵K1のKey_reg38への格納を行ない、その後にステップ204に移行する。なお、ワーク鍵K1の生成及び格納は、上記AES−CBCモードと同様であるので、説明を省略する(図8参照)。
【0105】
ステップ204では、初期化処理として、XCBC_reg44に”0”をセットするようにセレクタ78を動作させ、その後にステップ206に移行する。
【0106】
ステップ206では、入力パケットの先頭の24byteのデータを、入力レジスタ部20の各In_reg0〜In_reg2に8byteずつ格納すると共に、次のステップ208で、IV_reg42にIVを格納し、その後にステップ210に移行する。
【0107】
ここで、図13には、AES−CTRモードにおいてIV_reg42にIVを格納する際のワークレジスタ40のデータの流れが太線及び太枠で示されている。同図に示されるように、IV_reg42には、乱数nonceと、入力パケットに含まれるIVが入力される。このとき、セレクタ90は乱数nonceをNONCEブロック42Aに入力するように制御され、セレクタ92はIVをIVブロック42Bに格納するように制御される。
【0108】
一方、セレクタ88は、”0”をカウントアップ器46に出力すると共に、セレクタ94は、カウントアップ器46の出力をCounterブロック42Cに格納するように制御される。すなわち、AES−CTRモードのパケット構成は、IVが8byteとなっており(図2(B)参照)、AES−CTRモードでは、IVの前後に、乱数nonceとカウント値とを付加して暗号化及び復号化に用いる。
【0109】
次のステップ210では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行した後にステップ212に移行する。なお、認証値作成処理は、上記AES−CBCモードと同様であるので、説明を省略する(図10参照)。
【0110】
なお、AES−CTRモードで暗号化されるパケット50Bは、先頭に8byteのESP−HD52及び8byteのIV54が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、暗号化処理は施さない。
【0111】
ステップ212では、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ214で、In_reg1及びIn_reg2にそれぞれパケットの続きを格納する。
【0112】
次のステップ216では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して暗号化処理を実行し、その後にステップ218に移行する。
【0113】
ここで、図14には、暗号化処理を実行する際の情報処理回路10におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ66、セレクタ68、セレクタ72及びセレクタ74は、In_reg0,In_reg1に格納されたデータと、IV_reg42に格納されたデータCTRnとを第1のEXOR回路12に入力するように制御される。
【0114】
また、セレクタ80は、Kyin34に格納された暗号鍵がAES回路14に入力されるように制御される。これにより、AES回路14には、第1のEXOR回路12の出力とKyin34に格納された暗号鍵とが入力される。
【0115】
さらに、セレクタ84は、この時点では第2のEXOR回路16による演算を行なわないように、”0”を出力するように制御される。
【0116】
そして、第2のEXOR回路16からの出力を出力レジスタ18に格納し、セレクタ86を介して情報処理回路10から出力する。
【0117】
また、セレクタ60及び62は、第2のEXOR回路16からの出力をIn_reg0,In_reg1に格納するように制御される。
【0118】
すなわち、暗号化処理では、情報処理回路10により、以下の(6)に示す演算を行い、演算結果を情報処理回路10から出力すると共に、演算結果(暗号化したデータ)を認証値作成処理に利用するために、In_reg0,In_reg1に格納する。
AES暗号鍵(IV_reg exor In_reg0,1)・・・(6)
【0119】
また、図15に示されるように、IV_reg42からCTRnを出力する際に、Counterブロック42Cのデータは、次のブロックの暗号化に備え、セレクタ88を介してカウントアップ器46にも出力される。カウントアップ器46によりインクリメントされたカウント値は、セレクタ94を介してCounter42Cに格納される。すなわち、AES−CTRモードでは、各ブロックは、それぞれ異なるCTRnを用いて暗号化される。
【0120】
次のステップ218では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ220に移行する。
【0121】
ステップ220では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ212に戻り、ステップ212〜218の処理を繰り返す。
【0122】
一方、ステップ220で肯定判定となった場合は、ステップ222に移行して、入力レジスタ部20に格納されているデータを16byteシフトする。
【0123】
次のステップ226では、IPsecの規格に基づいて、入力パケットの末尾にブランクデータを付加することなく最終的な認証値の作成を行なう場合に使用するワーク鍵K2を用いた処理を実行する。なお、当該ワーク鍵K2を用いた処理は、セレクタ70が、データ格納部30から”0x0202・・・”を出力するように制御されること以外は、上記AES−CBCモードで説明したワーク鍵K3を用いた処理と同様である(図17参照)。
【0124】
次のステップ228では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対し、Key_reg38に格納されたK1を用いて認証値作成処理を行い、その後にステップ230に移行する。なお、ステップ228の処理により、以下の(7)に示す演算の結果がXCBC_reg44に格納される。
AESK1((AES認証鍵("0x0202・・・") exor XCBC_reg) exor In_reg0,1)・・・(7)
【0125】
ステップ230では、ステップ228の処理により導出された認証値を情報処理回路10から出力し、その後に暗号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ86は、XCBC_reg44に格納された認証値をそのまま情報処理回路10から出力するように制御される。
【0126】
(AES−CTRモード 復号化・認証値作成)
図7には、AES−CTRモードで暗号化されたパケットを復号化する際の情報処回路10を用いた処理の流れがフローチャートとして示されている。以下、同図を参照して、本実施の形態に係る情報処理回路10のAES−CTRモードでの復号化認証値作成処理における動作を説明する。
【0127】
まず、ステップ250に示されるように、今回の処理に適用すべき暗号鍵及び認証鍵がセットされる。暗号鍵及び認証鍵は、情報処理回路10が組み込まれたIPsec装置により、通信先のIPsec装置とのネゴシエーションにより決定される。暗号鍵はKyin34に、認証鍵はKCBCky36に、それぞれ入力されてセットされる。
【0128】
次のステップ252では、認証値作成処理に用いるワーク鍵K1の生成及び生成したワーク鍵K1のKey_reg38への格納を行ない、その後にステップ154に移行する。なお、ここでのワーク鍵K1の生成及び格納は、上記暗号化認証値作成処理と同様であるので、説明を省略する(図8参照)。
【0129】
ステップ254では、初期化処理として、XCBC_reg44に”0”をセットするようにセレクタ78を動作させ、その後にステップ256に移行する。
【0130】
ステップ256では、入力パケットの先頭の24byteのデータを、入力レジスタ部20の各In_reg0〜In_reg2に8byteずつ格納すると共に、次のステップ258で、IV_reg42にIVを格納し、その後にステップ260に移行する。
【0131】
なお、IV_reg42へのIVの格納については、上記暗号化認証値作成処理と同様であるので、説明を省略する(図13参照)。
【0132】
次のステップ260では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ262に移行する。なお、AES−CTRモードで暗号化されるパケットは、先頭に8byteのESP−HD52及び8byteのIV54が付加されるが、この部分は認証対象範囲であるが暗号化対象範囲ではないため、この部分に対しては、認証値作成処理のみを行い、復号化処理は施さなくてよい。なお、認証値作成処理については、上記各処理と同様であるので、説明を省略する(図10参照)。また、上記暗号化認証値作成処理と同様パケットの末尾まで処理を行うまでは、認証値作成処理による演算結果は情報処理回路10から出力しない。
【0133】
ステップ262では、入力レジスタ部20に格納されているデータを16byteシフトし、次のステップ164で、In_reg1及びIn_reg2にそれぞれパケットの続きを格納する。
【0134】
次のステップ266では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して認証値作成処理を実行し、その後にステップ268に移行して、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対して復号化処理を実行し、その後にステップ270に移行する。すなわち、入力パケットに付加されている認証値は暗号化されたデータに基づいて導出されたものであるため、復号化時の認証値作成処理は、復号前のデータに基づいて認証値の演算を行なう。
【0135】
ここで、図16には、復号化処理を実行する際の情報処理回路10におけるデータの流れが太線及び太枠で示されている。同図に示されるように、セレクタ66、セレクタ68及びセレクタ72は、In_reg0,In_reg1に格納されたデータと、”0”とを第1のEXOR回路12に入力するように制御される。これにより、第1のEXOR回路12の出力は、In_reg0,In_reg1に格納されたデータと同一となる。
【0136】
また、セレクタ80は、Kyin34に格納された暗号鍵がAES回路14に入力されるように制御される。これにより、AES回路14には、In_reg0,In_reg1に格納されたデータとKyin34に格納された暗号鍵とが入力される。
【0137】
一方、セレクタ74及びセレクタ84は、第2のEXOR回路16にIV_reg42に格納されたデータCTRnを入力するように制御される。
【0138】
そして、第2のEXOR回路16からの出力を出力レジスタ18に格納し、セレクタ86を介して情報処理回路10から出力する。
【0139】
なお、このときも、上記暗号化認証値作成処理のCTRn読出し時と同様に、IV_reg42のCounterブロック42Cのカウント値はインクリメントされる(図15参照)。
【0140】
すなわち、復号化処理では、情報処理回路10により、以下の(8)に示す演算を行い、演算結果を情報処理回路10から出力すると共に、次のブロックの復号化処理に備え、IV_reg42のカウント値をインクリメントする。
(AES暗号鍵(In_reg0,1) exor IV_reg)・・・(8)
【0141】
ステップ270では、入力パケットが終了か否かを判定し、当該判定が否定判定となった場合は再びステップ262に戻り、ステップ262〜268の処理を繰り返す。
【0142】
一方、ステップ270で肯定判定となった場合は、ステップ272に移行して、入力レジスタ部20に格納されているデータを16byteシフトする。
【0143】
次のステップ276では、IPsecの規格に基づいて、入力パケットの末尾にブランクデータを付加することなく最終的な認証値の作成を行なう場合に使用するワーク鍵K2を用いた処理を実行する。なお、当該ワーク鍵K2を用いた処理は、セレクタ70が、データ格納部30から”0x0202・・・”を出力するように制御されること以外は、上記暗号化認証値作成処理で説明したワーク鍵K2を用いた処理と同様である。
【0144】
次のステップ278では、入力レジスタ部20のIn_reg0,In_reg1に格納されたデータに対し、Key_reg38に格納されたK1を用いて認証値作成処理を行い、その後にステップ280に移行する。なお、ステップ278の処理により、上記(7)に示す演算の結果がXCBC_reg44に格納される。
【0145】
ステップ280では、ステップ278の処理により導出された認証値を情報処理回路10から出力し、その後に復号化認証値作成処理を終了する。なお、認証値を出力する際には、セレクタ86は、XCBC_reg44に格納された認証値をそのまま情報処理回路10から出力するように制御される。
【0146】
以上説明したように、本実施形態によれば、各セレクタにより情報処理回路10のデータの流れを切り替えるように制御して、認証値作成処理と暗号化処理とを入力レジスタ部20のレジスタ2個単位で交互に実行することにより、回路規模を増大させることなく暗号化及び認証値作成を実行できる。
【0147】
特に、AES−CBCモードでの処理においては、認証値作成処理と暗号化処理とで処理対象とする入力レジスタ部20のレジスタをずらすことで、効率よく処理を行うことができる。
【0148】
また、ワークレジスタのIV_reg42を分割して構成すると共に、IV_reg42にカウンタ機能を持たせたので、AES−CTRモードにも対応することができる。
【0149】
更に、2つのEXOR回路12,16をAES回路14の前段及び後段にそれぞれ設けたことにより、複雑な構成を用いることなく暗号化処理と復号処理とを実行可能にしている。
【0150】
また、2つのEXOR回路12,16をAES回路14の前段及び後段にそれぞれ設けたことにより、IPsecの規格に基づくワーク鍵K2及びK3を用いた処理を、ワーク鍵K2及びK3を格納するレジスタ等を別途設けなくても実行することができる。なお、第1のEXOR回路12及びAES回路14を用いたワーク鍵を作成するための処理を実行する際に、更に第2のEXOR回路16を用いてEXOR演算を行なうことができるので、一度に(3)に示される演算が実行でき、処理時間も短縮される。
【0151】
なお、実施の形態で説明した情報処理回路10の構成(図1、図3参照)や各種処理の流れ(図4〜7参照)は、一例であり、本発明の主旨を逸脱しない範囲で適宜変更可能であることは言うまでもない。
【0152】
例えば、上記実施形態では、IVをBUSから取得してIV_reg42に格納する形態について説明したが、IVは入力レジスタ部20にも入力されるので、入力レジスタ部20から読出して格納するようにしてもよい。
【0153】
また、上記実施形態では、入力レジスタ部20を、8byteの3個のレジスタ22,24,26備えた構成とする形態について説明したが、1ブロックのデータを1/m(mは偶数)ずつ記憶するレジスタを3m/2個備えた構成とすることもできる。例えば、4byteのレジスタを6個備えた構成としてもよい。
【図面の簡単な説明】
【0154】
【図1】実施形態に係る情報処理回路の構成を概略的に示すブロック図である。
【図2】(A)はAES−CBCモードで暗号化されたパケットの構成を、(B)はAES−CTRモードで暗号化されたパケットの構成を、それぞれ示す模式図である。
【図3】実施形態に係る情報処理回路のワークレジスタの詳細な構成を示すブロック図である。
【図4】実施形態に係る情報処理回路を用いたAES−CBCモードによる暗号化認証値作成処理の流れを示すフローチャートである。
【図5】実施形態に係る情報処理回路を用いたAES−CBCモードによる復号化認証値作成処理の流れを示すフローチャートである。
【図6】実施形態に係る情報処理回路を用いたAES−CTRモードによる暗号化認証値作成処理の流れを示すフローチャートである。
【図7】実施形態に係る情報処理回路を用いたAES−CTRモードによる復号化認証値作成処理の流れを示すフローチャートである。
【図8】実施形態に係る情報処理回路によりワーク鍵の生成及び格納を行なう場合のデータの流れを示すブロック図である。
【図9】AES−CBCモードにおいて、実施形態に係るワークレジスタにIVを格納する際のデータの流れを示すブロック図である。
【図10】実施形態に係る情報処理回路により認証値作成を行なう場合のデータの流れを示すブロック図である。
【図11】実施形態に係る情報処理回路によりAES−CBCモードでの暗号化を行なう場合のデータの流れを示すブロック図である。
【図12】実施形態に係る情報処理回路によりAES−CBCモードでの復号化を行なう場合のデータの流れを示すブロック図である。
【図13】AES−CTRモードにおいて、実施形態に係るワークレジスタにIVを格納する際のデータの流れを示すブロック図である。
【図14】実施形態に係る情報処理回路によりAES−CTRモードでの暗号化を行なう場合のデータの流れを示すブロック図である。
【図15】AES−CTRモードにおいて、実施形態に係るワークレジスタからIV_regに格納されたデータを出力する際のデータの流れを示すブロック図である。
【図16】実施形態に係る情報処理回路によりAES−CTRモードでの復号化を行なう場合のデータの流れを示すブロック図である。
【図17】実施形態に係る情報処理回路により最後のブロックについてXCBC処理を行うに際し、ワーク鍵K3を用いた処理を実行する場合のデータの流れを示すブロック図である。
【符号の説明】
【0155】
10 情報処理回路
12 第1のEXOR回路
14 AES回路(暗号化回路)
16 第2のEXOR回路
18 出力レジスタ
20 入力レジスタ部
30 データ格納部
32 鍵管理部
40 ワークレジスタ
60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94 セレクタ(制御手段)

【特許請求の範囲】
【請求項1】
入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、
2つのデータの排他的論理和を出力する第1の排他的論理和回路と、
前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、
入力パケットデータを前記ブロック単位の1/m(mは偶数)ずつ記憶するレジスタを3m/2個有する入力レジスタ部と、
前記入力レジスタ部の先頭からm個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部の末尾からm個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾からm個のレジスタに記憶し、その後に前記入力レジスタ部のデータをレジスタm個分シフトし、入力パケットデータの続きのデータを末尾からm個分のレジスタに記憶することを繰り返し実行するように制御する制御手段と、
を備えた情報処理装置。
【請求項2】
入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、
2つのデータの排他的論理和を出力する第1の排他的論理和回路と、
前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて所定のブロック単位でブロック暗号化する暗号化回路と、
入力パケットデータを1ブロック分記憶する入力レジスタ部と、
前記入力レジスタ部に記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部に記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部に記憶し、その後に前記入力レジスタ部に入力パケットデータの続きの1ブロック分のデータを記憶することを繰り返し実行するように制御する制御手段と、
を備えた情報処理装置。
【請求項3】
入力パケットデータに対する暗号化処理及び認証値作成処理を行なう情報処理回路であって、
2つのデータの排他的論理和を出力する第1の排他的論理和回路と、
前記第1の排他的論理和回路から出力された排他的論理和を予め設定された鍵データに基づいて16byte単位でブロック暗号化する暗号化回路と、
入力パケットデータを8byteずつ記憶するレジスタを3個有する入力レジスタ部と、
前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行った後に、前記入力レジスタ部の末尾から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行い、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の末尾から2個のレジスタに記憶し、その後に前記入力レジスタ部のデータをレジスタ2個分シフトし、入力パケットデータの続きのデータを末尾から2個分のレジスタに記憶することを繰り返し実行するように制御するCBCモードと、
前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記入力レジスタ部の末尾から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた入力パケットデータの暗号化処理を行った後に、当該暗号化処理により暗号化された暗号化データを前記入力レジスタ部の先頭から2個のレジスタに記憶し、前記入力レジスタ部の先頭から2個のレジスタに記憶されたデータについて前記第1の排他的論理和回路及び前記暗号化回路を用いた認証値作成処理を行い、その後に前記入力レジスタ部のデータをレジスタ2個分シフトし、入力パケットデータの続きのデータを末尾から2個分のレジスタに記憶することを繰り返し実行するように制御するCTRモードと、
の何れかに制御する制御手段と、
を備えた情報処理装置。
【請求項4】
2つのデータの排他的論理和を出力する第2の排他的論理和回路を更に備え、
前記制御手段は、前記第1の排他的論理和回路と前記第2の排他的論理和回路とを使い分けることにより暗号化された入力パケットデータの復号化を更に実行する
請求項1〜3の何れか1項記載の情報処理装置。
【請求項5】
前記第2の排他的論理和回路を前記暗号化回路の出力端側に配置した請求項4記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate