(57)【要約】【課題】暗号強度を損ねることなく暗号化／復号化の処理時間を短縮することのできる暗号処理方法および暗号処理装置を提供する。【解決手段】暗号化処理が半分終了した時点で第１ＡＥＳ暗号演算部１１から出力された暗号ベクタとＫＥＹレジスタ３１に保持された暗号鍵とＩＶレジスタ３２に保持されたイニシャルベクタＩＶとを保持レジスタ３３に保存しておき、次回以降の暗号化処理でＫＥＹレジスタ３１に保存された暗号鍵とＩＶレジスタ３２に保存されたイニシャルベクタＩＶとが保持レジスタ３３に保存されたものと一致する場合は、前半部を第１ＡＥＳ暗号演算部１１側で暗号化し、これと並列に後半部を、保持レジスタ３３に保持されている暗号ベクタを利用して第２ＡＥＳ暗号演算部２１で暗号化する。【選択図】図１
2008151890.tif 000002
【特許請求の範囲】
【請求項１】
初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、
次回以降の暗号化復号化処理を、前記初期データを初段の演算の入力に使用する第１暗号化復号化処理と前記保存した中間データを初段の演算の入力に使用する第２暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【請求項２】
前記保存した中間データと共に前記初期データをさらに保存しておき、
次回以降の暗号化複合化処理を、前記保存した初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、前記第１暗号化復号化処理と前記第２暗号化復号化処理に分けて行う
ことを特徴とする請求項１に記載の暗号処理方法。
【請求項３】
複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期データを使用する
ことを特徴とする請求項１または２に記載の暗号処理方法。
【請求項４】
初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に、各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、
次回以降の暗号化復号化処理を、前記初期ベクタと前記暗号鍵とを初段の演算の入力に使用する第１暗号化復号化処理と、前記暗号鍵と前記保存した暗号ベクタとを初段の演算の入力に使用する第２暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【請求項５】
前記所定の段の演算結果である暗号ベクタと共に前記初期ベクタをさらに保存しておき、
次回以降の暗号化復号化処理を、前記保存した初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵とが一致することを条件に、前記第１暗号化復号化処理と前記第２暗号化復号化処理に分けて行う
ことを特徴とする請求項４に記載の暗号処理方法。
【請求項６】
複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期ベクタおよび暗号鍵を使用する
ことを特徴とする請求項４または５に記載の暗号処理方法。
【請求項７】
前記第１暗号化復号化処理と前記第２暗号化復号化処理とを並列に行う
ことを特徴とする請求項１乃至６のいずれか１つに記載の暗号処理方法。
【請求項８】
初期データを記憶する第１レジスタと、
前記第１レジスタに記憶されている初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第１暗号化復号化処理部と、
前記第１暗号化復号化処理部で行われた所定の段の演算の演算結果である中間データを保存する第２レジスタと、
前記第２レジスタに記憶されている前記中間データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力にして前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第２暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【請求項９】
前記第２レジスタは、前記中間データの生成時の初段の演算に入力された初期データをさらに保存し、
前記第１レジスタに記憶された初期データと前記第２レジスタに記憶された初期データとを比較する比較部をさらに備え、
前記比較結果が一致することを条件に、前記第２暗号化復号化処理部を作動させる
ことを特徴とする請求項８に記載の暗号処理装置。
【請求項１０】
初期ベクタと暗号鍵とを記憶する第１レジスタと、
前記第１レジスタに記憶されている初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第１暗号化復号化処理部と、
前記第１暗号化復号化処理部で行われた所定の段の演算の演算結果である暗号ベクタを保存する第２レジスタと、
前記暗号鍵と前記第２レジスタに記憶されている暗号ベクタとを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第２暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【請求項１１】
前記第２レジスタは、前記保存する暗号ベクタの生成時の初段の演算に入力された初期ベクタと暗号鍵とをさらに保存し、
前記第１レジスタに記憶された初期ベクタおよび暗号鍵と前記第２レジスタに記憶された初期ベクタおよび暗号鍵を比較する比較部を備え、
前記比較結果が一致することを条件に、前記第２暗号化復号化処理部を作動させる
ことを特徴とする請求項１０に記載の暗号処理装置。
【請求項１２】
前記第２暗号化復号化処理部を作動させる場合は、処理対象のデータの暗号化もしくは復号化を、前記第１暗号化復号化処理部と前記第２暗号化復号化処理部で分担して行う
ことを特徴とする請求項８乃至１１のいずれか１つに記載の暗号処理装置。
【請求項１３】
前記第１暗号化復号化処理部と前記第２暗号化復号化処理部とを並列動作させる
ことを特徴とする請求項１２に記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文の暗号化もしくは暗号文の復号化を行う暗号処理方法および暗号処理装置に関する。
【背景技術】
【０００２】
一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、ＤＥＳ（データ標準暗号化方式、Data Encryption Standard）からＡＥＳ（次世代標準暗号化方式、Advanced Encryption Standard）に移行しており、暗号強度が強くなってきている。また、ＡＥＳ暗号方式には何種類かのモードがあり、目的や使用方法により選択される。
【０００３】
たとえば、図６はＯＦＢ(Output FeedBack)モードの暗号回路８０の構成例を示している。暗号回路８０は、入力値に所定の演算を施して暗号ベクタを出力するＡＥＳ暗号演算部８１と、ＡＥＳ暗号演算部８１に入力する暗号鍵を保持するためのＫＥＹレジスタ８２と、ＡＥＳ暗号演算部８１に入力する初期の暗号ベクタ（イニシャルベクタ）を保持するためのＩＶレジスタ８３と、ＡＥＳ暗号演算部８１の演算結果として出力される暗号ベクタとＩＶレジスタ８３に保持されているイニシャルベクタのいずれかを選択してＡＥＳ暗号演算部８１の入力に与えるセレクタ８４と、暗号化または復号化の対象となるデータを保持する入力レジスタ８５と、入力レジスタ８５の出力とＡＥＳ暗号演算部８１の出力との排他的論理和を演算するＥＸＯＲ演算部８６と、ＥＸＯＲ演算部８６の出力（暗号化または復号化の結果として生成されたデータ）を保持する出力レジスタ８７とを備えている。
【０００４】
暗号化および復号化のプロセスの初段では、ＫＥＹレジスタ８２の保持している暗号鍵とＩＶレジスタ８３の保持しているイニシャルベクタＩＶとがＡＥＳ暗号演算部８１に入力され、ＡＥＳ暗号演算部８１はその演算結果として暗号ベクタを出力する。ＥＸＯＲ演算部８６はこの暗号ベクタと入力レジスタ８５に保持されている暗号化または復号化の対象となるデータとの排他的論理和演算を行い、その結果が暗号化または復号化の結果のデータとして出力レジスタ８７に保持される。
【０００５】
次段以降は、前段の演算でＡＥＳ暗号演算部８１の出力した暗号ベクタがＡＥＳ暗号演算部８１の入力に戻され、ＡＥＳ暗号演算部８１は該暗号ベクタとＫＥＹレジスタ８２に保持されている暗号鍵とを入力にして演算を行う。ＥＸＯＲ演算部８６はＡＥＳ暗号演算部８１の出力する演算結果の暗号ベクタと入力レジスタ８５に保持されている暗号化または復号化の対象となるデータとの排他的論理和演算を行い、その演算結果は暗号化または復号化されたデータとして出力レジスタ８７に保持される。
【０００６】
図７は暗号回路８０での暗号化プロセスを示し、図８は復号化のプロセスを示し、図９は暗号化プロセスでのタイミングチャートを示している。暗号化プロセスを例に説明すると、初段Ｐ１の処理では、ＡＥＳ暗号演算部８１はイニシャルベクタＩＶと暗号鍵とを入力とし、その演算結果として暗号ベクタＥＶ１を出力し、ＥＸＯＲ演算部８６はこの暗号ベクタＥＶ１と入力レジスタ８５に保持された平文１との排他的論理和をとって暗号文１を出力する。２段目Ｐ２の処理では、ＡＥＳ暗号演算部８１は暗号鍵と初段で生成した暗号ベクタＥＶ１とを入力として暗号ベクタＥＶ２を出力し、ＥＸＯＲ演算部８６は暗号ベクタＥＶ２と平文２との排他的論理和をとって暗号文２を出力する。３段目Ｐ３の処理では、ＡＥＳ暗号演算部８１は暗号鍵と前段（２段目）で生成した暗号ベクタＥＶ２とを入力として暗号ベクタＥＶ３を出力し、ＥＸＯＲ演算部８６は暗号ベクタＥＶ３と平文３との排他的論理和をとって暗号文３を出力する。以後の段においても同様の動作が繰り返し行われる。
【０００７】
このような暗号化／復号化の処理では各段は固定長（たとえば、１２８ビット）のデータの暗号化／復号化を行い、長いビット長の平文や暗号文を処理するためには多数の段数を時系列に処理されるので、処理時間が長くなってしまう。暗号化の処理時間短縮技術としては、たとえば、入力データのデータ長と暗号化ブロックへのキー長とが異なる場合に、必要なビット数だけの演算を行うようにすることで、ストリーミングデータなどに対する暗号化／復号化の処理時間を短縮したものがある（たとえば、特許文献１参照。）。
【０００８】
【特許文献１】特開２００４−４５６４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記の処理時間短縮技術は、文字単位に暗号化するなどの特殊な場合を想定したものであり、暗号強度を損ねることなく一般のデータに対しても有用性な処理時間の短縮技術が望まれる。
【００１０】
本発明は、上記の観点からなされたものであり、暗号強度を損ねることなく暗号化／復号化の処理時間を短縮することのできる暗号処理方法および暗号処理装置を提供することを目的としている。
【課題を解決するための手段】
【００１１】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００１２】
［１］初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、
次回以降の暗号化復号化処理を、前記初期データを初段の演算の入力に使用する第１暗号化復号化処理と前記保存した中間データを初段の演算の入力に使用する第２暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【００１３】
上記発明では、暗号化復号化処理の途中の所定の段の演算結果である中間データを保存しておき、次回以降の暗号化復号化処理を、初期データを初段の演算の入力とする第１暗号化復号化処理と、保存した中間データを初段の演算の入力とする第２暗号化復号化処理に分けて行う。
【００１４】
上記演算では、入力される初期データが同一であれば、Ｎ段目の演算結果は常に同一になる。たとえば、ｍ段目の演算結果の中間データを保持しておけば、この中間データを演算の初期値に入力することで、ｍ＋１段目と同じ動作を初段の動作で行わせることができる。そこで、１段目からの動作を第１暗号化復号化処理に行わせ、これとは別にｍ＋１段目に相当する動作を初段の動作として第２暗号化復号化処理に行わせることで、これらを並列動作させて全体としての処理時間を短縮することができる。
【００１５】
［２］前記保存した中間データと共に前記初期データをさらに保存しておき、
次回以降の暗号化複合化処理を、前記保存した初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、前記第１暗号化復号化処理と前記第２暗号化復号化処理に分けて行う
ことを特徴とする［１］に記載の暗号処理方法。
【００１６】
上記発明では、中間データの保存時の初期データと当該暗号化復号化処理に対して与えられた初期データとが一致することを条件に、中間データを利用した第２暗号化複合化処理が実行される。初期データが同一であることはＮ段目の演算結果が同一であることを保障する条件となるので、それが確認された場合だけ、中間データの使用を許可している。
【００１７】
［３］複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期データを使用する
ことを特徴とする［１］または［２］に記載の暗号処理方法。
【００１８】
上記発明では、複数ページの画像の暗号化もしくは復号化に対して同一の初期データを使用することで、これら複数ページの暗号化復号化処理において中間データの利用が促進される。
【００１９】
［４］初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に、各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、
次回以降の暗号化復号化処理を、前記初期ベクタと前記暗号鍵とを初段の演算の入力に使用する第１暗号化復号化処理と、前記暗号鍵と前記保存した暗号ベクタとを初段の演算の入力に使用する第２暗号化復号化処理に分けて行う
ことを特徴とする暗号処理方法。
【００２０】
上記発明では、暗号化復号化処理の途中の所定の段の演算結果である暗号ベクタを保存しておき、次回以降の暗号化復号化処理を、初期ベクタと暗号鍵とを初段の演算の入力とする第１暗号化復号化処理と、該暗号鍵と保存した中間ベクタとを初段の演算の入力とする第２暗号化復号化処理に分けて行う。
【００２１】
入力される初期ベクタおよび暗号鍵が同一であれば、Ｎ段目の演算結果の暗号ベクタは常に同一になる。たとえば、ｍ段目の演算結果の暗号ベクタを保持しておけば、この暗号ベクタと先の暗号鍵とを演算の初期値に入力することで、ｍ＋１段目と同じ動作を初段の動作で行わせることができる。そこで、１段目からの動作を第１暗号化復号化処理に行わせ、これとは別にｍ＋１段目に相当する動作を初段の動作として第２暗号化復号化処理に行わせることで、これらを並列動作させて全体としての処理時間を短縮することができる。
【００２２】
［５］前記所定の段の演算結果である暗号ベクタと共に前記初期ベクタをさらに保存しておき、
次回以降の暗号化復号化処理を、前記保存した初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵とが一致することを条件に、前記第１暗号化復号化処理と前記第２暗号化復号化処理に分けて行う
ことを特徴とする［４］に記載の暗号処理方法。
【００２３】
上記発明では、暗号ベクタの保存時の初期ベクタおよび暗号鍵と当該暗号化復号化処理に対して与えられた初期ベクタおよび暗号鍵が一致することを条件に、保存されている暗号データを利用した第２暗号化複合化処理が実行される。初期ベクタと暗号鍵とが同一であることはＮ段目の演算結果が同一であることを保障する条件となるので、それが確認された場合だけ、保存されている暗号ベクタの使用を許可している。
【００２４】
［６］複数ページの画像を暗号化もしくは復号化する場合、前記複数ページに対して同一の初期ベクタおよび暗号鍵を使用する
ことを特徴とする［４］または［５］に記載の暗号処理方法。
【００２５】
上記発明では、複数ページの画像の暗号化もしくは復号化に対して同一の初期ベクタおよび暗号鍵を使用することで、これら複数ページの暗号化復号化処理において、保存されている暗号データの利用が促進される。
【００２６】
［７］前記第１暗号化復号化処理と前記第２暗号化復号化処理とを並列に行う
ことを特徴とする［１］乃至［６］のいずれか１つに記載の暗号処理方法。
【００２７】
上記発明では、第１暗号化復号化処理と第２暗号化復号化処理とを並列に行うことで処理時間が短縮される。
【００２８】
［８］初期データを記憶する第１レジスタと、
前記第１レジスタに記憶されている初期データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力に戻して前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第１暗号化復号化処理部と、
前記第１暗号化復号化処理部で行われた所定の段の演算の演算結果である中間データを保存する第２レジスタと、
前記第２レジスタに記憶されている前記中間データを入力にして初段の演算を行い、次段以降は前段の演算結果である中間データを入力にして前記演算を行うと共に各段の演算結果の中間データを使用して処理対象のデータの暗号化もしくは復号化を行う第２暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【００２９】
上記発明では、第１暗号化復号化処理部は第１レジスタに記憶されている初期データを初期の入力として動作し、第２暗号化復号化処理部は第２レジスタに記憶されている中間データを初期の入力として動作する。上記演算では、入力される初期データが同一であれば、Ｎ段目の演算結果は常に同一になる。たとえば、ｍ段目の演算結果の中間データを第２レジスタに保持しておけば、この中間データが演算の初期値と入力される第２暗号化復号化処理部は、第１暗号化復号化処理部でのｍ＋１段目と同じ動作を初段の動作で行うことになる。そこで、１段目からの動作を第１暗号化復号化処理部が行い、これとは別にｍ＋１段目に相当する動作を第２暗号化復号化処理部が行うことで、これらを並列動作させて全体としての処理時間を短縮することができる。
【００３０】
［９］前記第２レジスタは、前記中間データの生成時の初段の演算に入力された初期データをさらに保存し、
前記第１レジスタに記憶された初期データと前記第２レジスタに記憶された初期データとを比較する比較部をさらに備え、
前記比較結果が一致することを条件に、前記第２暗号化復号化処理部を作動させる
ことを特徴とする［８］に記載の暗号処理装置。
【００３１】
上記発明では、中間データの保存時の初期データと、現在の第１レジスタが記憶している初期データとが一致することを条件に、第２暗号化復号化処理部の作動が許可される。
【００３２】
［１０］初期ベクタと暗号鍵とを記憶する第１レジスタと、
前記第１レジスタに記憶されている初期ベクタと暗号鍵とを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第１暗号化復号化処理部と、
前記第１暗号化復号化処理部で行われた所定の段の演算の演算結果である暗号ベクタを保存する第２レジスタと、
前記暗号鍵と前記第２レジスタに記憶されている暗号ベクタとを入力にして初段の演算を行い、次段以降は前記暗号鍵と前段の演算結果である暗号ベクタとを入力にして前記演算を行うと共に各段の演算結果の暗号ベクタを使用して処理対象のデータの暗号化もしくは復号化を行う第２暗号化復号化処理部と
を有する
ことを特徴とする暗号処理装置。
【００３３】
上記発明では、第１暗号化復号化処理部は第１レジスタに記憶されている初期ベクタと暗号鍵とを初期の入力として動作し、第２暗号化復号化処理部は、先の暗号鍵と第２レジスタに記憶されている中間ベクタとを初期の入力として動作する。上記演算では、入力される初期ベクタと暗号鍵とが同一であれば、Ｎ段目の演算結果は常に同一になる。たとえば、ｍ段目の演算結果の暗号ベクタを第２レジスタに保持しておけば、この暗号ベクタが演算の初期値として入力される第２暗号化復号化処理部は、第１暗号化復号化処理部でのｍ＋１段目と同じ動作を初段の動作で行うことになる。そこで、１段目からの動作を第１暗号化復号化処理部が行い、これとは別にｍ＋１段目に相当する動作を第２暗号化復号化処理部が行うことで、これらを並列動作させて全体としての処理時間を短縮することができる。
【００３４】
［１１］前記第２レジスタは、前記保存する暗号ベクタの生成時の初段の演算に入力された初期ベクタと暗号鍵とをさらに保存し、
前記第１レジスタに記憶された初期ベクタおよび暗号鍵と前記第２レジスタに記憶された初期ベクタおよび暗号鍵を比較する比較部を備え、
前記比較結果が一致することを条件に、前記第２暗号化復号化処理部を作動させる
ことを特徴とする［１０］に記載の暗号処理装置。
【００３５】
上記発明では、暗号ベクタの保存時の初期ベクタおよび暗号鍵と、現在の第１レジスタが記憶している初期ベクタおよび暗号鍵とが一致することを条件に、第２暗号化復号化処理部の作動が許可される。
【００３６】
［１２］前記第２暗号化復号化処理部を作動させる場合は、処理対象のデータの暗号化もしくは復号化を、前記第１暗号化復号化処理部と前記第２暗号化復号化処理部で分担して行う
ことを特徴とする［８］乃至［１１］のいずれか１つに記載の暗号処理装置。
【００３７】
［１３］前記第１暗号化復号化処理部と前記第２暗号化復号化処理部とを並列動作させる
ことを特徴とする［１２］に記載の暗号処理装置。
【００３８】
上記発明では、第１暗号化復号化処理部と第２暗号化復号化処理部とを並列動作させることで処理時間が短縮される。
【発明の効果】
【００３９】
本発明に係る暗号処理方法および暗号処理装置によれば、暗号強度を損ねることなく、暗号化／復号化に要する処理時間を短縮することができる。
【発明を実施するための最良の形態】
【００４０】
以下、図面に基づき本発明の実施の形態を説明する。
【００４１】
図１は、本発明の実施の形態に係る暗号処理装置１０の回路構成を示している。暗号処理装置１０は、第１暗号化符号処理部としての第１ＡＥＳ暗号演算部１１と第１セレクタ１２と第１ＥＸＯＲ演算部１３と第１入力レジスタ１４と第１出力レジスタ１５と、第２暗号化符号処理部としての第２ＡＥＳ暗号演算部２１と第２セレクタ２２と第２ＥＸＯＲ演算部２３と第２入力レジスタ２４と第２出力レジスタ２５とを備え、さらに、ＫＥＹレジスタ３１と、ＩＶレジスタ３２と、保持レジスタ３３と、比較部３４と、第３セレクタ３５と、全体動作を制御する制御部３６とを備えている。
【００４２】
第１ＡＥＳ暗号演算部１１および第２ＡＥＳ暗号演算部２１はＡＥＳ規格に基づく所定のブロック暗号演算を行う回路であり、演算結果として暗号ベクタを出力する。ＫＥＹレジスタ３１は、暗号鍵を保持するためのレジスタであり、ＫＥＹレジスタ３１に保持された暗号鍵は、第１ＡＥＳ暗号演算部１１および第２ＡＥＳ暗号演算部２１に入力される。ＩＶレジスタ３２は、第１ＡＥＳ暗号演算部１１に入力するイニシャルベクタＩＶとなる任意のデータを保持するためのレジスタである。
【００４３】
第１セレクタ１２は、ＩＶレジスタ３２に保持されているイニシャルベクタＩＶと第１ＡＥＳ暗号演算部１１の演算結果として出力された暗号ベクタのいずれかを第１ＡＥＳ暗号演算部１１に対して選択出力する。第１セレクタ１２は初段の演算ではＩＶレジスタ３２に保持されているイニシャルベクタＩＶを選択し、次段以降の演算では第１ＡＥＳ暗号演算部１１から出力される前段の演算結果の暗号ベクタを選択するように制御される。
【００４４】
第１入力レジスタ１４は、第１ＡＥＳ暗号演算部１１の出力する暗号ベクタを使用した暗号化または復号化の対象となるデータを保持するレジスタである。第１ＥＸＯＲ演算部１３は第１入力レジスタ１４の出力するデータと第１ＡＥＳ暗号演算部１１の出力する暗号ベクタとの排他的論理和を演算する。第１出力レジスタ１５は第１ＥＸＯＲ演算部１３の演算結果を保持するレジスタである。
【００４５】
保持レジスタ３３は、ＫＥＹレジスタ３１の出力する暗号鍵と、ＩＶレジスタ３２の出力するイニシャルベクタＩＶと、演算結果として第１ＡＥＳ暗号演算部１１から出力された暗号ベクタとを保持する機能を果たす。なお、保持レジスタ３３に保持された暗号ベクタを中間暗号ベクタと呼ぶことにする。比較部３４は、ＫＥＹレジスタ３１の出力する暗号鍵と保持レジスタ３３に保持されている暗号鍵との比較と、ＩＶレジスタ３２の出力するイニシャルベクタＩＶと保持レジスタ３３に保持されている中間暗号ベクタとの比較とを行い、その比較結果を出力する。具体的には、ＫＥＹレジスタ３１の出力する暗号鍵と保持レジスタ３３から出力される暗号鍵とが一致しかつＩＶレジスタ３２の出力するイニシャルベクタＩＶと保持レジスタ３３から出力される中間暗号ベクタとが一致するという条件が真か偽かを判断する。
【００４６】
第３セレクタ３５は、比較部３４の比較結果が真のとき、保持レジスタ３３に保持されている中間暗号ベクタを選択出力し、偽のとき第１ＡＥＳ暗号演算部１１の出力する暗号ベクタを選択出力するセレクタである。
【００４７】
第２セレクタ２２は、第３セレクタ３５の出力と第２ＡＥＳ暗号演算部２１の演算結果として出力された暗号ベクタのいずれかを第２ＡＥＳ暗号演算部２１に対して選択出力する機能を果たす。第２セレクタ２２は、第２ＡＥＳ暗号演算部２１における初段の演算では第３セレクタ３５の出力を選択し、次段以降の演算では第２ＡＥＳ暗号演算部２１から出力された前段の演算結果の暗号ベクタを選択するように制御される。
【００４８】
第２入力レジスタ２４は、第２ＡＥＳ暗号演算部２１の出力する暗号ベクタを使用した暗号化または復号化の対象となるデータを保持するレジスタである。第２ＥＸＯＲ演算部２３は第２入力レジスタ２４の出力するデータと第２ＡＥＳ暗号演算部２１の出力する暗号ベクタとの排他的論理和を演算する。第２出力レジスタ２５は第２ＥＸＯＲ演算部２３の演算結果を保持するレジスタである。
【００４９】
制御部３６は、暗号処理装置１０の動作シーケンスを制御する機能を果たし、第１セレクタ１２、第２セレクタ２２の切り替え制御や保持レジスタ３３の保持タイミングなどを制御する。
【００５０】
ＫＥＹレジスタ３１およびＩＶレジスタ３２へのデータのセット、暗号化復号化の処理対象のデータの第１入力レジスタ１４および第２入力レジスタ２４に対するセット、暗号化または復号化されたデータの第１出力レジスタ１５および第２出力レジスタ２５からの読み出しは、当該暗号処理装置１０の上位の処理部が行う。また、暗号処理装置１０は比較部３４での比較結果を該上位の処理部に通知する。
【００５１】
次に、暗号処理装置１０による暗号化／復号化の動作を説明する。
【００５２】
暗号処理装置１０の第１暗号化符号処理部および第２暗号化符号処理部は、入力される初期値（暗号ベクタおよび暗号鍵）が同一であれば、Ｎ段目の演算結果の暗号ベクタは常に同一になる。そこで、２Ｎ段分の暗号化復号化処理を行う際に、Ｎ段目の演算結果の暗号ベクタとそのときの暗号鍵とイニシャルベクタＩＶとを保持レジスタ３３に保持しておき、次回以降の暗号化復号化処理において、ＫＥＹレジスタ３１にセットされている暗号鍵とＩＶレジスタ３２にセットされているイニシャルベクタＩＶとが保持レジスタ３３に保持されている暗号鍵およびイニシャルベクタと一致することを条件に、当該暗号鍵とイニシャルベクタＩＶとを初期値として１からＮ段目までの処理を第１暗号化符号処理部に行わせ、これと並列に、先の暗号鍵と保持レジスタ３３に保持されている中間暗号ベクタを初期値としてＮ＋１段目から２Ｎ段目までの処理を第２暗号化符号処理部に行わせるようになっている。以下詳細な動作を説明する。
【００５３】
図２は、暗号処理装置１０の動作の流れを示している。最初に外部の処理部からＫＥＹレジスタ３１への暗号鍵のセットおよびＩＶレジスタ３２へのイニシャルベクタＩＶのセットが行われる（ステップＳ１０１）。その後、処理部から起動の指示を受けると、暗号処理装置１０の比較部３４は、ＫＥＹレジスタ３１の保持している暗号鍵およびＩＶレジスタ３２の保持しているイニシャルベクタＩＶと、保持レジスタ３３の保持している暗号鍵およびイニシャルベクタとが一致するか否かを確認する（ステップＳ１０２）。
【００５４】
ＫＥＹレジスタ３１の保持している暗号鍵と保持レジスタ３３の保持している暗号鍵とが不一致、もしくはＩＶレジスタ３２の保持しているイニシャルベクタＩＶと保持レジスタ３３の保持しているイニシャルベクタとが不一致の場合（ステップＳ１０２；Ｎ）、暗号処理装置１０は、今回の暗号化復号化処理が通常動作になることを処理部に通知する。また、第１セレクタ１２によりＩＶレジスタ３２の出力を選択し、ＫＥＹレジスタ３１の保持している暗号鍵とＩＶレジスタ３２の保持しているイニシャルベクタＩＶとを第１ＡＥＳ暗号演算部１１に入力する（ステップＳ１０３）。
【００５５】
なお、通常動作の通知を受けた処理部は、処理対象のデータの前半部については、第１入力レジスタ１４に順次データをセットすると共に暗号化もしくは復号化された処理後のデータを第１出力レジスタ１５から順次読み出すように動作する。また、前半部に対する処理が終了した後、処理対象の後半部のデータを第２入力レジスタ２４に順次セットし、暗号化もしくは復号化された処理後のデータを第２出力レジスタ２５から順次読み出すように動作する。
【００５６】
第１ＡＥＳ暗号演算部１１は、ＫＥＹレジスタ３１の保持している暗号鍵とＩＶレジスタ３２の保持しているイニシャルベクタＩＶとが入力された状態の下で初段の演算を行い（ステップＳ１０４）、第１ＥＸＯＲ演算部１３は、該演算結果として第１ＡＥＳ暗号演算部１１から出力された暗号ベクタと第１入力レジスタ１４に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算する（ステップＳ１０５）。第１ＥＸＯＲ演算部１３の演算結果の出力は第１出力レジスタ１５に保持され、処理部により読み出される。
【００５７】
次段以降は、第１セレクタ１２を切り替えて、前段の演算で第１ＡＥＳ暗号演算部１１から出力された暗号ベクタとＫＥＹレジスタ３１の保持している暗号鍵とを第１ＡＥＳ暗号演算部１１に入力して、同様の処理を繰り返す（ステップＳ１０６；Ｎ、Ｓ１０４、Ｓ１０５）。なお、各段では、所定のビット数（たとえば、１２８ビット）の暗号化もしくは復号化処理が行われる。該処理を複数段繰り返し行うことで、長いビット長のデータが処理される。
【００５８】
このようにして、処理対象のデータの先頭から半分まで（前半部）に対する暗号化もしくは復号化処理が終了したら（ステップＳ１０６；Ｙ）、その時点で第１ＡＥＳ暗号演算部１１から出力されている暗号ベクタを、第２セレクタ２２を介して第２ＡＥＳ暗号演算部２１に入力する。これと同時に、第１ＡＥＳ暗号演算部１１から出力されている暗号ベクタとＫＥＹレジスタ３１から出力されている暗号鍵とＩＶレジスタ３２から出力されているイニシャルベクタＩＶとを保持レジスタ３３に保持する（ステップＳ１０７）。
【００５９】
第２ＡＥＳ暗号演算部２１は、前半部の最後の演算で第１ＡＥＳ暗号演算部１１から出力された暗号ベクタとＫＥＹレジスタ３１に保持されている暗号鍵とを入力にして演算を実行し（ステップＳ１０８）、第２ＥＸＯＲ演算部２３は第２ＡＥＳ暗号演算部２１から出力された暗号ベクタと第２入力レジスタ２４に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算する（ステップＳ１０９）。第２ＥＸＯＲ演算部２３の演算結果の出力は第２出力レジスタ２５に保持され、処理部によって読み出される。
【００６０】
次段以降は、第２セレクタ２２を切り替えて、前段の演算で第２ＡＥＳ暗号演算部２１から出力された暗号ベクタとＫＥＹレジスタ３１の保持している暗号鍵とを第２ＡＥＳ暗号演算部２１に入力して、同様の処理が繰り返される（ステップＳ１１０；Ｎ、Ｓ１０８、Ｓ１０９）。そして、処理対象のデータの全部に対する暗号化もしくは復号化処理が終了したら（ステップＳ１１０；Ｙ）、全処理の終了となる（エンド）。
【００６１】
比較部３４での比較の結果、ＫＥＹレジスタ３１の保持している暗号鍵と保持レジスタ３３の保持している暗号鍵が一致しかつＩＶレジスタ３２の保持しているイニシャルベクタＩＶと保持レジスタ３３の保持しているイニシャルベクタとが一致する場合は（ステップＳ１０２；Ｙ）、暗号処理装置１０は、今回の暗号化復号化処理が並列動作になることを処理部に通知する。
【００６２】
また、第１セレクタ１２によりＩＶレジスタ３２の出力を選択し、ＫＥＹレジスタ３１の保持している暗号鍵とＩＶレジスタ３２の保持しているイニシャルベクタＩＶとを第１ＡＥＳ暗号演算部１１に入力する（ステップＳ１１１）。また、これと同時に、保持レジスタ３３の保持している中間暗号ベクタを選択するように第３セレクタ３５を切り替え、かつ第３セレクタ３５の出力を選択するように第２セレクタ２２を切り替える。これにより、ＫＥＹレジスタ３１の保持する暗号鍵と保持レジスタ３３の保持する中間暗号ベクタとが第２ＡＥＳ暗号演算部２１に入力される（ステップＳ１１５）。
【００６３】
なお、並列動作の通知を受けた場合、処理部は、処理対象のデータの前半部を第１入力レジスタ１４に順次セットし暗号化もしくは復号化された処理後のデータを第１出力レジスタ１５から順次読み出す動作と、処理対象のデータの後半部を第２入力レジスタ２４に順次セットし暗号化もしくは復号化された処理後のデータを第２出力レジスタ２５から順次読み出す動作とを並列に実行する。
【００６４】
第１ＡＥＳ暗号演算部１１はＫＥＹレジスタ３１の保持している暗号鍵とＩＶレジスタ３２の保持しているイニシャルベクタＩＶとが入力された状態の下で初段の演算を行い（ステップＳ１１２）、第１ＥＸＯＲ演算部１３は第１ＡＥＳ暗号演算部１１から出力された暗号ベクタと第１入力レジスタ１４に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算し（ステップＳ１１３）、第１出力レジスタ１５はその演算結果を保持する。次段以降は、第１セレクタ１２を切り替えて、前段の演算で第１ＡＥＳ暗号演算部１１から出力された暗号ベクタとＫＥＹレジスタ３１の保持している暗号鍵とを第１ＡＥＳ暗号演算部１１に入力するようにして同様の処理を、処理対象のデータの前半部が終了するまで繰り返す（ステップＳ１１４；Ｎ、Ｓ１１２、Ｓ１１３）。
【００６５】
上記の動作と並列に第２ＡＥＳ暗号演算部２１の側では以下の動作が行われる。第２ＡＥＳ暗号演算部２１は、ＫＥＹレジスタ３１の保持する暗号鍵と保持レジスタ３３の保持する中間暗号ベクタとが入力された状態の下で初段の演算を行い（ステップＳ１１６）、第２ＥＸＯＲ演算部２３は第２ＡＥＳ暗号演算部２１から出力された暗号ベクタと第２入力レジスタ２４に保持されている暗号化または復号化の対象となるデータとを排他的論理和演算し（ステップＳ１１７）、第２出力レジスタ２５はその演算結果を保持する。
【００６６】
次段以降は、第２セレクタ２２を切り替えて、前段の演算で第２ＡＥＳ暗号演算部２１から出力された暗号ベクタとＫＥＹレジスタ３１の保持している暗号鍵とを第２ＡＥＳ暗号演算部２１に入力し、同様の処理を、処理対象のデータの後半部が終了するまで繰り返す（ステップＳ１１８；Ｎ、Ｓ１１６、Ｓ１１７）。
【００６７】
このようにして処理対象のデータの前半部に対する処理と後半部に対する処理とが並列に処理され、両方の処理が終了すると全処理の終了となる（エンド）。
【００６８】
図３は、並列動作での暗号化プロセスを示し、図４は並列動作での復号化プロセスを示し、図５は並列動作での暗号化プロセスのタイミングチャートを示している。この例では、処理対象のデータは平文１から平文４で構成される。第１ＡＥＳ暗号演算部１１には初段の入力として暗号鍵（ＫＥＹ）とイニシャルベクタＩＶが入力され、第２ＡＥＳ暗号演算部２１には初段の入力として暗号鍵（ＫＥＹ）と中間暗号ベクタＭＥＶ１が入力されている。
【００６９】
並列動作の暗号化プロセスでは、前半部の平文１と平文２が第１ＡＥＳ暗号演算部１１側で順次暗号化処理され、これと並列に、後半部の平文３と平文４が第２ＡＥＳ暗号演算部２１側で順次暗号化処理される。このため、通常動作では４段分の動作時間を要するところ、初段の動作Ｐ１と２段目の動作Ｐ２の２段分の動作時間で全体の処理が終了する。
【００７０】
同様に並列動作の復号化プロセスでは、前半部の暗号文１と暗号文２が第１ＡＥＳ暗号演算部１１側で順次復号化処理され、これと並列に、後半部の暗号文３と暗号文４が第２ＡＥＳ暗号演算部２１側で順次復号化処理される。このため、通常動作では４段分の動作時間を要するところ、初段の動作Ｐ１と２段目の動作Ｐ２との２段分の動作時間で全体の処理が終了する。
【００７１】
このように、暗号鍵とイニシャルベクタＩＶと中間暗号ベクタとを保持レジスタ３３に保持しておくことで、次回以降の暗号化復号化処理でＫＥＹレジスタ３１に保持されている暗号鍵とＩＶレジスタ３２に保持されているイニシャルベクタＩＶとが保持レジスタ３３に保持されているそれらと一致する場合は、保持レジスタ３３に保持されている中間暗号ベクタを使用して暗号化もしくは復号化の後半部を前半部の処理と並列に動作させることができるので、全体の処理時間が通常動作の場合の約半分に短縮される。
【００７２】
特に、画像データを扱う複写機や複合機などの画像処理装置において、複数ページの画像を暗号化もしくは復号化する場合に、それら複数ページに対して同一の暗号鍵とイニシャルベクタＩＶとを使用すれば、複数のページに対して中間暗号ベクタを利用して画像データの暗号化や復号化を並列動作によって行うことができ、暗号化、復号化の処理時間を短縮することができる。たとえば、１ページ目は通常動作で暗号化し、その途中で中間暗号ベクタを保持する。そして２ページ目以降は保持されている中間暗号ベクタを利用して並列動作で暗号化を行う。さらに、コピー動作では暗号化の後、すぐに復号化されるので、復号化処理では１ページ目から中間暗号ベクタを利用して並列動作を行うことも可能になる。
【００７３】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【００７４】
たとえば、実施の形態では、並列動作において、処理対象のデータを２分の１ずつ均等に分けて処理し最適化したが、不均等に分割した場合でも、そのわけ方に応じた処理時間の短縮効果を得ることができ、必ずしも均等に分ける必要はない。
【００７５】
また、実施の形態では、２つの暗号化復号化処理部を設けてこれらを並列動作させるようにしたが、３つ、４つ、８つなど、より多くの暗号化復号化処理部を設けて並列動作させてもよい。たとえば、４つの暗号化復号化処理部を設ける場合には、処理対象のデータの１／４が終了した時点の暗号ベクタと、２／４が終了した時点の暗号ベクタと、３／４が終了した時点の暗号ベクタとを保持しておき、その後は、これら保持した３つの暗号ベクタとイニシャルベクタＩＶとを用いて４組の暗号化復号化処理部を並列動作させれば、処理時間を通常動作の約４分の１に短縮することができる。
【００７６】
さらに、実施の形態では、ＫＥＹレジスタ３１に保持されている暗号鍵と保持レジスタ３３に保持されている暗号鍵とが一致し、かつイニシャルベクタＩＶに保持されているイニシャルベクタＩＶと保持レジスタ３３に保持されているイニシャルベクタとが一致することを条件に保持レジスタ３３に保持されている中間暗号ベクタを使用した並列動作を行うようにしたが、たとえば、暗号鍵およびイニシャルベクタが固定的に変化しないことが既知の場合には、先の条件を確認することなしに中間暗号ベクタを利用した並列動作を行うように構成されてもよい。
【００７７】
このほか、実施の形態では、通常動作の場合に第２ＡＥＳ暗号演算部２１を利用して後半部を処理するようにしたが、後半部についてもそのまま第１ＡＥＳ暗号演算部１１を使用して処理するように構成されてもよい。
【００７８】
また、ＡＥＳ暗号演算部は、入力に対して出力が一義的に定まる演算処理であれば、他の種類の演算を行う演算部であってもよい。該演算部への入力は、暗号鍵とイニシャルベクタＩＶもしくは暗号ベクタとを一組としたものに限定されず、たとえば、初段は初期データを入力して演算し、次段以降は前段の演算結果の中間データを入力して演算を行う演算部であってもかまわない。この場合、ＫＥＹレジスタ３１とＩＶレジスタ３２とに代えて初期データを保持するための初期レジスタを設け、保持レジスタ３３は初期データと中間データとを保持すればよい。また、比較部３４は、初期レジスタに保持されている初期データと保持レジスタ３３に保持されている値とを比較すればよい。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態に暗号処理装置の動作を示す流れ図である。
【図３】本発明の実施の形態に係る暗号処理装置１が行う並列動作の暗号化プロセスを示す説明図である。
【図４】本発明の実施の形態に係る暗号処理装置１が行う並列動作の復号化プロセスを示す説明図である。
【図５】本発明の実施の形態に係る暗号処理装置１が行う並列動作での暗号化プロセスの動作タイミングを示す波形図である。
【図６】従来のＯＦＢモードの暗号回路の構成例を示すブロック図である。
【図７】図６に示す暗号回路での暗号化プロセスを示す説明図である。
【図８】図６に示す暗号回路での復号化プロセスを示す説明図である。
【図９】図６に示す暗号回路での暗号化プロセスの動作タイミングを示す波形図である。
【符号の説明】
【００８０】
１０…暗号処理装置
１１…第１ＡＥＳ暗号演算部
１２…第１セレクタ
１３…第１ＥＸＯＲ演算部
１４…第１入力レジスタ
１５…第１出力レジスタ
２１…第２ＡＥＳ暗号演算部
２２…第２セレクタ
２３…第２ＥＸＯＲ演算部
２４…第２入力レジスタ
２５…第２出力レジスタ
３１…ＫＥＹレジスタ
３２…ＩＶレジスタ
３３…保持レジスタ
３４…比較部
３５…第３セレクタ
３６…制御部
８０…暗号回路
８１…ＡＥＳ暗号演算部
８２…ＫＥＹレジスタ
８３…ＩＶレジスタ
８４…セレクタ
８５…入力レジスタ
８６…ＥＸＯＲ演算部
８７…出力レジスタ
ＩＶ…イニシャルベクタ
【図１】
2008151890.tif 000003
【図２】
2008151890.tif 000004
【図３】
2008151890.tif 000005
【図４】
2008151890.tif 000006
【図５】
2008151890.tif 000007
【図６】
2008151890.tif 000008
【図７】
2008151890.tif 000009
【図８】
2008151890.tif 000010
【図９】
2008151890.tif 000011