(57)【要約】【課題】回路規模の増大や消費電流の増大をもたらすＤＰＡ対策のための論理対策を不要とする暗号処理装置および集積回路を提供する。【解決手段】電源線ＬＶ１１１と、基準電源線ＬＶ１１２と、電源端子および基準電源端子に所定の電力を受けて暗号演算を行う暗号回路１１２と、暗号演算命令発行後、暗号演算に入る前に電源端子と基準電源端子間に電流を流し、電源端子および基準電源端子の少なくとも一方に抵抗が接続されたことを検知するモニタ部ＭＮＴ１とを有する。【選択図】図２
2010062635.tif 000002
【特許請求の範囲】
【請求項１】
電源線と、
基準電源線と、
電源端子および基準電源端子に所定の電力を受けて暗号演算を行う暗号回路と、
暗号演算命令発行後、暗号演算に入る前に上記電源端子と上記基準電源端子間に電流を流し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続されたことを検知するモニタ部と
を有する暗号処理装置。
【請求項２】
上記モニタ部は、
電流源と、
上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、
上記電源端子と上記基準電源端子間に接続され、基準電圧を発生する基準電圧発生回路と、
分割電圧を生成する直列に接続された複数の抵抗と、
上記電源端子と上記基準電源端子間に上記複数の直列抵抗に直列に接続され、制御信号によりオン、オフ制御される第２スイッチと、
上記基準電圧発生回路による基準電圧と上記直列抵抗による分割電圧とを比較する比較器と、を含む
請求項１記載の暗号処理装置。
【請求項３】
上記モニタ部は、
暗号演算命令発行後、上記第２スイッチを制御信号によりオン状態に制御して分割電圧を上記比較器に供給し、
上記第１スイッチを制御信号によりオン状態に制御して上記電源端子と上記基準電源端子間に電流を流し、
上記比較器は、電流が流れる状態での分割電圧と上記基準電圧とを比較し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続された場合の電圧差を検出する
請求項２記載の暗号処理装置。
【請求項４】
上記モニタ部は、
電流源と、
上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、
上記電源端子と上記基準電源端子により駆動電圧を供給され、制御信号を受けて発振動作を行う発振回路と、
上記発振回路の出力をカウントするカウンタと、
上記カウンタ値を保持可能なレジスタと、
上記カウンタのカウント値と上記レジスタに保持されたカウント値とを比較する比較器と、を含む
請求項１記載の暗号処理装置。
【請求項５】
上記モニタ部は、
上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、
上記第１および第２スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、
上記第１および第２スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、
上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する
請求項４記載の暗号処理装置。
【請求項６】
上記モニタ部は、
上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、
上記第２スイッチをオンし、上記第１スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、
上記第２スイッチをオフにし、上記第１スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、
上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する
請求項４記載の暗号処理装置。
【請求項７】
電源線と、
基準電源線と、
上記電源線と上記基準電源線に接続された回路系と、
電源端子および基準電源端子に所定の電力を受けて暗号演算を行う暗号回路と、
暗号演算命令発行後、暗号演算に入る前に上記電源端子と上記基準電源端子間に電流を流し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続されたことを検知するモニタ部と
を有する集積回路。
【請求項８】
上記モニタ部は、
電流源と、
上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、
上記電源端子と上記基準電源端子間に接続され、基準電圧を発生する基準電圧発生回路と、
分割電圧を生成する直列に接続された複数の抵抗と、
上記電源端子と上記基準電源端子間に上記複数の直列抵抗に直列に接続され、制御信号によりオン、オフ制御される第２スイッチと、
上記基準電圧発生回路による基準電圧と上記直列抵抗による分割電圧とを比較する比較器と、を含む
請求項７記載の集積回路。
【請求項９】
上記モニタ部は、
暗号演算命令発行後、上記第２スイッチを制御信号によりオン状態に制御して分割電圧を上記比較器に供給し、
上記第１スイッチを制御信号によりオン状態に制御して上記電源端子と上記基準電源端子間に電流を流し、
上記比較器は、電流が流れる状態での分割電圧と上記基準電圧とを比較し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続された場合の電圧差を検出する
請求項８記載の集積回路。
【請求項１０】
上記モニタ部は、
電流源と、
上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、
上記電源端子と上記基準電源端子により駆動電圧を供給され、制御信号を受けて発振動作を行う発振回路と、
上記発振回路の出力をカウントするカウンタと、
上記カウンタ値を保持可能なレジスタと、
上記カウンタのカウント値と上記レジスタに保持されたカウント値とを比較する比較器と、を含む
請求項７記載の集積回路。
【請求項１１】
上記モニタ部は、
上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、
上記第１および第２スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、
上記第１および第２スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、
上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する
請求項１０記載の集積回路。
【請求項１２】
上記モニタ部は、
上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、
上記第２スイッチをオンし、上記第１スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、
上記第２スイッチをオフにし、上記第１スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、
上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する
請求項１０記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理装置およびそれを搭載した集積回路に関するものである。
【背景技術】
【０００２】
ＩＣカードでは、ホストコンピュータとデータのやり取りを行うとき、その過程でＩＣカードに格納されている秘密情報が漏れても問題を発生させないために、やり取りするデータには暗号化したデータを用いる。
【０００３】
この暗号化の方法として、現在最も多く用いられているのは共通鍵暗号である。
たとえばＤＥＳ(Data Encryption Standard)では、データの暗号化にはＩＣカードの所有者とホストコンピュータが同じ鍵を所有する。そして、ＤＥＳでは、データの送信側はデータをその鍵で暗号化して送信し、データの受信側は同じ鍵で復号化してメッセージを取り出す。
【０００４】
通信の過程で悪意の第三者が盗聴しても、鍵を有していない限りは復号化してメッセージを取り出すのは困難である。
また、暗号化・復号化のときに使う鍵は、ＩＣカード内のＥＥＰＲＯＭ等の不揮発性メモリに格納される。
暗号化・復号化時にはＣＰＵを介さないで直接ＩＣカード内の暗号エンジンに転送されるような制御により、ＩＣカードの所有者やＩＣカードの開発エンジニアすら鍵データを取り出すことが不可能な構成を採ってセキュリティを保持している。
【０００５】
しかし、ＩＣカードの消費電流を測定し、それに統計処理を施して鍵を取り出すという攻撃方法（ＤＰＡ：Differential Power Analysis）が P.Kocher らにより報告された。
このＤＰＡ攻撃では、異なる１０００個程度の平文を用いて暗号化演算を行ってその時の消費電流波形を取得し、鍵を推定して消費電流を統計処理することにより、鍵を取り出すことが可能となる。
【０００６】
実際のＤＰＡ攻撃は、図１に示すような様な測定系を用いて行われる。
【０００７】
図１の測定系１においては、まず、外部電源から暗号演算回路を含むＬＳＩ(ＩＣ：集積回路)２の電源ピンＰＰに１〜十Ω程度の抵抗Ｒを介して電圧供給する。
そして、デジタルオシロスコープ３で抵抗Ｒの一端の電圧を測定することによって動作電流波形を測定して、これをパーソナルコンピュータ（パソコン）４のハードディスク等に取り込む。
暗号演算させる平文はパソコン４から発生させた乱数回路等を用いて発生させてシステム基盤５側に供給して暗号演算する。
所定の数の平文と、それに対応した電流波形の取得が完了した後は、パソコン４で複数の平文で鍵を推定しての暗号化のシミュレーション（simulation）を行う。
そして、着目ノードの値に基づいて消費電流波形をグループ分けし、各グループの平均電流の差分を取ってピーク電流の発生の有無で推定鍵の妥当性を判断する。
【０００８】
ピークが検出されなければ、別の６ビット（bit）鍵を選択して同じ処理を行い、ピークが検出されれば、対象のＳボックス（Ｓｂｏｘ）を変更して次の６ビット鍵を求める。
そして、８個のＳｂｏｘについて各々の６ビット鍵が求まれば、残り ５６−４８＝８ [ bit ] は全数攻撃しても ２8＝２５６回で求まる。
【０００９】
ＤＰＡ攻撃の脅威は、攻撃するのに特別な装置を必要としない点と、電流波形の取得さえ終れば、鍵を推定しての電流波形の統計処理による鍵の取り出しには数十時間程度しか必要としない点である。
そして、攻撃に際して電流測定用の抵抗を電源側またはグランドＧＮＤ側に挿入するが、それ以外は通常のＣＰＵからの命令の処理と同じで、暗号回路は攻撃されていることを
検知する術がない。
【００１０】
このＤＰＡ攻撃に対処するための方法としては、攻撃の対象となる鍵に起因する電流の発生を抑えたり、消費電流の統計処理を困難にする方法を盛り込むことが一般的に行なわれる。
このＤＰＡ対策には大きく分けて以下の３種類があり、これらの対策のうちの１つ以上が施される。
＜１＞論理対策、
＜２＞タイミング対策、
＜３＞電流対策。
【００１１】
これらの中で、ＤＰＡ攻撃に対して最も耐性のあるのは＜１＞の論理対策である。通常は論理対策＜１＞に補助的にタイミング対策＜２＞や電流対策＜３＞を組み合わせてＤＰＡ対策とする。
【００１２】
論理対策＜１＞の方法としては、（ａ）乱数で撹乱する方法と、（ｂ）相補動作をする回路を並列に配置する方法がある。
乱数で撹乱する方法（ａ）の例として、たとえば特許文献１に開示された技術が知られている。
この技術では、Ｆ関数の入力部で、そのままの値（ポジ）と反転値（ネガ）を生成し、拡張関数に入力する値をどちらにするかを乱数で選択する。
【００１３】
相補動作をする回路を並列に配置する方法（ｂ）の例として、たとえば特許文献２に開示された技術が知られている。
この技術では、１bit のデータをハミング重み（Hamming Weight）の等しい２bitの数値に展開する。そして、演算によるデータの遷移は、稼動相と休止相の２相を設けて、一端、“０”でも“１”でもない状態に遷移してから演算後のデータに遷移する制御を行うことによって、演算値の遷移に伴う変化電流を検出できないようにしている。
【００１４】
具体的には、たとえばデータ“０”を “０１”、データ“１”を“１０”として暗号演算を実行する。そして、ラウンド（Ｒｏｕｎｄ）演算によってデータが変化する場合、たとえば一端“００”に遷移してから演算後のデータに遷移する。
すなわち、次のようになる。
【００１５】
“０”→“０”の遷移：“０１”→“００”→“０１”、
“０”→“１”の遷移：“０１”→“００”→“１０”、
“１”→“０”の遷移：“１０”→“００”→“０１”、
“１”→“１”の遷移：“１０”→“００”→“１０”。
【００１６】
このように、全ての遷移で１bitのみ変化するため、変化電流から鍵の取出しは困難となる。
【特許文献１】特開２００２−３１１８２６号公報
【特許文献２】特開２００４−３４７９７５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
上記特許文献１に開示された構成では、Ｓｂｏｘも通常データ（ポジ）と反転データ（ネガ）の２種類を準備し、乱数でどちらを選択するかを決定する。
この方式の場合、推定した６bit鍵が正しい場合でも、２つのグループ各々で半分は乱数により反転動作をし、結果的に、平均電流の差分を採ってもピーク信号は現われない。
しかし、この方式の場合、２つのＳｂｏｘを配置して同時に動作させる必要がある。このため、回路規模および消費電流の増大が発生し、また、高次のＤＰＡ攻撃を行えば、統計処理に必要な平文の数および取得する消費電流波形の数は増えるが、鍵の取出しは可能となる。
【００１８】
また、特許文献２に開示された技術では、全ての演算処理を２ビットで処理する必要があるため、回路規模および消費電流は２倍あるいはそれ以上となる。
そもそも、ＤＰＡ攻撃のための電流波形の測定は、外部電源とＩＣの電源端子の間に数Ωの抵抗を付加するだけで測定を行うため、ＩＣから見た時には抵抗付加の検知が困難という判断の元、ＤＰＡ攻撃されても鍵の取得が困難なように、種々の対策を講じている。
【００１９】
本発明の目的は、回路規模の増大や消費電流の増大をもたらすＤＰＡ対策のための論理対策を不要とする暗号処理装置および集積回路を提供することにある。
【課題を解決するための手段】
【００２０】
本発明の第１の観点の暗号処理装置は、電源線と、基準電源線と、電源端子および基準電源端子に所定の電力を受けて暗号演算を行う暗号回路と、暗号演算命令発行後、暗号演算に入る前に上記電源端子と上記基準電源端子間に電流を流し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続されたことを検知するモニタ部とを有する。
【００２１】
本発明の第２の観点の集積回路は、電源線と、基準電源線と、上記電源線と上記基準電源線に接続された回路系と、電源端子および基準電源端子に所定の電力を受けて暗号演算を行う暗号回路と、暗号演算命令発行後、暗号演算に入る前に上記電源端子と上記基準電源端子間に電流を流し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続されたことを検知するモニタ部とを有する。
【００２２】
好適には、上記モニタ部は、電流源と、上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、上記電源端子と上記基準電源端子間に接続され、基準電圧を発生する基準電圧発生回路と、分割電圧を生成する直列に接続された複数の抵抗と、上記電源端子と上記基準電源端子間に上記複数の直列抵抗に直列に接続され、制御信号によりオン、オフ制御される第２スイッチと、上記基準電圧発生回路による基準電圧と上記直列抵抗による分割電圧とを比較する比較器と、を含む。
【００２３】
好適には、上記モニタ部は、暗号演算命令発行後、上記第２スイッチを制御信号によりオン状態に制御して分割電圧を上記比較器に供給し、上記第１スイッチを制御信号によりオン状態に制御して上記電源端子と上記基準電源端子間に電流を流し、上記比較器は、電流が流れる状態での分割電圧と上記基準電圧とを比較し、上記電源端子および上記基準電源端子の少なくとも一方に抵抗が接続された場合の電圧差を検出する。
【００２４】
好適には、上記モニタ部は、電流源と、上記電源端子と上記基準電源端子間に上記電流源と直列に接続され、制御信号によりオン、オフ制御される第１スイッチと、上記電源端子と上記基準電源端子により駆動電圧を供給され、制御信号を受けて発振動作を行う発振回路と、上記発振回路の出力をカウントするカウンタと、上記カウンタ値を保持可能なレジスタと、上記カウンタのカウント値と上記レジスタに保持されたカウント値とを比較する比較器と、を含む。
【００２５】
好適には、上記モニタ部は、上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、上記第１および第２スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、上記第１および第２スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する。
【００２６】
好適には、上記モニタ部は、上記基準電源端子と上記発振回路の発振経路との間に直列に接続されたキャパシタおよび第２スイッチと、を含み、上記第２スイッチをオンし、上記第１スイッチをオフにした状態で、上記制御信号により上記発振回路を動作させて当該発振回路の出力を上記カウンタでカウントした後レジスタに保持し、上記第２スイッチをオフにし、上記第１スイッチをオンにした状態で発振回路の出力を上記カウンタで再度カウントし、上記比較器は、上記再カウント値と上記レジスタのカウント値とを比較し、周波数の変化を検出する。
【００２７】
本発明によれば、モニタ部は、暗号演算命令が発行されると、暗号演算に入る前に電源端子と基準電源端子間に電流を流す。
そして、たとえば、電源端子および基準電源端子の少なくとも一方に抵抗が接続されたときに、電圧あるいは周波数に変化が現れ、この変化の有無がモニタ部でモニタされる。
【発明の効果】
【００２８】
本発明によれば、回路規模の増大や消費電流の増大をもたらすＤＰＡ対策のための論理対策を不要とすることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施形態を添付図面に関連付けて説明する。
【００３０】
本実施形態においては、ＤＰＡ攻撃のための、電流測定時の抵抗付加を検出するモニタ部を提供し、回路規模の増大や消費電流の増大をもたらすＤＰＡ対策のための論理対策を不要とする構成を実現している。
具体的には、本実施形態では、ＩＣの電源端子およびＧＮＤ端子に抵抗が付加されたことを検知するモニタ部を搭載し、抵抗の付加を検知したらリセットし、ＤＰＡ攻撃を困難とする。
【００３１】
抵抗の検知方式としては、本実施形態においては、暗号演算命令発行後、暗号演算に入る前に消費電流仕様に近い電流を一定期間流し、電圧検知方式または周波数検知方式が採用される。
【００３２】
電圧検知方式においては、抵抗が付加されている場合、大きな電流を流すことにより、電源線の電圧降下およびＧＮＤ線の電圧上昇が発生し、これをＩＣの電源−ＧＮＤ間に配置した抵抗分割電圧と基準電圧の抵抗分割電圧との比較で検知する。
【００３３】
周波数検知方式においては、抵抗が付加されている場合、大きな電流を流すことにより電源−ＧＮＤ間の電位差は減少する。発振回路を配置した場合、電源−ＧＮＤ間の電位差が変化すると発振周波数も変化し、大きな電流を流す前後で発振周波数を比較することにより抵抗の存在を検知する。
【００３４】
以下、本発明の実施形態に係るＬＳＩ（集積回路）について電圧検知方式および周波数検知方式を採用した場合を例に説明する。
【００３５】
［第１実施形態］
図２は、本発明の第１の実施形態に係るＩＣカードに使われるＬＳＩの構成例を示す図である。
【００３６】
このＩＣカード(電子デバイス)１００は、ＬＳＩ（集積回路）１１０を有する。
ＬＳＩ１１０は、図２に示すように、ＣＰＵ１１１、暗号回路１１２、他の周辺回路１１３、比較器１１４、基準電圧発生回路（ＢＧＲ１）１１５、および定電流源１１６が集積化されている。
ＬＳＩ１１０は、さらに第１スイッチとしてのｎチャネルＭＯＳ（ＮＭＯＳ）トランジスタＮ１、第２スイッチとしてのＮＭＯＳトランジスタＮ２、直列接続された抵抗Ｒ１および可変抵抗Ｒ２が集積化されている。
【００３７】
そして、比較器１１４、基準電圧発生回路１１５、定電流源１１６、抵抗Ｒ１，Ｒ２、およびトランジスタＮ１，Ｎ２によりモニタ部ＭＮＴ１が構成される。
【００３８】
ＣＰＵ１１１は、図示していないマスクＲＯＭ等に記憶されたプログラムに従って、あるいはＲＡＭをアクセスしてＩＣカード１００の全体の制御を行う。
ＣＰＵ１１１は、暗号回路１１２への暗号命令を発行等する機能を有している。
【００３９】
本実施形態のＩＣカード１００は、外部電源から電源電圧“Ｖｃｃ”が供給される電源線ＬＶ１１１およびＧＮＤ線(接地線)ＬＶ１１２には、ＣＰＵ１１１、暗号回路１１２、周辺回路１１３、基準電圧発生回路１１５、定電流源１１６等が接続されている。
【００４０】
ＤＰＡ攻撃のための電流波形の取得は、図２に示すように、外部電源とＩＣの電源端子との間に抵抗を挿入してＩＣの電源端子端から取得する場合と、外部ＧＮＤとＩＣのＧＮＤ端子との間に抵抗を挿入してＩＣのＧＮＤ端子端から取得する２つの方法がある。
このため、外部電源とＩＣカードの電源端子、外部ＧＮＤとＩＣのＧＮＤ端子の電圧は必ずしも一致しない。
以下の説明では、これらの電圧を各々、Ｖｃｃ，ＶｄおよびＧＮＤ,Ｖｓと表示することとする。
【００４１】
モニタ部ＭＮＴ１において、電流値“ＩL”の電流を流す定電流源１１６と制御信号ＣＨＫ１でオン、オフ制御されるＮＭＯＳトランジスタＮ１が電源線ＬＶ１１１とＧＮＤ線ＬＶ１１２との間に直列に配置されている。
これと並列に、直列接続された固定抵抗Ｒ１と可変抵抗Ｒ２の抵抗列と、制御信号ＣＨＫ２でオン、オフ制御されるＮＭＯＳトランジスタＮ２が電源線ＬＶ１１１とＧＮＤ線ＬＶ１１２との間に直列に接続されている。
また、固定抵抗Ｒ１と可変抵抗Ｒ２の抵抗列の接続点によりノードＮＤ１が形成されている。このノードＮＤ１のノード電圧をＶdivとする。
【００４２】
そして、ＩＣカード１００のＧＮＤ端子（Ｖs）に対して常に一定の電圧を出力する基準電圧発生回路１１５の出力Ｖrefは、比較器１１４の“＋”端子に入力され、抵抗分割電圧Ｖdivは比較器１１４の“−”端子に入力される。
本実施形態においては、この比較器１１４がアクティブとなったときに、以下の関係を検出すると、リセット要求を行うものとする。
【００４３】
［数１］
“−”端子の電圧Ｖ（−） ＜ “＋”端子の電圧Ｖ（＋）・・・・・・（１）
【００４４】
図３は、本実施形態のモニタ部における可変抵抗Ｒ２の構成例示す図である。
【００４５】
可変抵抗Ｒ２は、図３に示すように、抵抗値がある程度の大きさの抵抗器Ｒ２０と、抵抗値が抵抗器Ｒ２０より小さい複数の抵抗器Ｒ２１〜Ｒ２ｎが直列に接続されて構成されている。
抵抗値が小さい抵抗器Ｒ２１〜Ｒ２ｎには、ゲートがレジスタＲｅｇ．１〜Ｒｅｇ．ｎの出力に接続されたＮＭＯＳトランジスタＮ２１〜Ｎ２ｎが並列に配置されている。
ＮＭＯＳトランジスタＮ２１〜Ｎ２ｎは、レジスタＲｅｇ．１〜Ｒｅｇ．ｎへのセット値によってオン、オフ制御される。
可変抵抗Ｒ２では、ＮＭＯＳトランジスタＮ２１〜Ｎ２ｎをレジスタＲｅｇ．１〜Ｒｅｇ．ｎへのセット値によってオン、オフ制御することにより小さい値の抵抗器Ｒ２１〜Ｒ２ｎを有効にしたり、ショートさせたりして抵抗値を変えられる構成が採用されている。
【００４６】
このレジスタＲｅｇ．１〜Ｒｅｇ．ｎの値は、ＩＣの電源投入直後の初期化動作時に定電流源１１６は非アクティブで基準電圧発生回路１１５および比較器１１４のみをアクティブとした場合の、可変抵抗Ｒ２の抵抗値が次のようになるようにセットされる。
【００４７】
すなわち、次式（２）を満たす可変抵抗Ｒ２の抵抗値ＲＶ２のうち、この抵抗値ＲＶ２が最小となるように、レジスタＲｅｇ．１〜Ｒｅｇ．ｎの値がセットされる。
【００４８】
［数２］
｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・（Ｖｄ−Ｖｓ）＋Ｖｓ＞Ｖref＋Ｖｓ・・・（２）
【００４９】
ここで、ＲＶ１は抵抗Ｒ１の抵抗値を、ＲＶ２は可変抵抗Ｒ２の抵抗値をそれぞれ示している。
【００５０】
次に、この構成の回路動作について、図４〜図７に関連付けて説明する。
【００５１】
図４は、図２の回路に対して電源端子側に抵抗が挿入された場合を示す図である。
図５（Ａ）は、図２の回路において電源端子側に抵抗が挿入されていない場合の信号波形を示し、図５（Ｂ）は、図２の回路において電源端子側に抵抗が挿入された場合の信号波形を示す図である。
また、図６は、図２の回路においてＧＮＤ端子側に抵抗が挿入された場合を示す図である。
図７は、図２の回路においてＧＮＤ端子側に抵抗が挿入された場合の信号波形を示す図である。
【００５２】
＜両端子とも抵抗が付加されていない場合＞
電源端子側およびＧＮＤ端子側に抵抗が付加されていない場合、Ｖｄ＝Ｖｃｃ，Ｖｓ＝ＧＮＤとなり、上記（２）式は以下のようになる。
【００５３】
［数３］
｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・Ｖｃｃ＞Ｖref・・・（３）
【００５４】
通常動作時は、制御信号ＣＨＫ１，ＣＨＫ２がローレベルに設定され、定電流源１１６および比較器１１４はオフ状態（非アクティブ状態）に保持される。
そして、ＣＰＵ１１１から暗号回路１１２に対して暗号演算命令が発行されたとき、暗号演算開始前に制御信号ＣＨＫ２がハイレベルに設定され、これによりトランジスタＮ２がオンし抵抗Ｒ１，Ｒ２の抵抗列がアクティブとなる。その結果、比較器１１４に分割電圧Ｖdivが供給される。
このとき、外付け抵抗は付加されていないため、ＩＣの電源端子、ＧＮＤ端子の電位に変化はない。
この状態で制御信号ＣＨＫ１がハイレベルに設定され、これによりトランジスタＮ１がオンし、定電流源１１６に電流値“ＩL”の電流が流れるが、“Ｖd”，“Ｖs”の電圧変化は起こらない。
このため、図５（Ａ）に示すように、比較器１１４の両入力電圧に変化はなく、リセット信号ＲＳＴは発行されない。
【００５５】
＜外部電源とＩＣの電源端子の間に抵抗“Ｒd”が挿入されている場合＞
図４に示すように、外部電源とＩＣの電源端子の間に抵抗“Ｒd”が挿入されている場合、Ｖｓ＝ＧＮＤとなり、上記（２）式は以下のようになる。
【００５６】
［数４］
｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・Ｖｄ＞Ｖref・・・・・・・（４）
【００５７】
ＣＰＵ１１１から暗号回路１１２に対して暗号演算命令が発行されたとき、暗号演算開始前に制御信号ＣＨＫ２がハイレベルに設定され、これによりトランジスタＮ２がオンし抵抗Ｒ１，Ｒ２の抵抗列がアクティブとなる。その結果、比較器１１４に分割電圧Ｖdivが供給される。
次いで、制御信号ＣＨＫ１がハイレベルに設定され、これによりトランジスタＮ１がオンし、定電流源１１６に電流値“ＩL”の電流が流れる。
このとき、ＩＣのＧＮＤ端子の電圧には変化がないが、ＩＣの電源端子の電圧は、Ｖdから（Ｖｄ−Ｒｄ・ＩL ）に減少する。
これに伴って、比較器１１４の“−”入力となる抵抗接続ノードＮＤ１の抵抗分割電圧Ｖdivは、次のようになる。
【００５８】
［数５］
Ｖdiv＝｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・（Ｖｄ−Ｒｄ・ＩL ）・・・（５）
【００５９】
一方で、ＩＣのＧＮＤ側の電圧に変化は無いことから、比較器１１４の“＋”入力となる基準電圧Ｖrefに変化はない。
したがって、図５（Ｂ）に示すように、上記（５）式の値が電圧“Ｖref”より小さければ、上記（１）式を満たすことになり、比較器１１４からリセット信号ＲＳＴが発生される。
想定する外付け抵抗“Ｒd”の最小値を１Ωとしたとき、その条件で比較器１１４の出力が反転するように抵抗Ｒ１，Ｒ２の抵抗値“ＲＶ１”,“ＲＶ２”および基準電圧の値“Ｖref”を設定しておけば、確実にリセット信号ＲＳＴが発行される。
これにより、ＤＰＡ攻撃のための電流波形測定を不可能にすることができる。
【００６０】
＜ＧＮＤ端子側に抵抗“Ｒs”が付加された場合＞
図６に示すように、ＧＮＤ端子側に抵抗“Ｒs”が付加された場合、Ｖｄ＝Ｖｃｃとなり、上記（２）式は次のようになる。
【００６１】
［数６］
｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・（Ｖｃｃ−Ｖｓ）＋Ｖｓ＞Ｖref＋Ｖｓ・・（６）
【００６２】
ＣＰＵ１１１から暗号回路１１２に対して暗号演算命令が発行されたとき、暗号演算開始前に制御信号ＣＨＫ２がハイレベルに設定され、これによりトランジスタＮ２がオンし抵抗Ｒ１，Ｒ２の抵抗列がアクティブとなる。その結果、比較器１１４に分割電圧Ｖdivが供給される。
次いで、制御信号ＣＨＫ１がハイレベルに設定され、これによりトランジスタＮ１がオンし、定電流源１１６に電流値“ＩL”の電流が流れる。
このとき、ＩＣの電源端子の電圧には変化がないが、ＩＣのＧＮＤ端子の電圧は、Ｖｓから Ｖｓ＋Ｒｓ・ＩL に増加する。
これに伴って、比較器１１４の“−”入力となる抵抗接続ノードＮＤ１の抵抗分割電圧“Ｖdiv”は、次のようになる。
【００６３】
［数７］
Ｖdiv＝｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝
・（Ｖｃｃ−Ｖｓ−Ｒｓ・ＩL）＋Ｖｓ＋Ｒｓ・ＩL・・・・・（７）
【００６４】
一方で、比較器の“＋”入力電圧Ｖ（＋）は次のようになる。
【００６５】
［数８］
Ｖ（＋）＝Ｖref ＋Ｖｓ＋Ｒs・ＩL  ・・・・・・・・・・・・・・（８）
【００６６】
（７）式と（８）式を比較した場合、“Ｖs＋Ｒs・ＩL”は両方の式に含まれる値であるため、その成分は比較結果に影響を与えない。
このため、以下に示す“Ｖs＋Ｒs・ＩL”以外の項の値が基準電圧“Ｖref”の値より小さくなれば、比較器１１４からリセット信号ＲＳＴが発行される。
【００６７】
［数９］
｛ＲＶ２／（ＲＶ１＋ＲＶ２）｝・（Ｖｃｃ−Ｖｓ−Ｒｓ・ＩL）・・（９）
【００６８】
ここで、Ｖsは、抵抗列、比較器および基準電圧発生回路１１５の動作電流をＩope としたとき、Ｖs＝Ｒs・Ｉope となる。
【００６９】
一方、電源端子側に抵抗“Ｒd”を付加しているとき、ＩＣの端子電圧“Ｖd”は、外部電圧Ｖcc からＲd・Iope だけ降下した電圧（Ｖcc−Ｒd・Ｉope）であり、外付けされる抵抗値をどちらに付ける場合も同じ値“Ｒd”とした場合、次のようになる。
【００７０】
［数１０］
Ｖｃｃ−Ｖｓ＝Ｖｃｃ−Ｒｓ・Ｉope ＝Ｖd  ・・・・・・・・・・（１０）
【００７１】
（９）式は（５）式と一致する。
これより、外付け抵抗が同じ値である場合、電源端子側に付けた場合の抵抗列および基準電圧の設定値を用いて、ＧＮＤ端子側に抵抗を付けた場合も同じように検知できる。
【００７２】
以上により、図２の回路構成で、電源端子側およびＧＮＤ端子側に抵抗を付加しての電流測定では、どちらの場合も抵抗の存在を検知してリセットを掛け、ＤＰＡ攻撃を回避できる。
【００７３】
次に、本発明の実施形態に係るＬＳＩ（集積回路）について周波数検知方式を採用した場合を例に説明する。
【００７４】
［第２実施形態］
図８は、本発明の第２の実施形態に係るＩＣカードに使われるＬＳＩの構成例を示す図である。
図９は、図８の回路に対して電源端子側に抵抗が挿入された場合を示す図である。
図１０は、図８の回路においてＧＮＤ端子側に抵抗が挿入された場合を示す図である。
【００７５】
この第２の実施形態のＩＣカード１００Ａのモニタ部ＭＮＴ２は、基準電圧と抵抗分割電圧との比較制御の代わりに、次の構成を有する。
モニタ部ＭＮＴ２は、ＮＡＮＤゲートＮＡ１と偶数個のインバータＩＮＶ１〜ＩＮＶｎにより構成された発振回路１２１、キャパシタＣ１、発振回路１２１の出力に接続されたインバータＩＮＶ１１、カウンタ１２２、レジスタ１２３、および比較器１２４により構成されている。
【００７６】
発振回路１２１は、ＮＡＮＤゲートＮＡ１と偶数個のインバータＩＮＶ１〜ＩＮＶｎにより構成されている。
発振回路１２１は、ある素子の入力が変化した時、それに伴って出力が変化し、この変化が伝播して一周して戻ってきた時には論理が反転していて、もう一周すると元に戻り、これを繰り返す事によりクロック信号を出力する回路である。
この中のある素子に着目した時、入力が変化したことにより出力も変化するが、このとき、次のゲートを充電または放電することにより変化が伝播する。
そして、発振回路１２１の電源電圧が変化すると、ゲートの充放電電流も変化し、結果として発振周波数も変化する。電源電圧が下がると、回路素子の動作電流も減少し、発振周波数は増加あるいは減少する。
これを用いて、外付け抵抗の有無を検出するのが周波数検知方式である。
【００７７】
次に、周波数検知方式を採用したモニタ部ＭＮＴ２の動作を、図９〜図１２に関連付けて説明する。
【００７８】
図１１は、図８の回路において電源端子側に抵抗が挿入されている場合と挿入されていない場合であって、電源電圧が低下すると発振回路１２１の発振周波数が増加する場合の信号波形を示す図である。
図１２は、図８の回路において電源端子側に抵抗が挿入されている場合と挿入されていない場合であって、電源電圧が低下すると発振回路１２１の発振周波数が減少する場合の信号波形を示す図である。
【００７９】
＜電源電圧が低下すると発振回路１２１の発振周波数が増加する場合＞
ＣＰＵ１１１から暗号演算命令が発行されたとき、発振回路１２１の制御信号ＯＳＣがハイレベルに設定され、これにより発振回路１２１が動作状態となる。
図１１に示すように、期間ｔ１においては、制御信号ＣＨＫ１、ＣＨＫ２はローレベルに保持され、定電流源１１６はオフに保持され、キャパシタＣ１は発振回路１２１から切り離した状態で発振回路１２１は、発振動作を行う。
発振回路１２１からはパルスが出力され、発振回路１２１のパルス出力がカウンタ１２２でカウントされる。
【００８０】
次に、カウンタ１２２のカウント結果をレジスタ１２３に移動させる。
そして、次の期間ｔ２においては、制御信号ＣＨＫ１、ＣＨＫ２がハイレベルに切り替えられ、定電流源１１６がオンとなり定電流“ＩL”が流れ、キャパシタＣ１が発振回路１２１に接続された状態で同じ時間だけ発振回路１２１は、発振動作を行う。
発振回路１２１からはパルスが出力され、発振回路１２１のパルス出力がカウンタ１２２でカウントされる。
カウント期間終了後、制御信号ＯＳＣがローレベルに切り替えられて発振回路１２１の動作が停止する。これにより、後半のカウント値はカウンタ１２２に保持されている。
この状態で、Counter に保持されている 定電流源１１６を動作させたときの周波数と、レジスタ１２３に格納されている定電流源１１６を動作させていないときの周波数が比較器１２４で比較される。
比較器１２４の比較により、所定の差以上になっていれば、抵抗挿入による周波数低下と判断してリセット信号ＲＳＴを発生してリセットを掛ける。
【００８１】
なお、この判定において、同じ電圧でもカウントされるクロック数はばらつく。判定においては、この同一電圧でのバラツキ以上の差が検出されたときにリセットを掛ける制御を行う必要がある。
【００８２】
両端子とも抵抗が付加されてない場合は、キャパシタＣ１が付加された分だけ発振周波数は確実に減少する。
一方、抵抗が付加されている場合、電圧降下により、発振周波数は増加する。キャパシタＣ１が付加されていることにより、発振周波数を減少させる効果も働くが、電圧降下による発振周波数の増加が勝るようにキャパシタＣ１の容量値を設定しておけば、周波数増加となる。
この場合、抵抗挿入の場合のみ周波数増加が起こり、抵抗挿入を検出できる。
【００８３】
＜電源電圧が低下すると発振回路１２１の発振周波数が減少する場合＞
この場合、上述した電源電圧が低下すると発振回路１２１の発振周波数が増加する場合と異なる点は、図１２に示すように、発振回路１２１の発振動作中に制御信号ＣＨＫ２をハイレベルにしてキャパシタＣ１の接続を期間ｔ１としていることにある。
【００８４】
この場合、期間ｔ１では、定電流源１１６はオフで、発振回路１２１にキャパシタＣ１を接続した状態で発振回路１２１を動作させる。
期間ｔ２では、定電流源はオンで、発振回路１２１からキャパシタＣ１を切り離した状態で発振回路１２１を動作させる。
【００８５】
そして、抵抗が付加されてない場合、キャパシタＣ１が切り離された分だけ発振周波数は確実に増加する。
抵抗が付加されている場合、電圧降下により、発振周波数は減少する。
キャパシタＣ１の発振回路１２１からの切り離しにより、発振周波数を増加させる効果も働くが、電圧降下による発振周波数の減少が勝るようにキャパシタＣ１の容量値を設定しておけば、周波数減少となる。
この場合、抵抗挿入の場合のみ周波数減少が起こり、抵抗挿入を検出できる。
【００８６】
ここで、発振回路１２１にキャパシタＣ１を接続可能な構成にした理由について図１３に関連付けて説明する。
【００８７】
基本的に、両端子とも抵抗が付加されていない場合、定電流“ＩL”を流す／流さないに関わらず、ＩＣに供給される電圧はほぼＶｃｃで変化はない。したがって、誤差程度のカウント差しか検出されず、リセット信号ＲＳＴは発行されない。
図９に示すように、電源端子側に抵抗“Ｒd”が挿入された場合、定電流“ＩL”を流したとき、ＩＣの電源端子の電圧はＶcc−Ｒd・ＩL に低下する。これにより発振回路１２１に供給される電圧もＲd・ＩL だけ低下し、発振周波数も低下する。したがって、カウント値の比較によって リセット信号ＲＳＴが発行される。
図１０に示すように、ＧＮＤ端子側に抵抗“Ｒs”が挿入された場合、定電流“ＩL”を流したとき、ＩＣのＧＮＤ端子の電圧はＲs・ＩL だけ上昇する。これにより発振回路１２１供給される電圧もＲs・ＩL だけ低下し、発振周波数も低下する。したがって、カウント値の比較によってリセット信号ＲＳＴが発行される。
【００８８】
ところが、発振回路は、消費電流が比較的大きいため、動作電流が電源電圧を変動させ、その結果、発振周波数にも影響を及ぼす。
また、厳密に言えば、抵抗を付けていない通常使用の場合、基盤の電源端子、ＧＮＤ端子〜ＩＣの電源端子、ＧＮＤ端子まではプリント基板の配線で結ばれ、その配線抵抗は小さく抑えられているがそれでも数十ｍΩはある。
この状態で定電流を流せば、小さいながらも電圧降下は起こり、それが発振周波数に影響を及ぼす（高くなる）。
このように、抵抗が挿入されておらず発振回路の電圧が変化していなくても、発振周波数のゆらぎにより、すなわち同じ条件で発振回路を動作させても、発振周波数はある範囲でばらつくことにより発振周波数が若干高くなる場合もある。
そこで、発振周波数にある範囲でマージンをとって構成することがモニタ精度を上げることになり、本実施形態では、これを踏まえてキャパシタＣ１を発振回路１２１に接続可能に構成されている。
【００８９】
以上説明したように、本実施形態によれば、外付抵抗の有無を回路的に検出するモニタ部ＭＮＴ１，２を搭載し、外付抵抗が検出された場合にリセットを掛ける制御を行うことから、以下の効果を得ることができる。
ＤＰＡ攻撃を検知して、リセットを掛けるというＤＰＡ対策の概念は今迄なく、回路の増大や消費電流の増大をもたらす論理対策がなくても、ＤＰＡ攻撃を回避できる。
【図面の簡単な説明】
【００９０】
【図１】ＤＰＡ攻撃の測定系の構成例を示す図である。
【図２】本発明の第１の実施形態に係るＩＣカードに使われるＬＳＩの構成例を示す図である。
【図３】本実施形態のモニタ部における可変抵抗の構成例示す図である。
【図４】図２の回路に対して電源端子側に抵抗が挿入された場合を示す図である。
【図５】図２の回路において電源端子側に抵抗が挿入されていない場合と挿入されている場合の信号波形を示す図である。
【図６】図２の回路においてＧＮＤ端子側に抵抗が挿入された場合を示す図である。
【図７】図２の回路においてＧＮＤ端子側に抵抗が挿入された場合の信号波形を示す図である。
【図８】本発明の第２の実施形態に係るＩＣカードに使われるＬＳＩの構成例を示す図である。
【図９】図８の回路に対して電源端子側に抵抗が挿入された場合を示す図である。
【図１０】図８の回路においてＧＮＤ端子側に抵抗が挿入された場合を示す図である。
【図１１】図８の回路において電源端子側に抵抗が挿入されている場合と挿入されていない場合であって、電源電圧が低下すると発振回路の発振周波数が増加する場合の信号波形を示す図である。
【図１２】図８の回路において電源端子側に抵抗が挿入されている場合と挿入されていない場合であって、電源電圧が低下すると発振回路の発振周波数が減少する場合の信号波形を示す図である。
【図１３】発振回路にキャパシタを接続可能な構成にした理由について説明するための図である。
【符号の説明】
【００９１】
１００，１００Ａ・・・ＩＣカード（電子デバイス）、１１０・・・ＬＳＩ、１１１・・・ＣＰＵ、１１２・・・暗号回路、１１３・・・他の周辺回路、１１４・・・比較器、１１５・・・基準電圧発生回路（ＢＧＲ１）、１１６・・・電流源、Ｎ１・・・第１スイッチとしてのＮＭＯＳトランジスタ、Ｎ２・・・第２スイッチとしてのＮＭＯＳトランジスタ、ＭＮＴ１、ＭＮＴ２・・・モニタ部、１２１・・・発振回路、Ｃ１・・・キャパシタ、１２２・・・カウンタ、１２３・・・レジスタ、１２４・・・比較器。
【図１】
2010062635.tif 000003
【図２】
2010062635.tif 000004
【図３】
2010062635.tif 000005
【図４】
2010062635.tif 000006
【図５】
2010062635.tif 000007
【図６】
2010062635.tif 000008
【図７】
2010062635.tif 000009
【図８】
2010062635.tif 000010
【図９】
2010062635.tif 000011
【図１０】
2010062635.tif 000012
【図１１】
2010062635.tif 000013
【図１２】
2010062635.tif 000014
【図１３】
2010062635.tif 000015