説明

暗号処理方法及び暗号処理装置

【課題】暗号強度を損ねることなく暗号化/復号化の処理時間を短縮することのできる暗号処理方法および暗号処理装置を提供する。
【解決手段】暗号化処理が半分終了した時点で第1AES暗号演算部11から出力された暗号ベクタとKEYレジスタ31に保持された暗号鍵とIVレジスタ32に保持されたイニシャルベクタIVとを保持レジスタ33に保存しておき、次回以降の暗号化処理でKEYレジスタ31に保存された暗号鍵とIVレジスタ32に保存されたイニシャルベクタIVとが保持レジスタ33に保存されたものと一致する場合は、前半部を第1AES暗号演算部11側で暗号化し、これと並列に後半部を、保持レジスタ33に保持されている暗号ベクタを利用して第2AES暗号演算部21で暗号化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平文の暗号化もしくは暗号文の復号化を行う暗号処理方法および暗号処理装置に関する。
【背景技術】
【0002】
一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、DES(データ標準暗号化方式、Data Encryption Standard)からAES(次世代標準暗号化方式、Advanced Encryption Standard)に移行しており、暗号強度が強くなってきている。また、AES暗号方式には何種類かのモードがあり、目的や使用方法により選択される。
【0003】
たとえば、図6はOFB(Output FeedBack)モードの暗号回路80の構成例を示している。暗号回路80は、入力値に所定の演算を施して暗号ベクタを出力するAES暗号演算部81と、AES暗号演算部81に入力する暗号鍵を保持するためのKEYレジスタ82と、AES暗号演算部81に入力する初期の暗号ベクタ(イニシャルベクタ)を保持するためのIVレジスタ83と、AES暗号演算部81の演算結果として出力される暗号ベクタとIVレジスタ83に保持されているイニシャルベクタのいずれかを選択してAES暗号演算部81の入力に与えるセレクタ84と、暗号化または復号化の対象となるデータを保持する入力レジスタ85と、入力レジスタ85の出力とAES暗号演算部81の出力との排他的論理和を演算するEXOR演算部86と、EXOR演算部86の出力(暗号化または復号化の結果として生成されたデータ)を保持する出力レジスタ87とを備えている。
【0004】
暗号化および復号化のプロセスの初段では、KEYレジスタ82の保持している暗号鍵とIVレジスタ83の保持しているイニシャルベクタIVとがAES暗号演算部81に入力され、AES暗号演算部81はその演算結果として暗号ベクタを出力する。EXOR演算部86はこの暗号ベクタと入力レジスタ85に保持されている暗号化または復号化の対象となるデータとの排他的論理和演算を行い、その結果が暗号化または復号化の結果のデータとして出力レジスタ87に保持される。
【0005】
次段以降は、前段の演算でAES暗号演算部81の出力した暗号ベクタがAES暗号演算部81の入力に戻され、AES暗号演算部81は該暗号ベクタとKEYレジスタ82に保持されている暗号鍵とを入力にして演算を行う。EXOR演算部86はAES暗号演算部81の出力する演算結果の暗号ベクタと入力レジスタ85に保持されている暗号化または復号化の対象となるデータとの排他的論理和演算を行い、その演算結果は暗号化または復号化されたデータとして出力レジスタ87に保持される。
【0006】
図7は暗号回路80での暗号化プロセスを示し、図8は復号化のプロセスを示し、図9は暗号化プロセスでのタイミングチャートを示している。暗号化プロセスを例に説明すると、初段P1の処理では、AES暗号演算部81はイニシャルベクタIVと暗号鍵とを入力とし、その演算結果として暗号ベクタEV1を出力し、EXOR演算部86はこの暗号ベクタEV1と入力レジスタ85に保持された平文1との排他的論理和をとって暗号文1を出力する。2段目P2の処理では、AES暗号演算部81は暗号鍵と初段で生成した暗号ベクタEV1とを入力として暗号ベクタEV2を出力し、EXOR演算部86は暗号ベクタEV2と平文2との排他的論理和をとって暗号文2を出力する。3段目P3の処理では、AES暗号演算部81は暗号鍵と前段(2段目)で生成した暗号ベクタEV2とを入力として暗号ベクタEV3を出力し、EXOR演算部86は暗号ベクタEV3と平文3との排他的論理和をとって暗号文3を出力する。以後の段においても同様の動作が繰り返し行われる。
【0007】
このような暗号化/復号化の処理では各段は固定長(たとえば、128ビット)のデータの暗号化/復号化を行い、長いビット長の平文や暗号文を処理するためには多数の段数を時系列に処理されるので、処理時間が長くなってしまう。暗号化の処理時間短縮技術としては、たとえば、入力データのデータ長と暗号化ブロックへのキー長とが異なる場合に、必要なビット数だけの演算を行うようにすることで、ストリーミングデータなどに対する暗号化/復号化の処理時間を短縮したものがある(たとえば、特許文献1参照。)。
【0008】
【特許文献1】特開2004−45641号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
上記の処理時間短縮技術は、文字単位に暗号化するなどの特殊な場合を想定したものであり、暗号強度を損ねることなく一般のデータに対しても有用性な処理時間の短縮技術が望まれる。
【0010】
本発明は、上記の観点からなされたものであり、暗号強度を損ねることなく暗号化/復号化の処理時間を短縮することのできる暗号処理方法および暗号処理装置を提供することを目的としている。
【課題を解決するための手段】
【0011】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【0012】
[1]初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、
次回以降の暗号化復号化処理を、前記初期データを初段の演算の入力に使用する第1暗号化復号化処理と前記保存した中間データを初段の演算の入力に使用する第2暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【0013】
上記発明では、暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、次回以降の暗号化復号化処理を、初期データを初段の演算の入力とする第1暗号化復号化処理と、保存した中間データを初段の演算の入力とする第2暗号化復号化処理に分けて行う。
【0014】
上記演算では、入力される初期データが同一であれば、N段目の演算結果は常に同一になる。たとえば、m段目の演算結果の中間データを保持しておけば、この中間データを演算の初期値に入力することで、m+1段目と同じ動作を初段の動作で行わせることができる。そこで、1段目からの動作を第1暗号化復号化処理に行わせ、これとは別にm+1段目に相当する動作を初段の動作として第2暗号化復号化処理に行わせることで、これらを並列動作させて全体としての処理時間を短縮することができる。
【0015】
[2]前記保存した中間データと共に前記初期データをさらに保存しておき、
次回以降の暗号化複合化処理を、前記保存した初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、前記第1暗号化復号化処理と前記第2暗号化復号化処理に分けて行う
ことを特徴とする[1]に記載の暗号処理方法。
【0016】
上記発明では、中間データの保存時の初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、中間データを利用した第2暗号化複合化処理が実行される。初期データが同一であることはN段目の演算結果が同一であることを保障する条件となるので、それが確認された場合だけ、中間データの使用を許可している。
【0017】
[3]複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期データを使用する
ことを特徴とする[1]または[2]に記載の暗号処理方法。
【0018】
上記発明では、複数ページの画像の暗号化もしくは復号化に対して同一の初期データを使用することで、これら複数ページの暗号化復号化処理において中間データの利用が促進される。
【0019】
[4]初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に、各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、
次回以降の暗号化復号化処理を、前記初期ベクタと前記暗号鍵とを初段の演算の入力に使用する第1暗号化復号化処理と、前記暗号鍵と前記保存した暗号ベクタとを初段の演算の入力に使用する第2暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【0020】
上記発明では、暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、次回以降の暗号化復号化処理を、初期ベクタと暗号鍵とを初段の演算の入力とする第1暗号化復号化処理と、該暗号鍵と保存した中間ベクタとを初段の演算の入力とする第2暗号化復号化処理に分けて行う。
【0021】
入力される初期ベクタおよび暗号鍵が同一であれば、N段目の演算結果の暗号ベクタは常に同一になる。たとえば、m段目の演算結果の暗号ベクタを保持しておけば、この暗号ベクタと先の暗号鍵とを演算の初期値に入力することで、m+1段目と同じ動作を初段の動作で行わせることができる。そこで、1段目からの動作を第1暗号化復号化処理に行わせ、これとは別にm+1段目に相当する動作を初段の動作として第2暗号化復号化処理に行わせることで、これらを並列動作させて全体としての処理時間を短縮することができる。
【0022】
[5]前記所定の段の演算結果である暗号ベクタと共に前記初期ベクタをさらに保存しておき、
次回以降の暗号化復号化処理を、前記保存した初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵とが一致することを条件に、前記第1暗号化復号化処理と前記第2暗号化復号化処理に分けて行う
ことを特徴とする[4]に記載の暗号処理方法。
【0023】
上記発明では、暗号ベクタの保存時の初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵が一致することを条件に、保存されている暗号データを利用した第2暗号化複合化処理が実行される。初期ベクタと暗号鍵とが同一であることはN段目の演算結果が同一であることを保障する条件となるので、それが確認された場合だけ、保存されている暗号ベクタの使用を許可している。
【0024】
[6]複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期ベクタおよび暗号鍵を使用する
ことを特徴とする[4]または[5]に記載の暗号処理方法。
【0025】
上記発明では、複数ページの画像の暗号化もしくは復号化に対して同一の初期ベクタおよび暗号鍵を使用することで、これら複数ページの暗号化復号化処理において、保存されている暗号データの利用が促進される。
【0026】
[7]前記第1暗号化復号化処理と前記第2暗号化復号化処理とを並列に行う
ことを特徴とする[1]乃至[6]のいずれか1つに記載の暗号処理方法。
【0027】
上記発明では、第1暗号化復号化処理と第2暗号化復号化処理とを並列に行うことで処理時間が短縮される。
【0028】
[8]初期データを記憶する第1レジスタと、
前記第1レジスタに記憶されている初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第1暗号化復号化処理部と、
前記第1暗号化復号化処理部で行われた所定の段の演算の演算結果である中間データを保存する第2レジスタと、
前記第2レジスタに記憶されている前記中間データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力にして前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第2暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【0029】
上記発明では、第1暗号化復号化処理部は第1レジスタに記憶されている初期データを初期の入力として動作し、第2暗号化復号化処理部は第2レジスタに記憶されている中間データを初期の入力として動作する。上記演算では、入力される初期データが同一であれば、N段目の演算結果は常に同一になる。たとえば、m段目の演算結果の中間データを第2レジスタに保持しておけば、この中間データが演算の初期値と入力される第2暗号化復号化処理部は、第1暗号化復号化処理部でのm+1段目と同じ動作を初段の動作で行うことになる。そこで、1段目からの動作を第1暗号化復号化処理部が行い、これとは別にm+1段目に相当する動作を第2暗号化復号化処理部が行うことで、これらを並列動作させて全体としての処理時間を短縮することができる。
【0030】
[9]前記第2レジスタは、前記中間データの生成時の初段の演算に入力された初期データをさらに保存し、
前記第1レジスタに記憶された初期データと前記第2レジスタに記憶された初期データとを比較する比較部をさらに備え、
前記比較結果が一致することを条件に、前記第2暗号化復号化処理部を作動させる
ことを特徴とする[8]に記載の暗号処理装置。
【0031】
上記発明では、中間データの保存時の初期データと、現在の第1レジスタが記憶している初期データとが一致することを条件に、第2暗号化復号化処理部の作動が許可される。
【0032】
[10]初期ベクタと暗号鍵とを記憶する第1レジスタと、
前記第1レジスタに記憶されている初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第1暗号化復号化処理部と、
前記第1暗号化復号化処理部で行われた所定の段の演算の演算結果である暗号ベクタを保存する第2レジスタと、
前記暗号鍵と前記第2レジスタに記憶されている暗号ベクタとを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第2暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【0033】
上記発明では、第1暗号化復号化処理部は第1レジスタに記憶されている初期ベクタと暗号鍵とを初期の入力として動作し、第2暗号化復号化処理部は、先の暗号鍵と第2レジスタに記憶されている中間ベクタとを初期の入力として動作する。上記演算では、入力される初期ベクタと暗号鍵とが同一であれば、N段目の演算結果は常に同一になる。たとえば、m段目の演算結果の暗号ベクタを第2レジスタに保持しておけば、この暗号ベクタが演算の初期値として入力される第2暗号化復号化処理部は、第1暗号化復号化処理部でのm+1段目と同じ動作を初段の動作で行うことになる。そこで、1段目からの動作を第1暗号化復号化処理部が行い、これとは別にm+1段目に相当する動作を第2暗号化復号化処理部が行うことで、これらを並列動作させて全体としての処理時間を短縮することができる。
【0034】
[11]前記第2レジスタは、前記保存する暗号ベクタの生成時の初段の演算に入力された初期ベクタと暗号鍵とをさらに保存し、
前記第1レジスタに記憶された初期ベクタおよび暗号鍵と前記第2レジスタに記憶された初期ベクタおよび暗号鍵を比較する比較部を備え、
前記比較結果が一致することを条件に、前記第2暗号化復号化処理部を作動させる
ことを特徴とする[10]に記載の暗号処理装置。
【0035】
上記発明では、暗号ベクタの保存時の初期ベクタおよび暗号鍵と、現在の第1レジスタが記憶している初期ベクタおよび暗号鍵とが一致することを条件に、第2暗号化復号化処理部の作動が許可される。
【0036】
[12]前記第2暗号化復号化処理部を作動させる場合は、処理対象のデータの暗号化もしくは復号化を、前記第1暗号化復号化処理部と前記第2暗号化復号化処理部で分担して行う
ことを特徴とする[8]乃至[11]のいずれか1つに記載の暗号処理装置。
【0037】
[13]前記第1暗号化復号化処理部と前記第2暗号化復号化処理部とを並列動作させる
ことを特徴とする[12]に記載の暗号処理装置。
【0038】
上記発明では、第1暗号化復号化処理部と第2暗号化復号化処理部とを並列動作させることで処理時間が短縮される。
【発明の効果】
【0039】
本発明に係る暗号処理方法および暗号処理装置によれば、暗号強度を損ねることなく、暗号化/復号化に要する処理時間を短縮することができる。
【発明を実施するための最良の形態】
【0040】
以下、図面に基づき本発明の実施の形態を説明する。
【0041】
図1は、本発明の実施の形態に係る暗号処理装置10の回路構成を示している。暗号処理装置10は、第1暗号化符号処理部としての第1AES暗号演算部11と第1セレクタ12と第1EXOR演算部13と第1入力レジスタ14と第1出力レジスタ15と、第2暗号化符号処理部としての第2AES暗号演算部21と第2セレクタ22と第2EXOR演算部23と第2入力レジスタ24と第2出力レジスタ25とを備え、さらに、KEYレジスタ31と、IVレジスタ32と、保持レジスタ33と、比較部34と、第3セレクタ35と、全体動作を制御する制御部36とを備えている。
【0042】
第1AES暗号演算部11および第2AES暗号演算部21はAES規格に基づく所定のブロック暗号演算を行う回路であり、演算結果として暗号ベクタを出力する。KEYレジスタ31は、暗号鍵を保持するためのレジスタであり、KEYレジスタ31に保持された暗号鍵は、第1AES暗号演算部11および第2AES暗号演算部21に入力される。IVレジスタ32は、第1AES暗号演算部11に入力するイニシャルベクタIVとなる任意のデータを保持するためのレジスタである。
【0043】
第1セレクタ12は、IVレジスタ32に保持されているイニシャルベクタIVと第1AES暗号演算部11の演算結果として出力された暗号ベクタのいずれかを第1AES暗号演算部11に対して選択出力する。第1セレクタ12は初段の演算ではIVレジスタ32に保持されているイニシャルベクタIVを選択し、次段以降の演算では第1AES暗号演算部11から出力される前段の演算結果の暗号ベクタを選択するように制御される。
【0044】
第1入力レジスタ14は、第1AES暗号演算部11の出力する暗号ベクタを使用した暗号化または復号化の対象となるデータを保持するレジスタである。第1EXOR演算部13は第1入力レジスタ14の出力するデータと第1AES暗号演算部11の出力する暗号ベクタとの排他的論理和を演算する。第1出力レジスタ15は第1EXOR演算部13の演算結果を保持するレジスタである。
【0045】
保持レジスタ33は、KEYレジスタ31の出力する暗号鍵と、IVレジスタ32の出力するイニシャルベクタIVと、演算結果として第1AES暗号演算部11から出力された暗号ベクタとを保持する機能を果たす。なお、保持レジスタ33に保持された暗号ベクタを中間暗号ベクタと呼ぶことにする。比較部34は、KEYレジスタ31の出力する暗号鍵と保持レジスタ33に保持されている暗号鍵との比較と、IVレジスタ32の出力するイニシャルベクタIVと保持レジスタ33に保持されている中間暗号ベクタとの比較とを行い、その比較結果を出力する。具体的には、KEYレジスタ31の出力する暗号鍵と保持レジスタ33から出力される暗号鍵とが一致しかつIVレジスタ32の出力するイニシャルベクタIVと保持レジスタ33から出力される中間暗号ベクタとが一致するという条件が真か偽かを判断する。
【0046】
第3セレクタ35は、比較部34の比較結果が真のとき、保持レジスタ33に保持されている中間暗号ベクタを選択出力し、偽のとき第1AES暗号演算部11の出力する暗号ベクタを選択出力するセレクタである。
【0047】
第2セレクタ22は、第3セレクタ35の出力と第2AES暗号演算部21の演算結果として出力された暗号ベクタのいずれかを第2AES暗号演算部21に対して選択出力する機能を果たす。第2セレクタ22は、第2AES暗号演算部21における初段の演算では第3セレクタ35の出力を選択し、次段以降の演算では第2AES暗号演算部21から出力された前段の演算結果の暗号ベクタを選択するように制御される。
【0048】
第2入力レジスタ24は、第2AES暗号演算部21の出力する暗号ベクタを使用した暗号化または復号化の対象となるデータを保持するレジスタである。第2EXOR演算部23は第2入力レジスタ24の出力するデータと第2AES暗号演算部21の出力する暗号ベクタとの排他的論理和を演算する。第2出力レジスタ25は第2EXOR演算部23の演算結果を保持するレジスタである。
【0049】
制御部36は、暗号処理装置10の動作シーケンスを制御する機能を果たし、第1セレクタ12、第2セレクタ22の切り替え制御や保持レジスタ33の保持タイミングなどを制御する。
【0050】
KEYレジスタ31およびIVレジスタ32へのデータのセット、暗号化復号化の処理対象のデータの第1入力レジスタ14および第2入力レジスタ24に対するセット、暗号化または復号化されたデータの第1出力レジスタ15および第2出力レジスタ25からの読み出しは、当該暗号処理装置10の上位の処理部が行う。また、暗号処理装置10は比較部34での比較結果を該上位の処理部に通知する。
【0051】
次に、暗号処理装置10による暗号化/復号化の動作を説明する。
【0052】
暗号処理装置10の第1暗号化符号処理部および第2暗号化符号処理部は、入力される初期値(暗号ベクタおよび暗号鍵)が同一であれば、N段目の演算結果の暗号ベクタは常に同一になる。そこで、2N段分の暗号化復号化処理を行う際に、N段目の演算結果の暗号ベクタとそのときの暗号鍵とイニシャルベクタIVとを保持レジスタ33に保持しておき、次回以降の暗号化復号化処理において、KEYレジスタ31にセットされている暗号鍵とIVレジスタ32にセットされているイニシャルベクタIVとが保持レジスタ33に保持されている暗号鍵およびイニシャルベクタと一致することを条件に、当該暗号鍵とイニシャルベクタIVとを初期値として1からN段目までの処理を第1暗号化符号処理部に行わせ、これと並列に、先の暗号鍵と保持レジスタ33に保持されている中間暗号ベクタを初期値としてN+1段目から2N段目までの処理を第2暗号化符号処理部に行わせるようになっている。以下詳細な動作を説明する。
【0053】
図2は、暗号処理装置10の動作の流れを示している。最初に外部の処理部からKEYレジスタ31への暗号鍵のセットおよびIVレジスタ32へのイニシャルベクタIVのセットが行われる(ステップS101)。その後、処理部から起動の指示を受けると、暗号処理装置10の比較部34は、KEYレジスタ31の保持している暗号鍵およびIVレジスタ32の保持しているイニシャルベクタIVと、保持レジスタ33の保持している暗号鍵およびイニシャルベクタとが一致するか否かを確認する(ステップS102)。
【0054】
KEYレジスタ31の保持している暗号鍵と保持レジスタ33の保持している暗号鍵とが不一致、もしくはIVレジスタ32の保持しているイニシャルベクタIVと保持レジスタ33の保持しているイニシャルベクタとが不一致の場合(ステップS102;N)、暗号処理装置10は、今回の暗号化復号化処理が通常動作になることを処理部に通知する。また、第1セレクタ12によりIVレジスタ32の出力を選択し、KEYレジスタ31の保持している暗号鍵とIVレジスタ32の保持しているイニシャルベクタIVとを第1AES暗号演算部11に入力する(ステップS103)。
【0055】
なお、通常動作の通知を受けた処理部は、処理対象のデータの前半部については、第1入力レジスタ14に順次データをセットすると共に暗号化もしくは復号化された処理後のデータを第1出力レジスタ15から順次読み出すように動作する。また、前半部に対する処理が終了した後、処理対象の後半部のデータを第2入力レジスタ24に順次セットし、暗号化もしくは復号化された処理後のデータを第2出力レジスタ25から順次読み出すように動作する。
【0056】
第1AES暗号演算部11は、KEYレジスタ31の保持している暗号鍵とIVレジスタ32の保持しているイニシャルベクタIVとが入力された状態の下で初段の演算を行い(ステップS104)、第1EXOR演算部13は、該演算結果として第1AES暗号演算部11から出力された暗号ベクタと第1入力レジスタ14に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算する(ステップS105)。第1EXOR演算部13の演算結果の出力は第1出力レジスタ15に保持され、処理部により読み出される。
【0057】
次段以降は、第1セレクタ12を切り替えて、前段の演算で第1AES暗号演算部11から出力された暗号ベクタとKEYレジスタ31の保持している暗号鍵とを第1AES暗号演算部11に入力して、同様の処理を繰り返す(ステップS106;N、S104、S105)。なお、各段では、所定のビット数(たとえば、128ビット)の暗号化もしくは復号化処理が行われる。該処理を複数段繰り返し行うことで、長いビット長のデータが処理される。
【0058】
このようにして、処理対象のデータの先頭から半分まで(前半部)に対する暗号化もしくは復号化処理が終了したら(ステップS106;Y)、その時点で第1AES暗号演算部11から出力されている暗号ベクタを、第2セレクタ22を介して第2AES暗号演算部21に入力する。これと同時に、第1AES暗号演算部11から出力されている暗号ベクタとKEYレジスタ31から出力されている暗号鍵とIVレジスタ32から出力されているイニシャルベクタIVとを保持レジスタ33に保持する(ステップS107)。
【0059】
第2AES暗号演算部21は、前半部の最後の演算で第1AES暗号演算部11から出力された暗号ベクタとKEYレジスタ31に保持されている暗号鍵とを入力にして演算を実行し(ステップS108)、第2EXOR演算部23は第2AES暗号演算部21から出力された暗号ベクタと第2入力レジスタ24に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算する(ステップS109)。第2EXOR演算部23の演算結果の出力は第2出力レジスタ25に保持され、処理部によって読み出される。
【0060】
次段以降は、第2セレクタ22を切り替えて、前段の演算で第2AES暗号演算部21から出力された暗号ベクタとKEYレジスタ31の保持している暗号鍵とを第2AES暗号演算部21に入力して、同様の処理が繰り返される(ステップS110;N、S108、S109)。そして、処理対象のデータの全部に対する暗号化もしくは復号化処理が終了したら(ステップS110;Y)、全処理の終了となる(エンド)。
【0061】
比較部34での比較の結果、KEYレジスタ31の保持している暗号鍵と保持レジスタ33の保持している暗号鍵が一致しかつIVレジスタ32の保持しているイニシャルベクタIVと保持レジスタ33の保持しているイニシャルベクタとが一致する場合は(ステップS102;Y)、暗号処理装置10は、今回の暗号化復号化処理が並列動作になることを処理部に通知する。
【0062】
また、第1セレクタ12によりIVレジスタ32の出力を選択し、KEYレジスタ31の保持している暗号鍵とIVレジスタ32の保持しているイニシャルベクタIVとを第1AES暗号演算部11に入力する(ステップS111)。また、これと同時に、保持レジスタ33の保持している中間暗号ベクタを選択するように第3セレクタ35を切り替え、かつ第3セレクタ35の出力を選択するように第2セレクタ22を切り替える。これにより、KEYレジスタ31の保持する暗号鍵と保持レジスタ33の保持する中間暗号ベクタとが第2AES暗号演算部21に入力される(ステップS115)。
【0063】
なお、並列動作の通知を受けた場合、処理部は、処理対象のデータの前半部を第1入力レジスタ14に順次セットし暗号化もしくは復号化された処理後のデータを第1出力レジスタ15から順次読み出す動作と、処理対象のデータの後半部を第2入力レジスタ24に順次セットし暗号化もしくは復号化された処理後のデータを第2出力レジスタ25から順次読み出す動作とを並列に実行する。
【0064】
第1AES暗号演算部11はKEYレジスタ31の保持している暗号鍵とIVレジスタ32の保持しているイニシャルベクタIVとが入力された状態の下で初段の演算を行い(ステップS112)、第1EXOR演算部13は第1AES暗号演算部11から出力された暗号ベクタと第1入力レジスタ14に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算し(ステップS113)、第1出力レジスタ15はその演算結果を保持する。次段以降は、第1セレクタ12を切り替えて、前段の演算で第1AES暗号演算部11から出力された暗号ベクタとKEYレジスタ31の保持している暗号鍵とを第1AES暗号演算部11に入力するようにして同様の処理を、処理対象のデータの前半部が終了するまで繰り返す(ステップS114;N、S112、S113)。
【0065】
上記の動作と並列に第2AES暗号演算部21の側では以下の動作が行われる。第2AES暗号演算部21は、KEYレジスタ31の保持する暗号鍵と保持レジスタ33の保持する中間暗号ベクタとが入力された状態の下で初段の演算を行い(ステップS116)、第2EXOR演算部23は第2AES暗号演算部21から出力された暗号ベクタと第2入力レジスタ24に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算し(ステップS117)、第2出力レジスタ25はその演算結果を保持する。
【0066】
次段以降は、第2セレクタ22を切り替えて、前段の演算で第2AES暗号演算部21から出力された暗号ベクタとKEYレジスタ31の保持している暗号鍵とを第2AES暗号演算部21に入力し、同様の処理を、処理対象のデータの後半部が終了するまで繰り返す(ステップS118;N、S116、S117)。
【0067】
このようにして処理対象のデータの前半部に対する処理と後半部に対する処理とが並列に処理され、両方の処理が終了すると全処理の終了となる(エンド)。
【0068】
図3は、並列動作での暗号化プロセスを示し、図4は並列動作での復号化プロセスを示し、図5は並列動作での暗号化プロセスのタイミングチャートを示している。この例では、処理対象のデータは平文1から平文4で構成される。第1AES暗号演算部11には初段の入力として暗号鍵(KEY)とイニシャルベクタIVが入力され、第2AES暗号演算部21には初段の入力として暗号鍵(KEY)と中間暗号ベクタMEV1が入力されている。
【0069】
並列動作の暗号化プロセスでは、前半部の平文1と平文2が第1AES暗号演算部11側で順次暗号化処理され、これと並列に、後半部の平文3と平文4が第2AES暗号演算部21側で順次暗号化処理される。このため、通常動作では4段分の動作時間を要するところ、初段の動作P1と2段目の動作P2の2段分の動作時間で全体の処理が終了する。
【0070】
同様に並列動作の復号化プロセスでは、前半部の暗号文1と暗号文2が第1AES暗号演算部11側で順次復号化処理され、これと並列に、後半部の暗号文3と暗号文4が第2AES暗号演算部21側で順次復号化処理される。このため、通常動作では4段分の動作時間を要するところ、初段の動作P1と2段目の動作P2との2段分の動作時間で全体の処理が終了する。
【0071】
このように、暗号鍵とイニシャルベクタIVと中間暗号ベクタとを保持レジスタ33に保持しておくことで、次回以降の暗号化復号化処理でKEYレジスタ31に保持されている暗号鍵とIVレジスタ32に保持されているイニシャルベクタIVとが保持レジスタ33に保持されているそれらと一致する場合は、保持レジスタ33に保持されている中間暗号ベクタを使用して暗号化もしくは復号化の後半部を前半部の処理と並列に動作させることができるので、全体の処理時間が通常動作の場合の約半分に短縮される。
【0072】
特に、画像データを扱う複写機や複合機などの画像処理装置において、複数ページの画像を暗号化もしくは復号化する場合に、それら複数ページに対して同一の暗号鍵とイニシャルベクタIVとを使用すれば、複数のページに対して中間暗号ベクタを利用して画像データの暗号化や復号化を並列動作によって行うことができ、暗号化、復号化の処理時間を短縮することができる。たとえば、1ページ目は通常動作で暗号化し、その途中で中間暗号ベクタを保持する。そして2ページ目以降は保持されている中間暗号ベクタを利用して並列動作で暗号化を行う。さらに、コピー動作では暗号化の後、すぐに復号化されるので、復号化処理では1ページ目から中間暗号ベクタを利用して並列動作を行うことも可能になる。
【0073】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【0074】
たとえば、実施の形態では、並列動作において、処理対象のデータを2分の1ずつ均等に分けて処理し最適化したが、不均等に分割した場合でも、そのわけ方に応じた処理時間の短縮効果を得ることができ、必ずしも均等に分ける必要はない。
【0075】
また、実施の形態では、2つの暗号化復号化処理部を設けてこれらを並列動作させるようにしたが、3つ、4つ、8つなど、より多くの暗号化復号化処理部を設けて並列動作させてもよい。たとえば、4つの暗号化復号化処理部を設ける場合には、処理対象のデータの1/4が終了した時点の暗号ベクタと、2/4が終了した時点の暗号ベクタと、3/4が終了した時点の暗号ベクタとを保持しておき、その後は、これら保持した3つの暗号ベクタとイニシャルベクタIVとを用いて4組の暗号化復号化処理部を並列動作させれば、処理時間を通常動作の約4分の1に短縮することができる。
【0076】
さらに、実施の形態では、KEYレジスタ31に保持されている暗号鍵と保持レジスタ33に保持されている暗号鍵とが一致し、かつイニシャルベクタIVに保持されているイニシャルベクタIVと保持レジスタ33に保持されているイニシャルベクタとが一致することを条件に保持レジスタ33に保持されている中間暗号ベクタを使用した並列動作を行うようにしたが、たとえば、暗号鍵およびイニシャルベクタが固定的に変化しないことが既知の場合には、先の条件を確認することなしに中間暗号ベクタを利用した並列動作を行うように構成されてもよい。
【0077】
このほか、実施の形態では、通常動作の場合に第2AES暗号演算部21を利用して後半部を処理するようにしたが、後半部についてもそのまま第1AES暗号演算部11を使用して処理するように構成されてもよい。
【0078】
また、AES暗号演算部は、入力に対して出力が一義的に定まる演算処理であれば、他の種類の演算を行う演算部であってもよい。該演算部への入力は、暗号鍵とイニシャルベクタIVもしくは暗号ベクタとを一組としたものに限定されず、たとえば、初段は初期データを入力して演算し、次段以降は前段の演算結果の中間データを入力して演算を行う演算部であってもかまわない。この場合、KEYレジスタ31とIVレジスタ32とに代えて初期データを保持するための初期レジスタを設け、保持レジスタ33は初期データと中間データとを保持すればよい。また、比較部34は、初期レジスタに保持されている初期データと保持レジスタ33に保持されている値とを比較すればよい。
【図面の簡単な説明】
【0079】
【図1】本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
【図2】本発明の実施の形態に暗号処理装置の動作を示す流れ図である。
【図3】本発明の実施の形態に係る暗号処理装置1が行う並列動作の暗号化プロセスを示す説明図である。
【図4】本発明の実施の形態に係る暗号処理装置1が行う並列動作の復号化プロセスを示す説明図である。
【図5】本発明の実施の形態に係る暗号処理装置1が行う並列動作での暗号化プロセスの動作タイミングを示す波形図である。
【図6】従来のOFBモードの暗号回路の構成例を示すブロック図である。
【図7】図6に示す暗号回路での暗号化プロセスを示す説明図である。
【図8】図6に示す暗号回路での復号化プロセスを示す説明図である。
【図9】図6に示す暗号回路での暗号化プロセスの動作タイミングを示す波形図である。
【符号の説明】
【0080】
10…暗号処理装置
11…第1AES暗号演算部
12…第1セレクタ
13…第1EXOR演算部
14…第1入力レジスタ
15…第1出力レジスタ
21…第2AES暗号演算部
22…第2セレクタ
23…第2EXOR演算部
24…第2入力レジスタ
25…第2出力レジスタ
31…KEYレジスタ
32…IVレジスタ
33…保持レジスタ
34…比較部
35…第3セレクタ
36…制御部
80…暗号回路
81…AES暗号演算部
82…KEYレジスタ
83…IVレジスタ
84…セレクタ
85…入力レジスタ
86…EXOR演算部
87…出力レジスタ
IV…イニシャルベクタ

