(57)【要約】【課題】  秘密データを処理する集積回路の物理的シグネチャ解析による攻撃に対して不正防止方法を提供する。【解決手段】  主プログラムを実行する集積回路の物理的シグネチャをランダム化する不正防止方法であって、サブプログラムのランダムに選択されたアドレスへの分岐を主プログラムに提供し、主プログラムの総実行時間をランダム化するために、サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながるという特徴を有する。【選択図】  図１
2004246899.tif 000002
【特許請求の範囲】
【請求項１】
アルゴリズム即ち主プログラム（Ｐｇ）を実行する集積回路の物理的シグネチャをランダム化し、
サブプログラム（Ｅ）のランダムに選択されたアドレスへの分岐を前記プログラムに提供することを含む不正防止方法において、
サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令（ＲＥＴ）を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながり、
前記主プログラムの総実行時間をランダム化するために、前記サブプログラムの入力アドレス（Ａｄｄｉ）がいかなるものであれ、前記復帰命令（ＲＥＴ）の実行により、該サブプログラムへの前記分岐を引き起こした命令の直ぐ後に続く前記主呼出しプログラム（Ｐｇ）の命令に戻ることを特徴とする不正防止方法。
【請求項２】
前記サブプログラムの前記入力アドレスがいかなるものであれ、前記サブプログラム（Ｅ）が、前記主呼出しプログラム（Ｐｇ）へ復帰する命令（ＲＥＴ）に必ず至るという特徴を有することを特徴とする請求項１に記載の方法。
【請求項３】
前記サブプログラム（Ｅ）は、割込み生成演算コードを含まないことを特徴とする請求項１に記載の方法。
【請求項４】
前記サブプログラム（Ｅ）は、前記サブプログラムの外部のアドレスへジャンプ又は分岐する命令を含まないことを特徴とする請求項１に記載の方法。
【請求項５】
前記サブプログラム（Ｅ）は、無限ループを含まないことを特徴とする請求項１に記載の方法。
【請求項６】
前記サブプログラム（Ｅ）は、主プログラム（Ｐｇ）のコードと共に、ＲＯＭに配置されることを特徴とする請求項１に記載の方法。
【請求項７】
決定性のプログラムを実行する集積回路において、請求項１から６のいずれかの不正防止方法を実行するための手段を含むことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関し、特に、集積回路により処理されるデータ又は秘密量を、これらのデータを無断使用しようとする不正攻撃から保護することに関する。
【背景技術】
【０００２】
本発明の実施例の応用は、外部から来るデータの暗号化に使用される秘密量が集積回路チップに含まれているスマートカードの分野に関する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
起こり得る不正の中で、本発明は特に、秘密量を伴う機能を実行する集積回路の物理的パラメータのシグネチャ試験に基づいた不正攻撃を問題としている。例えば、集積回路の前記物理的シグネチャは、気温又は消費電流の変動に対応し得る。集積回路の消費電流の統計解析による攻撃は、ＳＰＡ（単純電力解析）又はＤＰＡ（電力差分解析）攻撃として知られている。このような攻撃は、アルゴリズムに（外部から来た）データが入力され、アルゴリズム自体が知られると、管理キーについて仮説を立てる。（常に同じ方法でデータを処理するという点で、決定性がある）アルゴリズムが既知であるので、秘密量が入力データとミックスされる方法が前記アルゴリズムによって知られる。同じキー仮説に基づいて入力データを変化させることにより、回路の消費電流が解析され、平均シグネチャ（トレース）が得られる。平均シグネチャは、正しい仮説を特定することによって、秘密量の発見を導くことができる。
【０００４】
ＤＰＡタイプの消費電流攻撃は、例えば、ＣＲＹＰＴＯ９９会議との関連で、「Differential Power Analysis」by Kocher, Jaffe, and Jun, Springer Verlag LNCS 1666発行 (1999年), ページ388-397の論文中に記述されている。
【０００５】
秘密量を処理するアルゴリズムを実行する集積回路、例えばスマートカードのセキュリティ欠陥は、このようなシステムを集積化した製品の開発に多大な損害を及ぼす。
【課題を解決するための手段】
【０００６】
本発明は、物理的シグネチャ解析攻撃に対して、秘密データを処理する集積回路のセキュリティを改善することを目的としている。特に、本発明は、秘密データを処理する集積回路の物理的シグネチャ解析による攻撃に対して不正防止方法を提供することを目的とする。
【０００７】
これら及び他の目的を達成するため、本発明は、主プログラムを実行する集積回路の物理的シグネチャをランダム化し、サブプログラムのランダムに選択されたアドレスへの分岐を主プログラムに提供することを含む不正防止方法を提供し、前記サブプログラムが含むあらゆる演算コードが、主プログラムへ復帰する少なくとも一つの命令を除いて、同一のサブプログラムに含まれる命令に直接的又は間接的につながり、主プログラムの総実行時間をランダム化するために、該サブプログラムの入力アドレスがいかなるものであれ、前記復帰命令の実行により、サブプログラムへの前記分岐を引き起こした命令の直ぐ後に続く主呼出しプログラム（Ｐｇ）の命令に戻るという特徴を有する。
【０００８】
本発明の実施形態によると、前記サブプログラムの入力アドレスがいかなるものであれ、主呼出しプログラムへ復帰する命令に必ず至るという特徴をサブプログラムは有する。
【０００９】
本発明の実施形態によると、サブプログラムは、割込み生成演算コードを含まない特徴を有する。
【００１０】
本発明の実施形態によると、サブプログラムは、サブプログラムの外部のアドレスへジャンプ又は分岐する命令を含まないことを特徴とする。
【００１１】
本発明の実施形態によると、サブプログラムは、無限ループを含まないことを特徴とする。
【００１２】
本発明の実施形態によると、サブプログラムは、主プログラムのコードと共にＲＯＭに配置される。
【００１３】
本発明はまた、決定性のプログラムを実行する集積回路を提供する。
【００１４】
本発明の前述した目的、特徴及び効果は、本発明による不正防止方法の実施形態を概略的に示す添付図面を用いて、何ら限定しない具体的な実施形態を以下に詳細に説明する。
【発明を実施するための最良の形態】
【００１５】
分かりやすくするために、本発明を理解するのに必要な素子のみ図示し、以下で説明する。特に、本発明は既知のマイクロコントローラが実装されているので、本発明のセキュリティ機能を実行する集積回路即ちマイクロコントローラの構造は詳述されない。さらに、本発明のセキュリティサブプログラムを実行することに使用される命令及び演算コードは、命令を実行する前記サブプログラムが従来のものなので、詳述しない。
【００１６】
本発明の特徴は、実行時間をランダム化する目的で、秘密量を処理する主プログラム即ちアルゴリズムの非同期化を提供することである。従って、実行ごとに、回路の物理的シグネチャがランダムに異なる。それは、シグネチャの相違が単に入力データ間の相違の結果として生じるわけではないので、起こり得る海賊行為によって秘密量に関する仮説が有効になることを防ぐ。
【００１７】
図１は、本発明の不正防止方法の実施形態の概略図である。
【００１８】
この実施例において、本発明は、秘密量を処理するプログラムＰｇに利用される。このプログラムは起動命令（ＳＴＡＲＴ）で起動し、アルゴリズムを従来の方法で実行する連続する命令ＩＮＳＴ１からＩＮＳＴｍを含む。
【００１９】
本発明の特徴によると、プログラムＰｇは、サブプログラムＥへ分岐する少なくとも一つの命令を含む。前記命令は、ＳＥＣＵと呼ばれている。命令ＳＥＣＵは、ランダムに選択されたアドレスＡｄｄＲｄにサブプログラムＥへの分岐を有する。
【００２０】
このようにして、プログラムが命令ＳＥＣＵを実行すると、マイクロコントローラは、サブプログラムＥのアドレス終端を形成する二つの値の間の数Ｒｄのランダム選択を行う。従って、サブプログラムＥにおける分岐アドレスＡｄｄｉ（ｉは乱数Ｒｄに対応する）は、ランダムであり、アルゴリズムＰｇの実行ごとに変化する。
【００２１】
本発明によると、サブプログラムＥは、以下の条件を満たすコードの集合から選ばれた演算コードＯＰＣＯＤＥｉを含む。以下の条件とは、
演算コードＯＰＣＯＤＥｉは閉集合に属すこと、つまり、サブプログラムＥで実行される演算コードがいかなるものであれ（呼出しプログラムＰｇへ復帰する命令ＲＥＴを除く）、次の演算コードがまたこのサブプログラムの演算コードであること、
ジャンプする又は他のサブプログラムを呼出すための命令は、好ましくは、閉集合に関係可能なものに限られること、
サブプログラムＥへの入力アドレスがいかなるものであれ、プログラムから出力可能な演算コードＲＥＴが常に最後に生じること、
サブプログラムＥが、無限ループを備えないこと、
好ましくは、演算コードの集合が、（アルゴリズムの実行を停止させないために、）割込み生成命令を含まないことである。
【００２２】
サブプログラムコンポーネントは、特に、主プログラム命令と区別するために、以上では演算コードと呼ばれてきた。実際に、あらゆるプログラムと同様に、サブプログラムＥは、１又は数個のオペランドを場合によって処理し、各々が１又は数個の演算コードで形成された命令を含む。従って、サブプログラムＥへのアクセスは、上述の条件に関する命令の始めに行われ得る。重要な点は、命令の途中（複合命令の演算コード上）に落ちこまず、その中にブロックされつづけないことである。サブプログラムＥのいくつかのアドレスが、入力アドレスとして、禁じられる場合、例えば、乱数Ｒｄの検証試験が行われる。又は、可能なアドレスの集合から数Ｒｄがランダムに選択される。
【００２３】
サブプログラムの命令即ち演算コードが、オペランドを使用する場合、前記オペランドは、実際の可能な秘密量以外のあらゆるオペランドであり得る。
【００２４】
サブプログラムＥは、例えば、主プログラムＰｇのコードと共にＲＯＭに収納される。
【００２５】
上述の条件を満たせば、不正防止サブプログラムＥの生成は、手動で行われてもよい。
【００２６】
もう一つの実施形態によると、プログラムＥは、コンパイラにより自動的に生成される。従って、ユーザは、前記サブプログラムに関して条件が満たされるという保障を得る。さらに、サブプログラムは、自動的に、ランダムに生成された演算コードの集合であり、規定のルールに従う。
【００２７】
もちろん、不正防止機能ＳＥＣＵへのいくつかの呼出しが、主プログラムＰｇに存在していてもよい。同様に、各サブプログラムが同じ特質を有し且つ、主プログラムからのランダムアクセスに関するものであれば、異なるサブプログラムＥを提供しても良い。
【００２８】
簡略化した実施例として、最も簡略化されたサブプログラムは、サブプログラムの最後のラインに命令ＲＥＴを置くこと、次のアドレスへジャンプする命令又は演算コードＮＥＸＴを提供することだけを含む。従って、主プログラムの命令ＳＥＣＵがサブプログラムに送るアドレス次第で、復帰命令ＲＥＴに至る時間が異なる。
【００２９】
本発明の効果は、秘密量を処理するプログラムの実行時間をランダム化出来ることである。これにより、このプログラムを実行する集積回路の電流シグネチャ（又は他の物理的シグネチャ）を可変且つランダムとすることができる。
【００３０】
もちろん、本発明は、当業者によれば容易に種々の変更、修正及び改良をすることができる。特に、上述した機能表示に基づく、セキュリティサブプログラムＥに許可される演算コードの選択は、当業者の能力の範囲内である。さらに、これらの表示に基づいて、異なるプログラミング言語に本発明を適用することも、当業者の能力の範囲内である。本発明に特有の演算コードの集合即ちサブプログラムを使用する特定の命令（ＳＥＣＵ）を使用可能な命令に提供することで足りる。
【００３１】
さらに、サブプログラムが、主プログラムへ直接的又は間接的に復帰するならば、セキュリティサブプログラムは、決定性であろうがなかろうが、他のサブプログラムへジャンプする命令を含んでも良い。
【００３２】
このような変更、修正及び改良は、この開示の部分でしようとするもので、本発明の精神及び範囲の中で行われるものである。従って、前述の説明は単なる例であり、これに限定するものではない。本発明は、特許請求の範囲及びそれらの均等範囲によって規定されるもののみに限定される。
【図面の簡単な説明】
【００３３】
【図１】本発明の不正防止方法の実施形態の概略図である。
【符号の説明】
【００３４】
Ｐｇ  主プログラム
ＳＴＡＲＴ  起動命令
ＩＮＳＴ  命令
Ｅ    サブプログラム
ＳＥＣＵ  分岐命令
Ａｄｄ  アドレス
Ｒｄ  乱数
ＯＰＣＯＤＥ  演算コード
ＲＥＴ  復帰命令
【図１】
2004246899.tif 000003
【外国語明細書】
2004246899.tif 000004
2004246899.tif 000005
2004246899.tif 000006
2004246899.tif 000007
2004246899.tif 000008
2004246899.tif 000009
2004246899.tif 000010
2004246899.tif 000011