説明

暗号処理装置

【課題】乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供する。
【解決手段】暗号処理装置1は、入力された第1のデータDin1に対して第1の暗号処理を行う第1の暗号処理回路25aと、入力された第2のデータDin2に対して、第1の暗号処理回路25aの処理結果をマスクデータとして用いて、第1の暗号処理とは異なる第2の暗号処理を行う第2の暗号処理回路25bとを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号処理装置に関し、特にマスクデータを用いて暗号処理を行う暗号処理装置に関する。
【背景技術】
【0002】
従来より、暗号処理装置で消費される電力から暗号処理装置で用いられる秘密情報を取り出す電力解析という方法がある。このような解析方法への対策として、データマスキング法という技術が提案されている(例えば、特許文献1参照)。データマスキング法によれば、乱数発生回路がマスクデータとしての乱数を生成し、暗号処理回路は、その乱数発生回路から供給されるマスクデータを用いてデータマスキングを行いながら、暗号処理を実行する。
【0003】
データマスキング法は、一般に、入力された平文と乱数であるマスクデータとの排他的論理和等の演算を行うことによって、入力された平文を無関係のデータに変換して暗号処理を行うようにして、電力解析攻撃に対する耐性を高めている。
しかし、マスクデータとして使用される乱数は、一般に、乱数発生回路で生成されるが、演算クロック信号が発生する度に出力しなければならないので、乱数発生回路の回路規模が大きくなり、その結果、暗号処理装置が形成される半導体チップ上の乱数発生回路の占める面積も大きくなってしまうという問題がある。
【0004】
特に、例えば、ICカード等に、DES,AES等の複数種類の暗号処理回路が搭載されていれば、各暗号処理回路に対応した乱数を発生させなければならず、乱数発生回路の規模はさらに大きくなってしまう。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−66585号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明は、乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一態様によれば、入力された第1のデータに対して第1の暗号処理を行う第1の暗号処理回路と、入力された第2のデータに対して、前記第1の暗号処理回路の処理結果をマスクデータとして用いて、前記第1の暗号処理とは異なる第2の暗号処理を行う第2の暗号処理回路とを有する暗号処理装置を提供することができる。
【発明の効果】
【0008】
本発明によれば、乱数発生回路からの乱数を用いない、データマスキング法による暗号処理を行う暗号処理装置を提供することができる。
【図面の簡単な説明】
【0009】
【図1】本発明の第1の実施の形態に係わる暗号処理装置1の構成を示す構成図である。
【図2】本発明の実施の形態に係わる暗号回路モジュール15の構成を示すブロック図である。
【図3】第1の実施の形態において、2つのラウンド関数演算回路として、AESとDESのラウンド関数を用いた場合の暗号回路モジュール15の構成を示すブロック図である。
【図4】図3のマスク生成回路30の構成を示すブロック図である。
【図5】本発明の第2の実施の形態に係る暗号回路モジュール15Aの構成を示すブロック図である。
【図6】本発明の第3の実施の形態に係る暗号回路モジュール15Bの構成を示すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
(構成)
まず、図1に基づき、本実施の第1の形態に係わる暗号処理回路が搭載される暗号処理装置の構成を説明する。図1は、第1の実施の形態に係わる暗号処理装置1の構成を示す構成図である。
【0011】
暗号処理装置1は、中央処理装置(CPU)11と、プログラム等を記憶したROM12と、CPU11の作業用記憶領域としてのRAM13と、外部とのデータの送受信を行うための送受信インターフェース回路(以下、送受信I/Fと略す)14と、暗号処理回路である暗号回路モジュール15と、暗号回路モジュール15とバス16との暗号回路I/F17とを含んで構成されている。CPU11と、ROM12、RAM13と、送受信I/F14と、暗号回路I/F17は、バス16を介して互いに接続されている。
【0012】
暗号処理装置1は、例えば、IC(Integrated Circuit)カードであり、カードリーダ装置等の外部装置(図示せず)からのデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力する。外部装置とのデータの送受信は、送受信I/F14を介して、例えば、図示しない無線通信用の回路を介して無線通信により行われる。
【0013】
また、CPU11と暗号回路モジュール15間で送受信されるデータも、暗号化される。そのため、図示しないが、CPU11とバス16の間と、バス16と暗号回路I/F15間には、それぞれ、例えば排他的論理和演算を行う回路が設けられている。
暗号回路モジュール15は、二種類の暗号処理回路を含み、二種類の暗号処理回路は、互いに異なる暗号処理、暗号化及び/又は復号化の処理、を実行する。
また、図2は、暗号回路モジュール15の構成を示すブロック図である。
図2に示すように、暗号回路モジュール15は、入力端子21a、21b、選択回路22a、22b、レジスタ23a、23b、切り換え回路(以下、スイッチ回路という)24、それぞれが互いに異なる所定のラウンド関数を計算するラウンド関数演算回路25a、25b、マスク生成回路26、スイッチ回路27、出力端子28a、28b、及び制御回路29を有して構成されている。
【0014】
2つの入力端子21a、21bは、それぞれ暗号回路I/F17からの入力データDin1、Din2を入力する端子である。2つの選択回路22a、22bのそれぞれは、ラウンド関数演算の結果出力と入力データを選択するための回路である。レジスタ23a、23bは、入力データ又はラウンド関数演算の結果を保持するための回路である。
【0015】
スイッチ回路24は、制御回路29からの制御信号によって、レジスタ23aと23bの出力を、それぞれラウンド関数演算回路25aと25bに供給するか、あるいはそれぞれラウンド関数演算回路25bと25aに供給するかを切り換える切り換え回路である。
【0016】
ラウンド関数演算回路25a、25bは、所定の暗号化演算処理あるいは所定の復号化演算処理を実行する回路である。よって、暗号処理は、暗号化処理あるいは復号化処理を意味する。ラウンド関数演算回路25aは、入力データに対して、ラウンド関数演算回路25bの処理結果をマスクデータMbとして用いて、ラウンド関数演算回路25bとは異なる所定の暗号処理を行う暗号処理回路である。ラウンド関数演算回路25bは、入力データに対して、ラウンド関数演算回路25aの処理結果をマスクデータMaとして用いて、ラウンド関数演算回路25aとは異なる所定の暗号処理を行う暗号処理回路である。
【0017】
マスク生成回路26は、各ラウンド関数演算回路から出力されるラウンド関数演算の中間結果データからマスクデータを生成して、マスクデータを利用するラウンド関数演算回路へ供給する回路である。
【0018】
スイッチ回路27は、制御回路29からの制御信号CSによって、2つのラウンド関数演算回路25aと25bの結果出力を、それぞれレジスタ23aと23bに供給するか、あるいはそれぞれレジスタ23bと23aに供給するかを切り換える切り換え回路である。
【0019】
出力端子28a、28bは、スイッチ回路27を介して2つのラウンド関数演算回路25aと25bの出力データDout1、Dout2を出力する端子である。
制御回路29は、スイッチ回路24と27に対して、入力されたデータを出力する出力端を切り換えるための制御信号CSを生成して出力する回路である。
【0020】
また、マスク生成回路26は、2つのAND回路26a、26bを含む。AND回路26aの一方の入力には、暗号演算する回路を指定する暗号演算指定信号CP1が入力され、他方の入力には、ラウンド関数演算回路25bからの中間結果データが入力され、暗号演算指定信号CP1がHIGHのときに、ラウンド関数演算回路25bからの中間結果データをラウンド関数演算回路25aに出力する。
【0021】
同様に、AND回路26bの一方の入力には、暗号演算する回路を指定する暗号演算指定信号CP2が入力され、他方の入力には、ラウンド関数演算回路25aからの中間結果データが入力され、暗号演算指定信号CP2がHIGHのときに、ラウンド関数演算回路25aからの中間結果データをラウンド関数演算回路25bに出力する。
なお、ここでは、暗号演算指定信号CP1、CP2は、CPU11から直接供給され、あるいはCPU11から制御回路29を介して供給され、2つの信号のうち一方だけがHIGHとなる。
【0022】
(動作)
次に図2に示した暗号回路モジュール15の動作を説明する。
ラウンド関数演算回路25a、25bへの入力データDin1とDin2は、それぞれ入力端子21aと21bに供給されると、入力データDin1とDin2は、それぞれ選択回路22aと22bに転送される。選択回路22aと22bは、それぞれ入力データDin1とDin2を選択してレジスタ23aと23bへ出力する。
【0023】
ここでは、入力データDin1が暗号処理対象データであり、入力端子21aに供給されて選択回路22aを介してレジスタ23aに与えられ、入力データDin2が、入力データDin1とは無関係なデータで、入力端子21bに供給された例を説明する。
【0024】
選択回路22aは、始めに、入力端子21aを選択する。レジスタ23aは、選択回路22aから転送された入力データDin1を保持する。レジスタ23aに保持されているデータは、スイッチ回路24の動作に応じて、ラウンド関数演算回路25a又は25bに転送される。スイッチ回路24は、制御回路29からの制御信号CSに基づいて、レジスタ23aに保持されているデータを、ラウンド関数演算回路25aと25bの一方に転送し、レジスタ23bに保持されているデータを、入力データDin1の暗号処理には使用しないラウンド関数演算回路25aと25bの他方に転送する。以下、入力データDin1の暗号処理する回路が、ラウンド関数演算回路25bである例について説明する。
【0025】
すなわち、暗号処理対象の入力データDin1は、レジスタ23aに保持されており、そのデータをラウンド関数演算回路25bに出力するようにスイッチ回路24は、入力データの切り換えを行う。このときレジスタ23bに保持されているデータは、ラウンド関数演算回路25aに転送される。
【0026】
入力データDin1に対する暗号アルゴリズム演算に対応したラウンド関数演算回路25bは、入力されたデータを用いて所定のラウンド関数演算を行う。一方、ラウンド関数演算回路25aは、レジスタ23bに保持された、入力データDin1とは無関係なデータである入力データDin2を用いて所定のラウンド関数演算を行い、その中間結果データをマスク生成回路26へ出力する。
【0027】
このとき、暗号演算指定信号CP2がHIGHであり、ラウンド関数演算回路25aの中間結果データが、AND回路26bからラウンド関数演算回路25bに、マスクデータとして供給される。よって、ラウンド関数演算回路25bは、AND回路26bから供給されたデータを、データマスキング用のマスクデータとして用いて、所定の暗号処理を実行する。
【0028】
この中間結果データは、入力データDin1と無関係なデータDin2から生成され、かつ、演算すべき暗号アルゴリズムとは異なる暗号アルゴリズムで演算された結果であるので、入力データDin1とは無関係なデータである。
【0029】
すなわち、ラウンド関数演算回路25aの中間結果データを用いてマスク生成回路26は、マスクデータを生成し、実行すべき暗号アルゴリズムを計算するラウンド関数演算回路25bに供給する。ラウンド関数演算回路25bは、マスク生成回路26から出力されたマスクデータを用いて、スイッチ回路24から入力されたデータを処理する。処理された結果は、スイッチ回路27に供給される。
【0030】
また、ラウンド関数演算回路25aは、入力データDin1とは無関係なデータを用いて所定のラウンド関数演算を行い、その結果データをスイッチ回路27へも供給する。スイッチ回路27には、実行すべき暗号アルゴリズムのラウンド関数演算回路25bからの出力データと、実行すべき暗号アルゴリズムでない暗号アルゴリズムを実行するラウンド関数演算回路25aからの結果データが入力される。スイッチ回路27は、入力された2つの演算結果の出力データを制御信号CSに従って、2つの出力端子から出力する。
【0031】
スイッチ回路24と27のデータの切り替えは、ランダムに選択するように行ってもよいし、あるいは、常に一方を選択するように行ってもよい。
たとえば、ラウンド関数演算回路25bの結果が出力端子27bから出力するようにスイッチ回路27が動作する場合は、レジスタ23bに暗号演算すべきデータが保持され、もう一方のレジスタ23aには、暗号演算には無関係なデータが保持される。
【0032】
次のラウンド関数演算が行われるときには、スイッチ回路24は、レジスタ23bからのデータをラウンド関数演算回路25bに転送するように制御され、レジスタ23aからのデータをラウンド関数演算回路25aに転送するように、制御回路29からの制御信号CSによって制御される。
【0033】
逆に、ラウンド関数演算回路25bの結果が出力端子27aから出力するようにスイッチ回路27が動作する場合は、レジスタ23aに演算すべきデータが保持され、レジスタ23bには暗号演算には無関係なデータが保持される。この場合、次のラウンド関数演算が行われるときには、スイッチ回路24は、レジスタ23aからのデータをラウンド関数演算回路25bに転送し、レジスタ23bからのデータをラウンド関数演算回路25aに転送するように、制御回路29からの制御信号CSによって制御される。
【0034】
以下、同様の処理を繰り返し、ラウンド関数演算を必要な回数、繰り返すことによって暗号演算を行う。そして、ラウンド関数演算回路25bでは、ラウンド関数演算毎に、ラウンド関数演算回路25aからの中間結果データが、マスクデータとして利用される。最終的な演算結果は、出力端子28aあるいは28bから出力される。暗号アルゴリズムの種類によっては、ラウンド関数演算の後の必要な処理が行われ、暗号演算の結果が生成されて出力される。
【0035】
以上は、暗号処理をラウンド関数演算回路25bが行う例を説明したが、暗号処理をラウンド関数演算回路25aが実行する場合は、入力データDin2が、暗号演算される入力データとして、入力端子21bに入力される。その後の動作は、上述した動作と同様である。
【0036】
以上のように、上述した暗号処理装置1によれば、暗号処理において、マスクデータは、暗号処理すべき入力データに対する暗号処理に使用しない暗号演算回路の中間結果データを用いている。よって、データマスキング用のマスクデータを生成するための乱数発生回路を必要としないので、暗号処理装置における回路面積の増大を防ぐことができる。
【0037】
以上のように、本実施の形態の暗号処理装置では、ラウンド関数演算回路のためのマスクデータは、暗号処理回路の外部において発生された乱数ではなく、入力データと無関係なデータを暗号処理対象データに対する暗号処理を行わないラウンド関数演算回路で処理した中間結果データを用いて、データマスキング法による暗号演算が行われる。すなわち、本実施の形態の暗号処理装置は、暗号処理回路の外部から乱数を入力することなくデータマスキング法による暗号処理を行うことが可能となる。
【0038】
なお、上述したマスク生成回路26は、ラウンド関数演算回路25aと25bの出力をそのまま選択してマスクデータとして出力するようにしているが、ラウンド関数演算回路25aと25bの出力に対して所定の演算処理を行って、マスクデータを生成するようにしてもよい。
【0039】
次に、上述した2つのラウンド関数にAESとDESの暗号アルゴリズムを用いた場合の具体例を説明する。
(AESとDESの暗号アルゴリズムを用いた場合の構成例)
図3は、2つのラウンド関数演算回路として、AES(Advanced Encryption Standard)とDES(Data Encryption Standard)のラウンド関数を用いた場合の暗号回路モジュール15の構成を示すブロック図である。図2と同じ構成要素については同じ符号を付して説明は省略する。
【0040】
図3に示すように、暗号回路モジュール15は、マスク生成回路30と、AESのラウンド関数演算を行うラウンド関数演算回路40と、DESのラウンド関数演算を行うラウンド関数演算回路50とを含む。また、暗号回路モジュール15は、ラウンド鍵Kinが入力される入力端子21c、21dを有する。
【0041】
AESのラウンド関数演算を行うラウンド関数演算回路40は、サブバイト部(AES SubBytes)41、シフトロー部(AES ShiftRows)42、ミックスカラム部(AES MixColumns)43、選択回路44、及びアドラウンドキー部(AddRoundKey)45の各関数部に加えて、アドマスク部(AddMask)61、デルマスク部(DelMask)62、アドマスク部(AddMask)63、及びデルマスク部(DelMask)64を含む。
【0042】
サブバイト部41は、非線形の変換テーブルである。シフトロー部42は、バイト単位の入れ替えを行う部である。ミックスカラム部43は、有限体上の乗算を行う部である。アドラウンドキー部45は、ラウンド鍵Kinとの加算、すなわち排他的論理和演算(XOR)を行う部である。
【0043】
マスク付加回路であるアドマスク部61は、スイッチ回路24からのデータを入力する。アドマスク部61の出力は、デルマスク部62に供給される。マスク除去回路であるデルマスク部62の出力は、サブバイト部41とアドマスク部63に供給される。マスク付加回路であるアドマスク部63の出力は、シフトロー部42と選択回路44に供給される。シフトロー部42の出力は、ミックスカラム部43と選択回路44に供給される。選択回路44の出力は、アドラウンドキー部45に供給される。アドラウンドキー部45の出力は、デルマスク部64を介して、スイッチ回路27に供給される。なお、AESの場合、ラウンドによって使用される関数が異なるため、選択回路44によって関数出力の選択が行われる。
【0044】
従って、AESのラウンド関数演算を行うラウンド関数演算回路40では、サブバイト部41は、入力側マスクデータMskSAinと出力側マスクデータMskSAoutでマスクされている。レジスタ23aから入力側マスクデータMskSAinが付けられるまでは、マスクデータMskRAoldでマスクされている。そして、サブバイト部41からレジスタ23aまではマスクデータMskRAnewでマスクされている。
【0045】
DESのラウンド関数演算を行うラウンド関数演算回路50は、E関数部51とキーアド部(KeyAdd)52とSBOX部53とP関数を含んで構成されるf関数部54、及びf関数部54の出力とLデータとの排他的論理和をとるXOR部(AddL)55に加えて、2つのアドマスク部(AddMask)71,73と、2つのデルマスク部(DelMask)72,74を含む。SBOX部53は、非線形の変換テーブルである。
【0046】
f関数部54のP関数は、ビット単位の入れ替えを行う関数である。E関数部51は、ビット単位の拡大を行う。キーアド部52は、ラウンド鍵Kinとの加算(XOR)を行う部である。
【0047】
DESのラウンド関数演算を行うラウンド関数演算回路50では、SBOX部53は、入力側マスクデータMskSDinと出力側マスクデータMskSDoutでマスクされている。レジスタ23bから入力側マスクデータMskSDinが付けられるまではマスクデータMskRDoldでマスクされている。SBOX部53からレジスタ23bまではマスクデータMskRDnewでマスクされている。
【0048】
次にマスク生成回路30について説明する。図4は、マスク生成回路30の構成を示すブロック図である。
マスク生成回路30は、2つの圧縮回路101,102、選択回路103、レジスタ104、及び2つの拡大回路105、106を含んで構成されている。ラウンド関数演算回路40からのnビットのデータが、圧縮回路101に入力される。圧縮回路101は、nビットのデータに対して、所定のデータ圧縮処理を行って選択回路103にkビットの出力を供給する。ラウンド関数演算回路50からのmビットのデータが、圧縮回路102に入力される。圧縮回路102は、mビットのデータに対して、所定の圧縮処理を行って選択回路103にkビットの出力を供給する。
【0049】
選択回路103は、一方の入力を選択して、レジスタ104と、2つの拡大回路105,106に、kビットのデータを供給する。拡大回路105は、入力された2つのkビットデータに基づいて、所定のデータ拡大処理を行って、xビットのデータを生成し、ラウンド関数演算回路40に出力する。同様に、拡大回路106は、入力された2つのkビットデータに基づいて、所定の拡大処理を行って、yビットのデータを生成し、ラウンド関数演算回路50に出力する。
マスク生成装置30において、圧縮回路101は、ラウンド関数演算回路40から入力されるnビットの中間データをkビットに圧縮する。圧縮回路102は、ラウンド関数演算回路50から入力されるmビットの中間データをkビットに圧縮する。2つの圧縮回路からの出力の一方を選択する選択回路の出力は、レジスタ104に保持される。拡大回路105は、選択回路103の出力とレジスタ104の出力からxビットのマスクデータを生成し、拡大回路106は、選択回路103の出力とレジスタ104の出力からyビットのマスクデータを生成する。
【0050】
図3の構成の場合、使用されるマスクデータは、AESのラウンド関数演算回路40では、MskSAin, MskRAold, MskRAnew, MskSAoutであり、DESのラウンド関数演算回路50では、MskSDin, MskRDold, MskRDnew, MskSDoutである。マスクデータMskRAold, MskRDoldは、前回のラウンドでつけられたマスクデータであり、次のラウンドでは、これらのマスクデータは除去される。除去するためのマスクデータは、レジスタ104に保持されているマスクデータである。
【0051】
圧縮回路101,102の例として、例えば、入力されたnビット(またはmビット)のデータからkビットを選択する回路や、XORなどによって複数のビットを減らす回路、等がある。また、拡大回路105,106の例として、特定のビットを繰り返して出力する回路、特定のビットを繰り返した後に別のデータとの排他的論理和(XOR)をとって出力する回路、等がある。
【0052】
(動作)
上述した図3と図4に示した回路において、データマスキングのために用いられるマスクデータは、AESのラウンド関数演算の中間結果データおよびDESのラウンド関数演算の中間結果データからマスク生成回路30によって生成される。
【0053】
図3に示した暗号回路モジュール15の動作について説明する。例として、暗号回路モジュール15がAESの暗号処理を行う場合を説明する。この場合、DESのラウンド関数演算部は、AESのラウンド関数演算部で使用されるマスクデータを生成するために用いられる。
【0054】
まず、AESの演算では、最初にアドラウンドキー部45によりAddRoundKey処理が行われ、次に、サブバイト部41によるSubBytes処理、シフトロー部42によるShiftRows処理、ミックスカラム部43によるMixColumns処理、及びアドラウンドキー部45によるAddRoundKey処理が繰り返し行われ、最後に、サブバイト部41によるSubBytes処理、シフトロー部42によるShiftRows処理及びアドラウンドキー部45によるAddRoundKey処理が行われる。処理の選択は、選択回路44による入力の選択により行われる。
【0055】
図3の構成において、AESの暗号処理を行う場合、最初にレジスタ23aには、マスクデータMskAR1でマスクされた入力データがCPU11から転送され、保持される。レジスタ23aの出力は、マスク付加回路であるアドマスク部61によってマスクデータMskAS1でマスクされる。
【0056】
次にマスク除去回路であるデルマスク部62によって、マスクデータMskAR1が除去される。
マスクデータMskAR1が除去されたデータは、マスク付加回路であるアドマスク部63に転送され、マスクデータMskRA2でマスクされ、選択回路44に転送される。選択回路44は、最初に、アドマスク部63の出力を選択し、アドラウンドキー部45に転送する。
【0057】
アドラウンドキー部45において、AddRoundKey処理が行われ、その処理結果は、マスク除去回路であるデルマスク部64に転送される。デルマスク部64では、マスクデータMskAS1が除去され、スイッチ回路27を経由して、レジスタ23aに転送される。この処理によってAddRoundKey処理が行われ、マスクデータMskRA2でマスクされた演算結果がレジスタ23aに保持される。
【0058】
続いて、選択回路44による入力の選択を行うことにより、サブバイト部41によるSubBytes処理、シフトロー部42によるShiftRows処理、ミックスカラム部43によるMixColumns処理、及びアドラウンドキー部45によるAddRoundKey処理が繰り返し行われる。そして、選択回路44による入力の選択を行うことにより、最後に、サブバイト部41によるSubBytes処理、シフトロー部42によるShiftRows処理及びアドラウンドキー部45によるAddRoundKey処理が行われる。
【0059】
一方、DESのラウンド関数演算回路50には、AESの入力データと無関係なデータDin2がレジスタ23bに保持され、ラウンド関数演算回路50において、DESのラウンド関数演算処理が実行される。このときの中間結果データがマスク生成部30に転送され、AESの演算で用いられるマスクデータMskSAin, MskSAout, MskRAold, MskRAnewが生成される。このように生成された各マスクデータがAESのラウンド関数演算回路40に転送され、AESのラウンド関数演算処理において用いられる。
【0060】
以上説明した例は、暗号処理をAESのラウンド関数演算回路40により行う場合であるが、暗号処理がDESのラウンド関数演算回路50により行われる場合は、AESのラウンド関数演算回路40において生成された各マスクデータがDESのラウンド関数演算回路50に転送され、DESのラウンド関数演算処理において用いられる。
【0061】
以上のように、AESとDESの一方の暗号処理回路を用いて、暗号処理を行っていない他方の暗号処理回路の出力をマスクデータとして用いることにより、外部からの乱数を用いないで、データマスキングを適用した暗号処理を行うことが可能となる。
【0062】
(第2の実施の形態)
(構成)
次に、本発明の第2の実施の形態に係る暗号処理装置について説明する。第1の実施の形態と同じ構成要素については、同じ符号を付して説明は省略する。
図5は、第2の実施の形態に係る暗号回路モジュール15Aの構成を示すブロック図である。
【0063】
図5に示すように、暗号回路モジュール15Aは、入力端子21c、選択回路22c、レジスタ23c、それぞれが互いに異なる所定のラウンド関数を計算するラウンド関数演算回路25a、25b、マスク生成回路26、選択回路27A、出力端子28c、及び制御回路29Aを有して構成されている。ラウンド関数演算回路25aと25bは、それぞれ、互いに異なる暗号処理、すなわち暗号化及び/又は復号化の処理、を行う回路である。
【0064】
本実施の形態では、1つの入力端子21cと、1つの選択回路22cと、1つのレジスタ23cを用いるようにした点が、第1の実施の形態と異なる。選択回路27Aは、暗号演算を行っているラウンド関数演算回路を選択して、選択されたラウンド関数演算回路の出力データを、レジスタ23cに供給する。
【0065】
暗号アルゴリズムの多くは、ラウンド関数演算を繰り返し行うことによって暗号処理を実行している。図5の暗号回路ユニット15Aにおいても、暗号演算回路として暗号アルゴリズムにおけるラウンド関数演算を実行している。図5に示した暗号回路ユニット15Aは、入力データを入力する端子である入力端子21c、ラウンド関数演算の結果を保持するためのレジスタ23c、互いに異なるラウンド関数演算を計算するラウンド関数演算回路25a、25b、それらのラウンド関数演算回路から出力されるラウンド関数演算の中間結果データからマスクデータを生成するマスク生成回路26、ラウンド関数演算回路25a、25bの結果出力を選択するための選択回路27A、ラウンド関数演算の結果出力と入力データを選択するための選択回路22c、演算結果を出力する端子である出力端子28cとを含んで構成されている。
【0066】
(動作)
次に、図5に示した暗号回路ユニット15Aの動作を説明する。以下の例では、暗号処理は、ラウンド関数演算回路25aが行い、ラウンド関数演算回路25bは、マスクデータを生成するものとする。
2つのラウンド関数演算回路25aと25bへの入力データDinが入力端子21cに入力されると、選択回路22cに転送される。選択回路22cは、入力データDinを選択してレジスタ23cに転送する。レジスタ23cは、転送された入力データを保持する。レジスタ23cは、保持しているデータをラウンド関数演算回路25aと25bに転送する。ラウンド関数演算回路25aと25bへの入力データは同一データであり、レジスタ23cは、その同一データを保持する。
【0067】
入力データDinに対して暗号演算を行う暗号アルゴリズムに対応したラウンド関数演算回路25aは、入力されたデータDinを用いてラウンド関数演算を実行する。一方、他のラウンド関数演算回路25bも同様に入力されたデータを用いてラウンド関数演算を実行するが、その中間結果をマスク生成回路26へ出力する。このとき、AND回路26aの入力CP1がHIGHとなっており、ラウンド関数演算回路25bの演算結果データは、マスクデータとして、ラウンド関数演算回路25aに供給される。
【0068】
ラウンド関数演算回路25bの中間結果は、同一の入力データDinから生成されたデータであるが、演算すべき暗号アルゴリズムとは異なるアルゴリズムで演算された結果であるので、入力データDinとの関係は小さい。この中間結果を用いてマスク生成回路26はマスクデータを生成し、暗号処理すべき暗号アルゴリズムを計算するラウンド関数演算回路25aに転送する。
【0069】
ラウンド関数演算回路25aは、マスク生成回路26から出力されたマスクデータを用いて、レジスタ23cから出力されたデータを処理する。処理された結果は、選択回路27Aに転送される。選択回路27Aには、暗号処理すべき暗号アルゴリズムのラウンド関数演算回路25aからの出力と、ラウンド関数演算回路25bからの出力が入力されるが、暗号処理すべき暗号アルゴリズムのラウンド関数演算回路25aからの出力が選択され、選択回路22cに転送される。
【0070】
選択回路22cでは、選択回路27Aから転送された演算結果が選択され、レジスタ23cに転送される。レジスタ23cは、選択回路22cからの出力を保持する。これらの動作によって1ラウンド目の演算結果がレジスタ23cに保持される。
【0071】
上述したように、同様の処理を繰り返し、ラウンド関数演算を必要な回数、繰り返すことによって暗号演算を行い、その結果を出力する。そして、ラウンド関数演算回路25aでは、ラウンド関数演算毎に、ラウンド関数演算回路25bからの中間結果データが、マスクデータとして利用される。暗号アルゴリズムによっては、ラウンド関数演算の後の処理を行い、暗号演算の結果が生成される。
【0072】
上述した第2の実施の形態に係る暗号処理装置においては、ラウンド関数演算回路では、外部からの乱数ではなく、他の演算回路で生成される中間結果データをデータマスキングに用いるマスクデータとして用いる。よって、暗号演算ユニット15Aの外部からマスクデータを入力しないで、データマスキング法による暗号処理を行うことが可能となる。
【0073】
なお、上述した例では、暗号演算ユニット15Aが2つのラウンド関数演算回路を有する場合であるが、暗号演算ユニット15Aが3つ以上のラウンド関数演算回路を有する場合であっても、同様にして、1つのレジスタを用いて、かつ他のラウンド関数演算回路において生成される中間結果データをデータマスキング用のマスクデータとして利用することも可能である。この場合、マスク生成回路26は、3つ以上のラウンド関数演算回路間において、暗号処理を行うラウンド関数演算回路へマスクデータを供給可能になるように構成される。
【0074】
なお、本実施の形態においても、第1の実施の形態と同様に、上述したマスク生成回路26は、ラウンド関数演算回路25aと25bの出力をそのまま選択してマスクデータとして出力するようにしているが、ラウンド関数演算回路25aと25bの出力に対して所定の演算処理を行って、マスクデータを生成するようにしてもよい。
さらになお、マスク生成回路は、図4に示すような圧縮回路と拡大回路を利用する回路であってもよい。
【0075】
(第3の実施の形態)
(構成)
次に、本発明の第3の実施の形態に係る暗号処理装置について説明する。第1の実施の形態と同じ構成要素については、同じ符号を付して説明は省略する。本実施の形態は、各入力端子と各出力端子は、対応する暗号演算回路毎に設けられている点が、他の実施の形態と異なる。
【0076】
図6は、第3の実施の形態に係る暗号回路モジュール15Bの構成を示すブロック図である。
図6に示すように、暗号回路モジュール15Bは、互いに異なる暗号処理を行う複数の暗号演算回路200a、200b、・・・200nと、それらの暗号演算回路から出力される暗号処理の結果データを用いてマスクデータを生成するマスク生成回路201を含んで構成されている。
【0077】
具体的には、暗号回路モジュール15Bは、複数の入力端子21a、21b、・・21n、複数の暗号演算回路200a、200b、・・・200n、複数の出力端子28a、28b、・・・28n、及び、マスク生成回路26Aとを含んで構成されている。各暗号演算回路は、図示しないが、入力データ及び出力データを保持するレジスタを有する。
【0078】
各暗号演算回路に対応して、入力端子と出力端子が設けられている。例えば、入力端子28aは、暗号演算回路200aの入力端に接続され、出力端子28aは、暗号演算回路200aの出力端に接続されている。言い換えれば、暗号演算回路の数だけ、入力端子と出力端子がある。
【0079】
各暗号演算回路では、対応する入力端子から暗号処理に必要なデータが入力され、マスク生成回路201で生成されたマスクデータを用いて、入力されたデータとは異なるデータに変換して暗号処理、すなわち暗号化及び/又は復号化の処理、が行われ、演算結果が各暗号演算回路から出力される。
【0080】
マスク生成回路201には、各暗号演算回路からの出力データが入力され、制御回路29Bからの制御信号CS1に基づいて選択した入力データを出力する。制御回路29Bは、CPU11からの指示に基づいて、マスクデータM1の生成に利用する処理結果を出力する暗号演算回路を選択し、マスク生成回路201からの出力データは、各暗号演算回路に、マスクデータM1として供給される。よって、マスク生成回路201は、各暗号演算回路からの処理結果から、マスクデータM1を生成して、マスクデータM1を利用する暗号演算回路へ供給する回路である。
【0081】
なお、マスク生成回路201は、制御回路29Bからの制御信号CS1に基づいて選択した入力データをそのまま出力する選択回路でもよいし、選択した入力データに対して、簡単な演算、例えば、入力データに排他的論理和演算等を施して得られたデータを、出力する演算回路でもよい。
さらになお、マスク生成回路201は、図4に示すような圧縮回路と拡大回路を利用する回路であってもよい。
【0082】
(動作)
入力データDin1に対して暗号演算回路200aにおいて所定の暗号処理を行う場合を例にして動作を説明する。暗号処理するデータDin1が入力端子21aに入力される。他の入力端子21b、・・21nには、データDin1は入力されず、入力データDin1とは関係のないデータ、たとえば、内部のレジスタに保持されている、前回の演算で用いた入力データ、前回の演算結果が入力される。あるいは、CPU11から供給されるランダムなデータなどが入力されてもよい。暗号演算回路200bから200nは、これらの入力データを用いて暗号処理を行うので、生成される結果データは、暗号演算回路200aで処理されるべき入力データD1とは無関係、もしくは、関係の小さいデータであり、データマスキングに用いるマスクデータとして利用可能である。
【0083】
マスク生成回路201は、暗号演算回路200bから200nにおいて生成された結果データを用いて、暗号演算回路200aで使用されるマスクデータM1を生成する。マスク生成回路201は、制御回路29Bからの制御信号CS1に基づいて、暗号演算回路200bから200nのうちの1つで生成された結果データを選択して出力する。マスク生成回路201から出力されたデータは、マスクデータM1として、暗号演算回路200aに転送される。
【0084】
暗号演算回路200aは、入力データDin1とマスクデータM1を用いて所定の暗号処理を行い、処理結果データを出力端子28aに出力する。
なお、以上の例は、暗号演算回路200aが暗号演算する場合であるが、他の暗号演算回路が暗号処理を行う場合も同様にして、マスクデータが生成されて、暗号処理に用いられる。
【0085】
また、暗号演算回路200aから200nの全てあるいは一部が、ラウンド関数演算回路でもよく、その場合は、他の暗号演算回路の演算結果が中間結果のデータを、マスクデータとして用いられるようにしてもよい。
以上のように、本実施の形態によれば、外部からマスクデータとして乱数を供給することなく、データマスキング法による暗号処理を行うことが可能となる。
【0086】
以上説明したように、上述した各実施の形態の暗号処理装置によれば、外部からマスクデータとして乱数を供給することなく、データマスキング法による暗号処理を行うことが可能であり、従来のような半導体チップ上で占める面積が大きい乱数発生回路が不要となる。
【0087】
また、上述した各実施の形態では、暗号処理装置は、ICカードの例を挙げて説明したが、他の機器でもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【0088】
1 暗号処理装置、11 CPU、12 ROM、13 RAM、14,17 インターフェース、15 暗号回路モジュール、21a〜21n 入力端子、22a、22b、27A、103 選択回路、23a、23b、23c、104 レジスタ、24、27 切り換え回路、25a、25b、40,50 ラウンド関数演算回路、26、30 、201 マスク生成回路、26a、26b AND回路、28a〜28n 出力端子、29、29A、29B 制御回路、101、102 圧縮回路、105 拡大回路、200a〜200n 暗号演算回路

