説明

暗号処理装置

【課題】暗号化強度の低下を抑制しつつ、暗号化/復号化の処理速度を向上することができる暗号処理装置を提供する。
【解決手段】暗号化対象データである平文をパイプライン暗号化演算部20の段数と同数に等分してデータ群を構成すると共に、各データ群をAES規格に基づき128ビットの平文ブロックに分割して、平文ブロックNと平文ブロックN+1とをパイプライン暗号化演算部20の段数分以上離れるタイミング規則でXOR演算部21に連続的に入力する。XOR演算部21では順次入力される平文ブロックN+1とパイプライン暗号化演算部20から出力された暗号文ブロックN'とを演算し、パイプライン暗号化演算部20ではその演算結果に対する暗号演算をパイプライン構造で接続された複数段の暗号化演算部により並列に実行してパイプライン処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平文の暗号化もしくは暗号文の復号化を行う暗号処理装置に関する。
【背景技術】
【0002】
一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、DES(データ標準暗号化方式、Data Encryption Standard)からAES(次世代標準暗号化方式、Advanced Encryption Standard)に移行しており、暗号強度が強くなってきている。AES暗号方式は、データを128ビットのブロック長単位で暗号化/復号化するブロック暗号であり、複数種類のモードがあって目的や使用方法により選択される。
【0003】
たとえば、図8はCBC(Cipher Block Chaining)モードの暗号化回路200の構成例を示しており、図9はCBCモードの復号化回路210の構成例を示しており、図10はCBCモードにおける暗号化/復号化プロセスを示している。
【0004】
図8に示すように、暗号化回路200は、入力値にAES規格に基づいた暗号演算を施して演算結果(暗号ベクタ)を出力するAES暗号演算部201と、AES暗号演算部201に入力する暗号鍵を保持するためのKEYレジスタ202と、暗号化の対象となるデータブロックを保持する入力レジスタ203と、初回の暗号演算に使用する初期の暗号ベクタ(イニシャルベクタ)を保持するためのIVレジスタ204と、AES暗号演算部201の演算結果として出力される暗号ベクタとIVレジスタ204に保持されているイニシャルベクタとのいずれかを選択するセレクタ205と、入力レジスタ203の出力とセレクタ205の出力との排他的論理和を演算してAES暗号演算部201の入力に与えるXOR演算部206と、AES暗号演算部201の出力(暗号化の結果として生成されたデータブロック)を保持する出力レジスタ207とを備えている。
【0005】
図9に示すように、復号化回路210は、入力値にAES規格に基づいた復号演算を施して演算結果(復号ベクタ)を出力するAES復号演算部211と、AES復号演算部211に入力する暗号鍵を保持するためのKEYレジスタ212と、復号化の対象となるデータブロックを保持する入力レジスタ213と、初回の復号演算に使用する初期の暗号ベクタ(イニシャルベクタ)を保持するためのIVレジスタ214と、入力レジスタ213に保持されているデータブロックとIVレジスタ214に保持されているイニシャルベクタとのいずれかを選択するセレクタ215と、AES復号演算部211の出力とセレクタ215の出力との排他的論理和を演算するXOR演算部216と、XOR演算部216の出力(復号化の結果として生成されたデータブロック)を保持する出力レジスタ217とを備えている。
【0006】
図10(A)に示すように、暗号化プロセスの初回T1には、暗号化回路200における入力レジスタ203の保持している暗号化の対象となるデータブロック(平文1)とIVレジスタ204の保持しているイニシャルベクタIVとがXOR演算部206に入力され、XOR演算部206はその暗号化対象のデータブロックとイニシャルベクタIVとの排他的論理和演算を行い、演算結果をAES暗号演算部201に出力する。AES暗号演算部201は、XOR演算部206から入力された演算結果とKEYレジスタ202に保持されている暗号鍵(KEY)とのAES規格に基づいた暗号演算を行い、その演算結果が暗号化の結果のデータブロック(暗号文1)として出力レジスタ207に保持される。AES暗号演算部201から出力された演算結果は、暗号ベクタとして2回目T2にXOR演算部206にも入力される。
【0007】
2回目以降(T2、T3、・・・Tn)には、XOR演算部206は、入力レジスタ203に保持されている暗号化対象のデータブロック(平文2、平文3、・・・平文n)とAES暗号演算部201から入力された前回の暗号ベクタとの排他的論理和演算を行い、演算結果をAES暗号演算部201に出力する。AES暗号演算部201は、XOR演算部206から入力された演算結果とKEYレジスタ202に保持されている暗号鍵とのAES規格に基づいた演算を行い、その演算結果が暗号化の結果のデータブロック(暗号文2、暗号文3、・・・暗号文n)として出力レジスタ207に保持される。この2回目以降も、AES暗号演算部201から出力された演算結果は、次回の暗号ベクタとしてXOR演算部206に入力される。
【0008】
図10(B)に示すように、復号化プロセスの初回T1には、復号化回路210における入力レジスタ213の保持している復号化の対象となるデータブロック(暗号文1)とKEYレジスタ212の保持している暗号鍵(KEY)とがAES復号演算部211に入力され、AES復号演算部211はその復号化対象のデータブロックと暗号鍵とのAES規格に基づいた復号演算を行い、演算結果をXOR演算部216に出力する。初回T1にXOR演算部216は、AES復号演算部211から入力された演算結果とIVレジスタ214に保持されているイニシャルベクタIVとの排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック(平文1)として出力レジスタ217に保持される。
【0009】
2回目以降(T2、T3、・・・Tn)には、入力レジスタ213の保持している復号化の対象となるデータブロック(暗号文2、暗号文3、・・・暗号文n)とKEYレジスタ212の保持している暗号鍵とがAES復号演算部211に入力され、AES復号演算部211はその復号化対象のデータブロックと暗号鍵とのAES規格に基づいた復号演算を行い、演算結果をXOR演算部216に出力する。XOR演算部216は、AES復号演算部211から入力された演算結果と、前回、入力レジスタ213に保持されているデータブロック(暗号文1、暗号文2、・・・暗号文n−1)との排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック(平文2、平文3、・・・平文n)として出力レジスタ217に保持される。
【0010】
図11は、CBCモードの暗号化プロセスにおける暗号化の対象となるデータブロック(平文)の入力タイミングと暗号化の結果のデータブロック(暗号文)の出力タイミングに関するタイミングチャートを示している。図10(A)でも説明したように、初回は平文1とイニシャルベクタIVとで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文1'が生成される。2回目は平文2と暗号文1'とで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文2'が生成される。3回目以降も同様に、平文3と暗号文2'とで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文3'が生成され、最終回には平文nと暗号文(n−1)'とで排他的論理和演算(XOR)を行い、その結果をAES暗号演算部201に入力し暗号文n'が生成される。
【0011】
図12は、CBCモードの復号化プロセスにおける復号化の対象となるデータブロック(暗号文)の入力タイミングと復号化の結果のデータブロック(平文)の出力タイミングに関するタイミングチャートを示している。図10(B)でも説明したように、初回は暗号文1'をAES復号演算部211に入力して復号演算を行い、その演算結果とイニシャルベクタIVとで排他的論理和演算(XOR)を行い平文1が生成される。2回目は暗号文2'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文1'とで排他的論理和演算(XOR)を行い平文2が生成される。3回目以降も同様に、暗号文3'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文2'とで排他的論理和演算(XOR)を行い平文3が生成され、最終回には暗号文n'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文(n−1)'とで排他的論理和演算(XOR)を行い平文nが生成される。
【0012】
図13は、暗号化回路200のAES暗号演算部201および復号化回路210のAES復号演算部211を構成するノンパイプライン回路220のブロック図を示しており、図14は、ノンパイプライン回路220から出力される処理データの出力タイミングチャートを示している。
【0013】
図13に示すように、AES暗号方式のノンパイプライン回路220は、入力されたデータブロック(indata)に対し、置換(ステップS301)、並べ替え(ステップS302)、行列演算(ステップS303)、XOR演算(ステップS304)の4つの処理を1ラウンドで行い、この1ラウンドを1クロック(CLK)で処理して11回繰り返す。最後に1クロックを入れて計12クロックでブロック長128ビットを処理し、処理済みのデータブロック(outdata)を出力する。
【0014】
したがって、ノンパイプライン回路220による処理済みのデータブロックの出力タイミングは、図14に示すように、最初のデータブロック(data1)が出力されるまでに12クロックかかり、その後は11クロック毎にデータブロック(data2、data3・・・)が出力される(図11および図12参照)。
【0015】
このようなノンパイプライン回路220による暗号化/復号化の処理では、各回で固定長(128ビット)のデータブロックの暗号化/復号化を行い、長いビット長の平文や暗号文を処理するためには多数の回数を時系列に処理するので、処理時間が長くなってしまう。
【0016】
これに対し、たとえば、平文ブロックの位置情報(ブロック番号)とイニシャルベクタ(IV)とを演算してスクランブルデータを求め、このスクランブルデータと平文ブロックとの排他的論理和を演算した演算結果を複数段の暗号化回路でパイプライン処理により暗号化して暗号文ブロックを生成することにより、またその暗号文ブロックをパイプライン処理により復号化することにより、大量のデータを暗号化/復号化する場合の処理速度を高めるようにした技術がある(たとえば、特許文献1参照。)。
【0017】
【特許文献1】特開平5−249891号公報
【発明の開示】
【発明が解決しようとする課題】
【0018】
上記のパイプライン処理を用いた暗号化/復号化の技術は、暗号化回路のパイプライン化を容易にするために、暗号文を入力側にフィードバックせずに平文をスクランブルするようにしており、CBCモードには対応していない。そのため、暗号文を入力に戻して次の平文の暗号化に使用することにより暗号化強度を高めているCBCモードなどに比べると、暗号化強度が低下してしまう。
【0019】
本発明は、上記の問題を解決しようとするものであり、暗号化強度の低下を抑制しつつ、暗号化/復号化の処理速度を向上することができる暗号処理装置を提供することを目的としている。
【課題を解決するための手段】
【0020】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【0021】
[1]複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
【0022】
上記発明では、制御部は暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力する。演算部は、パイプライン暗号化処理部から出力された暗号データと制御部によって入力される単位データとを演算し、その演算結果をパイプライン暗号化処理部に入力する。パイプライン暗号化処理部は、演算部から入力される演算結果に対し、パイプライン構造で接続された複数の暗号化処理部によりその段数分の暗号演算を行って暗号データを生成する。
【0023】
パイプライン暗号化処理部は、パイプライン構造を備えていることで、演算部から次々と演算結果のデータを入力してその段数分だけ暗号演算を並列に実行できる。ただし、パイプライン暗号化処理部では段数分の暗号演算が行われるため、一の単位データの暗号データは一の単位データをパイプライン暗号化処理部に入力した時点からパイプライン段数分だけ遅れてパイプライン暗号化処理部から出力される。このため、一の単位データに後続する単位データを一の単位データに連続させて演算部に入力すると、たとえば、単位データNの暗号データN'と単位データN+1とを演算部で演算してパイプライン暗号化処理部に入力することはできない。
【0024】
そこで、一の単位データ(N)とこれに後続する単位データ(N+1)とをパイプライン暗号化処理部の段数分以上離れるタイミング規則で演算部に入力すれば、単位データN+1は、単位データNの暗号データN'がパイプライン暗号化処理部から出力された時点以降に演算部に入力されるようになり、暗号データN'と演算部への入力タイミングを合わせられるようになる。この入力タイミングを合わせることで、一の単位データの暗号データ(暗号ベクタ)を入力側にフィードバックさせて後続する単位データの暗号化が可能となる。
【0025】
このように、パイプライン暗号化処理部から出力される暗号データを入力に戻して次の単位データの暗号化に使用することにより、強度の高い暗号化プロセス(暗号化アルゴリズム)となり、暗号データを入力に戻して次の単位データの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。
【0026】
またパイプライン暗号化処理部は、演算部から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、複数のデータ群について上記のタイミング規則で演算部に単位データを入力する動作を並行に行えば、複数のデータ群に対する暗号化を同時並行に行うことができるため、単一のノンパイプラインの暗号化処理部を使用して1つの単位データの暗号演算を所定回数繰り返すような暗号化処理を行う場合に比べ、暗号化の処理速度を向上することができる。
【0027】
[2]初期ベクタを保持する保持レジスタと、
前記データ群に対する1回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする[1]に記載の暗号処理装置。
【0028】
上記発明では、切替部は、1回目の暗号化が行われるときは暗号データに代えて保持レジスタに保持されている初期ベクタを演算部に入力し、2回目以降の暗号化が行われるときはパイプライン暗号化処理部から出力された暗号データを演算部に入力する。これにより、データ群の1番目の単位データに対する暗号化は初期ベクタを使用して実行され、そのデータ群の2番目以降の単位データの暗号化は暗号データを使用して実行される。
【0029】
[3]前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする[1]または[2]に記載の暗号処理装置。
【0030】
上記発明では、演算部において、パイプライン暗号化処理部を経て演算部に戻される単位データNの暗号データN'と、暗号データN'が演算部に戻されるタイミングで入力される単位データN+1とが演算される。これにより、一の単位データの暗号データを使用した、一の単位データに後続する単位データの暗号化が可能となる。
【0031】
[4]前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする[1]乃至[3]のいずれか1項に記載の暗号処理装置。
【0032】
上記発明では、パイプライン暗号化処理部を経て演算部に戻される単位データNの暗号データN'と、単位データN+1との演算部への入力タイミングを合わせるために、単位データNと単位データN+1とをパイプライン段数分以上離れるタイミング規則(非連続)で演算部に入力することで、パイプライン暗号化処理部からは暗号データN'と暗号データ(N+1)'とがパイプライン段数分以上離れるタイミング規則(非連続)で出力される。この離間して出力される暗号データを連続配列させることにより、データ群単位では暗号データが汎用のCBCモードの並びになる。
【0033】
たとえば、データの暗号化送信を行う場合に、受信側の暗号処理装置がCBCモードの汎用(ノンパイプライン)の復号化処理部しか備えていない場合でも、パイプライン暗号化処理部で生成した暗号データに加えて暗号化プロセスでの初期ベクタの使用タイミングを示すタイミング情報(各データ群の最初の位置を示す情報)などを送信することにより、受信側の暗号処理装置はノンパイプラインの復号化処理部によって暗号データを元のデータに復号化することができる。したがって、汎用のCBCモードにおける復号化プロセスと互換性を保つことができる。
【0034】
[5]前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする[1]乃至[4]のいずれか1項に記載の暗号処理装置。
【0035】
上記発明では、制御部は、たとえば、データ群Nの単位データNを演算部に入力してから単位データN+1を上記のタイミング規則で演算部に入力するまでの間に、データ群Mの単位データMを演算部に入力する。この入力後に、データ群Nの単位データN+1を単位データNに対して上記のタイミング規則で演算部に入力し、さらに、データ群Mの単位データM+1を単位データMに対して上記のタイミング規則で演算部に入力する。
【0036】
演算部からは、単位データNの演算結果が出力されてから単位データN+1の演算結果が上記のタイミング規則で出力されるまでの間に、単位データMの演算結果が出力される。この出力後に、単位データN+1の演算結果が単位データNの演算結果に対して上記のタイミング規則で出力され、さらに、単位データM+1の演算結果が単位データMの演算結果に対して上記のタイミング規則で出力される。
【0037】
これにより、パイプライン暗号化処理部は、単位データNの演算結果が入力されてから単位データN+1の演算結果が入力されるまでの間に、すなわち、単位データNの演算結果に対する暗号演算を行っている間に、単位データMの演算結果が入力され、それらの暗号演算を並列実行する。また、単位データNの演算結果に対する暗号演算を終えてその暗号データN'を出力し、単位データMの演算結果に対する暗号演算を行っている間に、単位データN+1の演算結果が入力され、それらの暗号演算を並列実行する。さらに、単位データMの演算結果に対する暗号演算を終えてその暗号データM'を出力し、単位データN+1の演算結果に対する暗号演算を行っている間に、単位データM+1の演算結果が入力され、それらの暗号演算を並列実行する。
【0038】
このように、一のデータ群から分割された単位データを上記のタイミング規則で演算部に順次入力する動作を、複数のデータ群に対して、単位データを演算部に入力するタイミングを、データ群毎に異ならせて並行に行うことで、パイプライン暗号化処理部では各単位データが同時並行に暗号化処理され、暗号化対象の複数のデータ群に対する暗号化の処理速度が向上する。
【0039】
[6]前記データ群は、1ページ分の画像のデータである
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
【0040】
上記発明では、暗号化対象のデータ群を1ページ分の画像のデータとし、その1ページ分の画像のデータを単位データずつに分割して各ページの各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する(パイプライン処理)。これにより、暗号化ではページ毎(データ群毎)に、1番目の単位データの暗号演算には初期ベクタを使用し、2番目以降の単位データの暗号演算には前の暗号データを使用できる。また、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの1番目の暗号データの復号化には初期ベクタを使用し、2番目以降の暗号データの復号化には前の暗号データを使用することで復号化が可能となり、ノンパイプラインの復号化処理部でも復号化することができる。
【0041】
[7]前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
【0042】
上記発明では、一連のデータを複数に分割して暗号化対象のデータ群を構成し、複数のデータ群の暗号化をパイプライン処理によって並列処理すれば、一連のデータの暗号化に要する時間が短縮される。
【0043】
たとえば、1ページ分の画像のデータを複数のデータ群に分割してパイプライン暗号化処理部で並列処理することで、暗号化の処理速度が向上する。
【0044】
[8]前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
【0045】
上記発明では、一連のデータをパイプライン暗号化処理部の段数と同数に等分してデータ群を構成し、各データ群を単位データずつに分割して各データ群の各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する(パイプライン処理)。
【0046】
たとえば、一連のデータをパイプライン暗号化処理部の段数未満に分割してデータ群を構成しパイプライン処理を行うような場合には、パイプライン暗号化処理部では暗号演算を行わない段が発生して処理効率が低下する。また、一連のデータをパイプライン暗号化処理部の段数より多く分割してデータ群を構成しパイプライン処理を行うような場合には、初期ベクタの使用回数が増加して暗号化強度が低下する。
【0047】
これに対し、一連のデータをパイプライン暗号化処理部の段数分に分割してデータ群を構成すれば、パイプライン暗号化処理部から同一データ群の単位データNの暗号データN'が出力されて演算部に戻されるタイミングと、単位データN+1を演算部に入力するタイミングが一致するため、隙間を空けることなく単位データを連続的に入力できるようになり、効率的な処理が可能となる。
【0048】
このように、一連のデータをパイプライン暗号化処理部の段数と同数に等分して複数のデータ群を構成し、暗号化を行うことにより、初期ベクタの使用回数を最小にして暗号化強度の低下を抑制しつつ、パイプライン化した暗号化処理部の段数に応じた効率的な処理(最適化処理)が可能となる。
【0049】
[9]複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第1保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第2保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて、前記第1保持部に保持されている初期ベクタまたは前記第2保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
【0050】
上記発明では、パイプライン復号化処理部は、復号化対象の暗号データに対し、パイプライン構造で接続された複数の復号化処理部によりパイプライン構造の段数分の復号演算を行う。第1保持部は初期ベクタを保持する。第2保持部はパイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、パイプライン復号化処理部からその暗号データの次の暗号データに対する演算結果が出力されるタイミングで保持しているその暗号データを出力する。演算部は、入力された、初期ベクタの使用タイミングを示すタイミング情報に基づいて、第1保持部に保持されている初期ベクタまたは第2保持部から出力される暗号データに出力を切り替える。演算部は、パイプライン復号化処理部から出力される演算結果と、切替部から出力される初期ベクタまたは暗号データとを演算して、復号データを生成する。
【0051】
このように、暗号データを復号化する復号化処理部をパイプライン化することで、そのパイプライン復号化処理部に暗号データを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することが可能となる。これにより、単一のノンパイプラインの復号化処理部を使用して1つの単位データの復号演算を所定回数繰り返すような復号化処理を行う場合に比べ、復号化の処理速度を向上することができる。
【0052】
また、従来の復号化回路は、1回目の復号化処理のみに初期ベクタを使用するように構成されるが、初期ベクタの使用タイミングを示すタイミング情報を入力し、このタイミング情報に基づいて初期ベクタの使用タイミングを切り替えることで、暗号データの途中で初期ベクタによる復号化を必要とする場合にも対応することができる。たとえば、暗号データが複数のデータ群に分けて暗号化(各データ群では1回目にのみ初期ベクタが使用される)されている場合でも、各データ群の最初の位置(境界位置)を示す情報などが入力されれば、各データ群の初回の復号化に初期ベクタを使用してこの暗号データを連続的に復号化処理することができる。
【0053】
また、たとえば、データの暗号化送信を行う場合に、送信側の暗号処理装置がCBCモードの汎用(ノンパイプライン)の暗号化処理部しか備えていない場合でも、受信側の暗号処理装置はパイプライン復号化処理部により、1回目のみ初期ベクタで2回目以降は暗号データを使用する一般的な動作によって暗号データを元のデータに復号化することができる。したがって、汎用のCBCモードにおける暗号化プロセスと互換性を保つことができる。
【0054】
[10]前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第1保持部に保持されている初期ベクタを1回目に出力した後、前記第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする[9]に記載の暗号処理装置。
【0055】
上記発明では、たとえば、暗号化プロセスで初期ベクタが所定の周期で使用されて暗号化された暗号データを復号化するような場合は、切替部が初期ベクタの使用周期を示す周期情報に基づいて、第1保持部に保持されている初期ベクタを1回目に出力した後、第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行うことにより正しく復号化される。
【0056】
[11]1回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、[1]乃至[8]のいずれか1項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする[10]に記載の暗号処理装置。
【0057】
上記発明では、[1]乃至[8]のいずれか1項に記載の暗号処理装置のように、暗号化処理部をパイプライン化すると共に、暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力することで暗号化する場合は、たとえば、データ群の1番目の単位データに初期ベクタを使用し、残りの単位データに前の暗号データを使用して暗号化することをデータ群毎に行って暗号化することができる。
【0058】
このような暗号化プロセスで生成された暗号データに対しては、データ群を構成する単位データの数を、1回の周期でパイプライン復号化処理部から演算結果が出力される回数にすることで、すなわち、初期ベクタの使用周期を、パイプライン復号化処理部が1つのデータ群の全単位データを処理する周期に合わせることで、各データ群の1番目の暗号データの復号化には初期ベクタが使用され、残りの暗号データの復号化には前の暗号データが使用されるようになり、暗号化プロセスに合わせたデータ群毎の初期ベクタと暗号データの切り替えが行われるようになる。したがって、[1]乃至[8]のいずれか1項に記載の暗号処理装置で暗号化された暗号データを正しく復号化することができる。
【発明の効果】
【0059】
本発明に係る暗号処理装置によれば、暗号化強度の低下を抑制しつつ、暗号化/復号化の処理速度を向上することができる。
【発明を実施するための最良の形態】
【0060】
以下、図面に基づき本発明の実施の形態を説明する。
【0061】
図1は、本発明の実施の形態に係る暗号処理装置10の構成をブロック図で示している。暗号処理装置10は、原稿を読み取って対応する画像を記録紙上に形成して出力するコピー機能や、スキャナ機能、プリンタ機能、ファクシミリ機能などを備えたデジタル複合機などの画像形成装置に搭載されており、画像形成装置が各種動作を実行するときに画像データなどの暗号化/復号化を行う機能を備えている。
【0062】
図1に示すように、暗号処理装置10は、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、暗号化回路14と、復号化回路15と、並べ替え回路16とを備えている。
【0063】
CPU11は演算処理機能を備えると共に、暗号処理装置10全体の動作を統括制御する制御部(中央処理装置)として機能する。ROM12は、CPU11が実行するプログラムや各種固定データを記憶している。RAM13は、CPU11がプログラムを実行する際に各種データを一時的に格納するワークメモリや、暗号化処理を施す一連の暗号化対象データ(平文)および復号化処理を施す一連の復号化対象データ(暗号文)を格納するデータメモリとして機能する。
【0064】
暗号化回路14は、RAM13に格納された暗号化対象データに対してAES規格に基づき128ビットのブロック長単位で暗号化処理を施す機能を備えている。復号化回路15は、RAM13に格納された復号化対象データに対してAES規格に基づき128ビットのブロック長単位で復号化処理を施す機能を備えている。また暗号化回路14および復号化回路15は、上記のブロック長単位で演算を行うデータブロック(単位データ)に加えて、後述するイニシャルベクタと暗号鍵もAES規格に基づいて128ビット単位で演算を行うように構成されている。
【0065】
並べ替え回路16は、暗号化回路14が暗号化処理を行うときに、RAM13に格納されている暗号化対象データを複数のデータブロック(平文ブロック)からなるデータ群に分割すると共に、各データ群のデータブロックを飛び飛びの順番に並べ替えて暗号化回路14に入力する機能、および、暗号化回路14から暗号化されて出力されたデータブロック(暗号文ブロック)を元の順番に並べ戻し一連の暗号文としてRAM13に格納する機能を備えている。さらに、RAM13に格納する暗号文のヘッダーに、暗号化モード情報(パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報)や暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報(各データ群の最初の位置を示す位置情報)などを付加する機能も備えている。
【0066】
また並べ替え回路16は、復号化回路15が復号化処理を行うときに、RAM13に格納されている復号化対象データのデータブロック(暗号文ブロック)を先頭から並び順通りに復号化回路15に入力する機能、および、復号化回路15から復号化されて出力されたデータブロック(平文ブロック)を出力順に並べてRAM13に格納する機能を備えている。
【0067】
図2は、暗号化回路14の回路構成を示しており、図3は、復号化回路15の回路構成を示しており、図4は、暗号化回路14および復号化回路15が備えるパイプライン回路40のブロック図を示している。
【0068】
図2に示すように、暗号化回路14は、パイプライン暗号化処理部としてのパイプライン暗号化演算部20と、XOR演算部21と、セレクタ22と、セレクタ制御回路23と、入力レジスタ24と、出力レジスタ25と、KEYレジスタ26と、IVレジスタ27とを備えている。
【0069】
パイプライン暗号化演算部20は、AES規格に基づいたパイプライン方式のブロック暗号演算を行う回路であり、連続して入力されるデータブロックの暗号演算を並列に実行して演算結果を連続出力する機能を備えている。
【0070】
詳細には、暗号化回路14は図4に示すパイプライン回路40のように、直列に接続された11段のノンパイプライン回路41(暗号化演算部)を備えている。各ノンパイプライン回路41は、従来のノンパイプライン回路220と同様に(図13参照)、入力されたデータブロック(indata)に対して、置換(ステップS101)、並べ替え(ステップS102)、行列演算(ステップS103)、XOR演算(ステップS104)の4つの処理を1ラウンドで行い、この1ラウンドを1クロック(CLK)で処理するように構成されている。したがって、ノンパイプライン回路41を11段備えたパイプライン回路40は、入力されたデータブロックを1クロック目に初段P1のノンパイプライン回路41で演算処理し、2クロック目に2段目P2のノンパイプライン回路41で演算処理し、・・・、11クロック目に最終段である11段目P11のノンパイプライン回路41で演算処理し、12クロック目に演算結果である処理済みのデータブロック(outdata)を出力するようになっている。
【0071】
また、パイプライン回路40は、データブロックがクロック毎に連続的に入力されると、その連続入力されるデータブロックに対して、11段のノンパイプライン回路41で段数分の演算を並列に実行し、処理済みのデータブロックをクロック毎に連続出力する動作(パイプライン処理)を行うようになる。
【0072】
KEYレジスタ26(図2参照)は、暗号演算で用いる暗号鍵を保持するためのレジスタであり、KEYレジスタ26に保持された暗号鍵はパイプライン暗号化演算部20に入力される。IVレジスタ27は、パイプライン暗号化演算部20に入力するイニシャルベクタIVとなる任意のデータを保持するためのレジスタである。
【0073】
セレクタ制御回路23は、セレクタ22の動作を制御し、セレクタ22は、IVレジスタ27に保持されているイニシャルベクタIVとパイプライン暗号化演算部20の演算結果(暗号ベクタ)のいずれかをXOR演算部21に対して選択出力する機能を備えている。
【0074】
入力レジスタ24は、並べ替え回路16によって入力される暗号化対象のデータブロック(平文ブロック)を保持するレジスタである。XOR演算部21は、入力レジスタ24の出力する暗号化対象のデータブロックとセレクタ22の出力するイニシャルベクタIVまたは暗号ベクタとの排他的論理和を演算する機能を備えている。出力レジスタ25は、パイプライン暗号化演算部20の演算結果として出力される暗号化されたデータブロック(暗号文ブロック)を保持するレジスタである。
【0075】
図3に示すように、復号化回路15は、パイプライン復号化処理部としてのパイプライン復号化演算部30と、XOR演算部31と、セレクタ32と、セレクタ制御回路33と、入力レジスタ34と、出力レジスタ35と、KEYレジスタ36と、IVレジスタ37と、保持レジスタ38とを備えている。
【0076】
パイプライン復号化演算部30は、AES規格に基づいたパイプライン方式のブロック復号演算を行う回路であり、連続して入力されるデータブロックの復号演算を並列に実行して演算結果を連続出力する機能を備えている。このパイプライン復号化演算部30は、パイプライン暗号化演算部20で説明したパイプライン回路40と同じ構成であり、同様に動作する。
【0077】
入力レジスタ34は、並べ替え回路16によって入力される復号化対象のデータブロック(暗号文ブロック)を保持するレジスタであり、入力レジスタ34に保持されたデータブロックはパイプライン復号化演算部30と保持レジスタ38に入力される。
【0078】
保持レジスタ38は、たとえばFIFO(First-In First-Out)などで構成されており、入力レジスタ34から入力されたデータブロックを内部に保持して入力順に出力する機能を備えている。また保持レジスタ38は、パイプライン復号化演算部30の段数よりも1段多くされており(12段FIFO)、パイプライン復号化演算部30からデータブロックの演算結果が出力されるタイミングで、そのデータブロックよりも1つ前のデータブロック(先に入力されたデータブロック)を出力するように構成されている。
【0079】
KEYレジスタ36は、復号演算で用いる暗号鍵を保持するためのレジスタであり、KEYレジスタ36に保持された暗号鍵はパイプライン復号化演算部30に入力される。IVレジスタ37は、パイプライン復号化演算部30に入力するイニシャルベクタIVとなる任意のデータを保持するためのレジスタである。
【0080】
セレクタ制御回路33は、セレクタ32の動作を制御し、セレクタ32は、IVレジスタ37に保持されているイニシャルベクタIVと保持レジスタ38から出力されたデータブロックのいずれかをXOR演算部31に対して選択出力する機能を備えている。
【0081】
XOR演算部31は、パイプライン復号化演算部30の出力する演算結果とセレクタ32の出力するイニシャルベクタIVまたはデータブロックとの排他的論理和を演算する。出力レジスタ35はXOR演算部31の演算結果である復号化されたデータブロック(平文ブロック)を保持するレジスタである。
【0082】
またCPU11は、暗号化回路14、復号化回路15、および並べ替え回路16の動作シーケンスを制御する機能を果たし、KEYレジスタ26、36およびIVレジスタ27、37へのデータのセットも行う。暗号化/復号化処理で使用するイニシャルベクタや暗号鍵などの各種データは、たとえば、図示しない補助記憶装置に格納しておき、暗号処理装置10の起動時にCPU11が補助記憶装置から読み出して各レジスタにセットするようになっている。
【0083】
さらにCPU11は、暗号化処理を行うときは並べ替え回路16に、暗号化対象データの存在するメモリ領域の先頭アドレスを示す先頭アドレス情報、暗号化対象データのサイズを示すデータサイズ情報、暗号化対象データの分割数を示すデータ分割数情報を出力し、暗号化回路14のセレクタ制御回路23に、パイプライン暗号化演算部20の段数を示す段数情報を出力する。復号化処理を行うときは復号化回路15のセレクタ制御回路33に、復号化対象データの暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報を出力する。
【0084】
IV使用タイミング情報については、暗号化対象データを分割して構成された各データ群の最初の位置(境界位置)が認識できる情報であればよく、たとえば、イニシャルベクタIVの使用周期を示す周期情報、各データ群を構成するデータブロックの数を示すデータブロック数情報や各データ群のデータサイズを示すデータサイズ情報、データ群を1ページ分の画像データとした場合にはその1ページ分のデータサイズ情報、復号化対象データのデータサイズとその分割数、各データ群の最初の位置を復号化対象データの先頭位置からのオフセット量で示すオフセット情報などを使用できる。
【0085】
次に、暗号処理装置10による暗号化/復号化処理の動作を説明する。
【0086】
図5は、暗号処理装置10による暗号化処理の動作を示す動作説明図であり、図6は、暗号化処理における暗号化対象の平文ブロックの入力タイミングと暗号化された結果の暗号文ブロックの出力タイミングを示すタイミングチャートである。
【0087】
暗号処理装置10による暗号化処理では、並べ替え回路16は、CPU11から送られた先頭アドレス情報、データサイズ情報、データ分割数情報に基づいて演算を行い、RAM13に格納されている暗号化対象データをパイプライン暗号化演算部20の段数と同数に等分して(11等分)、各々サイズが等しい11個のデータ群を構成する。さらに、各データ群をAES規格に基づき128ビットのデータブロックに分割する。
【0088】
図5の例では、説明を分かりやすくするために、RAM13の所定の領域(平文メモリ領域)に格納されている暗号化対象データである平文が11個のデータ群(データ群1〜11)に分割され、各データ群は100個の平文ブロック(データ群1:平文ブロック1〜100、データ群2:平文ブロック101〜200、データ群3:平文ブロック201〜300、・・・、データ群11:平文ブロック1001〜1100)で構成されているものとして説明する。
【0089】
このRAM13に格納されている暗号化対象データに対し、並べ替え回路16は、1〜1100まで連続配列されている平文ブロックを飛び飛びの順番に並べ替えて暗号化回路14に入力する。
【0090】
たとえば、図5および図6に示すように、データ群1の1番目の平文ブロック1、データ群2の1番目の平文ブロック101、データ群3の1番目の平文ブロック201、・・・、データ群11の1番目の平文ブロック1001、データ群1の2番目の平文ブロック2、データ群2の2番目の平文ブロック102、データ群3の2番目の平文ブロック202、・・・、データ群9の100番目の平文ブロック990、データ群10の100番目の平文ブロック1000、データ群11の100番目の平文ブロック1100というように、平文ブロック1から100番飛ばしの順番に並べ替えて、暗号化回路14に入力する。また、並べ替えた平文ブロックは11個で1つの組とし、その1組を1サイクルで処理する。
【0091】
暗号化回路14の入力レジスタ24は、上記の順番に並べ替えられて入力される平文ブロックを保持し、保持した平文ブロックをその順番でXOR演算部21に順次出力する。
【0092】
一方、セレクタ制御回路23は、CPU11から送られたパイプライン暗号化演算部20の段数情報に基づいて演算を行い、イニシャルベクタIVの使用タイミングを決定する。
【0093】
たとえば、図5の暗号化対象データ(平文)に対しては、1サイクル目のみイニシャルベクタIVをXOR演算部21に入力し、2サイクル目以降はパイプライン暗号化演算部20から出力される暗号文ブロックを暗号ベクタとしてXOR演算部21に入力するようセレクタ22の切り替え制御を行う。これにより、セレクタ22は、1サイクル目にはIVレジスタ27の保持しているイニシャルベクタIVをXOR演算部21に入力する(図6参照)。
【0094】
XOR演算部21は、1サイクル目では入力レジスタ24から順次入力される1組目の平文ブロック1、平文ブロック101、平文ブロック201、・・・、平文ブロック1001と、IVレジスタ27からセレクタ22を介して入力されるイニシャルベクタIVとの排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部20に順次出力する。
【0095】
パイプライン暗号化演算部20は、XOR演算部21から順次入力される1組目の各平文ブロックの演算結果に対し、KEYレジスタ26に保持されている暗号鍵と、11段の暗号化演算部で段数分のAES規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ25とセレクタ22へ順次出力する。
【0096】
出力レジスタ25には、図5および図6に示すように、1組目の暗号文ブロック1'、暗号文ブロック101'、暗号文ブロック201'、・・・、暗号文ブロック1001'が順次保持され、並べ替え回路16は、出力レジスタ25に保持された暗号文ブロックを元の順番に並べ戻してRAM13の他の領域(暗号文メモリ領域)に格納する。詳細には、暗号文ブロック1'をデータ群1'の1番目に格納し、暗号文ブロック101'をデータ群2'の1番目に格納し、暗号文ブロック201'をデータ群3'の1番目に格納し、・・・、暗号文ブロック1001'をデータ群11'の1番目に格納する。
【0097】
また、パイプライン暗号化演算部20の段数が11段であることから、1サイクル目の最初(1クロック目)に入力された平文ブロック1を暗号化した暗号文ブロック1'は、1サイクル目の最後(11クロック目)に平文ブロック11がパイプライン暗号化演算部20に入力された後、2サイクル目の最初となる平文ブロック2がXOR演算部21に入力されるタイミング(12クロック目)でパイプライン暗号化演算部20から出力される。1サイクル目の2番目以降に入力された平文ブロック101、201、・・・、1001を暗号化した暗号文ブロック101'、201'、・・・、1001'も同様に、2サイクル目の2番目以降の平文ブロック102、202、・・・、1002がXOR演算部21に入力されるタイミング(13、14、・・・、22クロック目)でパイプライン暗号化演算部20から出力される。
【0098】
セレクタ22は、2サイクル目にはパイプライン暗号化演算部20から出力される暗号文ブロック101'、201'、・・・、1001'を暗号ベクタとしてXOR演算部21に入力する(図6参照)。
【0099】
XOR演算部21は、2サイクル目では入力レジスタ24から順次入力される2組目の平文ブロック2、102、202、・・・、1002と、パイプライン暗号化演算部20からセレクタ22を介して入力される暗号ベクタとしての暗号文ブロック101'、201'、・・・、1001'との排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部20に順次出力する。
【0100】
このように、平文ブロックNと平文ブロックN+1とはパイプライン暗号化演算部20の段数だけ離れるタイミング規則でXOR演算部21に入力され、平文ブロックN+1は、平文ブロックNを暗号化した暗号文ブロックN'がパイプライン暗号化演算部20から出力されたタイミングでXOR演算部21に入力されて、暗号文ブロックN'とXOR演算部21への入力タイミングを合わせられるようになる。これにより、暗号文ブロックN'を暗号ベクタとして入力側にフィードバックさせて行う平文ブロックN+1の暗号化が実現される。
【0101】
パイプライン暗号化演算部20は、1サイクル目と同様に、XOR演算部21から順次入力される2組目の各平文ブロックの演算結果に対し、KEYレジスタ26に保持されている暗号鍵と、11段の暗号化演算部で段数分のAES規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ25とセレクタ22へ順次出力する。
【0102】
出力レジスタ25には、図5および図6に示すように、2組目の暗号文ブロック2'、102'、202'、・・・、1002'が順次保持され、並べ替え回路16は、出力レジスタ25に保持された暗号文ブロックを元の順番に並べ戻してRAM13の他の領域に格納する。詳細には、暗号文ブロック2'をデータ群1'の2番目に格納し、暗号文ブロック102'をデータ群2'の2番目に格納し、暗号文ブロック202'をデータ群3'の2番目に格納し、・・・、暗号文ブロック1002'をデータ群11'の2番目に格納する。
【0103】
この2サイクル目と同様に3サイクル目以降も前の組の各暗号文ブロックを暗号ベクタとしてXOR演算部21に入力して次の組の各平文データの暗号化を行い、パイプライン暗号化演算部20から順次出力されて出力レジスタ25に保持された各暗号文ブロックを元の順番に並べ戻してRAM13に格納し、100サイクルで計1100個の平文ブロックの暗号化が完了する。これにより、RAM13には暗号文ブロック1'〜1100'が順番通りに連続配列され一連の暗号文として格納される。また、暗号文のヘッダーには、並べ替え回路16によって、パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報、および、暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報(各データ群の最初の位置を示す位置情報)などが付加される。この暗号文の復号化では、ヘッダーに付加された情報に基づいて復号化モード(パイプライン/ノンパイプライン)の判別やイニシャルベクタIVの使用タイミングが決定される。
【0104】
図7は、復号化処理における復号化対象の暗号文ブロックの入力タイミングと復号化された結果の平文ブロックの出力タイミングを示すタイミングチャートである。
【0105】
暗号処理装置10による復号化処理では、並べ替え回路16は、RAM13に格納されている復号化対象データの暗号文ブロックを先頭から並び順通りに復号化回路15に入力する。たとえば、図7に示すように、1番目の暗号文ブロック1'、2番目の暗号文ブロック2'、3番目の暗号文ブロック3'・・・というように、先頭から並び順通りに復号化回路15に入力する。
【0106】
復号化回路15の入力レジスタ34は、上記の順番で入力される暗号文ブロックを保持し、保持した暗号文ブロックをその順番でパイプライン復号化演算部30と保持レジスタ38へ順次出力する。
【0107】
パイプライン復号化演算部30は、入力レジスタ34から順次入力される各暗号文ブロックに対し、KEYレジスタ36に保持されている暗号鍵と、11段の復号化演算部で段数分のAES規格に基づいた復号演算を並列に実行し、その演算結果のデータブロックをXOR演算部31に順次出力する。
【0108】
また、パイプライン復号化演算部30の段数が11段であることから、最初に入力された暗号文ブロック1'(N')を復号演算した演算結果(平文ブロック1 XOR イニシャルベクタIV)は、暗号文ブロック11'がパイプライン復号化演算部30に入力された後、その次の暗号文ブロック12'(N'+11)がパイプライン復号化演算部30に入力されるタイミングでパイプライン復号化演算部30から出力される。この出力後は、2番目以降に入力された暗号文ブロック2'を復号演算した演算結果(平文ブロック2 XOR 暗文ブロック1')、暗号文ブロック3'を復号演算した演算結果(平文ブロック3 XOR 暗文ブロック2')・・・、が連続してパイプライン暗号化演算部20から出力される。
【0109】
保持レジスタ38は、入力レジスタ34から入力された暗号文ブロックを内部に保持して入力順に出力すると共に、パイプライン復号化演算部30から暗号文ブロック(N'+1)の演算結果が出力されるタイミングで、その暗号文ブロックよりも1つ前の暗号文ブロック(N')を出力する。
【0110】
一方、セレクタ制御回路33は、CPU11から送られた、復号化対象データの暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報に基づいて、イニシャルベクタIVの使用タイミングを決定する。
【0111】
たとえば、図5の例で暗号化された暗号データの場合は、1番目の暗号文ブロック1'、101番目の暗号文ブロック101'、201番目の暗号文ブロック201'、・・・、1001番目の暗号文ブロック1001'というように、暗号文ブロック1'から100番飛ばしでイニシャルベクタIVをXOR演算部31に入力し、その他の暗号文ブロックに対しては保持レジスタ38から出力される暗号文ブロックをXOR演算部31に入力するようセレクタ32の切り替え制御を行う。これにより、セレクタ32は、暗号文ブロック1'、101'、201'、・・・、1001'に対してのみ、IVレジスタ37の保持しているイニシャルベクタIVをXOR演算部31に入力し、その他の暗号文ブロックに対しては保持レジスタ38から出力される暗号文ブロックをXOR演算部31に入力する。
【0112】
XOR演算部31は、パイプライン復号化演算部30から順次入力される暗号文ブロックの演算結果のうち、暗号文ブロック1'、101'、201'、・・・、1001'の演算結果に対しては、IVレジスタ37からセレクタ32を介して入力されるイニシャルベクタIVとの排他的論理和演算を行い、その他の暗号文ブロック(N'+1)の演算結果に対しては、保持レジスタ38から出力される暗号文ブロック(N')との排他的論理和演算を行い、各暗号文ブロックの演算結果である復号化した平文ブロックを出力レジスタ35に順次出力する。
【0113】
出力レジスタ35には、復号化された平文ブロック1、2、3・・・が順次保持され、並べ替え回路16は、出力レジスタ35に保持された平文ブロックを出力順に並べてRAM13に格納する。これにより、RAM13には平文ブロック1〜1100が順番通りに連続配列されて格納される。
【0114】
このように、本実施形態の暗号処理装置10では、暗号化処理において、パイプライン暗号化演算部20から出力される暗号文ブロックを入力に戻して次の平文ブロックの暗号化に使用していることにより、強度の高い暗号化プロセスとなり、暗号文ブロックを入力に戻して次の平文ブロックの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。
【0115】
また、平文ブロックの暗号演算を行う暗号化回路14の暗号化演算部をパイプライン化したことで、そのパイプライン暗号化演算部20は、XOR演算部21から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、図5で説明したように複数セットのデータ群で暗号化を行えば、単一のノンパイプラインの暗号化演算部を使用して1つの平文ブロックの暗号演算を所定回数繰り返すような暗号化プロセスに比べ、暗号化の処理速度を向上することができる。
【0116】
また、特に本実施形態では、一連の暗号化対象データをパイプライン暗号化演算部20の段数と同数に等分して11個のデータ群を構成し、各データ群をAES規格に基づくブロックデータずつに分割して各データ群の各ブロックデータの暗号演算をパイプライン暗号化演算部20により並列に実行して暗号化していることで(パイプライン処理)、たとえば、一連の暗号化対象データを段数未満に分割した場合のように、パイプライン暗号化演算部20で暗号演算の行われない段が発生して処理効率が低下したり、一連のデータをパイプライン暗号化演算部20の段数より多く分割した場合のように、イニシャルベクタIVの使用回数が増えて暗号化強度が低下したりするようなことを抑制できる。
【0117】
一連の暗号化対象データを分割して構成するデータ群の数をパイプライン暗号化演算部20の段数以上にすれば、隙間を空けることなく平文ブロックをパイプライン暗号化演算部20に連続的に入力してパイプライン処理を繰り返し行うことができるため、処理効率は良くなる。一方、データ群の数が少ないほど、イニシャルベクタIVの使用回数を少なくすることができて暗号化強度の低下は抑制できる。したがって、イニシャルベクタIVの使用回数を最小にして高い暗号化強度を保ちつつ、効率の良いパイプライン処理を行うためには、本実施形態のように、データ群の数をパイプライン暗号化演算部20の段数と等しくすることが最も好ましく、この条件によって最適化処理が実現される。
【0118】
さらに、各データ群の1番目のブロックデータを連続的に暗号化する1サイクル目だけにイニシャルベクタIVを使用し、各データ群の2番目以降のブロックデータを連続的に暗号化する2サイクル目以降には暗号データを使用して暗号化を行えばよいため、イニシャルベクタIVと暗号データの切り替えの管理も簡単になる。
【0119】
また復号化回路15では、暗号文ブロックの復号演算を行う復号化演算部をパイプライン化したことで、復号化処理ではそのパイプライン復号化演算部30に暗号文ブロックを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することができる。これにより、単一のノンパイプラインの復号化演算部を使用して1つの暗号文ブロックの復号演算を所定回数繰り返すような復号化処理に比べ、復号化の処理速度を向上することができる。
【0120】
また復号化プロセスでは、イニシャルベクタIVの使用タイミングを暗号化プロセスに合わせることで、パイプラインおよびノンパイプラインのいずれの暗号化演算部により暗号化された暗号文ブロックであっても復号化が可能となり、汎用のCBCモードにおける暗号化プロセスと互換性を保つことができる。
【0121】
なお、複合機では、スキャンした画像データをプリントする際はパイプライン回路で暗号化し、パイプライン回路で復号化するのが適しており、スキャンした画像データをネットワーク送信などする場合は、パイプライン回路で暗号化し、ノンパイプライン回路で復号化するのが適している。また、FAX受信したデータをプリントなどする場合は、ノンパイプライン回路で暗号化し、パイプライン回路で復号化するのが適している。
【0122】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【0123】
たとえば、実施の形態における暗号化処理では、平文ブロックNとこれに後続する平文ブロックN+1とをパイプライン暗号化演算部20の段数分だけ離れるタイミング規則でXOR演算部21に入力するようにしているが、パイプライン暗号化演算部20の段数よりも離れるタイミング規則でXOR演算部21に入力するようにしてもよい。その場合は、平文ブロックNを暗号化した暗号文ブロックN'のXOR演算部21への入力タイミングを遅らせる回路などを設けることにより、暗号文ブロックN'と平文ブロックN+1とのXOR演算部21への入力タイミングが合わせられる。
【0124】
また、暗号化の対象となるデータ全体をパイプライン暗号化演算部20の段数と同数に等分して、暗号演算のパイプライン処理を行っているが、パイプライン暗号化演算部20の段数よりも大きい数に分割して暗号演算のパイプライン処理を行うことも可能である。パイプライン回路を使用した暗号化処理で最も処理効率が良いのは、暗号化対象データを分割して構成するデータ群の数=パイプライン暗号化演算部20の段数であるが、データ群の数がパイプライン暗号化演算部20の段数と異なっていても、たとえば2サイクル目以降はイニシャルベクタIVおよび暗号文ブロックの入力タイミングをずらすことでパイプライン処理が可能である。
【0125】
また、実施の形態のようなデジタル複合機などの画像形成装置においては、暗号化対象のデータ群を1ページ分の画像のデータとし、その1ページ分の画像データを所定ブロック長の平文ブロックずつに分割して各ページの各平文ブロックの暗号演算をパイプライン暗号化演算部20により並列に実行して暗号化するようにしてもよい。これにより、暗号化ではページ毎(データ群毎)に、1番目の平文ブロックの暗号演算にはイニシャルベクタIVを使用し、2番目以降の平文ブロックの暗号演算には前の暗号文ブロックを使用できるようになり、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの1番目の暗号文ブロックの復号化にはイニシャルベクタIVを使用し、2番目以降の暗号文ブロックの復号化には前の暗号文ブロックを使用することで復号化が可能となり、IV使用タイミング情報に基づく切り替え制御を行わない装置でも復号化できるようになる。
【図面の簡単な説明】
【0126】
【図1】本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
【図2】本発明の実施の形態に係る暗号化回路を示す回路構成図である。
【図3】本発明の実施の形態に係る復号化回路を示す回路構成図である。
【図4】本発明の実施の形態に係るパイプライン回路を示すブロック図である。
【図5】本発明の実施の形態に係る暗号処理装置による暗号化処理の動作を示す説明図である。
【図6】本発明の実施の形態に係る暗号処理装置による暗号化処理の動作タイミングを示すタイミングチャートである。
【図7】本発明の実施の形態に係る暗号処理装置による復号化処理の動作タイミングを示すタイミングチャートである。
【図8】従来の暗号化回路を示す回路構成図である。
【図9】従来の復号化回路を示す回路構成図である。
【図10】(A)はCBCモードの暗号化プロセスを示すプロセス図、(B)はCBCモードの復号化プロセスを示すプロセス図である。
【図11】従来の暗号化回路による暗号化処理の動作タイミングを示すタイミングチャートである。
【図12】従来の復号化回路による復号化処理の動作タイミングを示すタイミングチャートである。
【図13】従来のノンパイプライン回路を示す構成図である。
【図14】従来のノンパイプライン回路によるデータ出力タイミングを示すタイミングチャートである。
【符号の説明】
【0127】
10…暗号処理装置
11…CPU
12…ROM
13…RAM
14…暗号化回路
15…復号化回路
16…並べ替え回路
20…パイプライン暗号化演算部
21…XOR演算部
22…セレクタ
23…セレクタ制御回路
24…入力レジスタ
25…出力レジスタ
26…KEYレジスタ
27…IVレジスタ
30…パイプライン復号化演算部
31…XOR演算部
32…セレクタ
33…セレクタ制御回路
34…入力レジスタ
35…出力レジスタ
36…KEYレジスタ
37…IVレジスタ
38…保持レジスタ
40…パイプライン回路
41…ノンパイプライン回路

【特許請求の範囲】
【請求項1】
複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
【請求項2】
初期ベクタを保持する保持レジスタと、
前記データ群に対する1回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする請求項1または2に記載の暗号処理装置。
【請求項4】
前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載の暗号処理装置。
【請求項5】
前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載の暗号処理装置。
【請求項6】
前記データ群は、1ページ分の画像のデータである
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
【請求項7】
前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
【請求項8】
前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
【請求項9】
複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第1保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第2保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて前記第1保持部に保持されている初期ベクタまたは前記第2保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
【請求項10】
前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第1保持部に保持されている初期ベクタを1回目に出力した後、前記第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする請求項9に記載の暗号処理装置。
【請求項11】
1回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、請求項1乃至請求項8のいずれか1項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする請求項10に記載の暗号処理装置。

【図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