(57)【要約】【課題】データを所定サイズ毎に初期化して暗号化もしくは復号化する場合の該初期化に関するソフトウェア処理の負担を軽減できる暗号化回路および復号化回路を提供する。【解決手段】入力レジスタ１１、ＫＥＹレジスタ１２、ＥＸＯＲ演算部１３、ＡＥＳ暗号演算部１４、セレクタ１５、イニシャルベクタＩＶを保持するＩＶレジスタ１６、出力レジスタ１７で構成されたＣＢＣ暗号回路に対し、暗号化回数を計数するカウンタ２２と、１周期の暗号化回数が設定される周期レジスタ２３と、初回の暗号化時およびカウンタ２２の計数値と１周期の暗号化回数とが一致した場合にイネーブル信号３５を出力しかつカウンタ２２をリセットする比較機能部２４とを設ける。セレクタ１５はイネーブル信号３５の入力時にイニシャルベクタＩＶを選択し非入力時にＡＥＳ暗号演算部１４の出力を選択する。【選択図】図１
2009069686.tif 000002
【特許請求の範囲】
【請求項１】
入力ベクタを演算に使用してデータを暗号化する演算部と、
初期ベクタを保持する初期レジスタと、
前記演算部による前回の暗号化処理で使用もしくは生成された所定のデータと前記初期レジスタが出力する前記初期ベクタのいずれかを選択して前記演算部に前記入力ベクタとして与える切替部と、
初回の暗号化時および設定された周期で前記初期ベクタが選択されるように前記切替部を制御する制御部と
を有する
ことを特徴とする暗号化回路。
【請求項２】
前記制御部は、
前記演算部での暗号化回数を計数するカウンタと、
前記周期を示す暗号化回数が設定される周期レジスタと、
前記カウンタの計数値と前記周期レジスタの出力値とを比較する比較部とを備え、
前記カウンタの計数値と前記周期レジスタの出力値とが一致した場合に、前記初期ベクタを選択するように前記切替部を制御しかつ前記カウンタをリセットする
ことを特徴とする請求項１に記載の暗号化回路。
【請求項３】
前記演算部から出力される暗号化データが記憶される記憶装置のセクタサイズに、前記１周期の間に前記演算部から出力される暗号化データのデータサイズが一致するように前記周期が設定される
ことを特徴とする請求項１または２に記載の暗号化回路。
【請求項４】
入力ベクタを演算に使用してデータを復号化する演算部と、
初期ベクタを保持する初期レジスタと、
前記演算部による前回の復号化処理で使用もしくは生成された所定のデータと前記初期レジスタが出力する前記初期ベクタのいずれかを選択して前記演算部に前記入力ベクタとして与える切替部と、
初回の復号化時および設定された周期で前記初期ベクタが選択されるように前記切替部を制御する制御部と
を有する
ことを特徴とする復号化回路。
【請求項５】
前記制御部は、
前記復号演算部での復号化回数を計数するカウンタと、
前記周期を示す復号化回数が設定される周期レジスタと、
前記カウンタの計数値と前記周期レジスタの出力値とを比較する比較部とを備え、
前記カウンタの計数値と前記周期レジスタの出力値とが一致した場合に、前記初期ベクタを選択するように前記切替部を制御しかつ前記カウンタをリセットする
ことを特徴とする請求項４に記載の復号化回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文の暗号化を行う暗号化回路及び暗号文の復号化を行う復号化回路に関する。
【背景技術】
【０００２】
一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、ＤＥＳ（データ標準暗号化方式、Data Encryption Standard）からＡＥＳ（次世代標準暗号化方式、Advanced Encryption Standard）に移行しており、暗号強度が強くなってきている。ＡＥＳ暗号方式は、データを１２８ビットのブロック長単位で暗号化／復号化するブロック暗号であり、複数種類のモードがあって目的や使用方法により選択される。
【０００３】
図７は、ＣＢＣ(Cipher Block Chaining)モードの暗号化回路３００の構成例を示している。暗号化回路３００は、ＡＥＳ規格に基づいた暗号演算を入力値に施して演算結果（暗号ベクタ）を出力するＡＥＳ暗号演算部３０１と、ＡＥＳ暗号演算部３０１に入力する暗号鍵を保持するためのＫＥＹレジスタ３０２と、暗号化の対象となる平文をブロック長単位に保持する入力レジスタ３０３と、初回の暗号演算に使用するイニシャルベクタを保持するためのＩＶレジスタ３０４と、ＡＥＳ暗号演算部３０１の演算結果として出力される暗号ベクタとＩＶレジスタ３０４に保持されているイニシャルベクタとのいずれかを選択出力するセレクタ３０５と、入力レジスタ３０３の出力とセレクタ３０５の出力との排他的論理和を演算してＡＥＳ暗号演算部３０１の入力へ与えるＥＸＯＲ演算部３０６と、ＡＥＳ暗号演算部３０１の出力（暗号化結果）を保持する出力レジスタ３０７とを備えている。
【０００４】
図８は、ＣＢＣ方式の暗号化回路３００による暗号化のプロセスを示している。ここでは、１回に暗号化処理で暗号化されるデータブロック長を１６バイトとし、全部で４Ｋバイトを暗号化する場合のプロセスを例示している。
【０００５】
初回のサイクルｙ０では、入力レジスタ３０３にセットされたブロック長単位の平文Ｓ［０］とＩＶレジスタ３０４に保持されているイニシャルベクタＩＶ［０］とがＥＸＯＲ演算部３０６に入力されて排他的論理和演算される。ＡＥＳ暗号演算部３０１はＥＸＯＲ演算部３０６の出力とＫＥＹレジスタ３０２に保持されている暗号鍵（ＫＥＹ）とを入力して暗号演算を行い、その演算結果Ｄ［０］を出力レジスタ３０７およびセレクタ３０５に出力する。
【０００６】
２サイクル目以後のＮ番目のサイクルｙＮ（Ｎ≧２）では、イニシャルベクタＩＶ［０］に代えてその前のサイクルの演算結果Ｄ［Ｎ−１］がセレクタ３０５によって選択されて暗号化処理が行われる。すなわち、入力レジスタ３０３にセットされた平文Ｓ［Ｎ］と前のサイクルの演算結果Ｄ［Ｎ−１］とがＥＸＯＲ演算部３０６にて排他的論理和演算され、ＡＥＳ暗号演算部３０１はＥＸＯＲ演算部３０６の出力とＫＥＹレジスタ３０２に保持されている暗号鍵（ＫＥＹ）とを入力して暗号演算を行い、その演算結果Ｄ［Ｎ］を出力レジスタ３０７およびセレクタ３０５に出力する。
【０００７】
図９は、ＣＢＣ方式の復号化回路３２０の回路構成を示している。復号化回路３２０は、ＡＥＳ規格に基づいた復号演算を入力値に施して演算結果（復号ベクタ）を出力するＡＥＳ復号演算部３２１と、ＡＥＳ復号演算部３２１に入力する復号鍵を保持するためのＫＥＹレジスタ３２２と、復号化の対象となる暗号文をブロック長単位に保持する入力レジスタ３２３と、初回の復号演算に使用するイニシャルベクタを保持するためのＩＶレジスタ３２４と、入力レジスタ３２３に保持されている暗号文とＩＶレジスタ３２４に保持されているイニシャルベクタとのいずれかを選択出力するセレクタ３２５と、ＡＥＳ復号演算部３２１の出力とセレクタ３２５の出力との排他的論理和を演算するＥＸＯＲ演算部３２６と、ＥＸＯＲ演算部３２６の出力（復号化結果）を保持する出力レジスタ３２７とを備えている。
【０００８】
図１０は、ＣＢＣ方式の復号化回路３２０による復号化のプロセスを示している。ここでは、図８のプロセスで生成された４Ｋバイトの暗号文を  １６バイトのデータブロック長毎に順次復号化する場合のプロセスを例示している。
【０００９】
初回の復号サイクルｙ０では、ＡＥＳ復号演算部３２１は入力レジスタ３２３にセットされたブロック長単位の暗号文Ｄ［０］とＫＥＹレジスタ３２２に保持されている復号鍵（ＫＥＹ）とを入力して復号演算を行い、その演算結果とＩＶレジスタ３２４に保持されているイニシャルベクタＩＶ［０］とがＥＸＯＲ演算部３２６に入力されて排他的論理和演算され、ＥＸＯＲ演算部３２６の出力が平文Ｓ［０］として出力レジスタ３２７に出力される。
【００１０】
２サイクル目以後のＮ番目のサイクルｙＮ（Ｎ≧２）では、イニシャルベクタＩＶ［０］に代えてその前のサイクルの暗号文Ｄ［Ｎ−１］がセレクタ３２５によって選択されてＥＸＯＲ演算部３２６に入力される。すなわち、ＡＥＳ復号演算部３２１は入力レジスタ３２３にセットされたブロック長単位の暗号文Ｄ［Ｎ］とＫＥＹレジスタ３２２に保持されている復号鍵（ＫＥＹ）とを入力して復号演算を行い、その演算結果と前のサイクルの暗号文Ｄ［Ｎ−１］とがＥＸＯＲ演算部３２６に入力されて排他的論理和演算され、ＥＸＯＲ演算部３２６の出力が平文Ｓ［Ｎ］として出力レジスタ３２７に出力される。
【００１１】
このような暗号化方式では、前回の暗号結果を利用して次の暗号化処理を行うので、暗号文を先頭から順に復号化する必要があり、途中の一部だけを復号化したり、暗号文の一部のみを編集したりすることはできない。そこで、平文ファイルをアプリケーションプログラムがアクセスすることのある最小サイズ毎に分割し、分割後の平文を別々に暗号化した後に連結させて一連の暗号文を得ることで、暗号化後の部分的な編集、削除、追加を可能にしたファイル暗号化方法が提案されている（たとえば、特許文献１参照。）。
【００１２】
【特許文献１】特開平７−１４０８９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
暗号化回路３００や復号化回路３２０を使用して暗号化／復号化処理を行う場合、通常、その処理の開始に先立って上位のＣＰＵ（Central Processing Unit）から暗号化回路３００や復号化回路３２０に対して各種の設定や初期化が行われる。
【００１４】
このため、平文を小さな単位に分割して別々に暗号化する場合には、分割単位の平文を暗号化する毎にＣＰＵが上記の初期化や設定処理を行わなければならず、ＣＰＵに掛かる負荷が大きくなるという問題があった。
【００１５】
たとえば、図１１に示すように、４Ｋバイトのデータを５１２バイトずつに分割して暗号化する場合には、ＣＰＵによる初期化や設定などのソフトウェア処理Ｗを８回行う必要があり、ＣＰＵの処理負担が大きいと共に、ソフトウェア処理によるオーバーヘッドも増えて暗号化や復号化の全体としての処理時間が長くなるという問題があった。
【００１６】
本発明は、上記の問題を解決しようとするものであり、データを所定サイズ毎に初期化して暗号化もしくは復号化する場合の該初期化に係るソフトウェア処理の負担を軽減することのできる暗号化回路および復号化回路を提供することを目的としている。
【課題を解決するための手段】
【００１７】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００１８】
［１］入力ベクタを演算に使用してデータを暗号化する演算部と、
初期ベクタを保持する初期レジスタと、
前記演算部による前回の暗号化処理で使用もしくは生成された所定のデータと前記初期レジスタが出力する前記初期ベクタのいずれかを選択して前記演算部に前記入力ベクタとして与える切替部と、
初回の暗号化時および設定された周期で前記初期ベクタが選択されるように前記切替部を制御する制御部と
を有する
ことを特徴とする暗号化回路。
【００１９】
上記発明では、一連の暗号化処理を実行する際に、その初回の暗号化時および設定された周期で初期ベクタが自動選択される。これにより、出力される暗号文は、前記周期に対応する所定サイズ毎に初期ベクタで初期化して暗号化されたものとなり、所定サイズ毎にソフトウェアで初期化するといった作業は不要になる。
【００２０】
［２］前記制御部は、
前記演算部での暗号化回数を計数するカウンタと、
前記周期を示す暗号化回数が設定される周期レジスタと、
前記カウンタの計数値と前記周期レジスタの出力値とを比較する比較部とを備え、
前記カウンタの計数値と前記周期レジスタの出力値とが一致した場合に、前記初期ベクタを選択するように前記切替部を制御しかつ前記カウンタをリセットする
ことを特徴とする［１］に記載の暗号化回路。
【００２１】
［３］前記演算部から出力される暗号化データが記憶される記憶装置のセクタサイズに、前記１周期の間に前記演算部から出力される暗号化データのデータサイズが一致するように前記周期が設定される
ことを特徴とする［１］または［２］に記載の暗号化回路。
【００２２】
上記発明では、記憶装置のセクタサイズ毎に初期化された暗号文を得ることができる。１周期分の暗号文を１つのセクタに格納すれば、各セクタから読み出した暗号文を１セクタずつ独立して復号化することができ、読み出し順・復号化順を任意にすることができる。
【００２３】
［４］入力ベクタを演算に使用してデータを復号化する演算部と、
初期ベクタを保持する初期レジスタと、
前記演算部による前回の復号化処理で使用もしくは生成された所定のデータと前記初期レジスタが出力する前記初期ベクタのいずれかを選択して前記演算部に前記入力ベクタとして与える切替部と、
初回の復号化時および設定された周期で前記初期ベクタが選択されるように前記切替部を制御する制御部と
を有する
ことを特徴とする復号化回路。
【００２４】
上記発明では、復号化対象のデータを復号化する際に、初回の復号化時および設定された周期で初期ベクタが自動選択される。本発明の暗号化回路で暗号化された暗号文のように、所定サイズ毎に初期化されて暗号化された一連の暗号文を復号化処理する際に、各所定サイズの暗号文の初回の復号化時に初期ベクタが自動的に選択されて処理される。これにより、所定サイズを復号化する毎にソフトウェアで初期化するといった作業は不要になる。
【００２５】
［５］前記制御部は、
前記復号演算部での復号化回数を計数するカウンタと、
前記周期を示す復号化回数が設定される周期レジスタと、
前記カウンタの計数値と前記周期レジスタの出力値とを比較する比較部とを備え、
前記カウンタの計数値と前記周期レジスタの出力値とが一致した場合に、前記初期ベクタを選択するように前記切替部を制御しかつ前記カウンタをリセットする
ことを特徴とする［４］に記載の復号化回路。
【発明の効果】
【００２６】
本発明に係る暗号処理装置によれば、ソフトウェア処理の負担増加を防ぎつつ、データを所定サイズ毎に暗号化もしくは復号化することができる。また、所定サイズ毎の暗号化もしくは復号化が自動的に連続して実行されるので、ソフトウェア処理での設定に伴うオーバーヘッドが減り、その分、暗号化／復号化の処理時間を短縮することができる。
【発明を実施するための最良の形態】
【００２７】
以下、図面に基づき本発明の実施の形態に係る暗号化回路１０および復号化回路５０を説明する。暗号化回路１０および復号化回路５０は、たとえば、原稿を読み取って対応する画像を記録紙上に形成して出力するコピー機能や、スキャナ機能、プリンタ機能、ファクシミリ機能などを備えたデジタル複合機などの画像形成装置に搭載され、当該画像形成装置のハードディスク装置に保存する画像データの暗号化や復号化に使用される。
【００２８】
図１は、本発明の実施の形態に係る暗号化回路１０の構成を示すブロック図である。暗号化回路１０は、暗号化対象のデータ（平文）に対して、ＡＥＳ規格に基づき１２８ビット（１６バイト）のブロック長単位で暗号化処理を施す回路である。暗号化回路１０は、入力レジスタ１１と、ＫＥＹレジスタ１２と、演算部をなすＥＸＯＲ演算部１３およびＡＥＳ暗号演算部１４と、セレクタ１５と、ＩＶレジスタ１６と、出力レジスタ１７と、制御部２０とを備えている。
【００２９】
制御部２０は、シーケンサ２１と、カウンタ２２と、周期レジスタ２３と、比較機能部２４とを備えている。
【００３０】
ＡＥＳ暗号演算部１４は、ＡＥＳ規格に基づく所定のブロック暗号演算を行う回路である。ＫＥＹレジスタ１２は暗号鍵を保持するためのレジスタであり、ＫＥＹレジスタ１２に保持された暗号鍵はＡＥＳ暗号演算部１４に入力される。入力レジスタ１１は、暗号化対象データをブロック長単位に保持するレジスタである。
【００３１】
ＩＶレジスタ１６は、イニシャルベクタＩＶを保持するレジスタである。セレクタ１５は、ＩＶレジスタ１６が出力するイニシャルベクタＩＶとＡＥＳ暗号演算部１４が演算結果として出力する出力値（暗号ベクタＥＶ）のいずれかを選択出力する。セレクタ１５の出力と入力レジスタ１１の出力はそれぞれＥＸＯＲ演算部１３に入力され、ＥＸＯＲ演算部１３はこれらの入力同士の排他的論理和演算を行う。ＥＸＯＲ演算部１３の出力はＡＥＳ暗号演算部１４へ入力される。ＡＥＳ暗号演算部１４の出力はさらに出力レジスタ１７に入力される。出力レジスタ１７から暗号文（暗号ベクタ）が外部へ出力される。
【００３２】
シーケンサ２１は、ＡＥＳ暗号演算部１４を動作させるためのシーケンサであり、ＡＥＳ暗号演算部１４に対して制御信号３１を出力する。また、シーケンサ２１はＡＥＳ暗号演算部１４にて１ブロック分の暗号化処理が終了して暗号ベクタＥＶが出力される毎に終了信号３２をカウンタ２２に対して出力する。ＡＥＳ暗号演算部１４で規定回数の暗号化演算（１サイクルとする。）を行うことで１ブロック長（１６バイト）分の暗号化が行われる。また、シーケンサ２１は一連の暗号化処理の開始時に初期信号３３を比較機能部２４に対して出力する。
【００３３】
カウンタ２２は、シーケンサ２１から入力される終了信号３２の入力回数を計数する。すなわち、ＡＥＳ暗号演算部１４が１ブロック長分の暗号化処理を行った回数（暗号化回数）を計数する。
【００３４】
周期レジスタ２３には、１周期の間に暗号化する暗号化対象データのデータサイズを暗号化回数に換算した値（これを設定暗号化回数とする）が設定される。たとえば、１回の暗号化処理で暗号化される１ブロック長が１６バイトであり、１周期の間に５１２バイトのデータを暗号化する場合には、５１２バイトを１６バイト（ブロック長）で除して得た「３２」が設定暗号化回数となる。
【００３５】
比較機能部２４は、カウンタ２２の計数値Ｐと周期レジスタ２３に設定されている設定暗号化回数Ｑとを比較し、これらが一致した場合にイネーブル信号３５をセレクタ１５に対して出力する機能を果たす。またこのとき、比較機能部２４はカウンタ２２に対してリセット信号３６を出力する。セレクタ１５はイネーブル信号３５が入力されたときはイニシャルベクタＩＶを選択出力し、イネーブル信号３５が入力されないときはＡＥＳ暗号演算部１４から入力された暗号ベクタＥＶを選択出力する。また比較機能部２４はシーケンサ２１から初期信号３３が入力されている場合にもイネーブル信号３５を出力するようになっている。
【００３６】
なお、ＫＥＹレジスタ１２やＩＶレジスタ１６へのデータのセット、周期レジスタ２３への設定暗号化回数のセット、シーケンサ２１に対する設定や起動は、図示省略した上位のＣＰＵによって行われる。また、入力レジスタ１１に対して暗号化対象データを順次セットする作業、出力レジスタ１７からデータ（暗号文）を順次読み出す作業は、たとえば、データの圧縮／伸張部やハードディスク装置に対してデータを入出力するＤＭＡコントローラなどのデータ転送部（図示省略）によって行われる。
【００３７】
次に、暗号化回路１０による暗号化処理の動作を説明する。
【００３８】
図２は、暗号化回路１０を使用した一連の暗号化処理の流れを示している。まず、ＣＰＵにより、ＩＶレジスタ１６に対するイニシャルベクタＩＶのセット、ＫＥＹレジスタ１２に対する暗号鍵のセットが行われる。さらに入力レジスタ１１に暗号化対象データがセットされる（ステップＳ１０１）。なお、入力レジスタ１１への暗号化対象データのセットおよび出力レジスタ１７からの暗号文の読み出しは、暗号化回路１０における暗号化処理の進行に応じて外部から順次行われる。
【００３９】
次に、ＣＰＵにより周期レジスタ２３に対して設定暗号化回数がセットされる（ステップＳ１０２）。ここでは、１周期の間に暗号化回路１０から出力される暗号化データのデータサイズが、当該暗号化データが記憶される記憶装置（ハードディスク装置）のセクタサイズと一致するように設定暗号化回数の値を決めてある。たとえば、セクタサイズが５１２バイトの場合、これを１ブロック長である１６バイトで除した商の「３２」が設定暗号化回数に設定される。
【００４０】
上記設定が行われた後、ＣＰＵからシーケンサ２１に対して一連の暗号化処理の起動指示が出力される（ステップＳ１０３）。
【００４１】
起動指示を受けたシーケンサ２１は初期信号３３を出力し、これにより比較機能部２４からセレクタ１５に対してイネーブル信号３５を出力させ、該セレクタ１５にイニシャルベクタＩＶを選択出力（これをＩＶ初期化と呼ぶ。）させる（ステップＳ１０４）。
【００４２】
ＥＸＯＲ演算部１３はセレクタ１５から選択出力されたイニシャルベクタＩＶと入力レジスタ１１の出力値（暗号化対象データ）との排他的論理和演算を行い（ステップＳ１０５）、ＡＥＳ暗号演算部１４はＥＸＯＲ演算部１３の出力とＫＥＹレジスタ１２の出力とを入力して暗号演算を行い、１ブロック分の暗号ベクタ（暗号文）を出力する（ステップＳ１０６）。またこの暗号ベクタはセレクタ１５にも入力される。
【００４３】
シーケンサ２１は、初回１ブロック分の暗号化処理を終えると、初期信号３３をオフにすると共に終了信号３２を出力する。カウンタ２２は当該終了信号３２を計数する（ステップＳ１０７）。比較機能部２４はカウンタ２２の計数値Ｐと周期レジスタ２３の出力（設定暗号化回数）Ｑとを比較する（ステップＳ１０８）。
【００４４】
カウンタ２２の計数値Ｐと設定暗号化回数Ｑとが一致しない場合は（ステップＳ１０８；Ｎ）、比較機能部２４はイネーブル信号３５を出力しない。これによりセレクタ１５はＡＥＳ暗号演算部１４の出力する今回の演算結果である暗号ベクタＥＶを選択出力する。この状態でＥＸＯＲ演算部１３およびＡＥＳ暗号演算部１４により次回の演算が行われる（ステップＳ１０５、１０６）。
【００４５】
すなわち、入力レジスタ１１の出力値とＡＥＳ暗号演算部１４から出力された前回の暗号ベクタＥＶとがＥＸＯＲ演算部１３で排他的論理和演算され、この演算結果がＡＥＳ暗号演算部１４に入力されて新たな暗号ベクタが生成される。
【００４６】
カウンタ２２の計数値Ｐと設定暗号化回数Ｑとが一致した場合は（ステップＳ１０８；Ｙ）、比較機能部２４はカウンタ２２に対してリセット信号３６を出力し、カウンタ２２の計数値を「０」に初期化する（ステップＳ１０９）。また比較機能部２４はイネーブル信号３５を出力し、これを受けたセレクタ１５はイニシャルベクタＩＶを選択出力する（ステップＳ１０４）。この状態でＥＸＯＲ演算部１３およびＡＥＳ暗号演算部１４による次回の演算が行われる（ステップＳ１０５、１０６）。
【００４７】
すなわち、入力レジスタ１１の出力値とイニシャルベクタＩＶとがＥＸＯＲ演算部１３で排他的論理和演算され、この演算結果がＡＥＳ暗号演算部１４に入力されて新たな暗号ベクタが生成される。
【００４８】
以上の処理は、一連の暗号化処理が終了（たとえば、４Ｋバイト分の暗号化処理が終了）するまで繰り返し行われ（ステップＳ１１０；Ｎｏ）、予定量の暗号化処理が終了すると本処理が終了する（エンド）。なお、暗号化回路１０自体は暗号化の終了を判定しておらず、外部から次のデータが入力レジスタ１１にセットされなくなることで一連の暗号化処理が実質的に終了するようになっている。
【００４９】
図３は、１周期での暗号化データ数が５１２バイトとなるように暗号化回数を「３２」に設定した状態で４Ｋバイトのデータを暗号化処理した場合における暗号化回路１０でのプロセスを示している。初回の暗号化時および設定された周期（５１２バイト、３２回の暗号化処理毎）にイニシャルベクタＩＶがセレクタ１５から選択出力され、平文と排他的論理和演算が行われている。
【００５０】
このように暗号化回路１０では、ＣＰＵによるソフトウェア処理Ｗを起動時に１回行うだけで、その後はハードウェアによる一連の処理により、所定サイズ（設定暗号化回数Ｑの示すサイズ）毎に初期化された暗号文を自動的に得ることができるので、図１１に示すように、分割後の各平文を暗号化する毎にＣＰＵによるソフトウェア処理Ｗを行う場合に比べて、ソフトウェア処理Ｗの実行回数が減り、ソフトウェア処理の負担を軽減することができる。また、ソフトウェア処理Ｗによるオーバーヘッドも減り、暗号化処理全体としての処理時間を短縮することができる。
【００５１】
次に、復号化回路５０について説明する。
【００５２】
図４は、本発明の実施の形態に係る復号化回路５０の構成を示すブロック図である。復号化回路５０、復号化対象データ（暗号文）に対してＡＥＳ規格に基づき１２８ビット（１６バイト）のブロック長単位で復号化処理を施す回路である。復号化回路５０は、入力レジスタ５１と、ＫＥＹレジスタ５２と、保持レジスタ５３と、ＡＥＳ復号演算部５４と、ＩＶレジスタ５５と、セレクタ５６と、ＥＸＯＲ演算部５７と、出力レジスタ５８と、制御部６０とを備えている。
【００５３】
制御部６０は、シーケンサ６１と、カウンタ６２と、周期レジスタ６３と、比較機能部６４とを備えている。
【００５４】
ＡＥＳ復号演算部５４は、ＡＥＳ規格に基づく所定のブロック復号演算を行う回路である。ＫＥＹレジスタ５２は復号鍵を保持するためのレジスタである。入力レジスタ５１は、復号化対象データをブロック長単位に保持するレジスタである。入力レジスタ５１の出力とＫＥＹレジスタ５２の出力とはＡＥＳ復号演算部５４に入力される。また入力レジスタ５１の出力は保持レジスタ５３にも入力される。保持レジスタ５３は、入力レジスタ５１から入力されたデータ（暗号文）を１サイクル（ＡＥＳ復号演算部５４が１ブロック分の暗号文を復号化する処理期間）遅延させて出力する機能を果たす。
【００５５】
ＩＶレジスタ５５は、イニシャルベクタＩＶを保持するレジスタである。セレクタ５６は、ＩＶレジスタ５５が出力するイニシャルベクタＩＶと保持レジスタ５３の出力値ＤＶのいずれかを選択出力する。セレクタ５６の出力とＡＥＳ復号演算部５４の出力する演算結果はそれぞれＥＸＯＲ演算部５７に入力され、ＥＸＯＲ演算部５７はこれらの入力同士の排他的論理和演算を行う。ＥＸＯＲ演算部５７の出力は出力レジスタ５８に入力される。出力レジスタ５８から復号化後の平文が外部へ出力される。
【００５６】
シーケンサ６１は、ＡＥＳ復号演算部５４を動作させるためのシーケンサであり、ＡＥＳ復号演算部５４に対して制御信号７１を出力する。また、シーケンサ６１はＡＥＳ復号演算部５４にて１ブロック分の復号化処理が終了して演算結果が出力される毎に終了信号７２をカウンタ６２に対して出力する。ＡＥＳ復号演算部５４で規定回数の復号化演算（１サイクルとする。）を行うことで１ブロック長（１６バイト）分の復号化が行われる。また、シーケンサ６１は一連の復号化処理の開始時に初期信号７３を比較機能部６４に対して出力する。
【００５７】
カウンタ６２は、シーケンサ６１から入力される終了信号７２の入力回数を計数する。すなわち、ＡＥＳ復号演算部５４が１ブロック長分の復号化処理を行った回数（復号化回数）を計数する。
【００５８】
周期レジスタ６３には、１周期の間に復号化する復号化対象データのデータサイズを復号化回数に換算した値（これを設定復号化回数とする）が設定される。たとえば、１回の復号化で１６バイト（１ブロック長）が復号化され、１周期の間に５１２バイトを復号化する場合には、５１２バイトを１６バイトで除した商である「３２」が設定復号化回数となる。
【００５９】
比較機能部６４は、カウンタ６２の計数値Ｐと周期レジスタ６３に設定されている設定復号化回数Ｒとを比較し、これらが一致した場合にイネーブル信号７５をセレクタ５６に対して出力する機能を果たす。またこのとき、比較機能部６４はカウンタ６２に対してリセット信号７６を出力する。セレクタ５６はイネーブル信号７５が入力されたときイニシャルベクタＩＶを選択出力し、イネーブル信号７５が入力されないときは保持レジスタ５３から入力された１サイクル前の暗号文を選択出力する。また比較機能部６４はシーケンサ６１から初期信号７３が入力された場合にもイネーブル信号７５を出力するようになっている。
【００６０】
なお、ＫＥＹレジスタ５２やＩＶレジスタ５５へのデータのセット、周期レジスタ６３への設定復号化回数のセット、シーケンサ６１に対する設定や起動は、図示省略した上位のＣＰＵによって行われる。また、入力レジスタ５１に対してデータを順次セットする作業、出力レジスタ５８からデータを順次読み出す作業は、たとえば、データの圧縮／伸張部やハードディスク装置に対してデータを入出力するＤＭＡコントローラなどのデータ転送部（図示省略）によって行われる。
【００６１】
次に、復号化回路５０による復号化処理の動作を説明する。
【００６２】
図５は、復号化回路５０による復号化処理の流れを示している。まず、ＣＰＵにより、ＩＶレジスタ５５に対するイニシャルベクタＩＶのセット、ＫＥＹレジスタ５２に対する復号鍵のセットが行われる。さらに入力レジスタ５１に復号化対象データ（暗号文）がセットされる（ステップＳ２０１）。なお、入力レジスタ５１への復号化対象データのセットおよび出力レジスタ５８からの平文の読み出しは、復号化回路５０での復号化処理の進行に応じて外部から順次行われる。
【００６３】
次にＣＰＵにより周期レジスタ６３に対して設定復号化回数がセットされる（ステップＳ２０２）。ここでは、復号化対象の暗号文は暗号化回路１０によって暗号化されたものとし、暗号化回路１０で暗号化した際の設定暗号化回数と同じ値を設定復号化回数として設定する。
【００６４】
上記設定が行われた後、ＣＰＵからシーケンサ６１に対して一連の復号化処理の起動指示が出力される（ステップＳ２０３）。
【００６５】
起動指示を受けたシーケンサ６１は初期信号７３を出力し、これにより比較機能部６４からセレクタ５６に対してイネーブル信号７５を出力させ、該セレクタ５６からイニシャルベクタＩＶを選択出力（この状態をＩＶ初期化と呼ぶ。）させる（ステップＳ２０４）。
【００６６】
ＡＥＳ復号演算部５４は、ＫＥＹレジスタ５２の出力と入力レジスタ５１の出力とを入力し、これらに基づいて入力レジスタ５１から入力される暗号文に対して復号化演算を施す（ステップＳ２０５）。このとき入力レジスタ５１の出力は保持レジスタ５３に保持され、復号化処理１回分遅延されて保持レジスタ５３から出力される。
【００６７】
ＥＸＯＲ演算部５７は、セレクタ５６から選択出力されたイニシャルベクタＩＶとＡＥＳ復号演算部５４の出力値との排他的論理和演算を行い（ステップＳ２０６）、その演算結果として１ブロック分の平文を出力する。この平文は出力レジスタ５８から外部へ出力される。
【００６８】
シーケンサ６１は、初回１ブロック分の復号化処理を終えると、初期信号７３をオフにすると共に終了信号７２を出力する。カウンタ６２は当該終了信号７２を計数する（ステップＳ２０７）。比較機能部６４はカウンタ６２の計数値Ｐと周期レジスタ６３の出力（設定復号化回数）Ｒとを比較する（ステップＳ２０８）。
【００６９】
カウンタ６２の計数値Ｐと設定復号化回数Ｒとが一致しない場合は（ステップＳ２０８；Ｎ）、比較機能部６４はイネーブル信号７５を出力しない。これによりセレクタ５６は保持レジスタ５３の出力値をＥＸＯＲ演算部５７に対して選択出力する。この状態で次回の演算が行われる（ステップＳ２０５、２０６）。
【００７０】
すなわち、入力レジスタ５１の出力がＡＥＳ復号演算部５４によって復号化処理され、ＡＥＳ復号演算部５４の出力と保持レジスタ５３に保持されている前回の暗号文とがＥＸＯＲ演算部５７で排他的論理和演算されて新たな平文が生成される。
【００７１】
カウンタ６２の計数値Ｐと設定復号化回数Ｒとが一致した場合は（ステップＳ２０８；Ｙ）、比較機能部６４はカウンタ６２に対してリセット信号７６を出力し、カウンタ６２の計数値を「０」に初期化する（ステップＳ２０９）。また比較機能部６４はイネーブル信号７５を出力し、これを受けたセレクタ５６はイニシャルベクタＩＶをＥＸＯＲ演算部５７に対して選択出力する（ステップＳ２０４）。この状態で次回の演算が行われる（ステップＳ２０５、２０６）。
【００７２】
すなわち、入力レジスタ５１の出力がＡＥＳ復号演算部５４によって復号化処理され、ＡＥＳ復号演算部５４の出力とイニシャルベクタＩＶとがＥＸＯＲ演算部５７で排他的論理和演算されて新たな平文が生成される。
【００７３】
以上の処理は、一連の復号化処理が終了（たとえば、４Ｋバイトの復号化処理が終了）するまで繰り返し行われ（ステップＳ２１０；Ｎｏ）、予定量の復号化処理が終了すると本処理が終了する（エンド）。なお、復号化回路５０自体は復号化の終了を判定しておらず、外部から次のデータが入力レジスタ５１にセットされなくなることで一連の復号化処理が実質的に終了するようになっている。
【００７４】
図６は、１周期での暗号化データ数が５１２バイトとなるように設定（暗号化回数を「３２」に設定）して暗号化回路１０で暗号化された４Ｋバイトの暗号文を復号化回路５０で復号化処理した場合のプロセスを示している。初回の復号化時および設定された周期（５１２バイト、３２回の復号化処理毎）にイニシャルベクタＩＶが選択されてＥＸＯＲ演算部５７に入力されている。
【００７５】
このように復号化回路５０では、ＣＰＵによるソフトウェア処理Ｗを起動時に１回行うだけで、その後はハードウェアによる一連の処理により、所定サイズ毎に初期化されて暗号化された一連の暗号文を連続的に復号化することができ、所定サイズを復号化する毎にソフトウェア処理によって復号の初期化を行う場合に比べて、ソフトウェア処理の負担を軽減することができる。また、ソフトウェア処理Ｗによるオーバーヘッドも減り、復号化処理全体としての処理時間を短縮することができる。
【００７６】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００７７】
実施の形態ではＣＢＣモードでの暗号化回路１０および復号化回路５０を例示したが、暗号化や復号化に前回の暗号化処理または復号化処理で使用もしくは生成された所定のデータを使用する暗号方式であれば、ＣＢＣに限定されず、たとえば、ＯＦＢ(Output FeedBack)モードに適用されてもよい。なお、前回の暗号化または復号化処理で使用もしくは生成された所定のデータは、その暗号方式に応じて様々となる。たとえば、前回の暗号化で使用された平文、前回の暗号化で生成された暗号文、前回の暗号化の途中段階で生成された中間ベクタ（たとえば、ＯＦＢモードの暗号化時にＡＥＳ演算部から出力されたデータ）、前回の復号化で使用された暗号文、前回の復号化で生成された平文（たとえば、ＯＦＢ方式の復号化時に前段のＡＥＳ演算部から出力されたデータ）などとすることができる。
【００７８】
実施の形態に示した制御部２０や制御部６０の構成は一例であり、設定された周期でＩＶ初期化を自動的に行う機能を果たす回路であれば他の構成であってもかまわない。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施の形態に係る暗号化回路の構成を示すブロック図である。
【図２】本発明の実施の形態に係る暗号化回路による暗号化処理全体の流れを示す流れ図である。
【図３】本発明の実施の形態に係る暗号化回路による暗号化プロセスを示す説明図である。
【図４】本発明の実施の形態に係る復号化回路の構成を示すブロック図である。
【図５】本発明の実施の形態に係る復号化回路による復号化処理全体の流れを示す流れ図である。
【図６】本発明の実施の形態に係る復号化回路による復号化プロセスを示す説明図である。
【図７】従来の暗号化回路を示す回路構成図である。
【図８】図７に示す暗号化回路による暗号化プロセスを示す説明図である。
【図９】従来の復号化回路を示す回路構成図である。
【図１０】図９に示す復号化回路による復号化プロセスを示す説明図である。
【図１１】平文を複数に分割し別々に暗号化する場合に、その分割単位毎の初期化処理をＣＰＵによるソフトウェア処理で行う場合のプロセス例を示す説明図である。
【符号の説明】
【００８０】
１０…暗号化回路
１１…入力レジスタ
１２…ＫＥＹレジスタ
１３…ＥＸＯＲ演算部
１４…ＡＥＳ暗号演算部
１５…セレクタ
１６…ＩＶレジスタ
１７…出力レジスタ
２０…制御部
２１…シーケンサ
２２…カウンタ
２３…周期レジスタ
２４…比較機能部
３１…制御信号
３２…終了信号
３３…初期信号
３５…イネーブル信号
３６…リセット信号
５０…復号化回路
５１…入力レジスタ
５２…ＫＥＹレジスタ
５３…保持レジスタ
５４…ＡＥＳ復号演算部
５５…ＩＶレジスタ
５６…セレクタ
５７…ＥＸＯＲ演算部
５８…出力レジスタ
６０…制御部
６１…シーケンサ
６２…カウンタ
６３…周期レジスタ
６４…比較機能部
７１…制御信号
７２…終了信号
７３…初期信号
７５…イネーブル信号
７６…リセット信号
ＩＶ…イニシャルベクタ
ＥＶ…暗号ベクタ
ＤＶ…遅延された暗号文
Ｐ…カウンタの計数値
Ｑ、Ｒ…周期レジスタの出力値
【図１】
2009069686.tif 000003
【図２】
2009069686.tif 000004
【図３】
2009069686.tif 000005
【図４】
2009069686.tif 000006
【図５】
2009069686.tif 000007
【図６】
2009069686.tif 000008
【図７】
2009069686.tif 000009
【図８】
2009069686.tif 000010
【図９】
2009069686.tif 000011
【図１０】
2009069686.tif 000012
【図１１】
2009069686.tif 000013