【特許請求の範囲】
【請求項1】
入力された第1のデータに対して第1の暗号処理を行う第1の暗号処理回路と、
入力された第2のデータに対して、前記第1の暗号処理回路の処理結果をマスクデータとして用いて、前記第1の暗号処理とは異なる第2の暗号処理を行う第2の暗号処理回路と、
を有することを特徴とする暗号処理装置。
【請求項2】
入力された前記第1のデータを保持する第1のレジスタと、
入力された前記第2のデータを保持する第2のレジスタと、
を有し、
前記第1のデータは、前記第2のデータとは無関係であり、
前記第1の暗号処理回路は、前記第1のデータに対して、前記第2の暗号処理回路の処理結果をマスクデータとして用いて、前記第1の暗号処理を行うことを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記第1のレジスタと前記第2のレジスタのデータを、それぞれ前記第1の暗号処理回路と前記第2の暗号処理回路に供給するか、あるいはそれぞれ前記第2の暗号処理回路と前記第1の暗号処理回路に供給するかを切り換える第1の切り換え回路と、
を有することを特徴とする請求項2に記載の暗号処理装置。
【請求項4】
前記第1の暗号処理回路の処理結果と前記第2の暗号処理回路の処理結果を、それぞれ前記第1のレジスタと前記第2のレジスタに供給するか、あるいはそれぞれ前記第2のレジスタと前記第1のレジスタに供給するかを切り換える第2の切り換え回路と、
を有することを特徴とする請求項3に記載の暗号処理装置。
【請求項5】
入力された第1のデータに対して第1の暗号処理を行う第1の暗号処理回路と、
入力された第2のデータに対して、前記第1の暗号処理とは異なる第2の暗号処理を行う第2の暗号処理回路と、
前記第1の暗号処理回路の処理結果と前記第2の暗号処理回路の処理結果から、前記マスクデータを生成して、前記第1及び前記第2の暗号処理回路のうち前記マスクデータを利用する暗号処理回路へ供給するマスク生成回路と、
を有することを特徴とする暗号処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate