(57)【要約】マイクロコントローラ（１００）をさらに発展させるために、そのプログラミングが、少なくとも１つのマシン依存のアセンブリ言語で実行され、これにより、マイクロコントローラ上で実行されるプログラムが、外部の観察者にとって、完全に秘密であってかつ予測できないこと、すなわち再現できないように、少なくとも１つのマシン依存のアセンブリ言語で実行されるマイクロコントローラ（１００）のプログラミングを処理するための方法とともに、アセンブラ命令は、条件付きプログラム・ジャンプ又はブランチを除いて、本質的にはデータから独立して実行されることができ、プログラム・ジャンプ又はブランチが、−少なくとも１つの乱数発生器（１０）の状態に依存して、及び／又は−マイクロコントローラ（１００）のプログラミングの内部状態から独立して、実行されることが提案される。
2006507594.tif 000002
【特許請求の範囲】
【請求項１】
マイクロコントローラであって、そのプログラミングが、少なくとも１つのマシン依存のアセンブリ言語で実行され、これによりアセンブラ命令は、条件付きプログラム・ジャンプ又はプログラム・ブランチを除いて、それぞれ、本質的にはデータから独立して実行されることができ、前記マイクロコントローラに割り当てられた、少なくとも１つの乱数発生器が実行されることができることを特徴とし、これにより、前記プログラム・ジャンプ又はプログラム・ブランチが、
前記乱数発生器の状態に依存して、及び／又は、
前記マイクロコントローラの前記プログラミングの内部状態から独立して、
実行されることができるマイクロコントローラ。
【請求項２】
少なくとも１つの、特にビットアドレス可能な、乱数レジスタが、前記乱数発生器に割り当てられたことを特徴とする請求項１記載のマイクロコントローラ。
【請求項３】
スマートカード・コントローラとしての実施形態を特徴とする請求項１又は２記載のマイクロコントローラ。
【請求項４】
少なくとも請求項１乃至３のいずれかに記載された少なくとも１つのマイクロコントローラによって制御される電気又は電子装置。
【請求項５】
少なくとも１つのマシン依存のアセンブリ言語で実行される、マイクロコントローラのプログラミングを処理する方法であって、アセンブラ命令は、条件付きプログラム・ジャンプ又はブランチを除いて、本質的にはデータから独立して実行され、前記プログラム・ジャンプ又はプログラム・ブランチは、
少なくとも１つの乱数発生器の状態に依存して、及び／又は、
前記マイクロコントローラの前記プログラミングの内部状態から独立して、
実行されることを特徴とする方法。
【請求項６】
前記乱数発生器によって発生された乱数は、レジスタを介して、ソフトウエアを介して読み込まれ、そして次に、前記乱数の読み込みは、前記条件付きプログラム・ジャンプ又はブランチによって評価されることを特徴とする請求項５記載の方法。
【請求項７】
少なくとも１つの、特にビットアドレス可能な、乱数レジスタが存在する場合には、前記乱数レジスタのビット毎にテストし、そして条件付きジャンプが実行されることを特徴とする請求項５又は６記載の方法。
【請求項８】
少なくとも１つのアセンブラ命令（“ランダム・ビットによるブランチ”）の実行、前記乱数レジスタの定義されたビットが、前記条件付きジャンプ又はブランチのための条件入力に、特に直接与えられることを特徴とする、少なくとも請求項５乃至７のいずれかに記載の方法。
【請求項９】
前記条件付きジャンプ又はブランチを制御する、少なくとも１つの算術演算論理ユニット（ＡＬＵ）フラグは、特にソフトウエアを介して、前記乱数レジスタの少なくとも１ビットによって、取り替えられ、その結果、前記算術演算論理ユニットのビットに対応する前記条件付きジャンプ又はブランチは、前記乱数レジスタのビットによって制御されることを特徴とする、少なくとも請求項５乃至８のいずれかに記載の方法。
【請求項１０】
マイクロコントローラ上で実行されるプログラミングを、完全に秘密にするための、少なくとも請求項１乃至３のいずれかに記載の前記マイクロコントローラの用途、及び／又は少なくとも請求項５乃至９のいずれかに記載の方法の用途であって、その結果、前記マイクロコントローラ上で実行される少なくとも１つのプログラムは、外部の観察者にとって予測かつ再現できないマイクロコントローラの用途及び／又は方法の用途。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関し、そのプログラミングが、少なくとも１つのマシン依存のアセンブリ言語で実行され、これによりアセンブラ命令は、条件付きプログラム・ジャンプ又はプログラム・ブランチを除いて、それぞれ、本質的にはデータから独立して実行されることができる。
【０００２】
また、本発明は、少なくとも１つのマシン依存のアセンブリ言語で実行される、上述のタイプのマイクロコントローラのプログラミングを処理するための方法に関する。
【背景技術】
【０００３】
一般に、装置を制御するために使用され、中央演算処理装置（ＣＰＵ）、メモリ及びポートがワンチップ上に組み込まれているワンチップ・マイクロコンピュータは、マイクロコントローラと呼ばれる。マイクロコントローラのプログラミングは、マシン依存のアセンブリ言語で実行される。公知のアセンブリ言語では、全てのアセンブラ命令は、条件付きプログラム・ジャンプ又はプログラム・ブランチを除いて、データから独立して実行される。
【０００４】
条件付きプログラム・ジャンプ又はプログラム・ブランチは、一般に、次のように実現される。チェックされるべき条件、一般に、少なくとも１つの状態フラグが、テストされる。ジャンプ又はブランチが行われるべきであることが検出された場合には、プログラム・カウンタは、新しいプログラム・アドレス（新しい「値」）を読み込まれる。ジャンプ又はブランチが行われるべきでない場合には、命令は終了され、その後、当然のことだが、プログラム・カウンタは、自動的に、次の値、例えば次のアドレスを含む。
【０００５】
かかる手順は、条件付きプログラム・ジャンプ又は条件付きプログラム・ブランチの場合には、時間差が命令の実行で発生する可能性があることを伴う。命令の実行におけるこの時間差の理由は、プログラム・ジャンプ又はブランチの場合には、プログラム・カウンタが、さらに新しい値（新しいプログラム・アドレス）に設定されることであり、ジャンプでない又はブランチでない場合には、命令が、条件のテストの後に終了されることである。
【０００６】
これは、マイクロコントローラのプログラムにおける、条件付きジャンプ又はブランチのための命令の実行が、通常、異なる実行時間、従って異なる電流値も有するということを意味し、電流値は、条件付きジャンプ又はブランチが実行されるかどうかに応じて、動的な電流測定によって決定されることができる。
【０００７】
ソフトウエア解析の現在の方法は、またハッカーによる悪用、例えば暗号化キーを決定することを許し、特別なタイミング解析によって、条件付きプログラム・ジャンプ又はブランチを確認し、そして、確認されたプログラムの実行によって、処理されたデータに関する推定を得ることにある。
【０００８】
従って、この命令でテストされたデータに関する推定は、条件付きジャンプ命令又はブランチ命令の時間系列によって、単に得られることができ、これは、例えば、暗号化キーのような、特にマイクロコントローラのプログラムのセキュリティ感知部の不正ハッキングの場合には、非常に不利である。
【０００９】
従って、その動作が不正の観察者に秘密のままであるべきである、マイクロコントローラ上で動作を行うソフトウエアの実行では、主要な問題は、（要約で明確に説明されるように、）不正の観察者が、物理的な測定によって、実行されたコード及び当該実行によって使用されたデータ上の情報を得ることができるということに存在する。この問題は、特に、例えばスマートカードで使用されるような、セキュリティ関連ソフトウエアで生じる。実行されたコード及びそれを実行する際に使用されたデータについての情報を得ようとする典型的な試みは、マイクロコントローラに供給される電流及び／又は電圧を測定することにある。しかしながら、また、内部のプログラムシーケンスについての情報は、他の物理的な測定手順によって得られることができる。
【００１０】
マイクロコントローラ上の内部で実行されるプログラムをひそかに見張る、上述の可能性の背景に対抗して、このプログラムを秘密にする可能性が望ましいと思われる。しかしながら、実行される個々の命令に関してではあるが、より大きいプログラム部分に関してではない、ランダム変化だけが、従来から今まで知られており、その結果、マイクロコントローラ上の内部で実行されるプログラムの隠匿は、ただ限られた方法のみで可能であるか、又は全く可能でない。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述の不都合及び欠陥を発端として、概略が述べられた技術の状態（＝処理されるべきデータの機能として、マイクロコントローラ上で実行されるプログラムを完全に再現できる処理）を考慮すると、本発明の目的は、マイクロコントローラ上で実行されるプログラムが、外部の観察者にとって、完全に秘密であってかつ予測できないこと、すなわち再現できないように、上述のタイプの方法だけでなく、上述のタイプのマイクロコントローラもさらに発展させることである。
【課題を解決するための手段】
【００１２】
この目的は、請求項１で明細に述べられた特徴を有するマイクロコントローラ、及びクレーム５で明細に述べられた特徴を有する方法によって達成される。本発明の有利な実施形態及び有用な態様は、それぞれの従属クレームにおいて特徴づけられる。
【００１３】
従って、本発明の教示は、マイクロコントローラにおけるランダムに制御されたプログラミングの実行に見られることである。これは、少なくとも１つの乱数発生器によって発生された乱数の適切な処理によって、マイクロコントローラ上で実行されるプログラムを、外部の観察者にとって、予測かつ再現できずに実行させることが可能であることを意味する。このため、所望の動作を引き起こす指示手順は、本発明に不可欠な方法を用いた乱数発生器（ＲＮＧ）の使用によって、多くの可能性のある指示手順から選択されることができる。多くの異なる指示手順が同一の結果を引き起こすので、外部の観察者は、選択された指示手順の結果として、マイクロコントローラの現在の動作を再現又は解析することができない。本発明に基づくこの種のランダムなプログラムの実行によって、処理されたデータに関する推定は、かなりより難しくされるか、又は完全に防止される。
【００１４】
従って、マイクロコントローラのハードウエアの実行、及び本発明に基づく割当方法によって、それは、より難しくなった、マイクロコントローラ上における内部のプログラムの実行の理解及び解析より、少ない観測情報である。これに関して、実行されたコードについての情報を得ることは、不正の観察者にとって、確かに可能であると思われる。
【００１５】
本発明の不可欠な構成要素は、ソフトウエアの内部状態から独立して、プログラム内のジャンプ又はブランチをランダムに実行する可能性がある。マイクロコントローラのハードウエアは、与えられたハードウエアの乱数発生器とともに、乱数発生器の状態に応じて、プログラム・ジャンプ又はブランチを、実行又は拒否する可能性を提供する。乱数発生器の状態及び値は、外部から明らかではない。
【００１６】
特に発明の態様によれば、プログラム・ジャンプ又はブランチの同一の機能は、種々の、別に実行されるプログラム・ジャンプ又はブランチを実行することによって、達成されることができる。すなわち、異なるコーディングは、同一の機能のために存在する。他の方法として、又は追加として、プログラム・ジャンプ又はブランチの異なる機能は、特定の方法によって、引き起こされることができる。
【００１７】
本発明の好適な実施形態によれば、前方及び後方のジャンプ又はブランチが組み合わされた場合に、条件付きジャンプ又はブランチを見えなくする際におけるさらなる改良が得られ、その結果、非常に多くの別に実行されるプログラム・ジャンプ又はブランチが、本発明によればランダムに選択及び実行されることができ、比較的速く形成される。従って、前方のジャンプを有する２分木の例の場合には、例えば１６個のジャンプ、すなわちプログラムを別に実行する１６４＝６５５３６の可能性が形成される。
【００１８】
本発明に基づくプログラムの実行は、外部の観察者に対して、予測不可能であって、かつ再現不可能な動作を示す。内部状態又はマイクロコントローラのデータに関する推定は、多くのジャンプ又はブランチを有する当該プログラムの実行から得られることができないので、本発明に基づく方法は、不正の観察者から、これらの状態及び／又はデータを秘密にするための効果的な方法を提供する。これは、中でも、条件付きプログラム・ジャンプ又はブランチの場合には、それぞれ、マイクロコントローラ、特にスマートカード・コントローラの安全な動作をもたらす。
【００１９】
乱数発生器を有するマイクロコントローラのハードウエアの実行は、多くの点で有利に可能であり、４つの基本的な実行方法は、本発明に基づく方法を実行するために、互いから独立して又は組み合わせて、特に推奨される。
【００２０】
（i）ソフトウエアのレジスタを介して、乱数発生器によって発生された乱数の読み込みと、続いて起こる、条件付きプログラム・ジャンプ又はブランチを用いた、乱数の読み込みの評価、
（ii）少なくとも１つの、特にビットアドレス可能な、乱数レジスタ（ＲＮＲ）が、マイクロコントローラ内に配置されている場合には、乱数レジスタのビット毎にテストし、そして条件付きブランチを行うこと、
（iii）対応するアセンブラ命令“ランダム・ビットによるブランチ”の実行、乱数レジスタの定義されたビットが、条件付きジャンプ又はブランチのための条件入力に直接与えられること（＝最も低いソフトウエアの複雑さ及び費用による、最も速くかつ最も便利な実行）、及び／又は、
（iv）ポイント（iii）に関して説明された方法の変形として、
算術演算論理ユニット（ＡＬＵ）フラグ（ＡＬＵ＝マイクロコントローラ上で作り出される論理演算ユニット）の一時的な代替物、これは通常、乱数レジスタからのビットによって、条件付きジャンプ又はブランチを制御し、ＡＬＵフラグの代替物は、ソフトウエアを介してもたらされることができ、その結果、ＡＬＵビットに対応する条件付きジャンプ又はブランチは、乱数レジスタのビットによって制御され、この期間内に、ＡＬＵフラグは、条件付きジャンプ又はブランチそれぞれに利用できない。
【００２１】
要するに、条件付きジャンプ又はブランチの場合に、内部状態又はデータを解析する、非常により困難な可能性において、相当の利益が本発明に見られることである。その結果、本発明は、（マイクロコントローラの）プログラムの構成から独立して、常に、同一の動的な電流値を生じさせ、従って、時間調整された動的な電流解析に関する、不正かつ許可されていない調査を防止する。
【００２２】
本発明は、最終的に、少なくとも１つの上述のタイプのマイクロコントローラによって制御される電気又は電子装置に関する。
【００２３】
既に上で詳述されたように、本発明の教示を、有利に具体化しさらに発展させる、種々の可能な方法がある。この点について、一方では、請求項１及び請求項５に従属する請求項、他方では、図面に示された実施形態の例に関して説明された本発明の、さらなる実施形態、特徴及び効果に対して、参照が行われる。
【発明を実施するための最良の形態】
【００２４】
図１は、電気又は電子装置を制御するための、スマートカード・コントローラとして設定されたマイクロコントローラ１００の実施形態を説明し、そのプログラミングは、マシン依存のアセンブリ言語によって実行され、そして処理される。この処理において、アセンブラ命令は、条件付きプログラム・ジャンプ又はブランチを除いて、データから独立してその方法に基づいて実行される。
【００２５】
マイクロコントローラ１００は、乱数発生器１０がマイクロコントローラ１００に割り当てられるという事実によって特徴づけられ、これにより、プログラム・ジャンプ又はブランチは、乱数発生器１０の状態に依存して、及びマイクロコントローラ１００のプログラミングの内部状態から独立して、実行されることができる。
【００２６】
その結果、プログラム・ジャンプ又はブランチの同一の機能は、種々の、別に実行されるプログラム・ジャンプ又はブランチを実行することによって、達成されることができる。すなわち、異なるコーディングは、同一の機能のために存在する。
【００２７】
これを達成するため、乱数発生器１０によって発生された乱数は、ソフトウエアのレジスタを介して読み込まれ、そして条件付きプログラム・ジャンプ又はブランチによって評価される。代わりに、又はこれに加えて、乱数発生器１０に割り当てられた、ビットアドレス可能な乱数レジスタ２０の存在は、乱数レジスタ２０のビット毎に、テストが行われることができ、そして条件付きジャンプ又はブランチが実行されることができることを提供する。
【００２８】
最も低いソフトウエアの複雑さ及び費用による、最も便利でかつ最も速い実行は、アセンブラ命令“ランダム・ビットによるブランチ”を実行することにあり、乱数レジスタ２０からの定義されたビットは、条件付きジャンプ又はブランチのための条件入力に直接与えられる。
【００２９】
また、マイクロコントローラ１００のプログラミングは、上述の変形を可能にし、これにより、算術演算論理ユニット（ＡＬＵ）フラグは、乱数レジスタ２０のビットによって、ソフトウエアを通じて取り替えられ、その結果、算術演算論理ユニットに対応する条件付きジャンプは、乱数レジスタ２０のビットによって制御される。
【００３０】
図１に基づくマイクロコントローラ１００によって、及びマイクロコントローラ１００のプログラミングを処理するための方法によって、マイクロコントローラ１００上で実行されるこのプログラミングは、完全に秘密にされることができ、乱数発生器１０によって発生された乱数の適切な処理を通じて、マイクロコントローラ１００上で実行されるプログラムは、外部の観察者によって予測かつ再現できない方法で実行される。
【００３１】
この目的のため、乱数発生器１０の使用によって、所望の動作を引き起こす命令は、多くの可能性のある命令から選択される。複数の異なる命令は、同一の結果を引き起こすので、外部の観察者は、選択された命令の結果として、マイクロコントローラ１００の現在の動作を、再現及び解析することができない。その結果、この種のランダムなプログラムの実行によって、処理されたデータに関する推定は、相当より困難にされるか、又は完全に防止される。
【図面の簡単な説明】
【００３２】
【図１】本発明に基づく方法によって動作される、本発明に基づくマイクロコントローラの実施形態の例のブロック図の略図を示す。
【符号の説明】
【００３３】
１００  マイクロコントローラ、特にスマートカード・コントローラ
１０  乱数発生器（ＲＮＧ）
２０  特にビットアドレス可能な乱数レジスタ（ＲＮＲ）
【図１】
2006507594.tif 000003
【国際調査報告】
2006507594.tif 000004
2006507594.tif 000005
2006507594.tif 000006