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