(57)【要約】【課題】消費電力を解析しても秘密情報を、より取り出し難くして、電力解析攻撃耐性の高い暗号処理回路を実現する。【解決手段】暗号処理を行う暗号回路モジュール１５は、暗号処理に用いられる鍵データに関連した第１のデータを保持するレジスタ６３と、第１のデータと依存関係のない第２のデータを保持するレジスタ６４と、第１のデータを保持するレジスタ６３と第２のデータを保持するレジスタ６４の内容を交互に選択して出力するセレクタ６１，６２と、セレクタ６１，６２から出力されるデータに対して、所定のシフト演算を行う左シフト回路６５とを有する。【選択図】図３
2008061118.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理を行う暗号処理回路であって、
前記暗号処理に用いられる入力データに関連した第１のデータを保持する第１のレジスタと、
前記第１のデータと依存関係のない第２のデータを保持する第２のレジスタと、
前記第１のデータを保持する第１のレジスタと前記第２のデータを保持する第２のレジスタの内容を交互に選択して出力する選択回路と、
該選択回路から出力されるデータに対して、所定の演算を行う演算回路と、
を有することを特徴とする暗号処理回路。
【請求項２】
前記演算回路は、前記第１のレジスタからの前記第１のデータと、前記第２のレジスタからの前記第２のデータとに対応して分割して設けられたことを特徴とする請求項１記載の暗号処理回路。
【請求項３】
前記入力データは、前記入力データと依存関係のない、前記第２のデータ又は第３のデータを用いて撹乱されたデータであることを特徴とする請求項1又は２に記載の暗号処理回路。
【請求項４】
暗号処理を行う暗号処理回路であって、
前記暗号処理に用いられる入力データに関連したデータを分割して第１及び第２のデータをそれぞれ保持する第１及び第２のレジスタと、
前記第１のデータと依存関係のないデータを分割して第３及び第４のデータをそれぞれ保持する第３及び第４のレジスタと、
前記第１のデータを保持する第１のレジスタと前記第３のデータを保持する第３のレジスタの内容を交互に選択し、かつ前記第２のデータを保持する第２のレジスタと前記第４のデータを保持する第４のレジスタの内容を交互に選択して出力する選択回路と、
該選択回路から出力されるデータに対して、所定の演算を行う演算回路と、
を有することを特徴とする暗号処理回路。
【請求項５】
請求項１から４のいずれか１つに記載の暗号処理回路を有するICカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理回路及びICカードに関し、特に電力解析に対する耐性を有する暗号処理回路及びICカードに関する。
【背景技術】
【０００２】
従来より、種々のシステムにおいて、秘密情報を保護するための暗号処理技術が用いられている。  
現在実用化され、広く利用されている、例えば電子マネーシステム、交通システム等のシステムにおいても、個人情報、残高情報等の秘密情報が扱われるため、暗号処理技術が用いられている。そして、その暗号処理技術に関しては、種々の技術が提案されている。
【０００３】
その種々の提案技術の中には、例えば、暗号化方式の１つであるDES（Data Encryption Standard）の鍵スケジュールの高速化等に関するもの（例えば、特許文献１参照）、等のように暗号化処理技術に関するものだけでなく、近年は、いわゆる電力解析攻撃への対策に関するもの（例えば、特許文献２参照）もある。  
その特許文献２に開示の電力解析攻撃対策のための暗号処理装置では、暗号処理されるデータを保持するレジスタと、その反転データを保持するレジスタを含んで構成されている。例えば、CMOSでは、データの変化に依存して電力が消費される。
【０００４】
しかし、そのような暗号処理装置では、レジスタに保存される内容は、通常の暗号処理で使用されるデータであり、そのデータは、全く隠されていない。また、このように反転データを保持したとしても通常のデータを保持するレジスタと反転データを保持するレジスタで消費される電力は、必ずしも互いに相殺するものではない。従って、電力解析攻撃を受けると、暗号処理に用いられる秘密データが取り出されてしまう虞がある。
【特許文献１】特開2002-25366号公報
【特許文献２】特開2005-31471号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、このような問題に鑑みてなされたものであり、消費電力を解析しても秘密情報を、より取り出し難くして、電力解析攻撃耐性の高い暗号処理回路を実現することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、暗号処理を行う暗号処理回路であって、前記暗号処理に用いられる入力データに関連した第１のデータを保持する第１のレジスタと、前記第１のデータと依存関係のない第２のデータを保持する第２のレジスタと、前記第１のデータを保持する第１のレジスタと前記第２のデータを保持する第２のレジスタの内容を交互に選択して出力する選択回路と、該選択回路から出力されるデータに対して、所定の演算を行う演算回路と、を有する暗号処理回路が提供できる。
【０００７】
本発明の一態様によれば、暗号処理を行う暗号処理回路であって、前記暗号処理に用いられる入力データに関連したデータを分割して第１及び第２のデータをそれぞれ保持する第１及び第２のレジスタと、前記第１のデータと依存関係のないデータを分割して第３及び第４のデータをそれぞれ保持する第３及び第４のレジスタと、前記第１のデータを保持する第１のレジスタと前記第３のデータを保持する第３のレジスタの内容を交互に選択し、かつ前記第２のデータを保持する第２のレジスタと前記第４のデータを保持する第４のレジスタの内容を交互に選択して出力する選択回路と、該選択回路から出力されるデータに対して、所定の演算を行う演算回路と、を有する暗号処理回路が提供できる。
【発明の効果】
【０００８】
本発明によれば、消費電力を解析しても秘密情報を、より取り出し難くして、電力解析攻撃耐性の高い暗号処理回路を実現することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）  
まず図１に基づき、本発明の第１の実施の形態に係わるシステムの構成を説明する。図１は、本発明の第１の実施の形態に係わる暗号処理回路が利用されるシステムの例を説明するための構成図である。
【００１０】
図１において、システム１は、応用装置２と、その応用装置２に接続された端末装置３から構成される。端末装置３は、IC（Integrated Circuit）カード４が装着可能になっている。ICカード４は、暗号処理モジュールを有する装置の一つの例である。応用装置２は、通信回線５を介して端末装置３と接続されている。
【００１１】
ここでは、システム１は、例としてドアの開閉制御を行うシステムとして説明する。端末装置３は、カードリーダ装置であり、部屋の外壁に設けられている。ユーザは、自己のICカード４を端末装置３に挿入することによって、ドアのロックが外れ、部屋に入ることができる。このとき、システム１の制御装置である応用装置２が、ICカード４に対して、チャレンジレスポンス等の手順に従った所定の通信をして、ICカード４が正しいカードであるか否かを判定する。
【００１２】
ICカード４は、暗号処理回路を有し、与えられた情報、すなわち暗号化すべき情報に対して暗号処理を施し、その結果情報すなわち暗号文を生成する機能を有する。応用装置２も、ICカード４と同じ暗号化処理を実行できる回路あるいはソフトウエアを有している。具体的には、ある情報を応用装置２がICカード４に与え、ICカード４がその情報に対して秘密情報（例えば鍵データ）を用いて暗号化した結果情報を応用装置２へ返すように、システム１は構成されている。応用装置２も、ICカード４に与えた同じ情報に対して、ICカード４に対応する秘密情報（ICカード４が暗号処理に用いた秘密情報と同じ情報）を用いて暗号化して結果情報を得ておく。
【００１３】
応用装置２は、自己の暗号化した結果情報と比較して、ICカード４が同じ結果情報を返してきたときは、ICカード４は正規なカードであると判断して、ドアのロックを外す指示をドアへ出力する。もしも、ICカード４が同じ結果情報を返してこないときは、正しい秘密情報を用いて暗号化していないことになるので、ICカード４は正規なカードでないと判断して、ドアのロックを外す指示をドアへ出力しない。  
なお、システム１の例として、ドアの開閉制御システムを説明したが、本実施の形態に係る暗号処理回路は、電子マネーシステム、交通システム等においても適用できるものであることは言うまでもない。
【００１４】
次に、ICカード４の構成について説明する。図２は、ICカード４の構成を示すブロック図である。
【００１５】
ICカード４は、内部に、CPU１１、プログラムが格納されたROM１２、RAM１３、不揮発性メモリであるEEPROM１４、暗号回路モジュール１５及び送受信部１６を含んで構成されている。ICカード４は、電源用の２つの端子と、データの送受信用の端子を有する。
【００１６】
CPU１１、ROM１２、RAM１３、EEPROM１４、暗号回路モジュール１５及び送受信部１６は、１チップの半導体装置として構成される。EEPROM１４には、そのICカード４に関する秘密情報が記憶されている。暗号回路モジュール１５は、入力された暗号化すべき情報に対して暗号化処理を施し、暗号文を生成する。
【００１７】
CPU１１等の各回路部は、外部端子である２つの電源端子１７，１８から電源の供給を受け、さらに、内部バス１９によって相互に接続されている。ICカード４は、送受信部１６を介して外部との通信を行う。その通信には、送受信部１６に接続された、データ送受信用の入出力端子２０が用いられる。なお、ICカード４は、図示はしないが、他にもCPU１１のリセット用のリセット端子と、クロック端子も有している。
【００１８】
ICカード４は、外部からの入出力端子２０への入力データがあると、CPU１１は、EEPROM１４から秘密情報を読み出して、入力データに対してその秘密情報を用いて暗号回路モジュール１５において所定の暗号化処理を施す。CPU１１は、暗号回路モジュール１５の暗号化処理の結果情報を送受信部１６に出力する。その結果、ICカード４は、暗号化処理された結果情報を、入出力端子２０から出力する。
【００１９】
図３は、暗号回路モジュール１５の構成を示すブロック図である。ここでは、暗号回路モジュール１５は、DES(Data encryption standard)アルゴリズムに従う暗号処理用の処理モジュールである。  
DESアルゴリズムは、1977年に米国政府によって米国政府標準暗号として制定された共通鍵暗号アルゴリズムであり、多くの標準団体によって規格が定められている。例えば、FIPS46-3, ANSI X3.92, SP800-67, ISO10126-2で標準化されている。
【００２０】
暗号回路モジュール１５には、暗号処理に用いられる入力データとして、平文データ（以下、単に平文ともいう）Dと、鍵データ（以下、単に鍵ともいう）DKとが入力される。そのため、暗号回路モジュール１５は、暗号化される情報である平文Dが入力される入力端子２１と、秘密情報である鍵DKが入力される入力端子２２と、暗号化された結果情報、すなわち暗号文が出力される出力端子２３を有する。さらに、暗号回路モジュール１５には、鍵DKとは依存関係のない撹乱データが入力される。そのため、暗号回路モジュール１５は、撹乱情報である撹乱データが入力される２つの端子２４，２５を有する。入力端子２４には、平文用の撹乱データMが入力され、入力端子２５には、鍵用の撹乱データMKが入力される。
【００２１】
なお、本実施の形態では、平文用と鍵用の２つの撹乱データM,MKを用いた例で説明するが、鍵用の処理だけに、あるいは平文用だけに、撹乱データを用いるようにしてもよい。例えば、鍵用の処理だけの場合では、鍵に対する演算と撹乱データに対する演算の２つの処理を実行することになるので、撹乱データを用いない平文の処理では、鍵に対する演算に合致するタイミングで実行されるように、暗号回路モジュール１５内の各回路のタイミングが調整される。
【００２２】
暗号回路モジュール１５は、スクランブル部３１と、鍵スケジュール部３２とを有する。ラウンド関数部であるスクランブル部３１は、２つのセレクタ５１，５２と、２つのレジスタ５３，５４と、所定の演算処理を行う演算部としての関数処理部５５とを含む。
【００２３】
セレクタ５１には、レジスタ５３が接続され、セレクタ５２には、レジスタ５４が接続されている。セレクタ５１には、入力端子２１からの平文データDと、レジスタ５４からのデータの２つのデータが入力され、所定のタイミングに従って一方のデータを選択して出力する。セレクタ５１は、選択されたデータをレジスタ５３に出力する。レジスタ５３は、入力されたデータを保持して所定のタイミングで関数処理部５５に出力する。関数処理部５５は、別途鍵データとして入力されたデータを用いて、ｆ関数の演算処理と排他的論理和処理とを行い、暗号演算の中間結果のデータをセレクタ５２に出力する。
【００２４】
なお、ラウンド関数部、ｆ関数等は、米国のFIPS（Federal Information Processing Standard）において米国政府標準暗号として定められているものである（詳しくは、URL(http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf)を参照）。
【００２５】
因みに、ラウンド関数部は、DESアルゴリズムにおけるデータ暗号処理における繰り返し演算を行う部分である。繰り返し演算は、16回行われ、DESアルゴリズムで定義されるf関数(cipher function f(R,K))と排他論理和で構成される。
【００２６】
セレクタ５２には、入力端子２４からの撹乱データMと、関数処理部５５からのデータの２つのデータが入力され、所定のタイミングに従って一方のデータを選択して出力する。撹乱データMは、暗号化すべきデータである平文とは依存関係のない、すなわち暗号処理とは無関係なデータである。セレクタ５２は、選択されたデータをレジスタ５４に出力する。レジスタ５４に保持されたデータは、所定のタイミングでセレクタ５１に入力される。
【００２７】
図３に示すように、スクランブル部３１では、セレクタ５１と５２が選択回路を構成する。そのため、レジスタ５４の出力は、平文Dが入力されるセレクタ５１に入力され、関数処理部５５の出力は、撹乱データMが入力されるセレクタ５２に入力されるように、所謂たすきがけとなるように各回路が接続されている。レジスタ５３の出力は、最終的には、所定の出力タイミングで暗号文データとして出力される。
【００２８】
同様に、鍵スケジュール部３２は、２つのセレクタ６１，６２と、２つのレジスタ６３，６４と、所定の演算処理を行う演算部としてのシフト演算用の回路、ここでは暗号化のための左シフト回路６５とを含む。
【００２９】
セレクタ６１には、レジスタ６３が接続され、セレクタ６２には、レジスタ６４が接続されている。セレクタ６１には、入力端子２２からの鍵データDKと、レジスタ６４からのデータの２つのデータが入力され、所定のタイミングに従って一方のデータを選択して出力する。セレクタ６１は、選択されたデータをレジスタ６３に出力する。レジスタ６３は、入力されたデータを保持して所定のタイミングで左シフト回路６５に出力する。左シフト回路６５は、所定数だけデータを左シフトして、その左シフトした中間結果データをセレクタ６２に出力する。
【００３０】
なお、左シフト回路６５は、いわゆる循環シフト回路であり、例えば８ビットデータの例で説明すれば、10100010を左シフトすると01000101となるように、最上位の１を最下位ビットに移動する左シフト回路である。
【００３１】
さらに、レジスタ６３の出力は、関数処理部５５に供給され、関数処理部５５のｆ関数において鍵データとして用いられる。なお、左シフト回路６５には、シフト数を指示あるいは制御するためのシフト数指示信号Sが入力されている。左シフト回路６５は、シフト数指示信号Sに基づいて、指示された数、ここでは１又は２だけ入力データをシフトする。シフト数は、DESの規格によって、繰り返される１６ラウンドの段毎に定まる。
【００３２】
セレクタ６２には、入力端子２５からの撹乱データMKと、左シフト回路６５からのデータの２つのデータが入力され、所定のタイミングに従って一方のデータを選択して出力する。撹乱データMKは、秘密情報である鍵データDKとは依存関係のないデータである。なお、撹乱データMKは、入力端子２４に入力される撹乱データMと同一でもよいし、鍵データDKと無関係なデータであれば、異なっていてもよい。セレクタ６２は、選択されたデータをレジスタ６４に出力する。レジスタ６４に保持されたデータは、所定のタイミングでセレクタ６１に入力される。
【００３３】
図３に示すように、鍵スケジュール部３２では、セレクタ６１と６２が選択回路を構成する。そのため、レジスタ６４の出力は、鍵が入力されるセレクタ６１に入力され、左シフト回路６５の出力は、撹乱データMKが入力されるセレクタ６２に入力されるように、所謂たすきがけとなるように各回路が接続されている。
【００３４】
図３の暗号回路モジュール１５内の各回路は、DESの暗号化処理を行うべく６４ビットの入力データに対して、１６回の変換処理を行って、６４ビットの暗号文データを出力する。そのため、暗号モジュール１５内の各回路は、所定のタイミングで駆動され、１６回の変換処理を実行する。なお、以下の説明では、暗号化の処理を説明するが、DESアルゴリズムの復号化の処理においても、図３の回路は利用でき、その場合、暗号文が入力され、鍵系列は暗号化とは逆の順となる。
【００３５】
図４は、図３の暗号回路モジュールの動作を説明するための図である。  
６４ビットの平文Dは、図示しない初期転置回路（IP：Initial Permutation）を経て、３２ビットずつの２つのデータD1,D2に分割される。データD1,D2は、セレクタ５１を介してレジスタ５３に入力され保持される。６４ビットの撹乱データMも、セレクタ５２介して３２ビットずつの２つのデータM1,M2に分割される。撹乱データM1,M2は、セレクタ５２を介してレジスタ５４に入力されて保持される。
【００３６】
同様に、６４ビットの鍵DKは、図示しない縮約型転置回路（PC1：Permuted Choice 1）によりパリティビットが取り除かれビット入れ替えが行われ、残りの５６ビットが、２８ビットずつの２つのデータに分割される。鍵DKのその２つのデータは、セレクタ６１を介してレジスタ６３に入力されて保持される。その２つのデータは、図４では、１つの鍵データDK1として示している。その保持された鍵データDK1は、はじめに、所定のタイミングで左シフト回路６５によって１ビットだけ左シフトする処理が行われる。
【００３７】
５６ビットの撹乱データMKも、セレクタ６２介して２８ビットずつの２つのデータに分割される。撹乱データＭＫのその２つのデータは、セレクタ６２を介してレジスタ６４に入力されて保持される。その２つのデータは、図４では、１つの鍵データMK1として示している。
【００３８】
なお、上述した左シフト回路、初期転置回路、縮約型転置回路も、上述した米国のFIPSにおいて米国政府標準暗号として定められているものである（詳しくは、URL(http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf)を参照）。
【００３９】
因みに、左シフトとは、DESアルゴリズムの鍵スケジュールで定義され、28ビットのデータを左に1ビットシフトし、最も左の1ビットを右に移動する処理である。すなわち、1, 2, 3, ‥28が2, 3, 4, ‥, 28, 1のように変換される処理である。初期転置とは、DESアルゴリズムで定義されるビットの並べ替え処理である。縮約型転置回路とは、DESアルゴリズムの鍵スケジュールで定義され、ビットの選択と並べ替え処理である。
【００４０】
レジスタ５３のデータD1,D2と、レジスタ６３の鍵データDK1は、所定のタイミングで読み出されて、関数処理部５５においてｆ関数の演算処理と排他的論理和処理が施される。このとき、関数処理部５５では、入力された平文のデータD1,D2に対して鍵データDK1を用いて、ｆ関数の演算処理と排他的論理和処理が施される。
【００４１】
以上の第１段目の単位処理が時間ｔ１内に実行されるように、各回路は制御される。
【００４２】
次のタイミングで、スクランブル部３１の選択回路であるセレクタ５１と５２のそれぞれにおいて選択される入力データは、切り換えられる。すなわち、セレクタ５１は、レジスタ５４の出力データを選択し、レジスタ５３が撹乱データM1,M2を保持する。同様に、セレクタ５２は、関数処理部５５からの出力データを選択し、レジスタ５４は、データD2と関数処理されたデータD3とを保持する。
【００４３】
同様に、鍵スケジュール部３２の選択回路であるセレクタ６１と６２のそれぞれにおいて選択される入力データも、切り換えられる。すなわち、セレクタ６１は、レジスタ６４の出力データを選択し、レジスタ６３が撹乱データMK1を保持する。同様に、セレクタ６２は、左シフト回路６５からの出力データを選択し、レジスタ６４が左シフトの関数処理されたデータDK2を保持する。さらに、レジスタ６３の撹乱データMK1は、次のタイミングで読み出されて、左シフト回路６５において左シフト処理が施される。
【００４４】
レジスタ５３のデータM1,M2と、レジスタ６３のデータMK1は、所定のタイミングで読み出されて、関数処理部５５においてｆ関数の演算処理と排他的論理和処理が施される。このとき、関数処理部５５では、入力された撹乱のデータM1,M2に対して撹乱データMK1を用いて、ｆ関数の演算処理と排他的論理和処理が施される。
【００４５】
以上の２段目の単位処理が、時間ｔ１後の時間ｔ２内に実行されるように、各回路は制御される。
【００４６】
次のタイミングでは、スクランブル部３１のセレクタ５１と５２のそれぞれにおいて選択する入力データは、切り換えられない。すなわち、セレクタ５１は、レジスタ５４の出力データを選択し、レジスタ５３が、入力データD2と、第１段目で得られた関数処理されたデータD3を保持する。同様に、セレクタ５２は、関数処理部５５からの出力データを選択し、レジスタ５４は、撹乱データM2と、関数処理された撹乱データM3を保持する。
【００４７】
同様に、鍵スケジュール部３２のセレクタ６１と６２のそれぞれにおいて選択する入力データも、切り換えられない。すなわち、セレクタ６１は、レジスタ６４の出力データを選択し、レジスタ６３が出力データDK2を保持する。同様に、セレクタ６２は、左シフト回路６５からの出力データを選択し、レジスタ６４が関数処理された撹乱データMK2を保持する。さらに、レジスタ６３の鍵データDK2は、次のタイミングで読み出されて、左シフト回路６５において左シフト処理が施される。
【００４８】
レジスタ５３のデータD2,D3と、レジスタ６３のデータDK2は、所定のタイミングで読み出されて、関数処理部５５においてｆ関数処理と排他的論理和処理が施される。このとき、関数処理部５５では、データD2,D3に対して鍵データDK2を用いて、関数処理と排他的論理和処理が施される。
【００４９】
以上の第３段目の単位処理が、時間ｔ２後の時間ｔ３内に実行されるように、各回路は制御される。
【００５０】
以下、同様に、処理は繰り返され、１６段目の処理が終了するまで、単位処理が実行される。最後の１６段目の単位処理が終了すると、レジスタ５３の出力データが暗号文として出力端子２３から出力される。
【００５１】
以上のように、各レジスタには、選択回路によって、暗号処理に必要なデータと、暗号処理とは無関係なデータが交互に選択されて、保持され、かつ、暗号処理に必要なデータとその無関係なデータとが同時に存在する。
【００５２】
以上のような処理の結果、暗号処理における中間データの変化は、暗号回路モジュール１５内の消費電力の撹乱を生じさせる。  
図５は、レジスタにストアされるデータの変化を説明するためのタイミングチャートである。図５は、クロックCLKのタイミングに応じて、レジスタ５３，５４，６３，６４にストアされるデータの変化を示す。
【００５３】
各レジスタには、平文D或いは鍵DKから生成されたデータ（具体的には、平文Dの２つのデータD1,D2とその後の中間結果データ、並びに鍵Kとその後の中間結果データ）と、撹乱データM或いはMKから生成されたデータ（具体的には、撹乱データMの２つのデータM1,M2とその後の中間結果データ、並びに撹乱データMKとその後の中間結果データ）とが交互に選択されてストアされている。さらに、スクランブル部３１のレジスタ５３と５４には、平文Dから生成されたデータと撹乱データMから生成されたデータとが同じタイミングで、ストアされる。同様に、鍵スケジュール部３２のレジスタ６３と６４には、鍵DKから生成されたデータと撹乱データMKから生成されたデータとが同じタイミングで、ストアされる。
【００５４】
特に、EEPROM１４から読み出される鍵データDK、撹乱データMK及びその後のそれぞれの中間データは、時間変化に従ってみれば、レジスタ６３，６４に交互に選択されて保持される。そして、各レジスタに保持されるデータは、時系列の順序でみると、鍵データDKと、その鍵データDKとは無関係な撹乱データMKが同じタイミングで存在する。
【００５５】
従って、ICカード４の消費電力変化は、各レジスタには平文と鍵の両方のデータと、撹乱データの合わさった波形に基づくものであるので、ICカード４の消費電力を解析しても秘密情報は、より取り出し難いものとなっている。
【００５６】
次に、鍵スケジュール部３２の変形例を説明する。図６は、第１の実施の形態の鍵スケジュール部の変形例を示すブロック図である。本変形例では、演算回路であるシフト回路は、２つのレジスタからのそれぞれのデータに対応して、分割して設けられている。  具体的には、変形例に係る鍵スケジュール部３２Aは、左シフト回路をさらにもう一つ有し、レジスタ６４の出力を、左シフト回路６６を介してセレクタ６１の入力に出力するように構成されている。すなわち、図６に示すように、レジスタ６３と６２の間と、レジスタ６４と６１の間に、左シフト回路６５と６６がそれぞれ配置される。さらに、左シフト回路６５と６６は、共に同等の機能を有し、シフト数指示信号Sに基づいて、指示された数だけ入力データをシフトするが、ここでは、入力データを０又は１だけシフトするようにシフト指示信号Sが入力される。具体的には、入力データを１ビットだけ左シフトするときは、左シフト回路６５には、シフト数１のシフト指示信号Sが入力され、左シフト回路６６には、シフト数０のシフト指示信号Sが入力される。入力データを２ビットだけ左シフトするときは、左シフト回路６５と６６には、共にシフト数１のシフト指示信号Sが入力される。
【００５７】
図７は、図６の鍵スケジュール部の動作を説明するための図である。図８は、図６のレジスタ６３，６４にストアされるデータの変化を説明するためのタイミングチャートである。１ビットの左シフトを行うときは、鍵データDK(i)に対して、一方の左シフト回路６５で所定の時間t(k)内において１ビットの左シフトを行い、次の所定の時間t(k+1) 内において他方の左シフト回路６６で０ビットの左シフトを行う。撹乱データMK(i)に対しては、左シフト回路６６で所定の時間t(k)内において０ビットの左シフトを行い、次の所定の時間t(k+1) 内において左シフト回路６５で１ビットの左シフトを行う。
【００５８】
次に、２ビットの左シフトを行うときは、鍵データDK(i+1)に対して、左シフト回路６５で所定の時間t(k+2)内において１ビットの左シフトを行い、次の所定の時間t(k+3) 内において左シフト回路６６で１ビットの左シフトを行う。撹乱データMK(i+1)に対しては、左シフト回路６６で所定の時間t(k+2)内において１ビットの左シフトを行い、次の所定の時間t(k+3) 内において左シフト回路６５で１ビットの左シフトを行う。言い換えると、２つの左シフト回路６５と６６は、それぞれ２ビットの左シフト処理を、それぞれ一部実行している。
【００５９】
また、図８に示すように、図６の回路においても、鍵データDKと撹乱データMKは交互に選択され、レジスタ６３と６４のそれぞれにおいて保持される。  
以上のようにして、DESの１６ラウンドの各段に対応して必要な左シフト処理を、２つの同様な回路に分割して実行させるようにしたので、暗号回路モジュール１５におけるクリティカルパスを短くすることができ、より高速な左シフト処理が可能となる。
【００６０】
さらに、鍵データ自体が、暗号回路モジュール１５内のレジスタに保持されることがないように、暗号回路モジュール１５内で処理される鍵データを、撹乱データによって撹乱処理し、その撹乱処理されたデータを、暗号処理回路モジュール１５内の各回路で処理されるようにしてもよい。図９は、鍵データ自体が、暗号回路モジュール１５内でそのままレジスタに保持されることがないようにした回路構成の例を示すブロック図である。
【００６１】
図９に示すように、入力される鍵データDKは、鍵データDKとは依存関係のない撹乱データMKあるいは鍵データDKとは依存関係のない他の撹乱データを用いて撹乱される。具体的には、鍵データDKを直接セレクタ６１に入力するのではなく、鍵データDKと撹乱データMKとの排他的論理和処理の結果を、セレクタ６１に入力するようにする。鍵データDKが入力される入力端子２２と撹乱データMKが入力される入力端子２５の出力の排他的論理和をとる排他的論理和回路７１を設け、その排他的論理和回路７１の出力がセレクタ６１に入力される。なお、このとき、レジスタ６３の出力とレジスタ６４の出力との排他的論理和をとる排他的論理和回路７２を設け、その排他的論理和回路７２の出力が鍵データとして関数処理部５５に入力される。
【００６２】
なお、図９の場合において、撹乱データを生成するために、排他的論理和回路７１，７２の代わりに、線形な関係を有するシフトを行うシフト回路を用いるようにしてもよい。
【００６３】
以上のように構成することによって、暗号回路モジュール１５内では、鍵データ自体がレジスタに保持されることがないので、消費電力の依存性をさらに小さくすることができる。
【００６４】
よって、ICカード４を破壊して、暗号回路モジュール１５の部分を剥き出しにして、プローブ等を用いて電圧変化等の検出をしようとしても鍵データ自体の電圧変化が検出されないことになる。
【００６５】
以上のように、本実施の形態の暗号処理回路によれば、ICカードの電源端子等における消費電力解析による攻撃に対して耐性が高くすることができる。
【００６６】
（第２の実施の形態）
次に、本発明の第２の実施の形態に係る暗号回路モジュールについて説明する。図１０は、第２の実施の形態に係る暗号回路モジュールの鍵スケジュール部の構成を示すブロック図である。ここでは、鍵スケジュール部は、DES用である。図１１は、DESのアルゴリズムを示す図である。図１２は、シフト回路の構成を示すブロック図である。図１３は、図１０の回路の各種信号のタイミングを示すタイミングチャートである。
【００６７】
図１０に示すように、鍵スケジュール部３２Bは、撹乱回路１０１と、いわゆる縮約型転置回路（PC1）と呼ばれる２つのビット選択回路１０２、１１２と、４つのセレクタ１０３，１０４，１１３，１１４と、４つのレジスタ１０５，１０６，１１５，１１６と、４つのシフト回路１０７，１０８，１１７，１１８と、いわゆる縮約型転置回路（PC2）と呼ばれる２つのビット選択回路１０９、１１９とを含む。また、鍵スケジュール部３２Bは、暗号処理に用いられる入力である鍵データが入力される入力端子１２１と、鍵データは依存関係のない撹乱データが入力される入力端子１２２と、拡大鍵データを出力する出力端子１２３と、撹乱データを出力する出力端子１２４とを有する。
【００６８】
入力端子１２１は、撹乱回路１０１に接続されている。入力端子１２２は、撹乱回路１０１とビット選択回路１１２に接続されている。従って、撹乱回路１０１は、入力データに関連したデータを、出力データとして、ビット選択回路１０２に入力する。
【００６９】
ビット選択回路１０２は、６４ビットの撹乱された鍵データの中から５６ビットを選択して、２８ビットずつのデータに分割して、それぞれを２つのセレクタ１０３，１０４のそれぞれの１つの入力端に出力する。
【００７０】
セレクタ１０３と１０４の出力は、それぞれレジスタ１０５と１０６に接続される。レジスタ１０５と１０６の出力は、それぞれシフト回路１０７と１０８に接続される。すなわち、レジスタ１０５と１０６は、分割された２つのデータを保持する。
【００７１】
一方、ビット選択回路１１２は、入力された６４ビットの撹乱データの中から５６ビットを選択して、２８ビットずつのデータに分割して、それぞれを２つのセレクタ１１３，１１４のそれぞれの１つの入力端に出力する。
【００７２】
セレクタ１１３と１１４の出力は、それぞれレジスタ１１５と１１６に接続される。レジスタ１１５と１１６の出力は、それぞれシフト回路１１７と１１８に接続される。すなわち、レジスタ１１５と１１６は、分割された２つのデータを保持する。
【００７３】
シフト回路１０７の出力は、セレクタ１１４の他の１つの入力端に接続される。シフト回路１０８の出力は、セレクタ１１３の他の１つの入力端に接続される。シフト回路１１７の出力は、セレクタ１０４の他の１つの入力端に接続される。シフト回路１１８の出力は、セレクタ１０３の他の１つの入力端に接続される。
【００７４】
また、レジスタ１０５と１０６の２つの出力は、ビット選択回路１０９に接続されている。レジスタ１１５と１１６の２つの出力は、ビット選択回路１１９に接続されている。ビット選択回路１０９の出力は、出力端子１２３に接続されている。ビット選択回路１１９の出力は、出力端子１２４に接続されている。
【００７５】
セレクタ１０３，１０４，１１３，１１４は、選択回路を構成し、セレクタ１０３と１１４と、セレクタ１０４と１１３とが、それぞれペアになった選択回路を構成している。すなわち、レジスタ１０５と１１６の内容は、それぞれシフト回路１０７と１１８に出力される。そして、シフト回路１０７の出力は、セレクタ１１４に入力され、シフト回路１１８の出力は、セレクタ１０３に入力される。よって、シフト回路１０７と１１８には、鍵データがシフトされたデータと、撹乱データがシフトされたデータが、セレクタ１０３と１１４の選択回路よって交互に選択されて入力される。
【００７６】
レジスタ１０６と１１５の内容は、それぞれシフト回路１０８と１１７に出力される。そして、シフト回路１０８の出力は、セレクタ１１３に入力され、シフト回路１１７の出力は、セレクタ１０４に入力される。よって、シフト回路１０８と１１７には、鍵データがシフトされたデータと、撹乱データがシフトされたデータが、セレクタ１０４と１１３の選択回路よって交互に選択されて入力される。
【００７７】
図１１に示すように、DESの暗号処理は、１６回のラウンド処理が繰り返されることによって行われる。特に、DESの鍵スケジュール部３２Bでは、最初に縮約型転置回路（PC1）において、ビット選択が実行される。縮約型転置回路（PC1）は、入力された６４ビットの鍵DKから予め定められた順番で２８ビットと２８ビットの２つのデータを選択する。縮約型転置回路（PC1）によって選択された２つの２８ビットブロックに対して、次にシフト処理（LS1）が行われる。なお、シフトする量は、ラウンド毎に決められている。暗号化のときのシフトは、ラウンド１（R1）、ラウンド２（R2）、ラウンド９（R9）、ラウンド１６（R16）は、1ビットの左シフトで、残りのラウンドは、２ビットの左シフトである。縮約型転置回路（PC2）は、このようにシフトされたビット列から４８ビットを選択する。縮約型転置回路（PC2）によって選択されたビット列が拡大鍵として出力される。
【００７８】
すなわち、鍵DKは、ビット選択回路（PC1）によって２つの２８ビットデータ(C0, D0)に変換される。この変換は次の式（１）のように表現される。
【００７９】
(C0, D0) = PC1(DK)        ・・式（１）
２つの２８ビットデータ(C0, D0)は、シフト処理（LS1）により、それぞれ左1ビットシフトされ、中間データ(C1, D1)が生成される。中間データ(C1, D1)は、縮約型転置回路（PC2）によってビット選択されることによって、拡大鍵K1が生成される。拡大鍵K1の生成は、次の式（２）と式（３）のように表現される。  
(C1, D1) = (C0 << 1, D0 << 1)  ・・式（２）  
K1 = PC2(C1, D1)            ・・式（３）  
なお、ここで、’<<’は左ビットシフトを表す。そして、以下、同様に、ビットシフトとビット選択を繰り返すことによって、拡大鍵K1からK16が生成される。
【００８０】
図１０は、このようなDESの鍵スケジュール部において撹乱データを用いる鍵スケジュール部の構成を示すブロック図である。図１０では、ビット選択回路１０２と１１２が、縮約型転置回路（PC1）の処理を実現する。ビット選択回路１０９と１１９が、縮約型転置回路（PC2）の処理を実現する。
【００８１】
鍵スケジュール部には、鍵DKと撹乱データMKが入力される。６４ビットの鍵DKは、撹乱データMKにより撹乱されてから、ビット選択回路１０２に入力される。撹乱データMKは、また、ビット選択回路１１２にも入力される。撹乱回路１０１は、ここでは、排他論理和回路で実現されるものとするが、シフト回路等、その他の変換回路でもよい。
【００８２】
鍵DKは、撹乱回路１０１によって撹乱データMKとの排他論理和が行われるので、撹乱回路１０１の出力MOは、次の式（４）のようになる。
【００８３】
MO=DK(+)MK        ・・式（４）
ここで、(+)は、排他論理和を表す記号である。
【００８４】
この出力MOは、ビット選択回路１０２に入力され、出力PC1(DK(+)MK)が出力される。ビット選択回路１０２の出力PC1(DK(+)MK)は、２つの２８ビットデータ (C’0, D’0)に分割され、図１３に示すように、それぞれセレクタ１０４と１０３を介してレジスタ１０６と１０５に保持される。
【００８５】
一方、入力端子１２２から入力された撹乱データMKは、ビット選択回路１１２によって、ビット選択され、出力PC1(MK)が出力される。ビット選択回路１１２の出力PC1(MK)は、２つの２８ビットデータ (X0, Y0)に分割され、図１３に示すように、それぞれセレクタ１１４と１１３を介してレジスタ１１６と１１５に保持される。すなわち、各レジスタには、次の式（５）と式（６）に示されるデータがストアされる。
【００８６】
(C’0, D’0) = PC1(DK(+)MK)      ・・式（５）  
(X0, Y0) = PC1(MK)            ・・式（６）  
よって、次の式（７）が成り立つ。  
(C0, D0) = (C’0, D’0)(+)(X0, Y0)    ・・式（７）  
という関係が成り立つ。
【００８７】
レジスタ１０５に保持されているデータD’0は、シフト回路１０７を介してレジスタ１１６に転送される。ここで、シフト回路１０７は、入力データをそのまま出力するように制御される。  
レジスタ１０６に保持されているデータC’0は、シフト回路１０８を介してレジスタ１１５に転送される。ここで、シフト回路１０８は、入力データをそのまま出力するように制御される。
【００８８】
一方、レジスタ１１５に保持されているデータY0は、シフト回路１１７を介してレジスタ１０６に転送される。ここで、シフト回路１１７は、1ビット左シフトした値が出力するように制御される。  
レジスタ１１６に保存されているデータX0は、シフト回路１１８を介してレジスタ１０５に転送される。ここで、シフト回路１１８は、１ビット左シフトした値が出力するように制御される。シフト回路１０７と１０８がシフトしないで出力しているのは、1ラウンド目では左１ビットシフトであるためで、レジスタ１０５に保持されているデータD’0は、シフト回路１０７，レジスタ１１６及びシフト回路１１８を経由してレジスタ１０５に戻される。なお、この間に１ビットシフトが実現されるように制御されれば、シフト回路１１８ではなく、シフト回路１０７でシフトするようにしても良い。さらになお、２ビットシフトは、シフト回路１０７と１１８の両方でシフトすることで実現される。
【００８９】
シフト回路１０７，１０８，１１７，１１８の構成は、図１２に示す。図１２は、シフト回路の構成を示すブロック図である。シフト回路は、データが入力される入力端子１３１と、シフト数指示信号Sが入力される入力端子１３２と、１ビット左シフト回路１３３と、１ビット右シフト回路１３４と、セレクタ１３５と、出力端子１３６を含んで構成される。各シフト回路は、暗号化と複合化の両方に対応するように構成されている。
【００９０】
シフト回路において、入力端子１３１から入力された入力データは、１ビット左シフト回路１３３と、１ビット右シフト回路１３４と、セレクタ１３５に入力される。１ビット左シフト回路１３３は、入力データを１ビットだけ左シフトしたデータを出力する。１ビット右シフト回路１３４は、入力データを１ビットだけ右シフトしたデータを出力する。
【００９１】
入力されるシフト制御信号であるシフト数指示信号Sに応じて、セレクタ１３５が、１ビット左シフト回路１３３の出力、１ビット右シフト回路１３４の出力、及びビットシフトされていない入力データのいずれかを選択して、出力端子１３６に出力する。
【００９２】
上述した動作によって、図１３に示すように、レジスタ１０６，１０５，１１６，１１５には、それぞれ、Y0<<1, X0<<1, D’0, C’0が保存されていることになる。すなわち、レジスタ１０６のデータは、C’0からY0<<1に、レジスタ１０５のデータは、D’0からX0<<1に、レジスタ１１６のデータは、X0からD’0に、レジスタ１１５のデータは、Y0からD’0に変化している。これらのレジスタの変化の値は、全く依存関係がないため、その変化による電力消費は、入力された鍵DKと無関係となる。
【００９３】
以下、図１３に示すように、同様の処理が行われていくが、ビット選択回路１０９と１１９によって縮約型転置回路（PC2）が実現され、撹乱された拡大鍵K’i(i=1〜16)と撹乱データMKから生成された撹乱拡大鍵Mi(i=1〜16)とが、出力される。図１３は、図１０に示した暗号処理回路の鍵スケジュール部の動作タイミングを示す。図１３に示すように、２クロックで１ラウンドの処理が実行される。
【００９４】
以下の式（８）から（１１）に示すように、撹乱された拡大鍵K’iと撹乱拡大鍵Miとの排他論理和をとることによって撹乱されていない拡大鍵Kiが得られる。すなわち、
K’i = PC2(C’i, D’i)      ・・式（８）  
Mi= PC2(Xi, Yi)        ・・式（９）  
(Ci, Di) = (C’i, D’i) (+) (Xi, Yi)    ・・式（１０）  
であるので、  
Ki = PC2(Ci, Di)) = K’i (+) Mi    ・・式（１１）  
という関係が成り立つ。
【００９５】
なお、以上の例では、C’iとYiのペア並びにD’iとXiのペアを用いていたが、C’iとD’iのペア並びにXiとYiのペアでも良い。  
以上のように、本発明の第２の実施の形態に係る暗号処理回路を用いることで、暗号データを撹乱データによって完全に撹乱でき、その結果、消費電力から暗号データを推測することが困難となる。
【００９６】
なお、以上の例は、DESアルゴリズムの暗号処理を行う場合であるが、DESアルゴリズム以外の他の暗号処理に適用してもよい。  
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施の形態に係わる暗号処理回路が利用されるシステムの例を説明するための構成図である。
【図２】第１の実施の形態に係わるICカードの構成を示すブロック図である。
【図３】第１の実施の形態に係わる暗号回路モジュールの構成を示すブロック図である。
【図４】図３の暗号回路モジュールの動作を説明するための図である。
【図５】レジスタにストアされるデータの変化を説明するためのタイミングチャートである。
【図６】第１の実施の形態の鍵スケジュール部の変形例を示すブロック図である。
【図７】図６の鍵スケジュール部の動作を説明するための図である。
【図８】図６のレジスタにストアされるデータの変化を説明するためのタイミングチャートである。
【図９】鍵データ自体が暗号回路モジュール内でそのままレジスタに保持されることがないようにした回路構成の例を示すブロック図である。
【図１０】本発明の第２の実施の形態に係る暗号回路モジュールの鍵スケジュール部の構成を示すブロック図である。
【図１１】DESのアルゴリズムを示す図である。
【図１２】シフト回路の構成を示すブロック図である。
【図１３】図１０の回路の各種信号のタイミングを示すタイミングチャートである。
【符号の説明】
【００９８】
１  システム、２  応用装置、３  端末装置、４  ICカード、５  通信回線、１５  暗号回路モジュール、２１，２２，２４，２５  入力端子、２３  出力端子、３１  スクランブル部、３２、３２A、３２B  鍵スケジュール部、５５  関数処理部、６５、６６  左シフト回路、７１，７２  排他的論理和回路
【図１】
2008061118.tif 000003
【図２】
2008061118.tif 000004
【図３】
2008061118.tif 000005
【図４】
2008061118.tif 000006
【図５】
2008061118.tif 000007
【図６】
2008061118.tif 000008
【図７】
2008061118.tif 000009
【図８】
2008061118.tif 000010
【図９】
2008061118.tif 000011
【図１０】
2008061118.tif 000012
【図１１】
2008061118.tif 000013
【図１２】
2008061118.tif 000014
【図１３】
2008061118.tif 000015