(57)【要約】【課題】乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供する。【解決手段】暗号処理装置１は、入力された第１のデータDin1に対して第１の暗号処理を行う第１の暗号処理回路２５ａと、入力された第２のデータDin2に対して、第１の暗号処理回路２５ａの処理結果をマスクデータとして用いて、第１の暗号処理とは異なる第２の暗号処理を行う第２の暗号処理回路２５ｂとを有する。【選択図】図２
2010245881.tif 000002
【特許請求の範囲】
【請求項１】
入力された第１のデータに対して第１の暗号処理を行う第１の暗号処理回路と、
入力された第２のデータに対して、前記第１の暗号処理回路の処理結果をマスクデータとして用いて、前記第１の暗号処理とは異なる第２の暗号処理を行う第２の暗号処理回路と、
を有することを特徴とする暗号処理装置。
【請求項２】
入力された前記第１のデータを保持する第１のレジスタと、
入力された前記第２のデータを保持する第２のレジスタと、
を有し、
前記第１のデータは、前記第２のデータとは無関係であり、
前記第１の暗号処理回路は、前記第１のデータに対して、前記第２の暗号処理回路の処理結果をマスクデータとして用いて、前記第１の暗号処理を行うことを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記第１のレジスタと前記第２のレジスタのデータを、それぞれ前記第１の暗号処理回路と前記第２の暗号処理回路に供給するか、あるいはそれぞれ前記第２の暗号処理回路と前記第１の暗号処理回路に供給するかを切り換える第１の切り換え回路と、
を有することを特徴とする請求項２に記載の暗号処理装置。
【請求項４】
前記第１の暗号処理回路の処理結果と前記第２の暗号処理回路の処理結果を、それぞれ前記第１のレジスタと前記第２のレジスタに供給するか、あるいはそれぞれ前記第２のレジスタと前記第１のレジスタに供給するかを切り換える第２の切り換え回路と、
を有することを特徴とする請求項３に記載の暗号処理装置。
【請求項５】
入力された第１のデータに対して第１の暗号処理を行う第１の暗号処理回路と、
入力された第２のデータに対して、前記第１の暗号処理とは異なる第２の暗号処理を行う第２の暗号処理回路と、
前記第１の暗号処理回路の処理結果と前記第２の暗号処理回路の処理結果から、前記マスクデータを生成して、前記第１及び前記第２の暗号処理回路のうち前記マスクデータを利用する暗号処理回路へ供給するマスク生成回路と、
を有することを特徴とする暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置に関し、特にマスクデータを用いて暗号処理を行う暗号処理装置に関する。
【背景技術】
【０００２】
従来より、暗号処理装置で消費される電力から暗号処理装置で用いられる秘密情報を取り出す電力解析という方法がある。このような解析方法への対策として、データマスキング法という技術が提案されている（例えば、特許文献１参照）。データマスキング法によれば、乱数発生回路がマスクデータとしての乱数を生成し、暗号処理回路は、その乱数発生回路から供給されるマスクデータを用いてデータマスキングを行いながら、暗号処理を実行する。
【０００３】
データマスキング法は、一般に、入力された平文と乱数であるマスクデータとの排他的論理和等の演算を行うことによって、入力された平文を無関係のデータに変換して暗号処理を行うようにして、電力解析攻撃に対する耐性を高めている。  
しかし、マスクデータとして使用される乱数は、一般に、乱数発生回路で生成されるが、演算クロック信号が発生する度に出力しなければならないので、乱数発生回路の回路規模が大きくなり、その結果、暗号処理装置が形成される半導体チップ上の乱数発生回路の占める面積も大きくなってしまうという問題がある。
【０００４】
特に、例えば、ICカード等に、DES,AES等の複数種類の暗号処理回路が搭載されていれば、各暗号処理回路に対応した乱数を発生させなければならず、乱数発生回路の規模はさらに大きくなってしまう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−６６５８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、本発明は、乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、入力された第１のデータに対して第１の暗号処理を行う第１の暗号処理回路と、入力された第２のデータに対して、前記第１の暗号処理回路の処理結果をマスクデータとして用いて、前記第１の暗号処理とは異なる第２の暗号処理を行う第２の暗号処理回路とを有する暗号処理装置を提供することができる。
【発明の効果】
【０００８】
本発明によれば、乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施の形態に係わる暗号処理装置１の構成を示す構成図である。
【図２】本発明の実施の形態に係わる暗号回路モジュール１５の構成を示すブロック図である。
【図３】第１の実施の形態において、２つのラウンド関数演算回路として、AESとDESのラウンド関数を用いた場合の暗号回路モジュール１５の構成を示すブロック図である。
【図４】図３のマスク生成回路３０の構成を示すブロック図である。
【図５】本発明の第２の実施の形態に係る暗号回路モジュール１５Ａの構成を示すブロック図である。
【図６】本発明の第３の実施の形態に係る暗号回路モジュール１５Ｂの構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）
（構成）
まず、図１に基づき、本実施の第１の形態に係わる暗号処理回路が搭載される暗号処理装置の構成を説明する。図１は、第１の実施の形態に係わる暗号処理装置１の構成を示す構成図である。
【００１１】
暗号処理装置１は、中央処理装置（CPU）１１と、プログラム等を記憶したROM１２と、CPU１１の作業用記憶領域としてのRAM１３と、外部とのデータの送受信を行うための送受信インターフェース回路（以下、送受信I/Fと略す）１４と、暗号処理回路である暗号回路モジュール１５と、暗号回路モジュール１５とバス１６との暗号回路I/F１７とを含んで構成されている。CPU１１と、ROM１２、RAM１３と、送受信I/F１４と、暗号回路I/F１７は、バス１６を介して互いに接続されている。
【００１２】
暗号処理装置１は、例えば、IC（Integrated Circuit）カードであり、カードリーダ装置等の外部装置（図示せず）からのデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力する。外部装置とのデータの送受信は、送受信I/F１４を介して、例えば、図示しない無線通信用の回路を介して無線通信により行われる。
【００１３】
また、CPU１１と暗号回路モジュール１５間で送受信されるデータも、暗号化される。そのため、図示しないが、CPU１１とバス１６の間と、バス１６と暗号回路I/F１５間には、それぞれ、例えば排他的論理和演算を行う回路が設けられている。  
暗号回路モジュール１５は、二種類の暗号処理回路を含み、二種類の暗号処理回路は、互いに異なる暗号処理、暗号化及び／又は復号化の処理、を実行する。  
また、図２は、暗号回路モジュール１５の構成を示すブロック図である。  
図２に示すように、暗号回路モジュール１５は、入力端子２１ａ、２１ｂ、選択回路２２ａ、２２ｂ、レジスタ２３ａ、２３ｂ、切り換え回路（以下、スイッチ回路という）２４、それぞれが互いに異なる所定のラウンド関数を計算するラウンド関数演算回路２５ａ、２５ｂ、マスク生成回路２６、スイッチ回路２７、出力端子２８ａ、２８ｂ、及び制御回路２９を有して構成されている。
【００１４】
２つの入力端子２１ａ、２１ｂは、それぞれ暗号回路I/F１７からの入力データDin１、Din2を入力する端子である。２つの選択回路２２ａ、２２ｂのそれぞれは、ラウンド関数演算の結果出力と入力データを選択するための回路である。レジスタ２３ａ、２３ｂは、入力データ又はラウンド関数演算の結果を保持するための回路である。
【００１５】
スイッチ回路２４は、制御回路２９からの制御信号によって、レジスタ２３ａと２３ｂの出力を、それぞれラウンド関数演算回路２５ａと２５ｂに供給するか、あるいはそれぞれラウンド関数演算回路２５ｂと２５ａに供給するかを切り換える切り換え回路である。
【００１６】
ラウンド関数演算回路２５ａ、２５ｂは、所定の暗号化演算処理あるいは所定の復号化演算処理を実行する回路である。よって、暗号処理は、暗号化処理あるいは復号化処理を意味する。ラウンド関数演算回路２５ａは、入力データに対して、ラウンド関数演算回路２５ｂの処理結果をマスクデータMbとして用いて、ラウンド関数演算回路２５ｂとは異なる所定の暗号処理を行う暗号処理回路である。ラウンド関数演算回路２５ｂは、入力データに対して、ラウンド関数演算回路２５ａの処理結果をマスクデータMaとして用いて、ラウンド関数演算回路２５ａとは異なる所定の暗号処理を行う暗号処理回路である。
【００１７】
マスク生成回路２６は、各ラウンド関数演算回路から出力されるラウンド関数演算の中間結果データからマスクデータを生成して、マスクデータを利用するラウンド関数演算回路へ供給する回路である。
【００１８】
スイッチ回路２７は、制御回路２９からの制御信号CSによって、２つのラウンド関数演算回路２５ａと２５ｂの結果出力を、それぞれレジスタ２３ａと２３ｂに供給するか、あるいはそれぞれレジスタ２３ｂと２３ａに供給するかを切り換える切り換え回路である。
【００１９】
出力端子２８ａ、２８ｂは、スイッチ回路２７を介して２つのラウンド関数演算回路２５ａと２５ｂの出力データDout1、Dout2を出力する端子である。  
制御回路２９は、スイッチ回路２４と２７に対して、入力されたデータを出力する出力端を切り換えるための制御信号CSを生成して出力する回路である。
【００２０】
また、マスク生成回路２６は、２つのAND回路２６ａ、２６ｂを含む。AND回路２６ａの一方の入力には、暗号演算する回路を指定する暗号演算指定信号CP1が入力され、他方の入力には、ラウンド関数演算回路２５ｂからの中間結果データが入力され、暗号演算指定信号CP1がHIGHのときに、ラウンド関数演算回路２５ｂからの中間結果データをラウンド関数演算回路２５ａに出力する。
【００２１】
同様に、AND回路２６ｂの一方の入力には、暗号演算する回路を指定する暗号演算指定信号CP2が入力され、他方の入力には、ラウンド関数演算回路２５ａからの中間結果データが入力され、暗号演算指定信号CP2がHIGHのときに、ラウンド関数演算回路２５ａからの中間結果データをラウンド関数演算回路２５ｂに出力する。  
なお、ここでは、暗号演算指定信号CP1、CP2は、CPU１１から直接供給され、あるいはCPU１１から制御回路２９を介して供給され、２つの信号のうち一方だけがHIGHとなる。
【００２２】
（動作）
次に図２に示した暗号回路モジュール１５の動作を説明する。  
ラウンド関数演算回路２５ａ、２５ｂへの入力データDin1とDin2は、それぞれ入力端子２１ａと２１ｂに供給されると、入力データDin1とDin2は、それぞれ選択回路２２ａと２２ｂに転送される。選択回路２２ａと２２ｂは、それぞれ入力データDin1とDin2を選択してレジスタ２３ａと２３ｂへ出力する。
【００２３】
ここでは、入力データDin1が暗号処理対象データであり、入力端子２１ａに供給されて選択回路２２ａを介してレジスタ２３ａに与えられ、入力データDin2が、入力データDin1とは無関係なデータで、入力端子２１ｂに供給された例を説明する。
【００２４】
選択回路２２ａは、始めに、入力端子２１ａを選択する。レジスタ２３ａは、選択回路２２ａから転送された入力データDin1を保持する。レジスタ２３ａに保持されているデータは、スイッチ回路２４の動作に応じて、ラウンド関数演算回路２５ａ又は２５ｂに転送される。スイッチ回路２４は、制御回路２９からの制御信号CSに基づいて、レジスタ２３ａに保持されているデータを、ラウンド関数演算回路２５ａと２５ｂの一方に転送し、レジスタ２３ｂに保持されているデータを、入力データDin1の暗号処理には使用しないラウンド関数演算回路２５ａと２５ｂの他方に転送する。以下、入力データDin1の暗号処理する回路が、ラウンド関数演算回路２５ｂである例について説明する。
【００２５】
すなわち、暗号処理対象の入力データDin1は、レジスタ２３ａに保持されており、そのデータをラウンド関数演算回路２５ｂに出力するようにスイッチ回路２４は、入力データの切り換えを行う。このときレジスタ２３ｂに保持されているデータは、ラウンド関数演算回路２５ａに転送される。
【００２６】
入力データDin1に対する暗号アルゴリズム演算に対応したラウンド関数演算回路２５ｂは、入力されたデータを用いて所定のラウンド関数演算を行う。一方、ラウンド関数演算回路２５ａは、レジスタ２３ｂに保持された、入力データDin1とは無関係なデータである入力データDin2を用いて所定のラウンド関数演算を行い、その中間結果データをマスク生成回路２６へ出力する。
【００２７】
このとき、暗号演算指定信号CP2がHIGHであり、ラウンド関数演算回路２５ａの中間結果データが、AND回路２６ｂからラウンド関数演算回路２５ｂに、マスクデータとして供給される。よって、ラウンド関数演算回路２５ｂは、AND回路２６ｂから供給されたデータを、データマスキング用のマスクデータとして用いて、所定の暗号処理を実行する。
【００２８】
この中間結果データは、入力データDin1と無関係なデータDin2から生成され、かつ、演算すべき暗号アルゴリズムとは異なる暗号アルゴリズムで演算された結果であるので、入力データDin1とは無関係なデータである。
【００２９】
すなわち、ラウンド関数演算回路２５ａの中間結果データを用いてマスク生成回路２６は、マスクデータを生成し、実行すべき暗号アルゴリズムを計算するラウンド関数演算回路２５ｂに供給する。ラウンド関数演算回路２５ｂは、マスク生成回路２６から出力されたマスクデータを用いて、スイッチ回路２４から入力されたデータを処理する。処理された結果は、スイッチ回路２７に供給される。
【００３０】
また、ラウンド関数演算回路２５ａは、入力データDin1とは無関係なデータを用いて所定のラウンド関数演算を行い、その結果データをスイッチ回路２７へも供給する。スイッチ回路２７には、実行すべき暗号アルゴリズムのラウンド関数演算回路２５ｂからの出力データと、実行すべき暗号アルゴリズムでない暗号アルゴリズムを実行するラウンド関数演算回路２５ａからの結果データが入力される。スイッチ回路２７は、入力された２つの演算結果の出力データを制御信号CSに従って、２つの出力端子から出力する。
【００３１】
スイッチ回路２４と２７のデータの切り替えは、ランダムに選択するように行ってもよいし、あるいは、常に一方を選択するように行ってもよい。  
たとえば、ラウンド関数演算回路２５ｂの結果が出力端子２７ｂから出力するようにスイッチ回路２７が動作する場合は、レジスタ２３ｂに暗号演算すべきデータが保持され、もう一方のレジスタ２３ａには、暗号演算には無関係なデータが保持される。
【００３２】
次のラウンド関数演算が行われるときには、スイッチ回路２４は、レジスタ２３ｂからのデータをラウンド関数演算回路２５ｂに転送するように制御され、レジスタ２３ａからのデータをラウンド関数演算回路２５ａに転送するように、制御回路２９からの制御信号CSによって制御される。
【００３３】
逆に、ラウンド関数演算回路２５ｂの結果が出力端子２７ａから出力するようにスイッチ回路２７が動作する場合は、レジスタ２３ａに演算すべきデータが保持され、レジスタ２３ｂには暗号演算には無関係なデータが保持される。この場合、次のラウンド関数演算が行われるときには、スイッチ回路２４は、レジスタ２３ａからのデータをラウンド関数演算回路２５ｂに転送し、レジスタ２３ｂからのデータをラウンド関数演算回路２５ａに転送するように、制御回路２９からの制御信号CSによって制御される。
【００３４】
以下、同様の処理を繰り返し、ラウンド関数演算を必要な回数、繰り返すことによって暗号演算を行う。そして、ラウンド関数演算回路２５ｂでは、ラウンド関数演算毎に、ラウンド関数演算回路２５ａからの中間結果データが、マスクデータとして利用される。最終的な演算結果は、出力端子２８ａあるいは２８ｂから出力される。暗号アルゴリズムの種類によっては、ラウンド関数演算の後の必要な処理が行われ、暗号演算の結果が生成されて出力される。
【００３５】
以上は、暗号処理をラウンド関数演算回路２５ｂが行う例を説明したが、暗号処理をラウンド関数演算回路２５ａが実行する場合は、入力データDin2が、暗号演算される入力データとして、入力端子２１ｂに入力される。その後の動作は、上述した動作と同様である。
【００３６】
以上のように、上述した暗号処理装置１によれば、暗号処理において、マスクデータは、暗号処理すべき入力データに対する暗号処理に使用しない暗号演算回路の中間結果データを用いている。よって、データマスキング用のマスクデータを生成するための乱数発生回路を必要としないので、暗号処理装置における回路面積の増大を防ぐことができる。
【００３７】
以上のように、本実施の形態の暗号処理装置では、ラウンド関数演算回路のためのマスクデータは、暗号処理回路の外部において発生された乱数ではなく、入力データと無関係なデータを暗号処理対象データに対する暗号処理を行わないラウンド関数演算回路で処理した中間結果データを用いて、データマスキング法による暗号演算が行われる。すなわち、本実施の形態の暗号処理装置は、暗号処理回路の外部から乱数を入力することなくデータマスキング法による暗号処理を行うことが可能となる。
【００３８】
なお、上述したマスク生成回路２６は、ラウンド関数演算回路２５ａと２５ｂの出力をそのまま選択してマスクデータとして出力するようにしているが、ラウンド関数演算回路２５ａと２５ｂの出力に対して所定の演算処理を行って、マスクデータを生成するようにしてもよい。
【００３９】
次に、上述した２つのラウンド関数にAESとDESの暗号アルゴリズムを用いた場合の具体例を説明する。  
（AESとDESの暗号アルゴリズムを用いた場合の構成例）
図３は、２つのラウンド関数演算回路として、AES（Advanced Encryption Standard）とDES（Data Encryption Standard）のラウンド関数を用いた場合の暗号回路モジュール１５の構成を示すブロック図である。図２と同じ構成要素については同じ符号を付して説明は省略する。
【００４０】
図３に示すように、暗号回路モジュール１５は、マスク生成回路３０と、AESのラウンド関数演算を行うラウンド関数演算回路４０と、DESのラウンド関数演算を行うラウンド関数演算回路５０とを含む。また、暗号回路モジュール１５は、ラウンド鍵Kinが入力される入力端子２１ｃ、２１ｄを有する。
【００４１】
AESのラウンド関数演算を行うラウンド関数演算回路４０は、サブバイト部（AES SubBytes）４１、シフトロー部（AES ShiftRows）４２、ミックスカラム部（AES MixColumns）４３、選択回路４４、及びアドラウンドキー部（AddRoundKey）４５の各関数部に加えて、アドマスク部（AddMask）６１、デルマスク部（DelMask）６２、アドマスク部（AddMask）６３、及びデルマスク部（DelMask）６４を含む。
【００４２】
サブバイト部４１は、非線形の変換テーブルである。シフトロー部４２は、バイト単位の入れ替えを行う部である。ミックスカラム部４３は、有限体上の乗算を行う部である。アドラウンドキー部４５は、ラウンド鍵Kinとの加算、すなわち排他的論理和演算(XOR)を行う部である。
【００４３】
マスク付加回路であるアドマスク部６１は、スイッチ回路２４からのデータを入力する。アドマスク部６１の出力は、デルマスク部６２に供給される。マスク除去回路であるデルマスク部６２の出力は、サブバイト部４１とアドマスク部６３に供給される。マスク付加回路であるアドマスク部６３の出力は、シフトロー部４２と選択回路４４に供給される。シフトロー部４２の出力は、ミックスカラム部４３と選択回路４４に供給される。選択回路４４の出力は、アドラウンドキー部４５に供給される。アドラウンドキー部４５の出力は、デルマスク部６４を介して、スイッチ回路２７に供給される。なお、AESの場合、ラウンドによって使用される関数が異なるため、選択回路４４によって関数出力の選択が行われる。
【００４４】
従って、AESのラウンド関数演算を行うラウンド関数演算回路４０では、サブバイト部４１は、入力側マスクデータMskSAinと出力側マスクデータMskSAoutでマスクされている。レジスタ２３ａから入力側マスクデータMskSAinが付けられるまでは、マスクデータMskRAoldでマスクされている。そして、サブバイト部４１からレジスタ２３ａまではマスクデータMskRAnewでマスクされている。
【００４５】
DESのラウンド関数演算を行うラウンド関数演算回路５０は、E関数部５１とキーアド部（KeyAdd）５２とSBOX部５３とP関数を含んで構成されるf関数部５４、及びｆ関数部５４の出力とLデータとの排他的論理和をとるXOR部(AddL)５５に加えて、２つのアドマスク部（AddMask）７１，７３と、２つのデルマスク部（DelMask）７２，７４を含む。SBOX部５３は、非線形の変換テーブルである。
【００４６】
f関数部５４のP関数は、ビット単位の入れ替えを行う関数である。E関数部５１は、ビット単位の拡大を行う。キーアド部５２は、ラウンド鍵Kinとの加算(XOR)を行う部である。
【００４７】
DESのラウンド関数演算を行うラウンド関数演算回路５０では、SBOX部５３は、入力側マスクデータMskSDinと出力側マスクデータMskSDoutでマスクされている。レジスタ２３ｂから入力側マスクデータMskSDinが付けられるまではマスクデータMskRDoldでマスクされている。SBOX部５３からレジスタ２３ｂまではマスクデータMskRDnewでマスクされている。
【００４８】
次にマスク生成回路３０について説明する。図４は、マスク生成回路３０の構成を示すブロック図である。  
マスク生成回路３０は、２つの圧縮回路１０１，１０２、選択回路１０３、レジスタ１０４、及び２つの拡大回路１０５、１０６を含んで構成されている。ラウンド関数演算回路４０からのｎビットのデータが、圧縮回路１０１に入力される。圧縮回路１０１は、ｎビットのデータに対して、所定のデータ圧縮処理を行って選択回路１０３にｋビットの出力を供給する。ラウンド関数演算回路５０からのｍビットのデータが、圧縮回路１０２に入力される。圧縮回路１０２は、ｍビットのデータに対して、所定の圧縮処理を行って選択回路１０３にｋビットの出力を供給する。
【００４９】
選択回路１０３は、一方の入力を選択して、レジスタ１０４と、２つの拡大回路１０５，１０６に、ｋビットのデータを供給する。拡大回路１０５は、入力された２つのｋビットデータに基づいて、所定のデータ拡大処理を行って、ｘビットのデータを生成し、ラウンド関数演算回路４０に出力する。同様に、拡大回路１０６は、入力された２つのｋビットデータに基づいて、所定の拡大処理を行って、ｙビットのデータを生成し、ラウンド関数演算回路５０に出力する。  
マスク生成装置３０において、圧縮回路１０１は、ラウンド関数演算回路４０から入力されるnビットの中間データをkビットに圧縮する。圧縮回路１０２は、ラウンド関数演算回路５０から入力されるｍビットの中間データをkビットに圧縮する。２つの圧縮回路からの出力の一方を選択する選択回路の出力は、レジスタ１０４に保持される。拡大回路１０５は、選択回路１０３の出力とレジスタ１０４の出力からxビットのマスクデータを生成し、拡大回路１０６は、選択回路１０３の出力とレジスタ１０４の出力からyビットのマスクデータを生成する。
【００５０】
図３の構成の場合、使用されるマスクデータは、AESのラウンド関数演算回路４０では、MskSAin, MskRAold, MskRAnew, MskSAoutであり、DESのラウンド関数演算回路５０では、MskSDin, MskRDold, MskRDnew, MskSDoutである。マスクデータMskRAold, MskRDoldは、前回のラウンドでつけられたマスクデータであり、次のラウンドでは、これらのマスクデータは除去される。除去するためのマスクデータは、レジスタ１０４に保持されているマスクデータである。
【００５１】
圧縮回路１０１，１０２の例として、例えば、入力されたnビット(またはmビット)のデータからｋビットを選択する回路や、XORなどによって複数のビットを減らす回路、等がある。また、拡大回路１０５，１０６の例として、特定のビットを繰り返して出力する回路、特定のビットを繰り返した後に別のデータとの排他的論理和（XOR）をとって出力する回路、等がある。
【００５２】
（動作）
上述した図３と図４に示した回路において、データマスキングのために用いられるマスクデータは、AESのラウンド関数演算の中間結果データおよびDESのラウンド関数演算の中間結果データからマスク生成回路３０によって生成される。
【００５３】
図３に示した暗号回路モジュール１５の動作について説明する。例として、暗号回路モジュール１５がAESの暗号処理を行う場合を説明する。この場合、DESのラウンド関数演算部は、AESのラウンド関数演算部で使用されるマスクデータを生成するために用いられる。
【００５４】
まず、AESの演算では、最初にアドラウンドキー部４５によりAddRoundKey処理が行われ、次に、サブバイト部４１によるSubBytes処理、シフトロー部４２によるShiftRows処理、ミックスカラム部４３によるMixColumns処理、及びアドラウンドキー部４５によるAddRoundKey処理が繰り返し行われ、最後に、サブバイト部４１によるSubBytes処理、シフトロー部４２によるShiftRows処理及びアドラウンドキー部４５によるAddRoundKey処理が行われる。処理の選択は、選択回路４４による入力の選択により行われる。
【００５５】
図３の構成において、AESの暗号処理を行う場合、最初にレジスタ２３ａには、マスクデータMskAR1でマスクされた入力データがCPU１１から転送され、保持される。レジスタ２３ａの出力は、マスク付加回路であるアドマスク部６１によってマスクデータMskAS1でマスクされる。
【００５６】
次にマスク除去回路であるデルマスク部６２によって、マスクデータMskAR1が除去される。  
マスクデータMskAR1が除去されたデータは、マスク付加回路であるアドマスク部６３に転送され、マスクデータMskRA2でマスクされ、選択回路４４に転送される。選択回路４４は、最初に、アドマスク部６３の出力を選択し、アドラウンドキー部４５に転送する。
【００５７】
アドラウンドキー部４５において、AddRoundKey処理が行われ、その処理結果は、マスク除去回路であるデルマスク部６４に転送される。デルマスク部６４では、マスクデータMskAS1が除去され、スイッチ回路２７を経由して、レジスタ２３ａに転送される。この処理によってAddRoundKey処理が行われ、マスクデータMskRA2でマスクされた演算結果がレジスタ２３ａに保持される。
【００５８】
続いて、選択回路４４による入力の選択を行うことにより、サブバイト部４１によるSubBytes処理、シフトロー部４２によるShiftRows処理、ミックスカラム部４３によるMixColumns処理、及びアドラウンドキー部４５によるAddRoundKey処理が繰り返し行われる。そして、選択回路４４による入力の選択を行うことにより、最後に、サブバイト部４１によるSubBytes処理、シフトロー部４２によるShiftRows処理及びアドラウンドキー部４５によるAddRoundKey処理が行われる。
【００５９】
一方、DESのラウンド関数演算回路５０には、AESの入力データと無関係なデータDin2がレジスタ２３ｂに保持され、ラウンド関数演算回路５０において、DESのラウンド関数演算処理が実行される。このときの中間結果データがマスク生成部３０に転送され、AESの演算で用いられるマスクデータMskSAin, MskSAout, MskRAold, MskRAnewが生成される。このように生成された各マスクデータがAESのラウンド関数演算回路４０に転送され、AESのラウンド関数演算処理において用いられる。
【００６０】
以上説明した例は、暗号処理をAESのラウンド関数演算回路４０により行う場合であるが、暗号処理がDESのラウンド関数演算回路５０により行われる場合は、AESのラウンド関数演算回路４０において生成された各マスクデータがDESのラウンド関数演算回路５０に転送され、DESのラウンド関数演算処理において用いられる。
【００６１】
以上のように、AESとDESの一方の暗号処理回路を用いて、暗号処理を行っていない他方の暗号処理回路の出力をマスクデータとして用いることにより、外部からの乱数を用いないで、データマスキングを適用した暗号処理を行うことが可能となる。
【００６２】
（第２の実施の形態）
（構成）
次に、本発明の第２の実施の形態に係る暗号処理装置について説明する。第１の実施の形態と同じ構成要素については、同じ符号を付して説明は省略する。  
図５は、第２の実施の形態に係る暗号回路モジュール１５Ａの構成を示すブロック図である。
【００６３】
図５に示すように、暗号回路モジュール１５Ａは、入力端子２１ｃ、選択回路２２ｃ、レジスタ２３ｃ、それぞれが互いに異なる所定のラウンド関数を計算するラウンド関数演算回路２５ａ、２５ｂ、マスク生成回路２６、選択回路２７Ａ、出力端子２８ｃ、及び制御回路２９Aを有して構成されている。ラウンド関数演算回路２５ａと２５ｂは、それぞれ、互いに異なる暗号処理、すなわち暗号化及び／又は復号化の処理、を行う回路である。
【００６４】
本実施の形態では、１つの入力端子２１ｃと、１つの選択回路２２ｃと、１つのレジスタ２３ｃを用いるようにした点が、第１の実施の形態と異なる。選択回路２７Ａは、暗号演算を行っているラウンド関数演算回路を選択して、選択されたラウンド関数演算回路の出力データを、レジスタ２３ｃに供給する。
【００６５】
暗号アルゴリズムの多くは、ラウンド関数演算を繰り返し行うことによって暗号処理を実行している。図５の暗号回路ユニット１５Ａにおいても、暗号演算回路として暗号アルゴリズムにおけるラウンド関数演算を実行している。図５に示した暗号回路ユニット１５Ａは、入力データを入力する端子である入力端子２１ｃ、ラウンド関数演算の結果を保持するためのレジスタ２３ｃ、互いに異なるラウンド関数演算を計算するラウンド関数演算回路２５ａ、２５ｂ、それらのラウンド関数演算回路から出力されるラウンド関数演算の中間結果データからマスクデータを生成するマスク生成回路２６、ラウンド関数演算回路２５ａ、２５ｂの結果出力を選択するための選択回路２７Ａ、ラウンド関数演算の結果出力と入力データを選択するための選択回路２２ｃ、演算結果を出力する端子である出力端子２８ｃとを含んで構成されている。
【００６６】
（動作）
次に、図５に示した暗号回路ユニット１５Ａの動作を説明する。以下の例では、暗号処理は、ラウンド関数演算回路２５ａが行い、ラウンド関数演算回路２５ｂは、マスクデータを生成するものとする。  
２つのラウンド関数演算回路２５ａと２５ｂへの入力データDinが入力端子２１ｃに入力されると、選択回路２２ｃに転送される。選択回路２２ｃは、入力データDinを選択してレジスタ２３ｃに転送する。レジスタ２３ｃは、転送された入力データを保持する。レジスタ２３ｃは、保持しているデータをラウンド関数演算回路２５ａと２５ｂに転送する。ラウンド関数演算回路２５ａと２５ｂへの入力データは同一データであり、レジスタ２３ｃは、その同一データを保持する。
【００６７】
入力データDinに対して暗号演算を行う暗号アルゴリズムに対応したラウンド関数演算回路２５ａは、入力されたデータDinを用いてラウンド関数演算を実行する。一方、他のラウンド関数演算回路２５ｂも同様に入力されたデータを用いてラウンド関数演算を実行するが、その中間結果をマスク生成回路２６へ出力する。このとき、AND回路２６ａの入力CP1がHIGHとなっており、ラウンド関数演算回路２５ｂの演算結果データは、マスクデータとして、ラウンド関数演算回路２５ａに供給される。
【００６８】
ラウンド関数演算回路２５ｂの中間結果は、同一の入力データDinから生成されたデータであるが、演算すべき暗号アルゴリズムとは異なるアルゴリズムで演算された結果であるので、入力データDinとの関係は小さい。この中間結果を用いてマスク生成回路２６はマスクデータを生成し、暗号処理すべき暗号アルゴリズムを計算するラウンド関数演算回路２５ａに転送する。
【００６９】
ラウンド関数演算回路２５ａは、マスク生成回路２６から出力されたマスクデータを用いて、レジスタ２３ｃから出力されたデータを処理する。処理された結果は、選択回路２７Ａに転送される。選択回路２７Ａには、暗号処理すべき暗号アルゴリズムのラウンド関数演算回路２５ａからの出力と、ラウンド関数演算回路２５ｂからの出力が入力されるが、暗号処理すべき暗号アルゴリズムのラウンド関数演算回路２５ａからの出力が選択され、選択回路２２ｃに転送される。
【００７０】
選択回路２２ｃでは、選択回路２７Ａから転送された演算結果が選択され、レジスタ２３ｃに転送される。レジスタ２３ｃは、選択回路２２ｃからの出力を保持する。これらの動作によって１ラウンド目の演算結果がレジスタ２３ｃに保持される。
【００７１】
上述したように、同様の処理を繰り返し、ラウンド関数演算を必要な回数、繰り返すことによって暗号演算を行い、その結果を出力する。そして、ラウンド関数演算回路２５ａでは、ラウンド関数演算毎に、ラウンド関数演算回路２５ｂからの中間結果データが、マスクデータとして利用される。暗号アルゴリズムによっては、ラウンド関数演算の後の処理を行い、暗号演算の結果が生成される。
【００７２】
上述した第２の実施の形態に係る暗号処理装置においては、ラウンド関数演算回路では、外部からの乱数ではなく、他の演算回路で生成される中間結果データをデータマスキングに用いるマスクデータとして用いる。よって、暗号演算ユニット１５Ａの外部からマスクデータを入力しないで、データマスキング法による暗号処理を行うことが可能となる。
【００７３】
なお、上述した例では、暗号演算ユニット１５Ａが２つのラウンド関数演算回路を有する場合であるが、暗号演算ユニット１５Ａが３つ以上のラウンド関数演算回路を有する場合であっても、同様にして、１つのレジスタを用いて、かつ他のラウンド関数演算回路において生成される中間結果データをデータマスキング用のマスクデータとして利用することも可能である。この場合、マスク生成回路２６は、３つ以上のラウンド関数演算回路間において、暗号処理を行うラウンド関数演算回路へマスクデータを供給可能になるように構成される。
【００７４】
なお、本実施の形態においても、第１の実施の形態と同様に、上述したマスク生成回路２６は、ラウンド関数演算回路２５ａと２５ｂの出力をそのまま選択してマスクデータとして出力するようにしているが、ラウンド関数演算回路２５ａと２５ｂの出力に対して所定の演算処理を行って、マスクデータを生成するようにしてもよい。  
さらになお、マスク生成回路は、図４に示すような圧縮回路と拡大回路を利用する回路であってもよい。
【００７５】
（第３の実施の形態）
（構成）
次に、本発明の第３の実施の形態に係る暗号処理装置について説明する。第１の実施の形態と同じ構成要素については、同じ符号を付して説明は省略する。本実施の形態は、各入力端子と各出力端子は、対応する暗号演算回路毎に設けられている点が、他の実施の形態と異なる。
【００７６】
図６は、第３の実施の形態に係る暗号回路モジュール１５Ｂの構成を示すブロック図である。  
図６に示すように、暗号回路モジュール１５Ｂは、互いに異なる暗号処理を行う複数の暗号演算回路２００ａ、２００ｂ、・・・２００ｎと、それらの暗号演算回路から出力される暗号処理の結果データを用いてマスクデータを生成するマスク生成回路２０１を含んで構成されている。
【００７７】
具体的には、暗号回路モジュール１５Ｂは、複数の入力端子２１ａ、２１ｂ、・・２１ｎ、複数の暗号演算回路２００ａ、２００ｂ、・・・２００ｎ、複数の出力端子２８ａ、２８ｂ、・・・２８ｎ、及び、マスク生成回路２６Ａとを含んで構成されている。各暗号演算回路は、図示しないが、入力データ及び出力データを保持するレジスタを有する。
【００７８】
各暗号演算回路に対応して、入力端子と出力端子が設けられている。例えば、入力端子２８ａは、暗号演算回路２００ａの入力端に接続され、出力端子２８ａは、暗号演算回路２００ａの出力端に接続されている。言い換えれば、暗号演算回路の数だけ、入力端子と出力端子がある。
【００７９】
各暗号演算回路では、対応する入力端子から暗号処理に必要なデータが入力され、マスク生成回路２０１で生成されたマスクデータを用いて、入力されたデータとは異なるデータに変換して暗号処理、すなわち暗号化及び／又は復号化の処理、が行われ、演算結果が各暗号演算回路から出力される。
【００８０】
マスク生成回路２０１には、各暗号演算回路からの出力データが入力され、制御回路２９Bからの制御信号CS１に基づいて選択した入力データを出力する。制御回路２９Bは、CPU１１からの指示に基づいて、マスクデータM1の生成に利用する処理結果を出力する暗号演算回路を選択し、マスク生成回路２０１からの出力データは、各暗号演算回路に、マスクデータM1として供給される。よって、マスク生成回路２０１は、各暗号演算回路からの処理結果から、マスクデータM1を生成して、マスクデータM1を利用する暗号演算回路へ供給する回路である。
【００８１】
なお、マスク生成回路２０１は、制御回路２９Bからの制御信号CS1に基づいて選択した入力データをそのまま出力する選択回路でもよいし、選択した入力データに対して、簡単な演算、例えば、入力データに排他的論理和演算等を施して得られたデータを、出力する演算回路でもよい。  
さらになお、マスク生成回路２０１は、図４に示すような圧縮回路と拡大回路を利用する回路であってもよい。
【００８２】
（動作）
入力データDin1に対して暗号演算回路２００ａにおいて所定の暗号処理を行う場合を例にして動作を説明する。暗号処理するデータDin1が入力端子２１ａに入力される。他の入力端子２１ｂ、・・２１ｎには、データDin1は入力されず、入力データDin1とは関係のないデータ、たとえば、内部のレジスタに保持されている、前回の演算で用いた入力データ、前回の演算結果が入力される。あるいは、CPU１１から供給されるランダムなデータなどが入力されてもよい。暗号演算回路２００ｂから２００ｎは、これらの入力データを用いて暗号処理を行うので、生成される結果データは、暗号演算回路２００ａで処理されるべき入力データD1とは無関係、もしくは、関係の小さいデータであり、データマスキングに用いるマスクデータとして利用可能である。
【００８３】
マスク生成回路２０１は、暗号演算回路２００ｂから２００ｎにおいて生成された結果データを用いて、暗号演算回路２００ａで使用されるマスクデータM1を生成する。マスク生成回路２０１は、制御回路２９Bからの制御信号CS1に基づいて、暗号演算回路２００ｂから２００ｎのうちの１つで生成された結果データを選択して出力する。マスク生成回路２０１から出力されたデータは、マスクデータM1として、暗号演算回路２００ａに転送される。
【００８４】
暗号演算回路２００ａは、入力データDin1とマスクデータM1を用いて所定の暗号処理を行い、処理結果データを出力端子２８ａに出力する。  
なお、以上の例は、暗号演算回路２００ａが暗号演算する場合であるが、他の暗号演算回路が暗号処理を行う場合も同様にして、マスクデータが生成されて、暗号処理に用いられる。
【００８５】
また、暗号演算回路２００ａから２００ｎの全てあるいは一部が、ラウンド関数演算回路でもよく、その場合は、他の暗号演算回路の演算結果が中間結果のデータを、マスクデータとして用いられるようにしてもよい。  
以上のように、本実施の形態によれば、外部からマスクデータとして乱数を供給することなく、データマスキング法による暗号処理を行うことが可能となる。
【００８６】
以上説明したように、上述した各実施の形態の暗号処理装置によれば、外部からマスクデータとして乱数を供給することなく、データマスキング法による暗号処理を行うことが可能であり、従来のような半導体チップ上で占める面積が大きい乱数発生回路が不要となる。
【００８７】
また、上述した各実施の形態では、暗号処理装置は、ICカードの例を挙げて説明したが、他の機器でもよい。  
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００８８】
１  暗号処理装置、１１  ＣＰＵ、１２  ＲＯＭ、１３  ＲＡＭ、１４，１７  インターフェース、１５  暗号回路モジュール、２１ａ〜２１ｎ  入力端子、２２ａ、２２ｂ、２７Ａ、１０３  選択回路、２３ａ、２３ｂ、２３ｃ、１０４  レジスタ、２４、２７  切り換え回路、２５ａ、２５ｂ、４０，５０  ラウンド関数演算回路、２６、３０  、２０１  マスク生成回路、２６ａ、２６ｂ  ＡＮＤ回路、２８ａ〜２８ｎ  出力端子、２９、２９Ａ、２９Ｂ  制御回路、１０１、１０２  圧縮回路、１０５  拡大回路、２００ａ〜２００ｎ  暗号演算回路
【図１】
2010245881.tif 000003
【図２】
2010245881.tif 000004
【図３】
2010245881.tif 000005
【図４】
2010245881.tif 000006
【図５】
2010245881.tif 000007
【図６】
2010245881.tif 000008