(57)【要約】【課題】暗号化強度の低下を抑制しつつ、暗号化／復号化の処理速度を向上することができる暗号処理装置を提供する。【解決手段】暗号化対象データである平文をパイプライン暗号化演算部２０の段数と同数に等分してデータ群を構成すると共に、各データ群をＡＥＳ規格に基づき１２８ビットの平文ブロックに分割して、平文ブロックＮと平文ブロックＮ＋１とをパイプライン暗号化演算部２０の段数分以上離れるタイミング規則でＸＯＲ演算部２１に連続的に入力する。ＸＯＲ演算部２１では順次入力される平文ブロックＮ＋１とパイプライン暗号化演算部２０から出力された暗号文ブロックＮ'とを演算し、パイプライン暗号化演算部２０ではその演算結果に対する暗号演算をパイプライン構造で接続された複数段の暗号化演算部により並列に実行してパイプライン処理を行う。【選択図】図２
2008203306.tif 000002
【特許請求の範囲】
【請求項１】
複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
【請求項２】
初期ベクタを保持する保持レジスタと、
前記データ群に対する１回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする請求項１または２に記載の暗号処理装置。
【請求項４】
前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の暗号処理装置。
【請求項５】
前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする請求項１乃至請求項４のいずれか１項に記載の暗号処理装置。
【請求項６】
前記データ群は、１ページ分の画像のデータである
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載の暗号処理装置。
【請求項７】
前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載の暗号処理装置。
【請求項８】
前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする請求項１乃至請求項５のいずれか１項に記載の暗号処理装置。
【請求項９】
複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第１保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第２保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて前記第１保持部に保持されている初期ベクタまたは前記第２保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
【請求項１０】
前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第１保持部に保持されている初期ベクタを１回目に出力した後、前記第２保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする請求項９に記載の暗号処理装置。
【請求項１１】
１回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、請求項１乃至請求項８のいずれか１項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする請求項１０に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文の暗号化もしくは暗号文の復号化を行う暗号処理装置に関する。
【背景技術】
【０００２】
一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、ＤＥＳ（データ標準暗号化方式、Data Encryption Standard）からＡＥＳ（次世代標準暗号化方式、Advanced Encryption Standard）に移行しており、暗号強度が強くなってきている。ＡＥＳ暗号方式は、データを１２８ビットのブロック長単位で暗号化／復号化するブロック暗号であり、複数種類のモードがあって目的や使用方法により選択される。
【０００３】
たとえば、図８はＣＢＣ(Cipher Block Chaining)モードの暗号化回路２００の構成例を示しており、図９はＣＢＣモードの復号化回路２１０の構成例を示しており、図１０はＣＢＣモードにおける暗号化／復号化プロセスを示している。
【０００４】
図８に示すように、暗号化回路２００は、入力値にＡＥＳ規格に基づいた暗号演算を施して演算結果（暗号ベクタ）を出力するＡＥＳ暗号演算部２０１と、ＡＥＳ暗号演算部２０１に入力する暗号鍵を保持するためのＫＥＹレジスタ２０２と、暗号化の対象となるデータブロックを保持する入力レジスタ２０３と、初回の暗号演算に使用する初期の暗号ベクタ（イニシャルベクタ）を保持するためのＩＶレジスタ２０４と、ＡＥＳ暗号演算部２０１の演算結果として出力される暗号ベクタとＩＶレジスタ２０４に保持されているイニシャルベクタとのいずれかを選択するセレクタ２０５と、入力レジスタ２０３の出力とセレクタ２０５の出力との排他的論理和を演算してＡＥＳ暗号演算部２０１の入力に与えるＸＯＲ演算部２０６と、ＡＥＳ暗号演算部２０１の出力（暗号化の結果として生成されたデータブロック）を保持する出力レジスタ２０７とを備えている。
【０００５】
図９に示すように、復号化回路２１０は、入力値にＡＥＳ規格に基づいた復号演算を施して演算結果（復号ベクタ）を出力するＡＥＳ復号演算部２１１と、ＡＥＳ復号演算部２１１に入力する暗号鍵を保持するためのＫＥＹレジスタ２１２と、復号化の対象となるデータブロックを保持する入力レジスタ２１３と、初回の復号演算に使用する初期の暗号ベクタ（イニシャルベクタ）を保持するためのＩＶレジスタ２１４と、入力レジスタ２１３に保持されているデータブロックとＩＶレジスタ２１４に保持されているイニシャルベクタとのいずれかを選択するセレクタ２１５と、ＡＥＳ復号演算部２１１の出力とセレクタ２１５の出力との排他的論理和を演算するＸＯＲ演算部２１６と、ＸＯＲ演算部２１６の出力（復号化の結果として生成されたデータブロック）を保持する出力レジスタ２１７とを備えている。
【０００６】
図１０（Ａ）に示すように、暗号化プロセスの初回Ｔ１には、暗号化回路２００における入力レジスタ２０３の保持している暗号化の対象となるデータブロック（平文１）とＩＶレジスタ２０４の保持しているイニシャルベクタＩＶとがＸＯＲ演算部２０６に入力され、ＸＯＲ演算部２０６はその暗号化対象のデータブロックとイニシャルベクタＩＶとの排他的論理和演算を行い、演算結果をＡＥＳ暗号演算部２０１に出力する。ＡＥＳ暗号演算部２０１は、ＸＯＲ演算部２０６から入力された演算結果とＫＥＹレジスタ２０２に保持されている暗号鍵（ＫＥＹ）とのＡＥＳ規格に基づいた暗号演算を行い、その演算結果が暗号化の結果のデータブロック（暗号文１）として出力レジスタ２０７に保持される。ＡＥＳ暗号演算部２０１から出力された演算結果は、暗号ベクタとして２回目Ｔ２にＸＯＲ演算部２０６にも入力される。
【０００７】
２回目以降（Ｔ２、Ｔ３、・・・Ｔｎ）には、ＸＯＲ演算部２０６は、入力レジスタ２０３に保持されている暗号化対象のデータブロック（平文２、平文３、・・・平文ｎ）とＡＥＳ暗号演算部２０１から入力された前回の暗号ベクタとの排他的論理和演算を行い、演算結果をＡＥＳ暗号演算部２０１に出力する。ＡＥＳ暗号演算部２０１は、ＸＯＲ演算部２０６から入力された演算結果とＫＥＹレジスタ２０２に保持されている暗号鍵とのＡＥＳ規格に基づいた演算を行い、その演算結果が暗号化の結果のデータブロック（暗号文２、暗号文３、・・・暗号文ｎ）として出力レジスタ２０７に保持される。この２回目以降も、ＡＥＳ暗号演算部２０１から出力された演算結果は、次回の暗号ベクタとしてＸＯＲ演算部２０６に入力される。
【０００８】
図１０（Ｂ）に示すように、復号化プロセスの初回Ｔ１には、復号化回路２１０における入力レジスタ２１３の保持している復号化の対象となるデータブロック（暗号文１）とＫＥＹレジスタ２１２の保持している暗号鍵（ＫＥＹ）とがＡＥＳ復号演算部２１１に入力され、ＡＥＳ復号演算部２１１はその復号化対象のデータブロックと暗号鍵とのＡＥＳ規格に基づいた復号演算を行い、演算結果をＸＯＲ演算部２１６に出力する。初回Ｔ１にＸＯＲ演算部２１６は、ＡＥＳ復号演算部２１１から入力された演算結果とＩＶレジスタ２１４に保持されているイニシャルベクタＩＶとの排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック（平文１）として出力レジスタ２１７に保持される。
【０００９】
２回目以降（Ｔ２、Ｔ３、・・・Ｔｎ）には、入力レジスタ２１３の保持している復号化の対象となるデータブロック（暗号文２、暗号文３、・・・暗号文ｎ）とＫＥＹレジスタ２１２の保持している暗号鍵とがＡＥＳ復号演算部２１１に入力され、ＡＥＳ復号演算部２１１はその復号化対象のデータブロックと暗号鍵とのＡＥＳ規格に基づいた復号演算を行い、演算結果をＸＯＲ演算部２１６に出力する。ＸＯＲ演算部２１６は、ＡＥＳ復号演算部２１１から入力された演算結果と、前回、入力レジスタ２１３に保持されているデータブロック（暗号文１、暗号文２、・・・暗号文ｎ−１）との排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック（平文２、平文３、・・・平文ｎ）として出力レジスタ２１７に保持される。
【００１０】
図１１は、ＣＢＣモードの暗号化プロセスにおける暗号化の対象となるデータブロック（平文）の入力タイミングと暗号化の結果のデータブロック（暗号文）の出力タイミングに関するタイミングチャートを示している。図１０（Ａ）でも説明したように、初回は平文１とイニシャルベクタＩＶとで排他的論理和演算（ＸＯＲ）を行い、その演算結果をＡＥＳ暗号演算部２０１に入力し暗号文１'が生成される。２回目は平文２と暗号文１'とで排他的論理和演算（ＸＯＲ）を行い、その演算結果をＡＥＳ暗号演算部２０１に入力し暗号文２'が生成される。３回目以降も同様に、平文３と暗号文２'とで排他的論理和演算（ＸＯＲ）を行い、その演算結果をＡＥＳ暗号演算部２０１に入力し暗号文３'が生成され、最終回には平文ｎと暗号文(ｎ−１)'とで排他的論理和演算（ＸＯＲ）を行い、その結果をＡＥＳ暗号演算部２０１に入力し暗号文ｎ'が生成される。
【００１１】
図１２は、ＣＢＣモードの復号化プロセスにおける復号化の対象となるデータブロック（暗号文）の入力タイミングと復号化の結果のデータブロック（平文）の出力タイミングに関するタイミングチャートを示している。図１０（Ｂ）でも説明したように、初回は暗号文１'をＡＥＳ復号演算部２１１に入力して復号演算を行い、その演算結果とイニシャルベクタＩＶとで排他的論理和演算（ＸＯＲ）を行い平文１が生成される。２回目は暗号文２'をＡＥＳ復号演算部２１１に入力して復号演算を行い、その演算結果と暗号文１'とで排他的論理和演算（ＸＯＲ）を行い平文２が生成される。３回目以降も同様に、暗号文３'をＡＥＳ復号演算部２１１に入力して復号演算を行い、その演算結果と暗号文２'とで排他的論理和演算（ＸＯＲ）を行い平文３が生成され、最終回には暗号文ｎ'をＡＥＳ復号演算部２１１に入力して復号演算を行い、その演算結果と暗号文(ｎ−１)'とで排他的論理和演算（ＸＯＲ）を行い平文ｎが生成される。
【００１２】
図１３は、暗号化回路２００のＡＥＳ暗号演算部２０１および復号化回路２１０のＡＥＳ復号演算部２１１を構成するノンパイプライン回路２２０のブロック図を示しており、図１４は、ノンパイプライン回路２２０から出力される処理データの出力タイミングチャートを示している。
【００１３】
図１３に示すように、ＡＥＳ暗号方式のノンパイプライン回路２２０は、入力されたデータブロック（indata）に対し、置換（ステップＳ３０１）、並べ替え（ステップＳ３０２）、行列演算（ステップＳ３０３）、ＸＯＲ演算（ステップＳ３０４）の４つの処理を１ラウンドで行い、この１ラウンドを１クロック（ＣＬＫ）で処理して１１回繰り返す。最後に１クロックを入れて計１２クロックでブロック長１２８ビットを処理し、処理済みのデータブロック（outdata）を出力する。
【００１４】
したがって、ノンパイプライン回路２２０による処理済みのデータブロックの出力タイミングは、図１４に示すように、最初のデータブロック（data１）が出力されるまでに１２クロックかかり、その後は１１クロック毎にデータブロック（data２、data３・・・）が出力される（図１１および図１２参照）。
【００１５】
このようなノンパイプライン回路２２０による暗号化／復号化の処理では、各回で固定長（１２８ビット）のデータブロックの暗号化／復号化を行い、長いビット長の平文や暗号文を処理するためには多数の回数を時系列に処理するので、処理時間が長くなってしまう。
【００１６】
これに対し、たとえば、平文ブロックの位置情報（ブロック番号）とイニシャルベクタ（ＩＶ）とを演算してスクランブルデータを求め、このスクランブルデータと平文ブロックとの排他的論理和を演算した演算結果を複数段の暗号化回路でパイプライン処理により暗号化して暗号文ブロックを生成することにより、またその暗号文ブロックをパイプライン処理により復号化することにより、大量のデータを暗号化／復号化する場合の処理速度を高めるようにした技術がある（たとえば、特許文献１参照。）。
【００１７】
【特許文献１】特開平５−２４９８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
上記のパイプライン処理を用いた暗号化／復号化の技術は、暗号化回路のパイプライン化を容易にするために、暗号文を入力側にフィードバックせずに平文をスクランブルするようにしており、ＣＢＣモードには対応していない。そのため、暗号文を入力に戻して次の平文の暗号化に使用することにより暗号化強度を高めているＣＢＣモードなどに比べると、暗号化強度が低下してしまう。
【００１９】
本発明は、上記の問題を解決しようとするものであり、暗号化強度の低下を抑制しつつ、暗号化／復号化の処理速度を向上することができる暗号処理装置を提供することを目的としている。
【課題を解決するための手段】
【００２０】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００２１】
［１］複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
【００２２】
上記発明では、制御部は暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力する。演算部は、パイプライン暗号化処理部から出力された暗号データと制御部によって入力される単位データとを演算し、その演算結果をパイプライン暗号化処理部に入力する。パイプライン暗号化処理部は、演算部から入力される演算結果に対し、パイプライン構造で接続された複数の暗号化処理部によりその段数分の暗号演算を行って暗号データを生成する。
【００２３】
パイプライン暗号化処理部は、パイプライン構造を備えていることで、演算部から次々と演算結果のデータを入力してその段数分だけ暗号演算を並列に実行できる。ただし、パイプライン暗号化処理部では段数分の暗号演算が行われるため、一の単位データの暗号データは一の単位データをパイプライン暗号化処理部に入力した時点からパイプライン段数分だけ遅れてパイプライン暗号化処理部から出力される。このため、一の単位データに後続する単位データを一の単位データに連続させて演算部に入力すると、たとえば、単位データＮの暗号データＮ'と単位データＮ＋１とを演算部で演算してパイプライン暗号化処理部に入力することはできない。
【００２４】
そこで、一の単位データ（Ｎ）とこれに後続する単位データ（Ｎ＋１）とをパイプライン暗号化処理部の段数分以上離れるタイミング規則で演算部に入力すれば、単位データＮ＋１は、単位データＮの暗号データＮ'がパイプライン暗号化処理部から出力された時点以降に演算部に入力されるようになり、暗号データＮ'と演算部への入力タイミングを合わせられるようになる。この入力タイミングを合わせることで、一の単位データの暗号データ（暗号ベクタ）を入力側にフィードバックさせて後続する単位データの暗号化が可能となる。
【００２５】
このように、パイプライン暗号化処理部から出力される暗号データを入力に戻して次の単位データの暗号化に使用することにより、強度の高い暗号化プロセス（暗号化アルゴリズム）となり、暗号データを入力に戻して次の単位データの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。
【００２６】
またパイプライン暗号化処理部は、演算部から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、複数のデータ群について上記のタイミング規則で演算部に単位データを入力する動作を並行に行えば、複数のデータ群に対する暗号化を同時並行に行うことができるため、単一のノンパイプラインの暗号化処理部を使用して１つの単位データの暗号演算を所定回数繰り返すような暗号化処理を行う場合に比べ、暗号化の処理速度を向上することができる。
【００２７】
［２］初期ベクタを保持する保持レジスタと、
前記データ群に対する１回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする［１］に記載の暗号処理装置。
【００２８】
上記発明では、切替部は、１回目の暗号化が行われるときは暗号データに代えて保持レジスタに保持されている初期ベクタを演算部に入力し、２回目以降の暗号化が行われるときはパイプライン暗号化処理部から出力された暗号データを演算部に入力する。これにより、データ群の１番目の単位データに対する暗号化は初期ベクタを使用して実行され、そのデータ群の２番目以降の単位データの暗号化は暗号データを使用して実行される。
【００２９】
［３］前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする［１］または［２］に記載の暗号処理装置。
【００３０】
上記発明では、演算部において、パイプライン暗号化処理部を経て演算部に戻される単位データＮの暗号データＮ'と、暗号データＮ'が演算部に戻されるタイミングで入力される単位データＮ＋１とが演算される。これにより、一の単位データの暗号データを使用した、一の単位データに後続する単位データの暗号化が可能となる。
【００３１】
［４］前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする［１］乃至［３］のいずれか１項に記載の暗号処理装置。
【００３２】
上記発明では、パイプライン暗号化処理部を経て演算部に戻される単位データＮの暗号データＮ'と、単位データＮ＋１との演算部への入力タイミングを合わせるために、単位データＮと単位データＮ＋１とをパイプライン段数分以上離れるタイミング規則（非連続）で演算部に入力することで、パイプライン暗号化処理部からは暗号データＮ'と暗号データ（Ｎ＋１）'とがパイプライン段数分以上離れるタイミング規則（非連続）で出力される。この離間して出力される暗号データを連続配列させることにより、データ群単位では暗号データが汎用のＣＢＣモードの並びになる。
【００３３】
たとえば、データの暗号化送信を行う場合に、受信側の暗号処理装置がＣＢＣモードの汎用（ノンパイプライン）の復号化処理部しか備えていない場合でも、パイプライン暗号化処理部で生成した暗号データに加えて暗号化プロセスでの初期ベクタの使用タイミングを示すタイミング情報（各データ群の最初の位置を示す情報）などを送信することにより、受信側の暗号処理装置はノンパイプラインの復号化処理部によって暗号データを元のデータに復号化することができる。したがって、汎用のＣＢＣモードにおける復号化プロセスと互換性を保つことができる。
【００３４】
［５］前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする［１］乃至［４］のいずれか１項に記載の暗号処理装置。
【００３５】
上記発明では、制御部は、たとえば、データ群Ｎの単位データＮを演算部に入力してから単位データＮ＋１を上記のタイミング規則で演算部に入力するまでの間に、データ群Ｍの単位データＭを演算部に入力する。この入力後に、データ群Ｎの単位データＮ＋１を単位データＮに対して上記のタイミング規則で演算部に入力し、さらに、データ群Ｍの単位データＭ＋１を単位データＭに対して上記のタイミング規則で演算部に入力する。
【００３６】
演算部からは、単位データＮの演算結果が出力されてから単位データＮ＋１の演算結果が上記のタイミング規則で出力されるまでの間に、単位データＭの演算結果が出力される。この出力後に、単位データＮ＋１の演算結果が単位データＮの演算結果に対して上記のタイミング規則で出力され、さらに、単位データＭ＋１の演算結果が単位データＭの演算結果に対して上記のタイミング規則で出力される。
【００３７】
これにより、パイプライン暗号化処理部は、単位データＮの演算結果が入力されてから単位データＮ＋１の演算結果が入力されるまでの間に、すなわち、単位データＮの演算結果に対する暗号演算を行っている間に、単位データＭの演算結果が入力され、それらの暗号演算を並列実行する。また、単位データＮの演算結果に対する暗号演算を終えてその暗号データＮ'を出力し、単位データＭの演算結果に対する暗号演算を行っている間に、単位データＮ＋１の演算結果が入力され、それらの暗号演算を並列実行する。さらに、単位データＭの演算結果に対する暗号演算を終えてその暗号データＭ'を出力し、単位データＮ＋１の演算結果に対する暗号演算を行っている間に、単位データＭ＋１の演算結果が入力され、それらの暗号演算を並列実行する。
【００３８】
このように、一のデータ群から分割された単位データを上記のタイミング規則で演算部に順次入力する動作を、複数のデータ群に対して、単位データを演算部に入力するタイミングを、データ群毎に異ならせて並行に行うことで、パイプライン暗号化処理部では各単位データが同時並行に暗号化処理され、暗号化対象の複数のデータ群に対する暗号化の処理速度が向上する。
【００３９】
［６］前記データ群は、１ページ分の画像のデータである
ことを特徴とする［１］乃至［５］のいずれか１項に記載の暗号処理装置。
【００４０】
上記発明では、暗号化対象のデータ群を１ページ分の画像のデータとし、その１ページ分の画像のデータを単位データずつに分割して各ページの各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する（パイプライン処理）。これにより、暗号化ではページ毎（データ群毎）に、１番目の単位データの暗号演算には初期ベクタを使用し、２番目以降の単位データの暗号演算には前の暗号データを使用できる。また、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの１番目の暗号データの復号化には初期ベクタを使用し、２番目以降の暗号データの復号化には前の暗号データを使用することで復号化が可能となり、ノンパイプラインの復号化処理部でも復号化することができる。
【００４１】
［７］前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする［１］乃至［５］のいずれか１項に記載の暗号処理装置。
【００４２】
上記発明では、一連のデータを複数に分割して暗号化対象のデータ群を構成し、複数のデータ群の暗号化をパイプライン処理によって並列処理すれば、一連のデータの暗号化に要する時間が短縮される。
【００４３】
たとえば、１ページ分の画像のデータを複数のデータ群に分割してパイプライン暗号化処理部で並列処理することで、暗号化の処理速度が向上する。
【００４４】
［８］前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする［１］乃至［５］のいずれか１項に記載の暗号処理装置。
【００４５】
上記発明では、一連のデータをパイプライン暗号化処理部の段数と同数に等分してデータ群を構成し、各データ群を単位データずつに分割して各データ群の各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する（パイプライン処理）。
【００４６】
たとえば、一連のデータをパイプライン暗号化処理部の段数未満に分割してデータ群を構成しパイプライン処理を行うような場合には、パイプライン暗号化処理部では暗号演算を行わない段が発生して処理効率が低下する。また、一連のデータをパイプライン暗号化処理部の段数より多く分割してデータ群を構成しパイプライン処理を行うような場合には、初期ベクタの使用回数が増加して暗号化強度が低下する。
【００４７】
これに対し、一連のデータをパイプライン暗号化処理部の段数分に分割してデータ群を構成すれば、パイプライン暗号化処理部から同一データ群の単位データＮの暗号データＮ'が出力されて演算部に戻されるタイミングと、単位データＮ＋１を演算部に入力するタイミングが一致するため、隙間を空けることなく単位データを連続的に入力できるようになり、効率的な処理が可能となる。
【００４８】
このように、一連のデータをパイプライン暗号化処理部の段数と同数に等分して複数のデータ群を構成し、暗号化を行うことにより、初期ベクタの使用回数を最小にして暗号化強度の低下を抑制しつつ、パイプライン化した暗号化処理部の段数に応じた効率的な処理（最適化処理）が可能となる。
【００４９】
［９］複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第１保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第２保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて、前記第１保持部に保持されている初期ベクタまたは前記第２保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
【００５０】
上記発明では、パイプライン復号化処理部は、復号化対象の暗号データに対し、パイプライン構造で接続された複数の復号化処理部によりパイプライン構造の段数分の復号演算を行う。第１保持部は初期ベクタを保持する。第２保持部はパイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、パイプライン復号化処理部からその暗号データの次の暗号データに対する演算結果が出力されるタイミングで保持しているその暗号データを出力する。演算部は、入力された、初期ベクタの使用タイミングを示すタイミング情報に基づいて、第１保持部に保持されている初期ベクタまたは第２保持部から出力される暗号データに出力を切り替える。演算部は、パイプライン復号化処理部から出力される演算結果と、切替部から出力される初期ベクタまたは暗号データとを演算して、復号データを生成する。
【００５１】
このように、暗号データを復号化する復号化処理部をパイプライン化することで、そのパイプライン復号化処理部に暗号データを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することが可能となる。これにより、単一のノンパイプラインの復号化処理部を使用して１つの単位データの復号演算を所定回数繰り返すような復号化処理を行う場合に比べ、復号化の処理速度を向上することができる。
【００５２】
また、従来の復号化回路は、１回目の復号化処理のみに初期ベクタを使用するように構成されるが、初期ベクタの使用タイミングを示すタイミング情報を入力し、このタイミング情報に基づいて初期ベクタの使用タイミングを切り替えることで、暗号データの途中で初期ベクタによる復号化を必要とする場合にも対応することができる。たとえば、暗号データが複数のデータ群に分けて暗号化（各データ群では１回目にのみ初期ベクタが使用される）されている場合でも、各データ群の最初の位置（境界位置）を示す情報などが入力されれば、各データ群の初回の復号化に初期ベクタを使用してこの暗号データを連続的に復号化処理することができる。
【００５３】
また、たとえば、データの暗号化送信を行う場合に、送信側の暗号処理装置がＣＢＣモードの汎用（ノンパイプライン）の暗号化処理部しか備えていない場合でも、受信側の暗号処理装置はパイプライン復号化処理部により、１回目のみ初期ベクタで２回目以降は暗号データを使用する一般的な動作によって暗号データを元のデータに復号化することができる。したがって、汎用のＣＢＣモードにおける暗号化プロセスと互換性を保つことができる。
【００５４】
［１０］前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第１保持部に保持されている初期ベクタを１回目に出力した後、前記第２保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする［９］に記載の暗号処理装置。
【００５５】
上記発明では、たとえば、暗号化プロセスで初期ベクタが所定の周期で使用されて暗号化された暗号データを復号化するような場合は、切替部が初期ベクタの使用周期を示す周期情報に基づいて、第１保持部に保持されている初期ベクタを１回目に出力した後、第２保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行うことにより正しく復号化される。
【００５６】
［１１］１回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、［１］乃至［８］のいずれか１項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする［１０］に記載の暗号処理装置。
【００５７】
上記発明では、［１］乃至［８］のいずれか１項に記載の暗号処理装置のように、暗号化処理部をパイプライン化すると共に、暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力することで暗号化する場合は、たとえば、データ群の１番目の単位データに初期ベクタを使用し、残りの単位データに前の暗号データを使用して暗号化することをデータ群毎に行って暗号化することができる。
【００５８】
このような暗号化プロセスで生成された暗号データに対しては、データ群を構成する単位データの数を、１回の周期でパイプライン復号化処理部から演算結果が出力される回数にすることで、すなわち、初期ベクタの使用周期を、パイプライン復号化処理部が１つのデータ群の全単位データを処理する周期に合わせることで、各データ群の１番目の暗号データの復号化には初期ベクタが使用され、残りの暗号データの復号化には前の暗号データが使用されるようになり、暗号化プロセスに合わせたデータ群毎の初期ベクタと暗号データの切り替えが行われるようになる。したがって、［１］乃至［８］のいずれか１項に記載の暗号処理装置で暗号化された暗号データを正しく復号化することができる。
【発明の効果】
【００５９】
本発明に係る暗号処理装置によれば、暗号化強度の低下を抑制しつつ、暗号化／復号化の処理速度を向上することができる。
【発明を実施するための最良の形態】
【００６０】
以下、図面に基づき本発明の実施の形態を説明する。
【００６１】
図１は、本発明の実施の形態に係る暗号処理装置１０の構成をブロック図で示している。暗号処理装置１０は、原稿を読み取って対応する画像を記録紙上に形成して出力するコピー機能や、スキャナ機能、プリンタ機能、ファクシミリ機能などを備えたデジタル複合機などの画像形成装置に搭載されており、画像形成装置が各種動作を実行するときに画像データなどの暗号化／復号化を行う機能を備えている。
【００６２】
図１に示すように、暗号処理装置１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＯＭ（Read Only Memory）１２と、ＲＡＭ（Random Access Memory）１３と、暗号化回路１４と、復号化回路１５と、並べ替え回路１６とを備えている。
【００６３】
ＣＰＵ１１は演算処理機能を備えると共に、暗号処理装置１０全体の動作を統括制御する制御部（中央処理装置）として機能する。ＲＯＭ１２は、ＣＰＵ１１が実行するプログラムや各種固定データを記憶している。ＲＡＭ１３は、ＣＰＵ１１がプログラムを実行する際に各種データを一時的に格納するワークメモリや、暗号化処理を施す一連の暗号化対象データ（平文）および復号化処理を施す一連の復号化対象データ（暗号文）を格納するデータメモリとして機能する。
【００６４】
暗号化回路１４は、ＲＡＭ１３に格納された暗号化対象データに対してＡＥＳ規格に基づき１２８ビットのブロック長単位で暗号化処理を施す機能を備えている。復号化回路１５は、ＲＡＭ１３に格納された復号化対象データに対してＡＥＳ規格に基づき１２８ビットのブロック長単位で復号化処理を施す機能を備えている。また暗号化回路１４および復号化回路１５は、上記のブロック長単位で演算を行うデータブロック（単位データ）に加えて、後述するイニシャルベクタと暗号鍵もＡＥＳ規格に基づいて１２８ビット単位で演算を行うように構成されている。
【００６５】
並べ替え回路１６は、暗号化回路１４が暗号化処理を行うときに、ＲＡＭ１３に格納されている暗号化対象データを複数のデータブロック（平文ブロック）からなるデータ群に分割すると共に、各データ群のデータブロックを飛び飛びの順番に並べ替えて暗号化回路１４に入力する機能、および、暗号化回路１４から暗号化されて出力されたデータブロック（暗号文ブロック）を元の順番に並べ戻し一連の暗号文としてＲＡＭ１３に格納する機能を備えている。さらに、ＲＡＭ１３に格納する暗号文のヘッダーに、暗号化モード情報（パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報）や暗号化プロセスでのイニシャルベクタＩＶの使用タイミングを示すＩＶ使用タイミング情報（各データ群の最初の位置を示す位置情報）などを付加する機能も備えている。
【００６６】
また並べ替え回路１６は、復号化回路１５が復号化処理を行うときに、ＲＡＭ１３に格納されている復号化対象データのデータブロック（暗号文ブロック）を先頭から並び順通りに復号化回路１５に入力する機能、および、復号化回路１５から復号化されて出力されたデータブロック（平文ブロック）を出力順に並べてＲＡＭ１３に格納する機能を備えている。
【００６７】
図２は、暗号化回路１４の回路構成を示しており、図３は、復号化回路１５の回路構成を示しており、図４は、暗号化回路１４および復号化回路１５が備えるパイプライン回路４０のブロック図を示している。
【００６８】
図２に示すように、暗号化回路１４は、パイプライン暗号化処理部としてのパイプライン暗号化演算部２０と、ＸＯＲ演算部２１と、セレクタ２２と、セレクタ制御回路２３と、入力レジスタ２４と、出力レジスタ２５と、ＫＥＹレジスタ２６と、ＩＶレジスタ２７とを備えている。
【００６９】
パイプライン暗号化演算部２０は、ＡＥＳ規格に基づいたパイプライン方式のブロック暗号演算を行う回路であり、連続して入力されるデータブロックの暗号演算を並列に実行して演算結果を連続出力する機能を備えている。
【００７０】
詳細には、暗号化回路１４は図４に示すパイプライン回路４０のように、直列に接続された１１段のノンパイプライン回路４１（暗号化演算部）を備えている。各ノンパイプライン回路４１は、従来のノンパイプライン回路２２０と同様に（図１３参照）、入力されたデータブロック（indata）に対して、置換（ステップＳ１０１）、並べ替え（ステップＳ１０２）、行列演算（ステップＳ１０３）、ＸＯＲ演算（ステップＳ１０４）の４つの処理を１ラウンドで行い、この１ラウンドを１クロック（ＣＬＫ）で処理するように構成されている。したがって、ノンパイプライン回路４１を１１段備えたパイプライン回路４０は、入力されたデータブロックを１クロック目に初段Ｐ１のノンパイプライン回路４１で演算処理し、２クロック目に２段目Ｐ２のノンパイプライン回路４１で演算処理し、・・・、１１クロック目に最終段である１１段目Ｐ１１のノンパイプライン回路４１で演算処理し、１２クロック目に演算結果である処理済みのデータブロック（outdata）を出力するようになっている。
【００７１】
また、パイプライン回路４０は、データブロックがクロック毎に連続的に入力されると、その連続入力されるデータブロックに対して、１１段のノンパイプライン回路４１で段数分の演算を並列に実行し、処理済みのデータブロックをクロック毎に連続出力する動作（パイプライン処理）を行うようになる。
【００７２】
ＫＥＹレジスタ２６（図２参照）は、暗号演算で用いる暗号鍵を保持するためのレジスタであり、ＫＥＹレジスタ２６に保持された暗号鍵はパイプライン暗号化演算部２０に入力される。ＩＶレジスタ２７は、パイプライン暗号化演算部２０に入力するイニシャルベクタＩＶとなる任意のデータを保持するためのレジスタである。
【００７３】
セレクタ制御回路２３は、セレクタ２２の動作を制御し、セレクタ２２は、ＩＶレジスタ２７に保持されているイニシャルベクタＩＶとパイプライン暗号化演算部２０の演算結果（暗号ベクタ）のいずれかをＸＯＲ演算部２１に対して選択出力する機能を備えている。
【００７４】
入力レジスタ２４は、並べ替え回路１６によって入力される暗号化対象のデータブロック（平文ブロック）を保持するレジスタである。ＸＯＲ演算部２１は、入力レジスタ２４の出力する暗号化対象のデータブロックとセレクタ２２の出力するイニシャルベクタＩＶまたは暗号ベクタとの排他的論理和を演算する機能を備えている。出力レジスタ２５は、パイプライン暗号化演算部２０の演算結果として出力される暗号化されたデータブロック（暗号文ブロック）を保持するレジスタである。
【００７５】
図３に示すように、復号化回路１５は、パイプライン復号化処理部としてのパイプライン復号化演算部３０と、ＸＯＲ演算部３１と、セレクタ３２と、セレクタ制御回路３３と、入力レジスタ３４と、出力レジスタ３５と、ＫＥＹレジスタ３６と、ＩＶレジスタ３７と、保持レジスタ３８とを備えている。
【００７６】
パイプライン復号化演算部３０は、ＡＥＳ規格に基づいたパイプライン方式のブロック復号演算を行う回路であり、連続して入力されるデータブロックの復号演算を並列に実行して演算結果を連続出力する機能を備えている。このパイプライン復号化演算部３０は、パイプライン暗号化演算部２０で説明したパイプライン回路４０と同じ構成であり、同様に動作する。
【００７７】
入力レジスタ３４は、並べ替え回路１６によって入力される復号化対象のデータブロック（暗号文ブロック）を保持するレジスタであり、入力レジスタ３４に保持されたデータブロックはパイプライン復号化演算部３０と保持レジスタ３８に入力される。
【００７８】
保持レジスタ３８は、たとえばＦＩＦＯ（First-In First-Out）などで構成されており、入力レジスタ３４から入力されたデータブロックを内部に保持して入力順に出力する機能を備えている。また保持レジスタ３８は、パイプライン復号化演算部３０の段数よりも１段多くされており（１２段ＦＩＦＯ）、パイプライン復号化演算部３０からデータブロックの演算結果が出力されるタイミングで、そのデータブロックよりも１つ前のデータブロック（先に入力されたデータブロック）を出力するように構成されている。
【００７９】
ＫＥＹレジスタ３６は、復号演算で用いる暗号鍵を保持するためのレジスタであり、ＫＥＹレジスタ３６に保持された暗号鍵はパイプライン復号化演算部３０に入力される。ＩＶレジスタ３７は、パイプライン復号化演算部３０に入力するイニシャルベクタＩＶとなる任意のデータを保持するためのレジスタである。
【００８０】
セレクタ制御回路３３は、セレクタ３２の動作を制御し、セレクタ３２は、ＩＶレジスタ３７に保持されているイニシャルベクタＩＶと保持レジスタ３８から出力されたデータブロックのいずれかをＸＯＲ演算部３１に対して選択出力する機能を備えている。
【００８１】
ＸＯＲ演算部３１は、パイプライン復号化演算部３０の出力する演算結果とセレクタ３２の出力するイニシャルベクタＩＶまたはデータブロックとの排他的論理和を演算する。出力レジスタ３５はＸＯＲ演算部３１の演算結果である復号化されたデータブロック（平文ブロック）を保持するレジスタである。
【００８２】
またＣＰＵ１１は、暗号化回路１４、復号化回路１５、および並べ替え回路１６の動作シーケンスを制御する機能を果たし、ＫＥＹレジスタ２６、３６およびＩＶレジスタ２７、３７へのデータのセットも行う。暗号化／復号化処理で使用するイニシャルベクタや暗号鍵などの各種データは、たとえば、図示しない補助記憶装置に格納しておき、暗号処理装置１０の起動時にＣＰＵ１１が補助記憶装置から読み出して各レジスタにセットするようになっている。
【００８３】
さらにＣＰＵ１１は、暗号化処理を行うときは並べ替え回路１６に、暗号化対象データの存在するメモリ領域の先頭アドレスを示す先頭アドレス情報、暗号化対象データのサイズを示すデータサイズ情報、暗号化対象データの分割数を示すデータ分割数情報を出力し、暗号化回路１４のセレクタ制御回路２３に、パイプライン暗号化演算部２０の段数を示す段数情報を出力する。復号化処理を行うときは復号化回路１５のセレクタ制御回路３３に、復号化対象データの暗号化プロセスでのイニシャルベクタＩＶの使用タイミングを示すＩＶ使用タイミング情報を出力する。
【００８４】
ＩＶ使用タイミング情報については、暗号化対象データを分割して構成された各データ群の最初の位置（境界位置）が認識できる情報であればよく、たとえば、イニシャルベクタＩＶの使用周期を示す周期情報、各データ群を構成するデータブロックの数を示すデータブロック数情報や各データ群のデータサイズを示すデータサイズ情報、データ群を１ページ分の画像データとした場合にはその１ページ分のデータサイズ情報、復号化対象データのデータサイズとその分割数、各データ群の最初の位置を復号化対象データの先頭位置からのオフセット量で示すオフセット情報などを使用できる。
【００８５】
次に、暗号処理装置１０による暗号化／復号化処理の動作を説明する。
【００８６】
図５は、暗号処理装置１０による暗号化処理の動作を示す動作説明図であり、図６は、暗号化処理における暗号化対象の平文ブロックの入力タイミングと暗号化された結果の暗号文ブロックの出力タイミングを示すタイミングチャートである。
【００８７】
暗号処理装置１０による暗号化処理では、並べ替え回路１６は、ＣＰＵ１１から送られた先頭アドレス情報、データサイズ情報、データ分割数情報に基づいて演算を行い、ＲＡＭ１３に格納されている暗号化対象データをパイプライン暗号化演算部２０の段数と同数に等分して（１１等分）、各々サイズが等しい１１個のデータ群を構成する。さらに、各データ群をＡＥＳ規格に基づき１２８ビットのデータブロックに分割する。
【００８８】
図５の例では、説明を分かりやすくするために、ＲＡＭ１３の所定の領域(平文メモリ領域)に格納されている暗号化対象データである平文が１１個のデータ群（データ群１〜１１）に分割され、各データ群は１００個の平文ブロック（データ群１：平文ブロック１〜１００、データ群２：平文ブロック１０１〜２００、データ群３：平文ブロック２０１〜３００、・・・、データ群１１：平文ブロック１００１〜１１００）で構成されているものとして説明する。
【００８９】
このＲＡＭ１３に格納されている暗号化対象データに対し、並べ替え回路１６は、１〜１１００まで連続配列されている平文ブロックを飛び飛びの順番に並べ替えて暗号化回路１４に入力する。
【００９０】
たとえば、図５および図６に示すように、データ群１の１番目の平文ブロック１、データ群２の１番目の平文ブロック１０１、データ群３の１番目の平文ブロック２０１、・・・、データ群１１の１番目の平文ブロック１００１、データ群１の２番目の平文ブロック２、データ群２の２番目の平文ブロック１０２、データ群３の２番目の平文ブロック２０２、・・・、データ群９の１００番目の平文ブロック９９０、データ群１０の１００番目の平文ブロック１０００、データ群１１の１００番目の平文ブロック１１００というように、平文ブロック１から１００番飛ばしの順番に並べ替えて、暗号化回路１４に入力する。また、並べ替えた平文ブロックは１１個で１つの組とし、その１組を１サイクルで処理する。
【００９１】
暗号化回路１４の入力レジスタ２４は、上記の順番に並べ替えられて入力される平文ブロックを保持し、保持した平文ブロックをその順番でＸＯＲ演算部２１に順次出力する。
【００９２】
一方、セレクタ制御回路２３は、ＣＰＵ１１から送られたパイプライン暗号化演算部２０の段数情報に基づいて演算を行い、イニシャルベクタＩＶの使用タイミングを決定する。
【００９３】
たとえば、図５の暗号化対象データ（平文）に対しては、１サイクル目のみイニシャルベクタＩＶをＸＯＲ演算部２１に入力し、２サイクル目以降はパイプライン暗号化演算部２０から出力される暗号文ブロックを暗号ベクタとしてＸＯＲ演算部２１に入力するようセレクタ２２の切り替え制御を行う。これにより、セレクタ２２は、１サイクル目にはＩＶレジスタ２７の保持しているイニシャルベクタＩＶをＸＯＲ演算部２１に入力する（図６参照）。
【００９４】
ＸＯＲ演算部２１は、１サイクル目では入力レジスタ２４から順次入力される１組目の平文ブロック１、平文ブロック１０１、平文ブロック２０１、・・・、平文ブロック１００１と、ＩＶレジスタ２７からセレクタ２２を介して入力されるイニシャルベクタＩＶとの排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部２０に順次出力する。
【００９５】
パイプライン暗号化演算部２０は、ＸＯＲ演算部２１から順次入力される１組目の各平文ブロックの演算結果に対し、ＫＥＹレジスタ２６に保持されている暗号鍵と、１１段の暗号化演算部で段数分のＡＥＳ規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ２５とセレクタ２２へ順次出力する。
【００９６】
出力レジスタ２５には、図５および図６に示すように、１組目の暗号文ブロック１'、暗号文ブロック１０１'、暗号文ブロック２０１'、・・・、暗号文ブロック１００１'が順次保持され、並べ替え回路１６は、出力レジスタ２５に保持された暗号文ブロックを元の順番に並べ戻してＲＡＭ１３の他の領域(暗号文メモリ領域)に格納する。詳細には、暗号文ブロック１'をデータ群１'の１番目に格納し、暗号文ブロック１０１'をデータ群２'の１番目に格納し、暗号文ブロック２０１'をデータ群３'の１番目に格納し、・・・、暗号文ブロック１００１'をデータ群１１'の１番目に格納する。
【００９７】
また、パイプライン暗号化演算部２０の段数が１１段であることから、１サイクル目の最初（１クロック目）に入力された平文ブロック１を暗号化した暗号文ブロック１'は、１サイクル目の最後（１１クロック目）に平文ブロック１１がパイプライン暗号化演算部２０に入力された後、２サイクル目の最初となる平文ブロック２がＸＯＲ演算部２１に入力されるタイミング（１２クロック目）でパイプライン暗号化演算部２０から出力される。１サイクル目の２番目以降に入力された平文ブロック１０１、２０１、・・・、１００１を暗号化した暗号文ブロック１０１'、２０１'、・・・、１００１'も同様に、２サイクル目の２番目以降の平文ブロック１０２、２０２、・・・、１００２がＸＯＲ演算部２１に入力されるタイミング（１３、１４、・・・、２２クロック目）でパイプライン暗号化演算部２０から出力される。
【００９８】
セレクタ２２は、２サイクル目にはパイプライン暗号化演算部２０から出力される暗号文ブロック１０１'、２０１'、・・・、１００１'を暗号ベクタとしてＸＯＲ演算部２１に入力する（図６参照）。
【００９９】
ＸＯＲ演算部２１は、２サイクル目では入力レジスタ２４から順次入力される２組目の平文ブロック２、１０２、２０２、・・・、１００２と、パイプライン暗号化演算部２０からセレクタ２２を介して入力される暗号ベクタとしての暗号文ブロック１０１'、２０１'、・・・、１００１'との排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部２０に順次出力する。
【０１００】
このように、平文ブロックＮと平文ブロックＮ＋１とはパイプライン暗号化演算部２０の段数だけ離れるタイミング規則でＸＯＲ演算部２１に入力され、平文ブロックＮ＋１は、平文ブロックＮを暗号化した暗号文ブロックＮ'がパイプライン暗号化演算部２０から出力されたタイミングでＸＯＲ演算部２１に入力されて、暗号文ブロックＮ'とＸＯＲ演算部２１への入力タイミングを合わせられるようになる。これにより、暗号文ブロックＮ'を暗号ベクタとして入力側にフィードバックさせて行う平文ブロックＮ＋１の暗号化が実現される。
【０１０１】
パイプライン暗号化演算部２０は、１サイクル目と同様に、ＸＯＲ演算部２１から順次入力される２組目の各平文ブロックの演算結果に対し、ＫＥＹレジスタ２６に保持されている暗号鍵と、１１段の暗号化演算部で段数分のＡＥＳ規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ２５とセレクタ２２へ順次出力する。
【０１０２】
出力レジスタ２５には、図５および図６に示すように、２組目の暗号文ブロック２'、１０２'、２０２'、・・・、１００２'が順次保持され、並べ替え回路１６は、出力レジスタ２５に保持された暗号文ブロックを元の順番に並べ戻してＲＡＭ１３の他の領域に格納する。詳細には、暗号文ブロック２'をデータ群１'の２番目に格納し、暗号文ブロック１０２'をデータ群２'の２番目に格納し、暗号文ブロック２０２'をデータ群３'の２番目に格納し、・・・、暗号文ブロック１００２'をデータ群１１'の２番目に格納する。
【０１０３】
この２サイクル目と同様に３サイクル目以降も前の組の各暗号文ブロックを暗号ベクタとしてＸＯＲ演算部２１に入力して次の組の各平文データの暗号化を行い、パイプライン暗号化演算部２０から順次出力されて出力レジスタ２５に保持された各暗号文ブロックを元の順番に並べ戻してＲＡＭ１３に格納し、１００サイクルで計１１００個の平文ブロックの暗号化が完了する。これにより、ＲＡＭ１３には暗号文ブロック１'〜１１００'が順番通りに連続配列され一連の暗号文として格納される。また、暗号文のヘッダーには、並べ替え回路１６によって、パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報、および、暗号化プロセスでのイニシャルベクタＩＶの使用タイミングを示すＩＶ使用タイミング情報（各データ群の最初の位置を示す位置情報）などが付加される。この暗号文の復号化では、ヘッダーに付加された情報に基づいて復号化モード（パイプライン／ノンパイプライン）の判別やイニシャルベクタＩＶの使用タイミングが決定される。
【０１０４】
図７は、復号化処理における復号化対象の暗号文ブロックの入力タイミングと復号化された結果の平文ブロックの出力タイミングを示すタイミングチャートである。
【０１０５】
暗号処理装置１０による復号化処理では、並べ替え回路１６は、ＲＡＭ１３に格納されている復号化対象データの暗号文ブロックを先頭から並び順通りに復号化回路１５に入力する。たとえば、図７に示すように、１番目の暗号文ブロック１'、２番目の暗号文ブロック２'、３番目の暗号文ブロック３'・・・というように、先頭から並び順通りに復号化回路１５に入力する。
【０１０６】
復号化回路１５の入力レジスタ３４は、上記の順番で入力される暗号文ブロックを保持し、保持した暗号文ブロックをその順番でパイプライン復号化演算部３０と保持レジスタ３８へ順次出力する。
【０１０７】
パイプライン復号化演算部３０は、入力レジスタ３４から順次入力される各暗号文ブロックに対し、ＫＥＹレジスタ３６に保持されている暗号鍵と、１１段の復号化演算部で段数分のＡＥＳ規格に基づいた復号演算を並列に実行し、その演算結果のデータブロックをＸＯＲ演算部３１に順次出力する。
【０１０８】
また、パイプライン復号化演算部３０の段数が１１段であることから、最初に入力された暗号文ブロック１'（Ｎ'）を復号演算した演算結果（平文ブロック１ ＸＯＲ イニシャルベクタＩＶ）は、暗号文ブロック１１'がパイプライン復号化演算部３０に入力された後、その次の暗号文ブロック１２'（Ｎ'＋１１）がパイプライン復号化演算部３０に入力されるタイミングでパイプライン復号化演算部３０から出力される。この出力後は、２番目以降に入力された暗号文ブロック２'を復号演算した演算結果（平文ブロック２ ＸＯＲ 暗文ブロック１'）、暗号文ブロック３'を復号演算した演算結果（平文ブロック３ ＸＯＲ 暗文ブロック２'）・・・、が連続してパイプライン暗号化演算部２０から出力される。
【０１０９】
保持レジスタ３８は、入力レジスタ３４から入力された暗号文ブロックを内部に保持して入力順に出力すると共に、パイプライン復号化演算部３０から暗号文ブロック（Ｎ'＋１）の演算結果が出力されるタイミングで、その暗号文ブロックよりも１つ前の暗号文ブロック（Ｎ'）を出力する。
【０１１０】
一方、セレクタ制御回路３３は、ＣＰＵ１１から送られた、復号化対象データの暗号化プロセスでのイニシャルベクタＩＶの使用タイミングを示すＩＶ使用タイミング情報に基づいて、イニシャルベクタＩＶの使用タイミングを決定する。
【０１１１】
たとえば、図５の例で暗号化された暗号データの場合は、１番目の暗号文ブロック１'、１０１番目の暗号文ブロック１０１'、２０１番目の暗号文ブロック２０１'、・・・、１００１番目の暗号文ブロック１００１'というように、暗号文ブロック１'から１００番飛ばしでイニシャルベクタＩＶをＸＯＲ演算部３１に入力し、その他の暗号文ブロックに対しては保持レジスタ３８から出力される暗号文ブロックをＸＯＲ演算部３１に入力するようセレクタ３２の切り替え制御を行う。これにより、セレクタ３２は、暗号文ブロック１'、１０１'、２０１'、・・・、１００１'に対してのみ、ＩＶレジスタ３７の保持しているイニシャルベクタＩＶをＸＯＲ演算部３１に入力し、その他の暗号文ブロックに対しては保持レジスタ３８から出力される暗号文ブロックをＸＯＲ演算部３１に入力する。
【０１１２】
ＸＯＲ演算部３１は、パイプライン復号化演算部３０から順次入力される暗号文ブロックの演算結果のうち、暗号文ブロック１'、１０１'、２０１'、・・・、１００１'の演算結果に対しては、ＩＶレジスタ３７からセレクタ３２を介して入力されるイニシャルベクタＩＶとの排他的論理和演算を行い、その他の暗号文ブロック（Ｎ'＋１）の演算結果に対しては、保持レジスタ３８から出力される暗号文ブロック（Ｎ'）との排他的論理和演算を行い、各暗号文ブロックの演算結果である復号化した平文ブロックを出力レジスタ３５に順次出力する。
【０１１３】
出力レジスタ３５には、復号化された平文ブロック１、２、３・・・が順次保持され、並べ替え回路１６は、出力レジスタ３５に保持された平文ブロックを出力順に並べてＲＡＭ１３に格納する。これにより、ＲＡＭ１３には平文ブロック１〜１１００が順番通りに連続配列されて格納される。
【０１１４】
このように、本実施形態の暗号処理装置１０では、暗号化処理において、パイプライン暗号化演算部２０から出力される暗号文ブロックを入力に戻して次の平文ブロックの暗号化に使用していることにより、強度の高い暗号化プロセスとなり、暗号文ブロックを入力に戻して次の平文ブロックの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。
【０１１５】
また、平文ブロックの暗号演算を行う暗号化回路１４の暗号化演算部をパイプライン化したことで、そのパイプライン暗号化演算部２０は、ＸＯＲ演算部２１から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、図５で説明したように複数セットのデータ群で暗号化を行えば、単一のノンパイプラインの暗号化演算部を使用して１つの平文ブロックの暗号演算を所定回数繰り返すような暗号化プロセスに比べ、暗号化の処理速度を向上することができる。
【０１１６】
また、特に本実施形態では、一連の暗号化対象データをパイプライン暗号化演算部２０の段数と同数に等分して１１個のデータ群を構成し、各データ群をＡＥＳ規格に基づくブロックデータずつに分割して各データ群の各ブロックデータの暗号演算をパイプライン暗号化演算部２０により並列に実行して暗号化していることで（パイプライン処理）、たとえば、一連の暗号化対象データを段数未満に分割した場合のように、パイプライン暗号化演算部２０で暗号演算の行われない段が発生して処理効率が低下したり、一連のデータをパイプライン暗号化演算部２０の段数より多く分割した場合のように、イニシャルベクタＩＶの使用回数が増えて暗号化強度が低下したりするようなことを抑制できる。
【０１１７】
一連の暗号化対象データを分割して構成するデータ群の数をパイプライン暗号化演算部２０の段数以上にすれば、隙間を空けることなく平文ブロックをパイプライン暗号化演算部２０に連続的に入力してパイプライン処理を繰り返し行うことができるため、処理効率は良くなる。一方、データ群の数が少ないほど、イニシャルベクタＩＶの使用回数を少なくすることができて暗号化強度の低下は抑制できる。したがって、イニシャルベクタＩＶの使用回数を最小にして高い暗号化強度を保ちつつ、効率の良いパイプライン処理を行うためには、本実施形態のように、データ群の数をパイプライン暗号化演算部２０の段数と等しくすることが最も好ましく、この条件によって最適化処理が実現される。
【０１１８】
さらに、各データ群の１番目のブロックデータを連続的に暗号化する１サイクル目だけにイニシャルベクタＩＶを使用し、各データ群の２番目以降のブロックデータを連続的に暗号化する２サイクル目以降には暗号データを使用して暗号化を行えばよいため、イニシャルベクタＩＶと暗号データの切り替えの管理も簡単になる。
【０１１９】
また復号化回路１５では、暗号文ブロックの復号演算を行う復号化演算部をパイプライン化したことで、復号化処理ではそのパイプライン復号化演算部３０に暗号文ブロックを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することができる。これにより、単一のノンパイプラインの復号化演算部を使用して１つの暗号文ブロックの復号演算を所定回数繰り返すような復号化処理に比べ、復号化の処理速度を向上することができる。
【０１２０】
また復号化プロセスでは、イニシャルベクタＩＶの使用タイミングを暗号化プロセスに合わせることで、パイプラインおよびノンパイプラインのいずれの暗号化演算部により暗号化された暗号文ブロックであっても復号化が可能となり、汎用のＣＢＣモードにおける暗号化プロセスと互換性を保つことができる。
【０１２１】
なお、複合機では、スキャンした画像データをプリントする際はパイプライン回路で暗号化し、パイプライン回路で復号化するのが適しており、スキャンした画像データをネットワーク送信などする場合は、パイプライン回路で暗号化し、ノンパイプライン回路で復号化するのが適している。また、ＦＡＸ受信したデータをプリントなどする場合は、ノンパイプライン回路で暗号化し、パイプライン回路で復号化するのが適している。
【０１２２】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【０１２３】
たとえば、実施の形態における暗号化処理では、平文ブロックＮとこれに後続する平文ブロックＮ＋１とをパイプライン暗号化演算部２０の段数分だけ離れるタイミング規則でＸＯＲ演算部２１に入力するようにしているが、パイプライン暗号化演算部２０の段数よりも離れるタイミング規則でＸＯＲ演算部２１に入力するようにしてもよい。その場合は、平文ブロックＮを暗号化した暗号文ブロックＮ'のＸＯＲ演算部２１への入力タイミングを遅らせる回路などを設けることにより、暗号文ブロックＮ'と平文ブロックＮ＋１とのＸＯＲ演算部２１への入力タイミングが合わせられる。
【０１２４】
また、暗号化の対象となるデータ全体をパイプライン暗号化演算部２０の段数と同数に等分して、暗号演算のパイプライン処理を行っているが、パイプライン暗号化演算部２０の段数よりも大きい数に分割して暗号演算のパイプライン処理を行うことも可能である。パイプライン回路を使用した暗号化処理で最も処理効率が良いのは、暗号化対象データを分割して構成するデータ群の数＝パイプライン暗号化演算部２０の段数であるが、データ群の数がパイプライン暗号化演算部２０の段数と異なっていても、たとえば２サイクル目以降はイニシャルベクタＩＶおよび暗号文ブロックの入力タイミングをずらすことでパイプライン処理が可能である。
【０１２５】
また、実施の形態のようなデジタル複合機などの画像形成装置においては、暗号化対象のデータ群を１ページ分の画像のデータとし、その１ページ分の画像データを所定ブロック長の平文ブロックずつに分割して各ページの各平文ブロックの暗号演算をパイプライン暗号化演算部２０により並列に実行して暗号化するようにしてもよい。これにより、暗号化ではページ毎（データ群毎）に、１番目の平文ブロックの暗号演算にはイニシャルベクタＩＶを使用し、２番目以降の平文ブロックの暗号演算には前の暗号文ブロックを使用できるようになり、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの１番目の暗号文ブロックの復号化にはイニシャルベクタＩＶを使用し、２番目以降の暗号文ブロックの復号化には前の暗号文ブロックを使用することで復号化が可能となり、ＩＶ使用タイミング情報に基づく切り替え制御を行わない装置でも復号化できるようになる。
【図面の簡単な説明】
【０１２６】
【図１】本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係る暗号化回路を示す回路構成図である。
【図３】本発明の実施の形態に係る復号化回路を示す回路構成図である。
【図４】本発明の実施の形態に係るパイプライン回路を示すブロック図である。
【図５】本発明の実施の形態に係る暗号処理装置による暗号化処理の動作を示す説明図である。
【図６】本発明の実施の形態に係る暗号処理装置による暗号化処理の動作タイミングを示すタイミングチャートである。
【図７】本発明の実施の形態に係る暗号処理装置による復号化処理の動作タイミングを示すタイミングチャートである。
【図８】従来の暗号化回路を示す回路構成図である。
【図９】従来の復号化回路を示す回路構成図である。
【図１０】（Ａ）はＣＢＣモードの暗号化プロセスを示すプロセス図、（Ｂ）はＣＢＣモードの復号化プロセスを示すプロセス図である。
【図１１】従来の暗号化回路による暗号化処理の動作タイミングを示すタイミングチャートである。
【図１２】従来の復号化回路による復号化処理の動作タイミングを示すタイミングチャートである。
【図１３】従来のノンパイプライン回路を示す構成図である。
【図１４】従来のノンパイプライン回路によるデータ出力タイミングを示すタイミングチャートである。
【符号の説明】
【０１２７】
１０…暗号処理装置
１１…ＣＰＵ
１２…ＲＯＭ
１３…ＲＡＭ
１４…暗号化回路
１５…復号化回路
１６…並べ替え回路
２０…パイプライン暗号化演算部
２１…ＸＯＲ演算部
２２…セレクタ
２３…セレクタ制御回路
２４…入力レジスタ
２５…出力レジスタ
２６…ＫＥＹレジスタ
２７…ＩＶレジスタ
３０…パイプライン復号化演算部
３１…ＸＯＲ演算部
３２…セレクタ
３３…セレクタ制御回路
３４…入力レジスタ
３５…出力レジスタ
３６…ＫＥＹレジスタ
３７…ＩＶレジスタ
３８…保持レジスタ
４０…パイプライン回路
４１…ノンパイプライン回路
【図１】
2008203306.tif 000003
【図２】
2008203306.tif 000004
【図３】
2008203306.tif 000005
【図４】
2008203306.tif 000006
【図５】
2008203306.tif 000007
【図６】
2008203306.tif 000008
【図７】
2008203306.tif 000009
【図８】
2008203306.tif 000010
【図９】
2008203306.tif 000011
【図１０】
2008203306.tif 000012
【図１１】
2008203306.tif 000013
【図１２】
2008203306.tif 000014
【図１３】
2008203306.tif 000015
【図１４】
2008203306.tif 000016