(57)【要約】【課題】  暗号処理におけるデータの格納などの処理タイミングにおける消費電力測定による暗号解析を困難としセキュリティレベルの高い暗号処理装置および方法を実現する。【解決手段】  乱数に基づく信号に従って、変調クロック信号を生成して、該変調クロック信号に基づいてデータ処理タイミングを決定してデータ処理を実行する。あるいは、ランダムな初期遅延を設定した遅延クロック信号による処理タイミング制御を行って処理を行なう。さらに、変調クロックまたはランダム遅延クロックによる遅延量が予め設定された許容最大遅延時間未満であるか否かを判定し、遅延量が予め設定された許容最大遅延時間以内になるようにクロック信号に基づく制御を実行する。【選択図】  図１０
2005045752.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理装置であり、
データ処理タイミング制御信号としての変調クロック信号を生成する変調クロック信号生成部と、
前記変調クロック信号を入力し、該入力変調クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理部とを有し、
前記変調クロック信号生成部は、乱数に基づく乱数信号に対応した変調クロック信号を生成し、前記データ処理部に対して出力する構成であることを特徴とする暗号処理装置。
【請求項２】
前記変調クロック信号生成部の生成する前記変調クロック信号は、前記データ処理部内のメモリのクロック端子に入力され、該メモリに対するデータ格納および該メモリからのデータ読み出しタイミングの制御信号として適用する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項３】
前記暗号処理装置は、
一定のクロック周期の正規クロック信号を生成するクロック信号生成部と、
前記乱数信号の前記正規クロック信号に対する遅延量を計測するカウンタを有し、
前記変調クロック信号生成部は、前記カウンタによって計測される遅延量が予め設定された許容最大遅延時間未満である場合は、前記乱数信号に対応した変調クロック信号を前記データ処理部に対して出力し、遅延量が予め設定された許容最大遅延時間に達した場合は、前記正規クロック信号に対応した変調クロック信号を前記データ処理部に対して出力する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項４】
前記データ処理部は、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項５】
前記暗号処理装置は、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行する暗号処理装置であり、
前記データ処理部は、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定する構成であることを特徴とする請求項１に記載の暗号処理装置。
【請求項６】
暗号処理装置であり、
データ処理タイミング制御信号として、ランダムな遅延が設定されたランダム遅延クロック信号を生成するランダム遅延クロック信号生成部と、
前記ランダム遅延クロック信号を入力し、該入力クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理部とを有し、
前記ランダム遅延クロック信号生成部は、乱数に基づいてランダムな初期遅延を設定したランダム遅延クロック信号を生成し、前記データ処理部に対して出力する構成であることを特徴とする暗号処理装置。
【請求項７】
前記ランダム遅延クロック信号生成部の生成する前記ランダム遅延クロック信号は、前記データ処理部内のメモリのクロック端子に入力され、該メモリに対するデータ格納および該メモリからのデータ読み出しタイミングの制御信号として適用する構成であることを特徴とする請求項６に記載の暗号処理装置。
【請求項８】
前記暗号処理装置は、
乱数に基づく初期遅延量を決定する初期遅延量決定部を有し、
前記初期遅延量決定部は、前記乱数に基づいて決定する初期遅延量を予め設定された許容最大遅延時間以内に設定する構成であることを特徴とする請求項６に記載の暗号処理装置。
【請求項９】
前記暗号処理装置は、
乱数に基づく初期遅延量を決定する初期遅延量決定部を有し、
前記初期遅延量決定部は、前記乱数に基づく演算処理またはテーブル参照処理により初期遅延量を決定する構成であることを特徴とする請求項６に記載の暗号処理装置。
【請求項１０】
前記データ処理部は、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定する構成であることを特徴とする請求項６に記載の暗号処理装置。
【請求項１１】
前記暗号処理装置は、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行する暗号処理装置であり、
前記データ処理部は、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定する構成であることを特徴とする請求項６に記載の暗号処理装置。
【請求項１２】
暗号処理方法であり、
データ処理タイミング制御信号として、乱数に基づく乱数信号に対応した変調クロック信号を生成する変調クロック信号生成ステップと、
前記変調クロック信号を入力し、該入力変調クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理ステップと、
を有することを特徴とする暗号処理方法。
【請求項１３】
前記暗号処理方法は、さらに、
一定のクロック周期の正規クロック信号を生成するクロック信号生成ステップと、
前記乱数信号の前記正規クロック信号に対する遅延量を計測する遅延量計測ステップを有し、
前記変調クロック信号生成ステップは、遅延量が予め設定された許容最大遅延時間未満である場合は、前記乱数信号に対応した変調クロック信号を前記データ処理部に対して出力するクロック信号とし、遅延量が予め設定された許容最大遅延時間に達した場合は、前記正規クロック信号に対応したクロック信号を前記データ処理部に対して出力することを特徴とする請求項１２に記載の暗号処理方法。
【請求項１４】
前記データ処理ステップは、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定することを特徴とする請求項１２に記載の暗号処理方法。
【請求項１５】
前記データ処理ステップは、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行するステップであり、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定することを特徴とする請求項１２に記載の暗号処理方法。
【請求項１６】
暗号処理方法であり、
データ処理タイミング制御信号として、乱数に基づくランダム初期遅延を設定したランダム遅延クロック信号を生成するランダム遅延クロック信号生成ステップと、
前記ランダム遅延クロック信号を入力し、該入力クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理ステップと、
を有することを特徴とする暗号処理方法。
【請求項１７】
前記暗号処理方法は、さらに、
乱数に基づく初期遅延量を決定する初期遅延量決定ステップを有し、
前記初期遅延量決定ステップは、前記乱数に基づいて決定する初期遅延量を予め設定された許容最大遅延時間以内に設定するステップであることを特徴とする請求項１６に記載の暗号処理方法。
【請求項１８】
前記暗号処理方法は、さらに、
乱数に基づく初期遅延量を決定する初期遅延量決定ステップを有し、
前記初期遅延量決定ステップは、前記乱数に基づく演算処理またはテーブル参照処理により初期遅延量を決定するステップであることを特徴とする請求項１６に記載の暗号処理方法。
【請求項１９】
前記データ処理ステップは、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定することを特徴とする請求項１６に記載の暗号処理方法。
【請求項２０】
前記データ処理ステップは、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行するステップであり、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定することを特徴とする請求項１６に記載の暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置および暗号処理方法に関する。さらに詳細には、暗号処理における中間データの格納タイミングなどの処理タイミングを乱数に基づいて生成する変調クロック信号に従って制御することにより、暗号解析に対する耐性を高めた暗号処理装置および暗号処理方法に関する。
【背景技術】
【０００２】
昨今、ネットワーク通信、電子商取引の発展に伴い、通信におけるセキュリティ確保が重要な問題となっている。セキュリティ確保の１つの方法が暗号技術であり、現在、様々な暗号化手法を用いた通信が実際に行なわれている。
【０００３】
例えばＩＣカード等の小型の装置中に暗号処理モジュールを埋め込み、ＩＣカードと、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、認証処理、あるいは送受信データの暗号化、復号化を行なうシステムが実用化されている。
【０００４】
暗号処理モジュールにおいては、例えば、平文を入力し暗号文を出力するデータ暗号化処理、あるいは暗号文を入力し平文を出力する復号化処理が実行される。これらの暗号処理は、暗号処理モジュールを構成するハードウェア、例えば半導体による電気的な処理を含む。従って、このような半導体モジュールにおいて暗号処理が実行される際の電力消費を解析することで、暗号処理の適用鍵や、アルゴリズムが解析されてしまうという恐れがある。
【０００５】
例えば、ＩＣ等の演算処理装置に対する攻撃、すなわち暗号解読攻撃として、処理時間を解析することによる秘密情報を推定するタイミングアタック（ＴＡ：Ｔｉｍｉｎｇ  ａｔｔａｃｋ）、暗号処理時の消費電力の観測により秘密情報を推定する単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）、さらに、大量のデータに対する暗号処理における消費電力を測定し、それらの測定データを統計的に解析することにより秘密情報を推定する電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）等がある。
【０００６】
一般的な暗号処理装置は、データ入力部と記憶部と暗号処理部、およびデータ出力部とから構成されており、例えば入力データの暗号化を行う場合は、次のように動作する。すなわち、データ入力部から暗号処理部に平文が入力される。暗号処理部は、例えばＤＥＳ（Data Encryption Standard）などの暗号処理アルゴリズムを実行する処理部において一定の暗号処理アルゴリズムに従ったデータ処理がなされる。
【０００７】
暗号処理アルゴリズムの実行過程において生成される中間データを逐次、記憶部に格納し、また記憶部に格納した中間データを取得して予め定められた一定の処理順序に従って暗号化処理が実行される。暗号処理部において、予め定められた一連の暗号処理アルゴリズムが終了すると、生成暗号文が出力部を介して出力される。
【０００８】
このような暗号処理装置において、暗号化処理の開始時から特定の暗号化中間処理手続きが開始されるまでに要する時間は、おおよそ一定になる。なお、暗号アルゴリズムの実装方法については、例えば非特許文献１に詳しく述べられている。
【０００９】
このような暗号処理装置は、前述した単純電力解析（シンプル・パワー・アナリシス）や電力差分解析（ディファレンシャル・パワー・アナリシス）と呼ばれる暗号解析法を適用することで、暗号処理に適用する鍵情報や、アルゴリズムが解析される恐れがある。
【００１０】
単純電力解析および電力差分解析は、現在のメモリやレジスタ等の半導体デバイスにおいて、特定の時刻に、半導体デバイスの保持する値に変化が生じた場合と、保持する値に変化が生じなかった場合とで、消費電力に差が発生するという特徴を利用して、暗号処理装置が暗号処理を実行している様々なタイミングにおいて消費電力を測定することにより、暗号処理装置が保持している暗号鍵等の秘密情報を特定する暗号解析法である。
【００１１】
単純電力解析や電力差分解析が有効に機能する条件としては、第１に消費電力を測定している各時点で行われている暗号処理手続きが特定できること、第２に各時刻で測定した消費電力の値が当該時刻において暗号化装置内で行われている暗号化処理の演算結果を顕著に反映していること、の２点が挙げられる。
【００１２】
従来の暗号化装置、復号化装置および暗号化・復号装置等の暗号処理装置においては、上記の２点の条件が満たされてしまうために、単純電力解析や電力差分解析が有効に機能し、暗号の解読が可能になりうるという問題点が存在した。
【００１３】
この問題に対処するため、いくつかの方法が提案されてきた。例えば特許文献１には差分解読や線形解読を防止することを目的としたデータの暗号化方法及び装置が記載されている。本文献には、データを複数ブロックに分割して、ブロックを順次、暗号化する構成において、暗号処理対象のブロックに適用する鍵を、前の処理ブロックの中間結果から導く構成とすることにより、ブロック毎に異なる鍵を適用した処理を行うものであり、結果として統計的な鍵推定を困難としたものである。
【００１４】
また、特許文献２には、暗号処理に適用する鍵情報の漏洩を防止した構成が示されている。本文献に記載の構成は、暗号化された鍵情報を不揮発性メモリに格納し、電源投入時に不揮発性メモリから暗号化された鍵情報を復号し、復号の結果としての鍵情報を揮発性メモリに格納して、これを暗号処理に適用するとともに、電源遮断時に揮発性メモリから鍵情報を能動的に消去することにより、鍵情報の漏洩を防止したものである。
【００１５】
また、特許文献３には、電力解析および電力差分解析等の消費電力の測定による暗号解析に対して耐性のある暗号化装置が示されている。本文献に記載の構成は、中間データ制御手段が、暗号処理において生成される中間データを乱数によって変化させ、この乱数によって変化した中間データに基づく暗号処理を実行する構成とし、さらに最終的な出力（暗号文）については、乱数に依存しないデータとすることを可能としたものである。本構成においては、暗号処理デバイスの状態変化は、乱数によって変化した中間データに基づく変化となり、その結果、電力解析および電力差分解析等、消費電力の測定による暗号解析の困難性が高まるというものである。
【００１６】
さらに、非特許文献２には、暗号処理の実行シーケンスにおいて、ランダムなタイミングシフトを挿入することによって、波形のタイミング合わせを困難にする防御法が示されている。
【００１７】
上述したように、暗号鍵あるいはアルゴリズムの漏洩に対する対策についての提案は様々存在するが、例えば特許文献１に記載の構成は、ブロック単位で、処理済みブロックから中間データを抽出し、新たな鍵を生成するといった複雑な処理が必要となり、演算処理効率の低下、処理遅延という問題を発生させる恐れがある。また、特許文献２に記載の構成は、鍵データそのものの漏洩を防止する効果は有するものの、暗号処理実行中の単純電力解析および電力差分解析等、消費電力の測定による暗号解析に対する対策とはなっていない。さらに、特許文献３に記載の乱数を利用した方法については、高階電力差分解析と呼ばれる暗号解析法によって攻撃が可能なことがＭｅｓｓｅｒｇｅｓによって既に示されている。例えば、［"Ｕｓｉｎｇ Ｓｅｃｏｎｄ−Ｏｒｄｅｒ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓｔｏ Ａｔｔａｃｋ ＤＰＡ Ｒｅｓｉｓｔａｎｔ Ｓｏｆｔｗａｒｅ", Ｔ．Ｓ．Ｍｅｓｓｅｒｇｅｓ, ＣＨＥＳ２０００］に説明が記述されている。
【００１８】
また、上述の非特許文献２は、暗号処理の実行シーケンス中にランダムなタイミングシフトを挿入して波形のタイミング合わせを困難化できるとは述べられているものの、具体的なランダムタイミングシフトの挿入方法が開示されていない。また、タイミングシフト挿入に伴うパフォーマンス低下に対する解決手段についての開示がなく、一定時間内の高速処理が要請されるシステムなどには適用できないという問題がある。
【００１９】
暗号処理を実行する例えばＩＣモジュールは、例えば駅の改札などの様々なゲート、あるいはショッピングセンターなどで盛んに利用されるようになっており、小型化および処理の迅速化の要求が厳しくなってきている。従って、処理アルゴリズムを複雑化させることなく高速処理が可能で、かつ電力差分解析や、高階電力差分解析に対する耐性のある構成が必要とされている。
【特許文献１】特開平９−２３０７８６号公報
【特許文献２】特開平８−５０４０６７号公報
【特許文献３】特開２０００−３０５４５３号公報
【非特許文献１】『「Ａｐｐｌｉｅｄ Ｃｒｙｐｔｏｇｒａｐｈｙ 」（Ｂｒｕｃｅ Ｓｈｎｅｉｅｒ 著） Ｊｏｈｎ Ｗｉｅｌｅｙ＆ Ｓｏｎｓ ，Ｉｎｃ ．，１９９６ ，ＩＳＢＮ ０ −４７１ −１１７０９ −９ ，ｐｐ ．６２３ −６７３ 』
【非特許文献２】"ＤＥＳ ａｎｄ Ｄｉ.ｅｒｅｎｔｉａｌ Ｐｏｗｅｒ Ａｎａｌｙｓｉｓ", Ｌｏｕｉｓ Ｇｏｕｂｉｎ, Ｊａｃｑｕｅｓ Ｐａｔａｒｉｎ,ＣＨＥＳ９９
【発明の開示】
【発明が解決しようとする課題】
【００２０】
本発明は、上記問題点に鑑みてなされたものであり、処理アルゴリズムを複雑化させることなく、暗号処理シーケンスの持つ規則的な処理に伴う消費電力変動の検出等に基づく単純電力解析、電力差分解析や高階電力差分解析による暗号解析の困難性を高め、かつ、パフォーマンスの低下を防止し、高速な暗号処理を可能とした暗号処理装置および暗号処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明の第１の側面は、
暗号処理装置であり、
データ処理タイミング制御信号としての変調クロック信号を生成する変調クロック信号生成部と、
前記変調クロック信号を入力し、該入力変調クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理部とを有し、
前記変調クロック信号生成部は、乱数に基づく乱数信号に対応した変調クロック信号を生成し、前記データ処理部に対して出力する構成であることを特徴とする暗号処理装置にある。
【００２２】
さらに、本発明の暗号処理装置の一実施態様において、前記変調クロック信号生成部の生成する前記変調クロック信号は、前記データ処理部内のメモリのクロック端子に入力され、該メモリに対するデータ格納および該メモリからのデータ読み出しタイミングの制御信号として適用する構成であることを特徴とする。
【００２３】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、一定のクロック周期の正規クロック信号を生成するクロック信号生成部と、前記乱数信号の前記正規クロック信号に対する遅延量を計測するカウンタを有し、前記変調クロック信号生成部は、前記カウンタによって計測される遅延量が予め設定された許容最大遅延時間未満である場合は、前記乱数信号に対応した変調クロック信号を前記データ処理部に対して出力し、遅延量が予め設定された許容最大遅延時間に達した場合は、前記正規クロック信号に対応した変調クロック信号を前記データ処理部に対して出力する構成であることを特徴とする。
【００２４】
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定する構成であることを特徴とする。
【００２５】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行する暗号処理装置であり、前記データ処理部は、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定する構成であることを特徴とする。
【００２６】
さらに、本発明の第２の側面は、
暗号処理装置であり、
データ処理タイミング制御信号として、ランダムな遅延が設定されたランダム遅延クロック信号を生成するランダム遅延クロック信号生成部と、
前記ランダム遅延クロック信号を入力し、該入力クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理部とを有し、
前記ランダム遅延クロック信号生成部は、乱数に基づいてランダムな初期遅延を設定したランダム遅延クロック信号を生成し、前記データ処理部に対して出力する構成であることを特徴とする暗号処理装置にある。
【００２７】
さらに、本発明の暗号処理装置の一実施態様において、前記ランダム遅延クロック信号生成部の生成する前記ランダム遅延クロック信号は、前記データ処理部内のメモリのクロック端子に入力され、該メモリに対するデータ格納および該メモリからのデータ読み出しタイミングの制御信号として適用する構成であることを特徴とする。
【００２８】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、乱数に基づく初期遅延量を決定する初期遅延量決定部を有し、前記初期遅延量決定部は、前記乱数に基づいて決定する初期遅延量を予め設定された許容最大遅延時間以内に設定する構成であることを特徴とする。
【００２９】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、乱数に基づく初期遅延量を決定する初期遅延量決定部を有し、前記初期遅延量決定部は、前記乱数に基づく演算処理またはテーブル参照処理により初期遅延量を決定する構成であることを特徴とする。
【００３０】
さらに、本発明の暗号処理装置の一実施態様において、前記データ処理部は、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定する構成であることを特徴とする。
【００３１】
さらに、本発明の暗号処理装置の一実施態様において、前記暗号処理装置は、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行する暗号処理装置であり、前記データ処理部は、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定する構成であることを特徴とする。
【００３２】
さらに、本発明の第３の側面は、
暗号処理方法であり、
データ処理タイミング制御信号として、乱数に基づく乱数信号に対応した変調クロック信号を生成する変調クロック信号生成ステップと、
前記変調クロック信号を入力し、該入力変調クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理ステップと、
を有することを特徴とする暗号処理方法にある。
【００３３】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さらに、一定のクロック周期の正規クロック信号を生成するクロック信号生成ステップと、前記乱数信号の前記正規クロック信号に対する遅延量を計測する遅延量計測ステップを有し、前記変調クロック信号生成ステップは、遅延量が予め設定された許容最大遅延時間未満である場合は、前記乱数信号に対応した変調クロック信号を前記データ処理部に対して出力するクロック信号とし、遅延量が予め設定された許容最大遅延時間に達した場合は、前記正規クロック信号に対応したクロック信号を前記データ処理部に対して出力することを特徴とする。
【００３４】
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定することを特徴とする。
【００３５】
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行するステップであり、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記変調クロック信号に従って決定することを特徴とする。
【００３６】
さらに、本発明の第４の側面は、
暗号処理方法であり、
データ処理タイミング制御信号として、乱数に基づくランダム初期遅延を設定したランダム遅延クロック信号を生成するランダム遅延クロック信号生成ステップと、
前記ランダム遅延クロック信号を入力し、該入力クロック信号に基づいて処理タイミングを決定してデータ処理を実行するデータ処理ステップと、
を有することを特徴とする暗号処理方法にある。
【００３７】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さらに、乱数に基づく初期遅延量を決定する初期遅延量決定ステップを有し、前記初期遅延量決定ステップは、前記乱数に基づいて決定する初期遅延量を予め設定された許容最大遅延時間以内に設定するステップであることを特徴とする。
【００３８】
さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さらに、乱数に基づく初期遅延量を決定する初期遅延量決定ステップを有し、前記初期遅延量決定ステップは、前記乱数に基づく演算処理またはテーブル参照処理により初期遅延量を決定するステップであることを特徴とする。
【００３９】
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、暗号処理の実行に際して生成する中間データのレジスタに対する格納処理、または暗号処理の実行に際して適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定することを特徴とする。
【００４０】
さらに、本発明の暗号処理方法の一実施態様において、前記データ処理ステップは、複数段のラウンド関数部を適用した共通鍵暗号処理方式に従った暗号処理を実行するステップであり、前記複数段のラウンド関数部において生成する中間データのレジスタに対する格納処理、または前記複数段のラウンド関数部の処理において適用する中間データのレジスタからの読み出し処理タイミングを前記ランダム遅延クロック信号に従って決定することを特徴とする。
【００４１】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４２】
本発明の構成によれば、乱数に基づく信号に従って、変調クロック信号を生成して、該変調クロック信号に基づいてデータ処理タイミングを決定してデータ処理を実行する構成としたので、データの暗号化や復号を行う暗号処理装置の時間経過に伴う消費電力を測定することによる暗号化鍵や復号鍵等の秘密情報解析、すなわち、電力解析に基づく暗号解析を困難とすることが可能となり、セキュリティレベルの高い暗号処理装置および方法が実現される。
【００４３】
本発明の構成によれば、乱数に基づく信号に従って、ランダム遅延クロック信号を生成して、該ランダム遅延クロック信号に基づいてデータ処理タイミングを決定してデータ処理を実行する構成としたので、データの暗号化や復号を行う暗号処理装置の時間経過に伴う消費電力を測定することによる暗号化鍵や復号鍵等の秘密情報解析、すなわち、電力解析に基づく暗号解析を困難とすることが可能となり、セキュリティレベルの高い暗号処理装置および方法が実現される。
【００４４】
本発明の構成によれば、遅延量が予め設定された許容最大遅延時間未満である場合は、乱数信号に対応した変調クロック信号に基づく制御を実行し、遅延量が予め設定された許容最大遅延時間に達した場合は、正規クロック信号に対応したクロック信号に基づいて制御を実行する構成としたので、過大な処理遅延の発生が防止され、一定時間内の処理完了が保証されることになる。
【００４５】
本発明の構成によれば、ランダム遅延クロックにおける遅延量の設定において、予め設定された許容最大遅延時間未満の遅延量を設定する構成としたので、過大な処理遅延の発生が防止され、一定時間内の処理完了が保証されることになる。
【００４６】
本発明の構成によれば、例えば複数段のラウンド関数部からなる共通鍵暗号処理を実行する暗号処理装置おいて、各段のＦ関数出力、すなわちＳボックスから置換部を介した中間データ出力値のレジスタに格納するタイミング、および、次段の処理においてレジスタからデータを読み出すタイミングを乱数信号によって決定し、かつ、予め定めた許容遅延時間以降は、正規のクロック信号に基づいてデータの格納および読み出しを実行する構成としたので、許容遅延時間内では乱数信号に基づく不規則なタイミングでのデータ処理が実行され、時間経過に伴う消費電力の測定による暗号化鍵や復号鍵等の秘密情報を得る暗号解析法に耐性を向上させることができる。さらに、予め定めた許容遅延時間以降は、正規のクロック信号に基づいてデータの格納および読み出しを実行するので、過大な処理遅延の発生が防止され、一定時間内の処理完了が保証されることになる。
【００４７】
本発明の構成によれば、例えば複数段のラウンド関数部からなる共通鍵暗号処理を実行する暗号処理装置おいて、各段のＦ関数出力、すなわちＳボックスから置換部を介した中間データ出力値のレジスタに格納するタイミング、および、次段の処理においてレジスタからデータを読み出すタイミングをランダムな初期遅延を設定したランダム遅延クロック信号によって決定し、かつ、遅延量が許容遅延時間以内になるように設定したので、不規則なタイミングでのデータ処理が実行され、時間経過に伴う消費電力の測定による暗号化鍵や復号鍵等の秘密情報を得る暗号解析法に耐性を向上させることができる。さらに、過大な処理遅延の発生が防止され、一定時間内の処理完了が保証されることになる。
【発明を実施するための最良の形態】
【００４８】
以下、本発明の暗号処理装置および暗号処理方法の詳細について説明する。
【実施例１】
【００４９】
暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号化鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵と復号化鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
【００５０】
共通鍵暗号方式の１つに共通鍵をベースとして複数の鍵を生成して、生成した複数の鍵を用いて暗号処理を繰り返し実行する方式がある。このような鍵生成方式を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方式である。
【００５１】
共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を実行するラウンド関数部と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部とに分けることができる。ラウンド関数部の各ランウドで適用する鍵（副鍵）は、１つの主鍵に基づいて、鍵スケジュール部に入力されて生成され、各ラウンド関数部で適用される。この共通鍵暗号方式の代表的な方式に米国連邦標準暗号方式としてのＤＥＳ（Data Encryption Standard）がある。
【００５２】
ＤＥＳ暗号処理の基本構造について、図を参照して説明する。ＤＥＳ暗号処理は、変換関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。図１にＤＥＳ暗号処理の基本構成を示す。入力データの変換を実行するラウンド関数部１１０と、ラウンド関数部の各ラウンドで適用する鍵を生成する鍵スケジュール部１２０とによって構成される。
【００５３】
ラウンド関数部１１０において、平文（６４ビット）は、まず、初期置換部１１１において、Ｌ，Ｒ各３２ビットに分割され、分割されたＬ，Ｒ３２ビットが、第１段変換部１１２に入力され、鍵スケジュール部１２０の第１段鍵生成部１２２から入力する鍵Ｋ（１）に基づいて変換処理がなされる。変換処理結果は、次段の第２段変換部１１３に入力される。
【００５４】
鍵スケジュール部１２０においては、まず、選択置換部１２１により入力主鍵（６４ビット）のパリティ８ビットが取り除かれ、残り５６ビットの入れ替え処理が実行されて第１段鍵生成部１２２に入力される。第１段鍵生成部１２２では、入力ビット列のシフト処理およびパリティビットの除去等が実行され、４８ビットの副鍵Ｋ（１）を生成し、生成した副鍵Ｋ（１）をラウンド関数部１１０の第１段変換部１１２に出力する。第１段鍵生成部１２２では、シフト処理による上位ビット列（２８ビット）と下位ビット列（２８ビット）とを下段の第２段鍵生成部１２３に出力する。
【００５５】
ラウンド関数部は、１６段の変換部を有し、それぞれ前段の変換部の出力を入力として鍵スケジュール部１２０から入力する鍵を適用した変換処理を実行し、変換結果を後段の変換部に出力する。１６段の変換部で変換された出力が逆置換部１１４に入力され、初期置換部１１１の逆置換処理が実行されて、暗号文として出力される。
【００５６】
ラウンド関数部１１０の各ラウンドを構成する変換部の構成を図２に示す。図２に示すように、変換部は、前段（ｎ−１段）の変換部から２つの入力、Ｌ（ｎ−１）、Ｒ（ｎ−１）を入力し、鍵スケジュール部から鍵（ｋ（ｎ））を入力する。Ｆ関数部１５１において、鍵スケジュール部から入力する鍵（ｋ（ｎ））を用いて、前段変換部から入力するビット列（Ｒ（ｎ−１））の変換処理がなされ、変換結果が、前段変換部から入力する残りのビット列（Ｌ（ｎ−１））と排他論理和が実行されて、次段の変換部の出力Ｒ（ｎ）が生成される。次段の変換部には、Ｒ（ｎ−１）をＬ（ｎ）としたビット列と、上述のＦ関数および排他論理和演算により生成されたＲ（ｎ）が入力され同様の処理が繰り返される。
【００５７】
Ｆ関数の構成を図３に示す。Ｆ関数は、非線形処理を実行する複数のＳボックス（Ｓｂｏｘ）を有する。ラウンド関数部の前段からの入力値Ｒ（ｎ−１）は置換部１７１によって４８ビットに拡大され、さらに鍵スケジュール部から入力する鍵（４８ビット）と排他論理和が実行され、その出力が６ビットずつ非線形変換処理を実行する複数のＳボックス１８１−１〜８に入力される。各Ｓボックスでは、例えば変換テーブルを適用した６ビットから４ビットへの非線形変換処理が実行される。
【００５８】
Ｓボックス１８１−１〜８からの出力ビット４×８＝３２ビットは、置換部１７２に入力されて、ビット位置の入れ替え処理がなされ、Ｆ関数出力３２ビットを生成して出力する。
【００５９】
図１〜３を参照して説明したように複数段（１６段）の変換処理によってＤＥＳ暗号処理が実行される。このＤＥＳ暗号処理をさらに暗号強度を高めるため複数繰り返し実行する構成、例えば３回のＤＥＳ暗号処理を実行するトリプルＤＥＳ暗号処理が様々な分野、例えばインターネットを介したデータ通信機器間の相互認証処理や、ＩＣカードとリーダライタ間の相互認証処理等に適用する暗号処理として多く採用されている。なお、トリプルＤＥＳ暗号処理と区別するため、１回のＤＥＳ暗号処理をシングルＤＥＳ暗号処理と呼ぶ。
【００６０】
トリプルＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）暗号処理構成は、図４に示すように、図１〜３を参照して説明したＤＥＳ暗号処理を３回繰り返して実行することにより、平文から暗号文を生成する。シングルＤＥＳ暗号処理部１８５、１８６，１８７のそれぞれが上述した１６段のラウンド関数部を持ち、Ｓボックスを持つＦ関数による処理を１６回繰り返す。
【００６１】
通常、トリプルＤＥＳ暗号処理では、最初のシングルＤＥＳ暗号処理部１８５と、最後のＤＥＳ暗号処理部１８７においては同じ主鍵（Ｋ１）を適用し、中間のＤＥＳ暗号処理部１８６には異なる主鍵（Ｋ２）を適用する。このように、ＤＥＳ暗号処理を複数回繰り返し実行することで、暗号強度を向上させることができる。
【００６２】
しかし、このような共通鍵暗号処理においては、暗号解析による鍵、あるいは暗号アルゴリズムの漏洩が問題となっている。暗号解析手法としては、複数の種類がある。まず、単純電力解析（ＳＰＡ：Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。スマートカードなどの耐タンパデバイスのほとんどはトランジスタで構成された論理回路からなり、ゲートに電圧が加えられたときに電流が流れ、電力が消費される。一般に回路の消費電力は、実行している演算と用いられているデータの値に関係する。例えば、乗法演算は０を書き込む場合よりも１を書き込む場合のほうが消費電力が大きくなり、乗法演算と平方演算ではそれぞれ異なる電力を消費する。
【００６３】
このように演算やデータ値に応じて電力消費量が変動することから、秘密情報を用いた演算を行っているデバイスの消費電力の変化を観察することで、秘密情報に関してハミングウェイトなどの情報を得ることが可能となり、エントロピーを小さくすることができる。消費電力の変化を直接解析に用いる方法を単純電力解析と呼ぶ。
【００６４】
デバイスの消費電力は、デバイスと電源または接地との間に抵抗を直列に挿入し、抵抗を流れる電流値から求めることができる。実際に共通鍵暗号の演算を行っているスマートカードに対して消費電力測定を行うと、測定波形より共通鍵暗号の各段の演算がはっきり確かめられる。さらに、消費電力波形を詳しく解析することにより鍵レジスタの交換等の情報を得ることができる。
【００６５】
次に、電力差分解析（ＤＰＡ：Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）について説明する。耐タンパデバイスの消費電力は一般に演算内容と演算に用いられている秘密情報に依存する。しかしこれらの内容に依存した消費電力の変化は小さく、測定誤差やノイズなどから見分けることは一般に困難である。
【００６６】
そこでＫｏｃｈｅｒらは大量の測定値の平均をとって測定誤差やノイズなどの影響を小さくし、全データの平均値との差分を取ることで演算プロセスによる電力消費の影響を除いて、用いられる秘密情報による消費電力の変化のみを取り出す方法（電力差分解析）を提案した。
【００６７】
ＫｏｃｈｅｒらはＤＥＳに対する適用例を示している。まず、ラウンド関数部の第１段、または第１６段に入る鍵の一部のビットについて予想し、第１段、または第１６段の最後にメモリに書きこまれると予想されるデータの１ビットの値に注目して、その値に従って消費電力の観測データを分類する。次にそれぞれのグループについて測定値の平均をとり、それらの差分をとる。予想が正しい場合注目したビットが演算に用いられるとき消費電力の差分が大きくなる。予想が異なる場合目立った差分は確認されない。
【００６８】
電力差分解析は、具体的には、以下の手順（ステップ１〜ステップ７）に従った解析が行われる。
（ステップ１）
ｍ回暗号化プロセスを観測し、それぞれ第１６段の消費電力の変化Ｔ１，・・・，Ｔｍを観測する。さらに、暗号文Ｃ１，・・・，Ｃｍを記録する。第１６段の消費電力の変化を解析に用いる場合、平文の情報は必要ない。なお、ｍは１０００程度で十分である。
【００６９】
（ステップ２）
鍵に依存した分配関数Ｄ（Ｋｓ，Ｃ）を選択する。ただし、Ｋｓは何らかの鍵情報、Ｃは暗号文である。
例えば、最終段のＳボックス１の出力の１ビット目の値に着目し、Ｓボックス１に供給される６ビットの部分鍵を推定する場合を考える。この場合、関数Ｄは次式で与えられる。
【００７０】
【数１】
2005045752.tif 000003
【００７１】
ただし、
Ｋ１６は、第１６段にＳボックス１に供給される６ビットの部分鍵の予想値、
Ｃ６はＫ１６と排他論理和（ＸＯＲ）される暗号文の６ビット、
ＳＢＯＸ１（ｘ）はＳボックス１に６ビットｘが供給された場合の出力結果の１ビット目、
Ｃ１はＳＢＯＸ１の出力結果に排他論理和（ＸＯＲ）される暗号文の１ビットである。
【００７２】
（ステップ３）
関数Ｄを用いてＴ１，・・・，Ｔｍを２つのグループに分ける。
Ｓ０＝｛Ｔｉ｜Ｄ（・，・，・）＝０｝
Ｓ１＝｛Ｔｉ｜Ｄ（・，・，・）＝１｝
【００７３】
次に、それぞれのグループについて消費電力の平均値を取る。
【００７４】
【数２】
2005045752.tif 000004
【００７５】
ただし、｜Ｓ０｜＋｜Ｓ１｜＝ｍである。
【００７６】
（ステップ４）
Ａ０とＡ１の差分をとり、電力差分信号ΔＤを得る。
ΔＤ＝Ａ０−Ａ１
【００７７】
（ステップ５）
部分鍵の予想値Ｋｓが正しくない場合、Ｄ（・，・，・）は暗号文に対してほぼランダムに"０"と"１"を出力する。従って十分多くのサンプルを取ると、ΔＤの値は０に近づいていく。ただし、実際には正しい予想値Ｋｓとの相互作用のため、ΔＤの波形は完全にはフラットにならない。Ｋｓが正しい場合は、Ｄ（・，・，・）は注目したビットの実際の値と同じ値を取るため、ｍ→∞とすることで、ΔＤは注目したビットを用いるときに消費する電力に近づいていく。
【００７８】
他のデータ値や測定誤差などＤ（・，・，・）に依存しないものは０に近づいていく。消費電力はデータのビット値に依存するため、Ｄ（・，・，・）の波形は注目したビットが用いられる領域でパルスを見せ、それ以外の領域では平坦になる。
【００７９】
（ステップ６）
以上を繰り返し、Ｓボックス１に供給される部分鍵を推定する。反復の最大値は２６＝６４回である。
【００８０】
（ステップ７）
同様の作業を残り７つのＳボックスについて行い、秘密鍵について４８ビットの情報を得る。残りの８ビットの鍵情報は全探索によって求める。これは、ＤＥＳに関する例であるが、Ｃａｍｅｌｌｉａ等で利用されている８×８Ｓｂｏｘについても同様に適用が可能である。
【００８１】
次に、高階電力差分解析について説明する。
上に述べた電力差分解析はサンプルの一つのイベントに基づいた情報に対して解析を行っているが、高次電力差分解析は複数のイベントに基づいた情報を関連付けて解析に用いる。分配関数Ｄはサンプルごとにそれぞれ異なる重み付けをしたり、２つ以上のグループ分けをしたりすることができる。そのような関数は多くの防御策を封じ、平文や暗号文の情報が不完全な場合でも解析が可能な場合がある。また、特徴的な統計的性質を持つサンプルに対しては、単純に平均をとるのではなく別の処理を行うことが有効である。
【００８２】
図１〜図４を参照して説明した複数段（１６段）の変換処理によって暗号処理が実行される場合、各段の処理結果、すなわち中間データが、一旦、記憶部としてのレジスタに格納され、次の処理段での処理の開始時にレジスタから中間データが取り出されて次段の処理が実行される。すなわち、レジスタへの中間データの格納、およびレジスタからの中間データの取り出しが繰り返し実行されることになる。
【００８３】
具体的な処理について、図５を参照して説明する。図５には、Ｓボックス（Ｓｂｏｘ）２０４を持つＦ関数の構成および中間データ記憶部としてのレジスタ２０７，２０８を持つ暗号処理デバイスの構成例である。
【００８４】
図１〜図４を参照して説明した複数段（１６段）の変換処理を実行する場合、各処理段毎に生成する中間データがレジスタ２０７，２０８に格納され、次の処理段では、レジスタ２０７およびレジスタ２０８から中間データが取り出されて処理が実行される。
【００８５】
図５（ａ）は図２に示す変換処理部に相当し、その詳細および中間データ記憶部としてのレジスタを示したのが図５（ｂ）である。前段（ｎ−１段）の処理結果、すなわち、Ｌ（ｎ−１）、Ｒ（ｎ−１）は、それぞれＬレジスタ２１１、Ｒレジスタ２１２に格納され、Ｒレジスタ２１２の３２ビットデータがＦ関数部２００に入力され、置換部２０１において、３２ビットから４８ビットに拡大置換される。置換部２０１は、図３の置換部１７１に相当する。
【００８６】
さらに置換部２０１の出力に対して、鍵スケジュール部から鍵（ｋ（ｎ））２０２が適用されて、排他論理和（ＸＯＲ）部２０３において排他論理和演算処理がなされ、処理結果がＳボックス２０４に入力される。Ｓボックスにおいて非線形変換が実行され、Ｓボックス２０４出力が置換部２０５でビット入れ替え等の置換処理が実行された後、置換結果が、排他論理和（ＸＯＲ）部２０６においてＬレジスタ２１１の格納値と排他論理和演算処理がなされ、その結果が、Ｒレジスタ２１２、Ｌレジスタ２１１に格納される。これらの格納データがさらに次の段の処理において取り出されて同様の処理が繰り返されることになる。
【００８７】
図５に示すような実装では、Ｆ関数部２００の出力が直接レジスタに蓄えられ、後段の処理には、レジスタからのデータ取り出しを実行して取り出したデータに基づく処理が実行される。
【００８８】
これらの処理を実行するデバイスは、トランジスタで構成された論理回路であり、前述したように、実行している演算と用いられているデータの値に関係する消費電力が発生する。例えば、レジスタに対するデータ書き込みにおいて、０を書き込む場合と１を書き込む場合とで異なる消費電力を示すことになる。従って、レジスタに対する中間データの書き込み、読み取りを繰り返し実行する演算を行っているデバイスの消費電力の変化を観察することで、秘密情報の解析を行うことが可能となる。
【００８９】
暗号処理を実行するデバイスとしてのＩＣモジュール３００の構成例を図６に示す。上述の暗号処理は、例えばＰＣ、ＩＣカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図６に示すＩＣモジュール３００は、これら様々な機器に構成することが可能である。
【００９０】
図６に示すＣＰＵ(Central processing Unit)３０１は、暗号処理の開始や、終了、暗号処理プログラムに従った各処理の実行、データの送受信の制御、各構成部間のデータ転送制御、メモリ（レジスタ）３０２へのデータ格納、メモリ（レジスタ）３０２からのデータ読み取り処理、その他の各種処理を実行するプロセッサである。
【００９１】
メモリ（レジスタ）３０２は、ＣＰＵ３０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ３０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。メモリ（レジスタ）３０２には、上述した中間データの格納領域も形成される。プロセッサによって実行される様々な処理における中間データの格納あるいは読み取りは、クロック信号生成部３１０の生成するクロック信号がメモリ３０２のクロック端子に入力され、データの格納あるいは読み取り実行タイミングが制御される。また、メモリ３０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。
【００９２】
乱数発生器３０３は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【００９３】
送受信部３０４は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【００９４】
先に図５を参照して説明したように、暗号処理において発生する中間データは、レジスタに格納され、また、次の処理においてレジスタから中間データの読み出しが行われることになる。これらのデータの記録および読み出す際の処理タイミングは、一定サイクルの周期を持つクロック信号によって制御される。
【００９５】
すなわち、図７に示すように、クロック信号生成部３１０は、一定周期のクロック信号を生成し、生成されたクロック信号がメモリ３０２のクロック端子に入力され、データの格納あるいは読み取り実行タイミングが制御され、メモリ（レジスタ）３０２に対するデータ書き込み、およびデータ読み取り処理が実行される。
【００９６】
図８に示すように、クロック信号生成部３１０の生成するクロック信号は、一定周期のクロックサイクルを持つデジタル波形信号であり、例えば図８の信号立ち上がり部分において、ＣＰＵ３０１は、メモリ（レジスタ）３０２に対するデータ書き込み処理、あるいは、メモリ（レジスタ）３０２からのデータ読み取り処理を実行する。
【００９７】
クロック信号生成部３１０の生成するクロック信号は時間間隔が一定であるため、消費電力を測定することによって暗号化鍵や復号鍵等の秘密情報を得る暗号解析法が有効に作用することになる。すなわち、時間経過に伴う、消費電力の推移を観察することで、レジスタに対するデータ格納タイミングなど、各種の処理タイミングが解析されてしまうことになる。
【００９８】
本発明は、このような規則的な処理タイミングに従った処理に起因する攻撃に対する弱点を解消するものであり、クロック信号をそのまま、処理実行タイミングの制御信号として用いるのではなく、乱数に基づいてランダムな処理実行タイミング制御信号としての変調クロック信号を生成し、変調クロック信号に基づいて各種の処理を実行する構成とした。
【００９９】
本発明に従った、暗号処理実行デバイスとしてのＩＣモジュール５００の構成例を図９に示す。図９に示すＣＰＵ(Central processing Unit)５０１は、データ処理機能を持つプロセッサであり、暗号処理の開始や、終了、暗号処理プログラムに従った各処理の実行、データの送受信の制御、各構成部間のデータ転送制御、メモリ（レジスタ）５０２へのデータ格納、メモリ（レジスタ）５０２からのデータ読み取り処理、その他の各種処理を実行するプロセッサである。プロセッサによって実行される様々な処理において、データのメモリ（レジスタ）５０２に対する格納処理あるいは読み取り処理のタイミングは、変調クロック信号生成部５３０の生成する変調クロック信号に基づいて制御される。すなわち、変調クロック信号生成部５３０の生成する変調クロック信号がメモリ５０２のクロック端子に入力され、データの格納あるいは読み取り実行タイミングが制御される。
【０１００】
変調クロック信号生成部５３０は、一定周期の正規のクロック信号をクロック信号生成部５１０から入力するとともに、乱数信号生成部５２０の生成する乱数信号を入力し、これらの２つの信号に基づいて変調クロック信号を生成する。変調クロック信号生成部５３０は、カウンタ５４０を有し、カウンタに基づいて、処理の遅延時間が、予め定めた許容遅延時間内にあるか否かを計測し、許容遅延時間内においては、乱数信号に基づく変調クロック信号をメモリ５０２のクロック端子に出力し、遅延が許容遅延時間上限になると、一定周期の正規のクロック信号をメモリ５０２のクロック端子に出力する。これらの処理によって、処理の実行タイミングが制御されることになる。これらの処理の詳細については、後述する。
【０１０１】
メモリ（レジスタ）５０２は、ＣＰＵ５０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ５０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。メモリ（レジスタ）５０２は、上述した中間データの格納領域も形成される。また、メモリ５０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。秘密データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１０２】
乱数発生器５０３は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１０３】
送受信部５０４は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１０４】
本実施例の構成において、データ処理機能を持つＣＰＵ５０１の実行する処理、例えばメモリ（レジスタ）５０２に対するデータ格納処理や、メモリ（レジスタ）５０２からのデータ読み出し処理タイミングなどの各種処理タイミングは、変調クロック信号生成部５３０の生成する変調クロック信号に基づいて決定される。
【０１０５】
図１０を参照して、変調クロック信号生成部５３０の生成する変調クロック信号について説明する。変調クロック信号生成部５３０は、一定周期の正規のクロック信号をクロック信号生成部５１０から入力するとともに、乱数信号生成部５２０の生成する乱数信号を入力し、これらの２つの信号に基づいて変調クロック信号を生成する。
【０１０６】
図１０（ａ）が、クロック信号生成部５１０から入力する一定周期の正規のクロック信号である。（ｂ）は、乱数信号生成部５２０の生成する乱数の例であり、（ｃ）は乱数に基づいて生成される乱数信号である。
【０１０７】
図１０では、乱数［１１００１１１０１１０１］の乱数データ例を示してある。（ｃ）の乱数信号は、乱数［１］で［Ｈｉｇｈ］、乱数［０］で［Ｌｏｗ］となるように設定された信号である。乱数は、乱数信号生成部５２０においてランダムに生成される乱数であり、（ｃ）の乱数信号は、ランダムに生成される乱数に基づいて設定される信号である。
【０１０８】
変調クロック信号生成部５３０は、図１０（ａ）の一定周期の正規のクロック信号をクロック信号生成部５１０から入力し、図１０（ｂ）の乱数信号を乱数信号生成部５２０から入力し、これら２つの信号に基づいて、図１０（ｅ）の変調クロック信号を生成し、処理タイミングの制御信号として出力する。図１０（ｅ）の変調クロック信号において、各種の処理タイミングは、変調クロック信号の立ち上がり部1〜5に設定される。
【０１０９】
図１０（ｅ）の変調クロック信号は、前半は、（ｃ）乱数信号であり、後半は、（ａ）クロック信号に対応する信号である。変調クロック信号生成部５３０は、カウンタ５４０を有し、カウンタ５４０によって、（ｃ）の乱数信号に基づいて処理を実行した場合の遅延を計測する。すなわち、（ａ）の正規のクロック信号に基づく処理に比較して、（ｃ）の乱数信号に基づく処理によって発生する遅延をカウントし、遅延が予め設定した許容遅延時間内である場合は、（ｃ）乱数信号を変調クロック信号として出力し、遅延が予め設定した許容遅延時間の上限に達した場合は、（ａ）の正規のクロック信号を変調クロック信号として出力する。この処理によって、処理遅延が過大になることが防止され、所定時間内の処理完了が保証される。
【０１１０】
図１０の例では、最大の許容遅延時間をカウンタ＝４として設定した例を示している。すなわち、（ａ）の正規のクロック信号に対して、（ｃ）の乱数信号の処理タイミング発生数の遅れが４になるまでは、（ｃ）乱数信号を変調クロック信号として出力し、遅延が４に達した場合は、（ａ）の正規のクロック信号を変調クロック信号として出力する。
【０１１１】
（ｄ）カウンタは、初期状態は［０］に設定され、（ａ）の正規のクロック信号の立ち上がりまたは立ち下がりの発生数と、（ｃ）の乱数信号の立ち上がりまたは立ち下がりの発生数の差が発生した時点で、カウントアップする。図１０の例では、ポイント（イ）、（ハ）、（ホ）、（ヘ）の各点において、（ａ）の正規のクロック信号の立ち上がりまたは立ち下がりが発生しているが、（ｃ）の乱数信号の立ち上がりまたは立ち下がりが発生しておらず、これらの各ポイントでカウンタ５４０はカウントアップする。
【０１１２】
図１０の例では、最大の許容遅延時間をカウンタ＝４として設定した例であり、（ヘ）のポイントにおいて、カウンタ５４０のカウント値＝４となるので、図１０（ｅ）に示すように、ポイント（へ）までは、（ｃ）乱数信号を変調クロック信号として出力し、遅延が予め設定した許容遅延時間の上限、すなわちカウント＝４に達した場合は、（ａ）の正規のクロック信号を変調クロック信号として出力する。この処理によって、処理遅延は、正規クロック数に換算してクロック数＝４までに抑えることが可能であり、遅延が過大になることが防止され、所定時間内の処理完了が保証される。
【０１１３】
図１１を参照して、変調クロック信号に基づくレジスタに対するデータ書き込み処理および、レジスタからのデータ読み取り処理について説明する。
【０１１４】
メモリ（レジスタ）５０２に対するデータ書き込み、あるいはメモリ（レジスタ）５０２からのデータ読み取り処理は、例えば、先に図１〜図５を参照して説明した複数段のラウンド関数部における各段のＳボックス出力に基づくデータの格納処理や、次段の処理開始時に繰り返し、実行される。
【０１１５】
これらの処理タイミングは、変調クロック信号生成部５３０の生成する変調クロック信号に基づいて決定される。メモリ５０２のクロック端子に変調クロック信号生成部５３０の生成する変調クロック信号が入力され、入力する変調クロック信号によって決定される処理タイミング、すなわち、図１０（ｅ）のポイント1〜5において、メモリ（レジスタ）５０２に対するデータ書き込み、あるいはメモリ（レジスタ）５０２からのデータ読み取り処理が実行される。
【０１１６】
変調クロック信号生成部５３０は、図１０（ａ）の一定周期の正規のクロック信号をクロック信号生成部５１０から入力し、図１０（ｂ）の乱数信号を乱数信号生成部５２０から入力し、これら２つの信号に基づいて、図１０（ｅ）の変調クロック信号を生成する。
【０１１７】
変調クロック信号生成部５３０は、カウンタ５４０を有し、カウンタ５４０によって、（ｃ）の乱数信号に基づいて処理を実行した場合の遅延を計測し、遅延が予め設定した許容遅延時間内である場合は、（ｃ）乱数信号を変調クロック信号として出力し、遅延が予め設定した許容遅延時間の上限に達した場合は、（ａ）の正規のクロック信号を変調クロック信号としてメモリ５０２のクロック端子に供給する。変調クロック信号生成部５３０から入力する変調クロック信号に基づくタイミング制御の下に処理が実行される。この遅延時間のカウント処理によって、処理遅延が過大になることが防止され、所定時間内の処理完了が保証される。
【０１１８】
図１２に変調クロック信号生成部５３０において実行する変調クロック信号の生成および出力処理手順を説明するフローチャートを示す。フローチャートを参照して、変調クロック信号生成部５３０の処理手順を説明する。
【０１１９】
ステップＳ１０１において、変調クロック信号生成部は、一定周期の正規のクロック信号（図１０（ａ）参照）をクロック信号生成部から入力し、乱数信号（図１０（ｂ）参照）を乱数信号生成部５２０から入力する。
【０１２０】
ステップＳ１０２において、乱数信号（図１０（ｂ）参照）に基づいて、変調クロック信号を生成し、変調クロック信号生成部におけるカウンタが、正規のクロック信号に対する乱数信号の遅れのカウントを開始（図１０（ｄ）参照）する。
【０１２１】
ステップＳ１０３において、カウンタによってカウントされるカウント数に基づいて決定される遅延量が、予め定めた許容遅延時間以内であるか否かを判定する。図１０の例では、カウント数＝４を許容最大遅延時間として設定している。
【０１２２】
遅延量が予め定めた許容最大遅延時間未満である場合（ステップＳ１０３の判定：Ｙｅｓ）は、ステップＳ１０４に進み、乱数信号を変調クロック信号として出力する。遅延量が予め設定した許容最大遅延時間に達した場合（ステップＳ１０３の判定：Ｎｏ）は、ステップＳ１０５に進み、正規のクロック信号を変調クロック信号として出力する。
【０１２３】
このように、本発明の構成によれば、乱数に基づいて生成される変調クロック信号を適用して処理タイミングが設定され、例えば中間データのレジスタへの格納処理、あるいはレジスタからのデータ読み取り処理が、変調クロック信号に基づいて制御されることになる。従って、規則的なクロックによる処理が実行されないこととなり、時間軸に沿った電力消費の解析に基づく暗号解析に対する耐性を高めることが可能となり、セキュリティレベルの高い暗号処理が可能となる。
【０１２４】
さらに、本発明の構成では、乱数信号に基づく制御によって発生する遅延量をカウンタによって計測し、遅延量が許容最大遅延時間に達した以降は、正規のクロック信号を出力して、正規のクロック信号によって設定されるタイミングで処理を実行する構成としたので、処理遅延が過大になることが防止され、所定時間内の処理完了が保証され、高速処理の必要なシステムにおいても処理エラーを発生させることないシステムが実現される。
【０１２５】
なお、上述の実施例では、カウンタを必須のユニットとしていたが、遅延量や、パフォーマンスの低下を考慮する必要がない場合は、カウンタによる遅延量の計測を実行する必要がないので、カウンタを設けず、常時、乱数信号に基づいて生成する変調クロック信号を制御クロックとして出力し、乱数信号に基づいて生成する変調クロック信号に従った処理を実行する構成としてもよい。
【実施例２】
【０１２６】
上述した実施例１においては、乱数信号に基づいて変調クロック信号を生成して、データ書き込みタイミング等の制御信号として用いる構成例を説明した。次に、乱数信号に基づいてランダムな初期遅延量を設定し、ランダムな初期遅延量を持つクロック信号をメモリに対するデータ書き込みなどの処理タイミング制御信号として適用した実施例について説明する。
【０１２７】
本発明に従った、暗号処理実行デバイスとしてのＩＣモジュール７００の構成例を図１３に示す。図１３に示すＣＰＵ(Central processing Unit)７０１は、データ処理機能を持つプロセッサであり、暗号処理の開始や、終了、暗号処理プログラムに従った各処理の実行、データの送受信の制御、各構成部間のデータ転送制御、メモリ（レジスタ）７０２へのデータ格納、メモリ（レジスタ）７０２からのデータ読み取り処理、その他の各種処理を実行するプロセッサである。プロセッサによって実行される様々な処理において、データのメモリ（レジスタ）７０２に対する格納処理あるいは読み取り処理のタイミングは、ランダム遅延クロック信号生成部７３０の生成するランダムに遅延されたクロック信号に基づいて制御される。すなわち、ランダム遅延クロック信号生成部７３０の生成する遅延クロック信号がメモリ７０２のクロック端子に入力され、データの格納あるいは読み取り実行タイミングが制御される。
【０１２８】
ランダム遅延クロック信号生成部７３０は、一定周期の正規のクロック信号をクロック信号生成部７１０から入力するとともに、乱数信号生成部７２０の生成する乱数信号を入力する。
【０１２９】
ランダム遅延クロック信号生成部７３０は、初期遅延量決定部７４０を有し、初期遅延量決定部７４０が、乱数信号生成部７２０の生成する乱数信号に基づいて初期遅延量を決定し、決定した初期遅延を持つ遅延クロック信号がメモリ７０２のクロック端子に入力され、データの格納あるいは読み取り実行タイミングが制御される。
【０１３０】
ただし、初期遅延量決定部７４０は、予め定められた最大許容遅延時間：Ｄｍａｘ以内において、ランダムな遅延量を決定する。すなわち、初期遅延時間：ｄは、
０≦ｄ≦Ｄｍａｘ
の範囲で、乱数信号生成部７２０の生成する乱数信号に基づいて初期遅延量を決定する。この処理の詳細については、後述する。
【０１３１】
メモリ（レジスタ）７０２は、ＣＰＵ７０１が実行するプログラム、あるいは演算パラメータとしての固定データを格納するＲＯＭ（Read-Only-Memory）、ＣＰＵ７０１の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるＲＡＭ（Random Access Memory）等からなる。メモリ（レジスタ）７０２は、上述した中間データの格納領域も形成される。また、メモリ７０２は暗号処理に必要な鍵データ等の格納領域として使用可能である。秘密データ等の格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
【０１３２】
乱数発生器７０３は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
【０１３３】
送受信部７０４は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ＩＣモジュールとのデータ通信を実行し、ＩＣモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
【０１３４】
本実施例の構成において、データ処理機能を持つＣＰＵ７０１の実行する処理、例えばメモリ（レジスタ）７０２に対するデータ格納処理や、メモリ（レジスタ）７０２からのデータ読み出し処理タイミングなどの各種処理タイミングは、ランダム遅延クロック信号生成部７３０の生成する遅延クロック信号に基づいて決定される。
【０１３５】
図１４を参照して、ランダム遅延クロック信号生成部７３０の生成するランダム遅延クロック信号について説明する。ランダム遅延クロック信号生成部７３０は、一定周期の正規のクロック信号をクロック信号生成部７１０から入力するとともに、乱数信号生成部７２０の生成する乱数信号を入力する。
【０１３６】
図１４（ａ）が、クロック信号生成部７１０から入力する一定周期の正規のクロック信号である。（ｂ）は、ランダム遅延クロック信号生成部７３０の生成するランダム遅延クロック信号の例であり、（ｃ）は乱数信号生成部７２０の生成する乱数信号の例である。
【０１３７】
図１４では、（ｃ）の乱数信号、すなわち、乱数信号生成部７２０の生成する乱数信号が［０００１１０１１］の８ビットデータである例を示してある。ランダム遅延クロック信号生成部７３０の初期遅延量決定部７４０は、この乱数信号［０００１１０１１］に基づいて初期遅延量を決定する。
【０１３８】
乱数信号に基づく遅延量の決定処理態様としては、例えば入力乱数信号に基づく演算処理、あるいは乱数信号と遅延量を対応付けたテーブル参照処理などが適用可能である。
【０１３９】
演算式による遅延量算出構成を持つ場合は、初期遅延量決定部７４０は、乱数信号生成部７２０から入力する乱数ｒに基づいて、予め定められた遅延量決定演算式ｆ（ｒ）を実行し、遅延量ｄ＝ｆ（ｒ）を算出する。また、乱数信号と遅延量を対応付けたテーブルに基づく遅延量決定構成を持つ場合は、乱数信号生成部７２０から入力する乱数ｒに基づいて、乱数信号と遅延量を対応付けたテーブルから、入力乱数ｒに対応して設定された遅延量ｄを抽出する。
【０１４０】
ランダム遅延クロック信号生成部７３０は、初期遅延量決定部７４０において決定した遅延量ｄを初期遅延として、クロック信号生成部７１０から入力する一定周期の正規のクロック信号に初期遅延ｄを設定し、図１４（ｂ）に示すようなランダム遅延クロック信号を生成して、メモリに対する処理タイミング制御信号として出力する。
【０１４１】
なお、初期遅延量決定部７４０は、予め定められた最大許容遅延時間：Ｄｍａｘ以内のランダムな遅延量を決定する。すなわち、初期遅延時間：ｄは、
０≦ｄ≦Ｄｍａｘ
の範囲で、乱数信号生成部７２０の生成する乱数信号に基づいて決定する。この処理によって、処理遅延が過大になることが防止され、所定時間内の処理完了が保証される。
【０１４２】
図１５を参照して、ランダム遅延クロック信号に基づくレジスタに対するデータ書き込み処理および、レジスタからのデータ読み取り処理について説明する。
【０１４３】
メモリ（レジスタ）７０２に対するデータ書き込み、あるいはメモリ（レジスタ）７０２からのデータ読み取り処理は、例えば、先に図１〜図５を参照して説明した複数段のラウンド関数部における各段のＳボックス出力に基づくデータの格納処理や、次段の処理開始時に繰り返し、実行される。
【０１４４】
これらの処理タイミングは、ランダム遅延クロック信号生成部７３０の生成するランダム遅延クロック信号に基づいて決定される。メモリ７０２のクロック端子にランダム遅延クロック信号生成部７３０の生成するランダム遅延クロック信号が入力され、入力するランダム遅延クロック信号によって決定される処理タイミング、例えば、図１４（ｂ）のパルス立ち上がり部において、メモリ（レジスタ）７０２に対するデータ書き込み、あるいはメモリ（レジスタ）７０２からのデータ読み取り処理が実行される。
【０１４５】
ランダム遅延クロック信号生成部７３０は、図１４（ａ）の一定周期の正規のクロック信号をクロック信号生成部４１０から入力し、図１４（ｃ）の乱数信号を乱数信号生成部７２０から入力し、乱数信号に基づいて、初期遅延量ｄを決定し、図１４（ｂ）のランダム遅延クロック信号を生成する。
【０１４６】
ランダム遅延クロック信号生成部７３０は、初期遅延量決定部７４０を有し、乱数信号生成部７２０から入力する乱数に基づく演算、あるいはテーブル参照処理などにより、初期遅延量ｄを決定する。ただし、初期遅延量決定部７４０は、予め定められた最大許容遅延時間：Ｄｍａｘ以内のランダムな遅延量、すなわち、
０≦ｄ≦Ｄｍａｘ
の範囲の初期遅延量ｄを、乱数信号生成部７２０の生成する乱数信号に基づいて決定する。この処理によって、処理遅延が過大になることが防止され、所定時間内の処理完了が保証される。
【０１４７】
図１６にランダム遅延クロック信号生成部７３０において実行するランダム遅延クロック信号の生成、出力処理、およびデータ処理、例えばメモリに対するデータ書き込み処理の実行手順を説明するフローチャートを示す。フローチャートの各ステップの処理について説明する。
【０１４８】
ステップＳ２０１において、ランダム遅延クロック信号生成部７３０は、乱数信号生成部５２０から入力する乱数に基づいて初期遅延量ｄを決定する。前述したように、最大許容遅延時間：Ｄｍａｘ以内のランダムな遅延量、すなわち、
０≦ｄ≦Ｄｍａｘ
の範囲の初期遅延量ｄを、乱数信号生成部７２０の生成する乱数信号に基づいて決定する。
【０１４９】
ステップＳ２０２において、初期遅延ｄを設定したランダム遅延クロック信号をメモリの処理制御信号として出力する。
【０１５０】
ステップＳ２０３において、メモリは、ランダム遅延クロック信号のパルス検出を行い、例えばパルスの立ち上がり部を検出した場合、ステップＳ２０４において、データ書き込み等の処理を実行する。
【０１５１】
なお、図１６に示すフローでは、データ書き込み処理を処理例として示してあるが、データ読み出しの際のタイミング制御信号としてランダム遅延クロック信号を用いてもよい。
【０１５２】
このように、本実施例の構成によれば、乱数に基づいて決定するランダムな初期遅延を設定したランダム遅延クロック信号を適用して処理タイミングが設定され、例えば中間データのレジスタへの格納処理、あるいはレジスタからのデータ読み取り処理が、ランダム遅延クロック信号に基づいて制御されることになる。従って、規則的なクロックによる処理が実行されないこととなり、時間軸に沿った電力消費の解析に基づく暗号解析に対する耐性を高めることが可能となり、セキュリティレベルの高い暗号処理が可能となる。
【０１５３】
さらに、本発明の構成では、乱数信号に基づいて設定する遅延量が許容最大遅延時間以内に設定する構成としてあるので、遅延が過大になることが防止され、所定時間内の処理完了が保証され、高速処理の必要なシステムにおいても処理エラーを発生させることないシステムが実現される。
【０１５４】
なお、実施例１で説明した変調クロック信号に対して、実施例２で説明したランダム遅延を設定する構成としてもよい。ただし、この構成の場合には、ランダム遅延によって設定される遅延時間と、変調クロック信号によって生成される遅延時間のトータルが、最大許容遅延時間Ｄｍａｘ以内に設定されるように制御を実行する。
【０１５５】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１５６】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１５７】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５８】
本発明は、認証処理、暗号処理を実行するデバイス、例えば暗号処理モジュールを持つＩＣカードあるいはその他の暗号処理装置に適用可能である。本発明の構成を適用することにより、電力解析によるＩＣモジュール内の暗号処理鍵やアルゴリズムの漏洩が困難となり、また過大な処理遅延も防止される。本発明の構成によりセキュリティレベルの高い暗号処理実行機能を持つデバイスあるいは装置が提供可能となる。
【図面の簡単な説明】
【０１５９】
【図１】ＤＥＳ暗号処理の基本構成を示す図である。
【図２】ラウンド関数部の各ラウンドを構成する変換部の構成を示す図である。
【図３】Ｆ関数の構成を示す図である。
【図４】トリプルＤＥＳ（Ｔｒｉｐｌｅ  ＤＥＳ）暗号処理構成を示す図である。
【図５】Ｓボックス（Ｓｂｏｘ）を持つＦ関数の構成および中間データ記憶部としてのレジスタを持つ暗号処理デバイスの構成例について説明する図である。
【図６】暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【図７】クロック信号に基づく処理タイミングの制御について説明する図である。
【図８】クロック信号の例、およびクロック信号に基づく処理タイミングの制御について説明する図である。
【図９】本発明の実施例１に係る暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【図１０】変調クロック信号の生成例、および変調クロック信号に基づく処理タイミングの制御について説明する図である。
【図１１】変調クロック信号に基づく処理タイミングの制御について説明する図である。
【図１２】変調クロック信号生成部における処理手順を説明するフロー図である。
【図１３】本発明の実施例２に係る暗号処理実行デバイスとしてのＩＣモジュールの構成例を示す図である。
【図１４】ランダム遅延クロック信号の生成例、およびランダム遅延クロック信号に基づく処理タイミングの制御について説明する図である。
【図１５】ランダム遅延クロック信号に基づく処理タイミングの制御について説明する図である。
【図１６】ランダム遅延クロック信号に基づく処理手順を説明するフロー図である。
【符号の説明】
【０１６０】
１１０  ラウンド関数部
１１１  初期置換部
１１２，１１３  変換部
１１４  逆置換部
１２０  鍵スケジュール部
１２１  選択置換部
１２２，１２３  鍵生成部
１５１  Ｆ関数部
１７１，１７２  置換部
１８１  Ｓボックス
１８５，１８６，１８７  ＤＥＳ暗号処理部
２００  Ｆ関数部
２０１  置換部
２０２  鍵
２０３  排他論理和（ＸＯＲ）部
２０４  Ｓボックス
２０５  置換部
２０６  排他論理和（ＸＯＲ）部
２１１  Ｌレジスタ
２１２  Ｒレジスタ
３００  ＩＣモジュール
３０１  ＣＰＵ(Central processing Unit)
３０２  メモリ
３０３  乱数発生器
３０４  送受信部
３１０  クロック信号生成部
５００  ＩＣモジュール
５０１  ＣＰＵ(Central processing Unit)
５０２  メモリ
５０３  乱数発生器
５０４  送受信部
５１０  クロック信号生成部
５２０  乱数信号生成部
５３０  変調クロック信号生成部
５４０  カウンタ
７００  ＩＣモジュール
７０１  ＣＰＵ(Central processing Unit)
７０２  メモリ
７０３  乱数発生器
７０４  送受信部
７１０  クロック信号生成部
７２０  乱数信号生成部
７３０  ランダム遅延クロック信号生成部
７４０  初期遅延量決定部
【図１】
2005045752.tif 000005
【図２】
2005045752.tif 000006
【図３】
2005045752.tif 000007
【図４】
2005045752.tif 000008
【図５】
2005045752.tif 000009
【図６】
2005045752.tif 000010
【図７】
2005045752.tif 000011
【図８】
2005045752.tif 000012
【図９】
2005045752.tif 000013
【図１０】
2005045752.tif 000014
【図１１】
2005045752.tif 000015
【図１２】
2005045752.tif 000016
【図１３】
2005045752.tif 000017
【図１４】
2005045752.tif 000018
【図１５】
2005045752.tif 000019
【図１６】
2005045752.tif 000020