【特許請求の範囲】
【請求項1】
初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、
次回以降の暗号化復号化処理を、前記初期データを初段の演算の入力に使用する第1暗号化復号化処理と前記保存した中間データを初段の演算の入力に使用する第2暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【請求項2】
前記保存した中間データと共に前記初期データをさらに保存しておき、
次回以降の暗号化複合化処理を、前記保存した初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、前記第1暗号化復号化処理と前記第2暗号化復号化処理に分けて行う
ことを特徴とする請求項1に記載の暗号処理方法。
【請求項3】
複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期データを使用する
ことを特徴とする請求項1または2に記載の暗号処理方法。
【請求項4】
初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に、各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、
次回以降の暗号化復号化処理を、前記初期ベクタと前記暗号鍵とを初段の演算の入力に使用する第1暗号化復号化処理と、前記暗号鍵と前記保存した暗号ベクタとを初段の演算の入力に使用する第2暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【請求項5】
前記所定の段の演算結果である暗号ベクタと共に前記初期ベクタをさらに保存しておき、
次回以降の暗号化復号化処理を、前記保存した初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵とが一致することを条件に、前記第1暗号化復号化処理と前記第2暗号化復号化処理に分けて行う
ことを特徴とする請求項4に記載の暗号処理方法。
【請求項6】
複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期ベクタおよび暗号鍵を使用する
ことを特徴とする請求項4または5に記載の暗号処理方法。
【請求項7】
前記第1暗号化復号化処理と前記第2暗号化復号化処理とを並列に行う
ことを特徴とする請求項1乃至6のいずれか1つに記載の暗号処理方法。
【請求項8】
初期データを記憶する第1レジスタと、
前記第1レジスタに記憶されている初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第1暗号化復号化処理部と、
前記第1暗号化復号化処理部で行われた所定の段の演算の演算結果である中間データを保存する第2レジスタと、
前記第2レジスタに記憶されている前記中間データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力にして前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第2暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【請求項9】
前記第2レジスタは、前記中間データの生成時の初段の演算に入力された初期データをさらに保存し、
前記第1レジスタに記憶された初期データと前記第2レジスタに記憶された初期データとを比較する比較部をさらに備え、
前記比較結果が一致することを条件に、前記第2暗号化復号化処理部を作動させる
ことを特徴とする請求項8に記載の暗号処理装置。
【請求項10】
初期ベクタと暗号鍵とを記憶する第1レジスタと、
前記第1レジスタに記憶されている初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第1暗号化復号化処理部と、
前記第1暗号化復号化処理部で行われた所定の段の演算の演算結果である暗号ベクタを保存する第2レジスタと、
前記暗号鍵と前記第2レジスタに記憶されている暗号ベクタとを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第2暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【請求項11】
前記第2レジスタは、前記保存する暗号ベクタの生成時の初段の演算に入力された初期ベクタと暗号鍵とをさらに保存し、
前記第1レジスタに記憶された初期ベクタおよび暗号鍵と前記第2レジスタに記憶された初期ベクタおよび暗号鍵を比較する比較部を備え、
前記比較結果が一致することを条件に、前記第2暗号化復号化処理部を作動させる
ことを特徴とする請求項10に記載の暗号処理装置。
【請求項12】
前記第2暗号化復号化処理部を作動させる場合は、処理対象のデータの暗号化もしくは復号化を、前記第1暗号化復号化処理部と前記第2暗号化復号化処理部で分担して行う
ことを特徴とする請求項8乃至11のいずれか1つに記載の暗号処理装置。
【請求項13】
前記第1暗号化復号化処理部と前記第2暗号化復号化処理部とを並列動作させる
ことを特徴とする請求項12に記載の暗号処理装置。

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